diff --git a/.github/workflows/jekyll-and-npm.yml b/.github/workflows/jekyll-and-npm.yml deleted file mode 100644 index c1733c6..0000000 --- a/.github/workflows/jekyll-and-npm.yml +++ /dev/null @@ -1,65 +0,0 @@ -# This workflow uses actions that are not certified by GitHub. -# They are provided by a third-party and are governed by -# separate terms of service, privacy policy, and support -# documentation. - -# Sample workflow for building and deploying a Jekyll site to GitHub Pages -name: Deploy Jekyll site to Pages with npm Workflow - -on: - # Runs on pushes targeting the default branch - push: - branches: ["main"] - - # Allows you to run this workflow manually from the Actions tab - workflow_dispatch: - -# Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages -permissions: - contents: read - pages: write - id-token: write - -# Allow only one concurrent deployment, skipping runs queued between the run in-progress and latest queued. -# However, do NOT cancel in-progress runs as we want to allow these production deployments to complete. -concurrency: - group: "pages" - cancel-in-progress: false - -jobs: - # Build job - build: - runs-on: ubuntu-latest - - strategy: - matrix: - node-version: ['19'] - - steps: - - uses: actions/checkout@v4 - - - name: Use Node.js ${{ matrix.node-version }} - uses: actions/setup-node@v4 - with: - node-version: ${{ matrix.node-version }} - cache: 'npm' - - - name: Install packages - run: npm ci - - - name: Run npm build - run: npm run live - - # Deployment job - deploy: - environment: - name: github-pages - url: ${{ steps.deployment.outputs.page_url }} - runs-on: ubuntu-latest - needs: build - steps: - - name: Configure Pages - uses: actions/configure-pages@v4 - - name: Deploy to GitHub Pages - id: deployment - uses: actions/deploy-pages@v3 diff --git a/.gitignore b/.gitignore deleted file mode 100755 index 4f95e4b..0000000 --- a/.gitignore +++ /dev/null @@ -1,5 +0,0 @@ -.jekyll-cache/ -node_modules/ -_site/ - -.DS_Store \ No newline at end of file diff --git a/.stylelintrc.json b/.stylelintrc.json deleted file mode 100644 index d419aaf..0000000 --- a/.stylelintrc.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "plugin": "stylelint-order", - "extends": [ - "stylelint-config-standard", - "stylelint-config-idiomatic-order" - ] -} \ No newline at end of file diff --git a/.vscode/settings.json b/.vscode/settings.json deleted file mode 100644 index 92bdf59..0000000 --- a/.vscode/settings.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "liveServer.settings.port": 5501, - "editor.codeActionsOnSave": { - "source.fixAll.stylelint": "explicit" - } -} \ No newline at end of file diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md deleted file mode 100644 index fe53274..0000000 --- a/CONTRIBUTING.md +++ /dev/null @@ -1,17 +0,0 @@ -# Worum geht es hier? - -Dieses Repo dient der Unterstützung bei der Betreuung von Praxisprojekten und Abschlussarbeiten. In den verschiedenen Schritten, gerade im Vorfeld der Arbeit, fallen verschiedene Arbeiten an, die hierüber versioniert und kommentiert werden. - -## Wie funktioniert das? -Bitte geben Sie mir Ihren Github Username, so dass ich Sie als Contributer zum Repo hinzufügen kann. Klonen Sie sich das Repo und erzeugen Sie in einem neuen Branch eine Kopie des Verzeichnisses *_works/_template*. Halten Sie sich an folgende Nomenklatur: - -- Name des Branches: jahr-nachname-vorname -- Name des Verzeichnisses: jahr-nachname-vorname - -Sie finden in den verschiedenen Dateien im *_template* Verzeichis weitere Hinweise zur Nutzung. Wenn Sie Feedback möchten, dann initiieren Sie bitte einen [Pull Request](https://github.com/cnoss/thesis/pulls). - - - - -Bei Fragen: fragen :) -Chrstian Noss \ No newline at end of file diff --git a/LICENSE b/LICENSE deleted file mode 100755 index 261eeb9..0000000 --- a/LICENSE +++ /dev/null @@ -1,201 +0,0 @@ - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [yyyy] [name of copyright owner] - - 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. diff --git a/README.md b/README.md deleted file mode 100644 index 837392f..0000000 --- a/README.md +++ /dev/null @@ -1,6 +0,0 @@ -# Praxisprojekte & Abschlussarbeiten bei Christian Noss - -Ich betreue Abschlussarbeiten in den Bereichen Screendesign, Web-Frontend Development, UI-Design und Creative Coding. Auf der [zugehorigen Website](https://cnoss.github.io/thesis/) wird der Prozess beschrieben. - -Hierbei wird auch das Repo hier als ein Teil des Prozesses vewendet. Spätestens ab [Schritt 2](https://cnoss.github.io/thesis/#schritt-2-titel-und-forschungsfrage) erfolgen einige Schritte via Repo, damit ich besser Feedback geben kann und der Änderungsverlauf sichtbar wird. Dazu brauche ich Ihren GitHub Username. - diff --git a/Tasks.md b/Tasks.md deleted file mode 100644 index 257de54..0000000 --- a/Tasks.md +++ /dev/null @@ -1,216 +0,0 @@ -# Frontend Development Prüfung - - -## Bewertung & Niveaustufen - -Die Bewertung erfolgt entlang der folgenden Niveaustufen: - -### Beste Lösung -- Features im Wert von 40 Storypoints sind vollständig umgesetzt und funktionieren -- die Änderungen für die Features sind in der Commit Historie ersichtlich und verständlich erklärt -- alle Features sind gepusht -- der erzeugte Code zeigt, dass der Verfasser\*In ein sehr gutes Verständnis der zugrunde liegenden Technologien und Konzepte hat -- die Änderungen wurden im Sinne der Projektstruktur in den passenden Dateien gemacht -- der erzeugte Code ist nachvollziehbar, selbsterklärend und effizient (semantisches HTML, Nutzung von Nesting & Custom Properties, robustes Javascript) - -### Gute Lösung -- Features im Wert von 30 Storypoints sind vollständig umgesetzt und funktionieren -- die Änderungen für die Features sind in der Commit Historie ersichtlich -- alle Features sind gepusht -- die Änderungen wurden im Sinne der Projektstruktur in den passenden Dateien gemacht -- der erzeugte Code zeigt, dass der Verfasser\*In ein gutes Verständnis der zugrunde liegenden Technologien und Konzepte hat -- der erzeugte Code ist nachvollziehbar, selbsterklärend und effizient (semantisches HTML, Nutzung von Nesting & Custom Properties, robustes Javascript) - -### Passable Lösung -- Features im Wert von 25 Storypoints sind vollständig umgesetzt und funktionieren mir kleinen Ausnahmen -- die Änderungen für die Features sind in der Commit Historie ersichtlich -- alle Features sind gepusht -- der erzeugte Code zeigt, dass der Verfasser\*In ein grundlegendes Verständnis der zugrunde liegenden Technologien und Konzepte hat - -### Akzeptable Lösung -- Features im Wert von 20 Storypoints sind vollständig umgesetzt und funktionieren überwiegend -- die Änderungen für die Features sind in der Commit Historie ersichtlich -- die Änderungen sind gepusht -- der erzeugte Code zeigt, dass der Verfasser\*In die zugrunde liegenden Technologien und Konzepte in wesentlichen Teilen verstanden hat - - -## Hinweise zur Prüfung - -Bitte beachten Sie folgende Punkte: - -1. Lesen Sie die Aufgaben gründlich durch. Nicht nur kurz überfliegen, dann drauf los hacken und nachher feststellen, dass die Aufgabe ganz anders gemeint war oder gar schon einen Teil der Lösung enthielt ;) -2. Mergen Sie alle Änderungen in den *Main*-Branch, denn nur den schauen wir uns an. -3. Machen Sie einen Commit pro Aufgabe. Wenn es nicht anders geht, können es auch mehrere Commits pro Aufgabe sein, aber am Besten nur einer. Die ID der Aufgabe gehört in die Commit Message! -5. Beachten Sie die Zeitschätzungen bei den Aufgaben. Diese geben Ihnen auch ein Hinweis auf die Komplexität der Aufgabe. -7. Nehmen Sie sich Zeit um die Verzeichnisstruktur und bereits gegebenen Code zu erfassen. -9. Nutzen Sie so gut es geht die bereits definierten CSS Custom Properties (variables.css). -10. Achten Sie darauf, dass der finale Code valide ist. Nutzen Sie also den [W3C Validator](https://validator.w3.org/nu/#textarea). Und achten Sie auch darauf, dass Stylelint möglichst wenig bis keine Fehler ausgibt. - -## Eigenständigkeit der Leistung - -Wir möchten sicherstellen, dass Sie die Prüfung bestmöglich absolvieren können, daher möchten wir einige wichtige Regeln und Richtlinien hervorheben: - -1. Eigenständige Leistung -Die Coding-Prüfung erfordert, dass Sie die Features eigenständig umsetzen. Externe Hilfe von Personen in Echtzeit ist nicht gestattet. Wir legen großen Wert darauf, Ihre individuellen Fähigkeiten und Ihr Wissen zu bewerten. - -2. Externe Quellen und KI-gestützte Tools -Sie dürfen externe Quellen wie Online-Dokumentationen, Foren und Bücher sowie KI-gestützte Tools nutzen, um Informationen und Lösungsansätze zu finden. Wir ermutigen Sie, diese Ressourcen effektiv zu nutzen, um Ihre Lösungen zu verbessern. - -3. Kennzeichnung von fremdem Code -Falls Sie Teile eines Codes von externen Quellen übernehmen, seien Sie transparent und kennzeichnen Sie diese Stellen eindeutig. Dies dient der Transparenz und ermöglicht es uns, Ihre Leistung fair zu bewerten. In der Regel erkennen wir fremden Code sehr schnell. - -4. Kommunikation mit anderen Teilnehmern -Die Kommunikation mit anderen Teilnehmern während der Prüfung ist nicht gestattet. Dies schließt jegliche Form der Zusammenarbeit bei der Lösung der Features aus. - -Wir vertrauen darauf, dass Sie diese Regeln respektieren und die Prüfung in Übereinstimmung mit den genannten Richtlinien absolvieren. Wir wünschen Ihnen viel Erfolg und hoffen, dass Sie Ihr Wissen und Ihre Fähigkeiten optimal präsentieren können. - -Bei Fragen oder Unklarheiten stehen wir Ihnen gerne zur Verfügung. - -## Inbetriebnahme - -Klonen Sie das Repo und führen dann folgende Befehle im Verzeichnis des Repos aus: - -``` -npm install -npm run dev -``` - - -## Material - -- [Screenmovie Layouts large](https://youtu.be/31-8EFoqyMs) -- [Screenmovie Layouts small](https://youtu.be/Z7ArdKxvn2o) -- [Layouts als Bilder](https://th-koeln.sciebo.de/s/olezG7hycXgqlXh) pw: fd-2024 - -## Tasks - - -### 1: HTML auf Validität prüfen - -Prüfen Sie mit dem [W3C Validator](https://validator.w3.org/nu/#textarea) ob die *index.html* valide ist. Falls nicht, passen Sie bitte die Datei entsprechend an. - -@Volker: Dauer(??) Komplexität(??) 1 - 10 - -**HTML** - -### 2: Ablauf einklappbar machen - -Der Ablauf bei der Themenfindung (Vor der Arbeit, Während der Arbeit, Abschluss der Arbeit) soll einklappbar sein, damit die Seite nicht zu lang wird. Kleiner Tipp: das Details Element bringt fast alles erforderliche dafür mit. - -@Volker: Dauer(??) Komplexität(??) 1 - 10 - -**HTML, CSS** - -### 3: Kleine Anpssung des Farbschemas - -Das Farbschema soll ein wenig angepasst werden, damit die Seite lebendiger ist. Alle Farben sind bereits in der `variabels.css` vorhanden. - -@Volker: Dauer(??) Komplexität(??) 1 - 10 - -**CSS** - -### 4: Sektion «Thema vorschlagen» erstellen - -Im unteren Bereich soll ein Formular zum Vorschlagen von Themen integriert werden. Nutzen Sie dabei auch folgenden Einleitungstext: - -> Haben Sie einen Themenwunsch oder -vorschlag? Ich suche vor allem nach Themen, die Interfaces im industriellen und musealen Kontext behandeln. Keine reinen Tech-Themen – Interfaces im Fokus! - -@Volker: Dauer(??) Komplexität(??) 1 - 10 - -**HTML, CSS** - -### 5: Sektion «Abgeschlossene Arbeiten» erstellen - -Über der Sektion «Thema vorschlagen» soll die Sektion «Abgeschlossene Arbeiten» erstellt werden. Hier gibt es zwei mögliche Varianten, eine mit Javascript und eine ohne. Entscheiden Sie sich für eine Variante. - -#### Variante A: statisch für die ersten fünf Arbeiten. -Erzeugen Sie mit statischem HTML eine entsprechende Übersicht für die ersten fünf Einträge. Die Inhalte finden Sie in der JSON Datei unter Material. - -@Volker: Dauer(??) Komplexität(??) 1 - 10 - -**HTML, CSS** - -#### Variante B: Dynamisch via Javascript. -Erzeugen Sie die Übersicht mit allen Einträgen via Javascript. Die Inhalte finden Sie in der JSON Datei unter Material. Die URL für das JSON ist wie folgt: - -``` -URL -``` - -@Volker: Dauer(??) Komplexität(??) 1 - 10 - -**HTML, CSS, JS** - -## 6: Seite für eine abgeschlossene Arbeit erstellen - -Erzeugen Sie eine Beispielseite für eine absgeschlossene Arbeit. Verlinken Sie diese aus der Übersicht. Nutzen Sie dabei die Arbeit "Can I CAI?" von Nils Polarek. Die Inhalte finden Sie unter Material. - -@Volker: Dauer(??) Komplexität(??) 1 - 10 - -**HTML, CSS** - -## 7: Leichte Designanpssung der aktuellen Themenvorschläge - -Die Themenvorschläge ganz oben auf der Seite sollen gestalterisch leicht überarbeitet werden. - -@Volker: Dauer(??) Komplexität(??) 1 - 10 - -**CSS** - -## 8: Icons zu den Hauptüberschriften hinzufügen - -Fügen Sie zu den Überschriften auf der `index.html` Icons hinzu. - -@Volker: Dauer(??) Komplexität(??) 1 - 10 - -**HTML, CSS** - -## 9: Sektion «Abgeschlossene Arbeiten» ausklappbar machen - -Bei der Übersicht in der Sektion «Abgeschlossene Arbeiten» sollen nur die ersten fünf Arbeiten gezeigt werden. Die weiteren Arbeiten sollen erst nach einem Klick auf den Button «Weitere Arbeiten anzeigen» angezeigt werden. - -@Volker: Dauer(??) Komplexität(??) 1 - 10 - -**HTML, CSS, JS** - - -## 10: Bilder aus dem Projekt groß anzeigen - -Auf der Seite für eine abgeschlossene Arbeit sind unten Bilder integriert. Diese sollen via Klick groß angezeigt werden. - -@Volker: Dauer(??) Komplexität(??) 1 - 10 - -**HTML, CSS, JS** - -## 11: Bilder aus dem Projekt als Slideshow anzeigen - -Auf der Seite für eine abgeschlossene Arbeit sind unten Bilder integriert. Diese sollen in der großen Anzeige als Slideshow angezeigt werden, so dass Nutzer:innnen via Klick direkt zum nächsten Bild kommen können. - -@Volker: Dauer(??) Komplexität(??) 1 - 10 - -**HTML, CSS, JS** - -## 12: YouTube Video responsive integrieren - -Auf der Seite für eine abgeschlossene Arbeit soll unten ein YouTube Video integriert werden. Die Integration muss responsiv sein. Hier finden Sie das Video `https://www.youtube.com/watch?v=QXwDuePHw5U` - -@Volker: Dauer(??) Komplexität(??) 1 - 10 - -**HTML, JS** - -## 13: Adaptives Layout für Stammdaten bei fertigen Projekten - -Die Stammdaten zu einem Projekt sollen bei kleinen und mittleren Viewports unter der Überschrift angezeigt werden. Bei sehr großen Viewports sollen diese nach rechts neben den Text verschoben werden. - -@Volker: Dauer(??) Komplexität(??) 1 - 10 - -**CSS** - -## 14: Elegante Übergänge bei den Form Labels - -Beim Formular in der Sektion «Thema vorschlagen» sollen die Label beim Klick in ein Formularfeld elegant animiert werden. - -@Volker: Dauer(??) Komplexität(??) 1 - 10 - -**CSS** - diff --git a/_config.yml b/_config.yml deleted file mode 100755 index d345872..0000000 --- a/_config.yml +++ /dev/null @@ -1,40 +0,0 @@ -site: Index Jekyll Theme - -target: https://index.jekyllthemes.io -baseurl: "/thesis" -# host: 172.20.10.4 - -defaults: - - scope: - path: "" - values: - layout: "default" - - scope: - path: "images/small" - values: - image: true - -markdown: kramdown - -kramdown: - input: GFM - syntax_highlighter: rouge - -sass: - style: compressed - -collections: - evaluation-criteria: - output: false - feed: - output: true - research-questions: - output: true - works: - output: true - -## plugins: -# - jekyll-paginate -# - jekyll-sitemap - - \ No newline at end of file diff --git a/_data/links.yml b/_data/links.yml deleted file mode 100755 index 81d008c..0000000 --- a/_data/links.yml +++ /dev/null @@ -1,5 +0,0 @@ -module: - gg: https://cnoss.github.io/generative-gestaltung/ - sd: prof @th_koeln // founder @klickmeister // \#longboarding \#snowboarding \#mtb \#music \#drums - favicon_image: /images/favicon.ico - description: Ein paar Infos über mich. Bei Fragen oder coolen Projektideen oder Freizeitaktivitäten bitte anrufen :) diff --git a/_data/settings.yml b/_data/settings.yml deleted file mode 100755 index ff14315..0000000 --- a/_data/settings.yml +++ /dev/null @@ -1,5 +0,0 @@ -basic_settings: - site_title: Abschlussarbeiten @cnoss - site_tagline: Professur für Kommunikationsdesign in der Medieninformatik - favicon_image: /assets/img/favicon.ico - description: Ein bisschen Struktur und Prozess für Projekt- und Abschlussarbeiten unter meiner Betreuung. diff --git a/_includes/after-finishing.html b/_includes/after-finishing.html deleted file mode 100755 index af63820..0000000 --- a/_includes/after-finishing.html +++ /dev/null @@ -1,15 +0,0 @@ -Abhängig von der Art der Arbeit unterscheiden sich die Prozesse und Formalia. Hier die verschiedenen Varianten: - -#### Praxisprojekt -Das fertige Praxisprojekt muss im Rahmen des [Praxisprojektseminars](https://th-koeln.github.io/mi-bachelor-praxisprojektseminar/) vorgestellt und diskutiert werden. Das Werk und die zugehörigen Artefakte hinterlegen oder verlinken Sie bitte via [Thesis Repo](https://github.com/cnoss/thesis). - -#### Bachelor- und Masterarbeit -Die Arbeit muss fristgerecht den Prüfer:innen und dem [Studienbüro](https://www.th-koeln.de/studium/studienbuero-campus-gummersbach_5313.php) bereit gestellt werden. Dazu die digitale Version in einer E-Mail an die Prüfer:innen und das [Studienbüro](https://www.th-koeln.de/studium/studienbuero-campus-gummersbach_5313.php#sprungmarke_1_0) schicken und die Papierversion(en) fristgerecht dem Studienbüro zusenden oder einwerfen. Bei Fragen hierzu bitte das Studienbüro kontaktieren. - -Die Prüfer:innen bewerten die Arbeit. Wird diese mit 4.0 oder besser bewertet, vereinbaren wir einen Termin für das Kolloquium, welches dann die letzte Prüfung im Studium ist. - -Zusätzlich zur Abgabe an die Prüfer:innen und dem Studienbüro, hinterlegen oder verlinken Sie das Werk und die zugehörigen Artefakte bitte via [Thesis Repo](https://github.com/cnoss/thesis) und in der E-Mail. - -Hier finden Sie einige [Tipps & Informationen zum Kolloquium](information-on-the-colloquium). - - diff --git a/_includes/artefacts-and-evaluation.html b/_includes/artefacts-and-evaluation.html deleted file mode 100755 index 1c4bcba..0000000 --- a/_includes/artefacts-and-evaluation.html +++ /dev/null @@ -1,4 +0,0 @@ -Hier finden Sie die [Bewertungskriterien](evaluation/abschlussarbeiten-und-praxisprojekte.html) und die Artefakte, auf die sich die Bewertung stützt. Für die Bewertung von Code Repositories folge ich diesem Leitfaden. - - - diff --git a/_includes/fields-of-interest.html b/_includes/fields-of-interest.html deleted file mode 100755 index ca6e6cc..0000000 --- a/_includes/fields-of-interest.html +++ /dev/null @@ -1,15 +0,0 @@ -{% assign topics = site.research-questions | where: "status", "proposal" %} - - - \ No newline at end of file diff --git a/_includes/footer.html b/_includes/footer.html deleted file mode 100755 index 1b1cda6..0000000 --- a/_includes/footer.html +++ /dev/null @@ -1,14 +0,0 @@ - \ No newline at end of file diff --git a/_includes/get-evaluation-criteria.html b/_includes/get-evaluation-criteria.html deleted file mode 100755 index 0b34a68..0000000 --- a/_includes/get-evaluation-criteria.html +++ /dev/null @@ -1,4 +0,0 @@ -{% for criteria in site.evaluation-criteria %} -

{{ criteria.title }}

-

{{ criteria.content | markdownify }}

-{% endfor %} \ No newline at end of file diff --git a/_includes/header.html b/_includes/header.html deleted file mode 100755 index cef171f..0000000 --- a/_includes/header.html +++ /dev/null @@ -1,5 +0,0 @@ -
-
-

Praxisprojekte & Abschlussarbeiten

-

bei Christian Noss

-
\ No newline at end of file diff --git a/_includes/intro.html b/_includes/intro.html deleted file mode 100755 index 1c8a3b9..0000000 --- a/_includes/intro.html +++ /dev/null @@ -1 +0,0 @@ -Ich betreue Abschlussarbeiten in den Bereichen **Screendesign**, **Web-Frontend Development**, **UI-Design** und **Creative Coding**. Egal, ob ich Sie beim [Praxisprojekt](https://www.medieninformatik.th-koeln.de/study/bachelor/moduls/ba_praxisprojekt/), der [Bachelorarbeit](https://www.medieninformatik.th-koeln.de/study/bachelor/moduls/ba_bachelorarbeit/) oder der [Masterarbeit](https://www.medieninformatik.th-koeln.de/study/master/moduls/ma_all_modul_masterarbeit/) betreuen soll, lesen Sie bitte vorab die entsprechende Modulbeschreibung und konsultieren Sie auch die für Sie geltende Prüfungsordnung bezüglich der notwendigen Voraussetzungen. diff --git a/_includes/preparing-the-thesis.html b/_includes/preparing-the-thesis.html deleted file mode 100755 index c675fbe..0000000 --- a/_includes/preparing-the-thesis.html +++ /dev/null @@ -1,24 +0,0 @@ - - -Für Absprachen zum Thema oder zur Arbeit selbst biete ich mittwochs eine Sprechstunde an. Bitte buchen Sie sich jeweils einen [Sprechstundentermin](https://cnoss.youcanbook.me). Hier stehen immer 15 Minuten Slots zur Verfügung. Bitte buchen Sie immer nur einen Slot, es sei denn, wir haben etwas anderes abgesprochen. Bereiten Sie die Termine so vor, dass wir Ihre Fragen im Rahmen der Gesprächszeit beantworten können. Termine außerhalb der Sprechstunden sind in der Regel nicht möglich. - -#### Schritt 1: Themenfindung -Bringen Sie zum ersten Termin eine Themenfeldanalyse in Form einer *Concept Map* zu Ihrem Thema mit. Falls Sie mehrere Themen haben, dann bringen Sie mehrere Maps mit. Aus der Map sollte hervorgehen, in welchem Themenfeld Sie Ihre Arbeit ansiedeln möchten und welche Themen an Ihr Thema angrenzen. Bringen Sie bitte auch eine Schlagwortwolke mit Begriffen mit, die in Ihrem späteren Titel enthalten sein könnten. -Im Idealfall können wir uns in dieser ersten Sitzung auf ein Themenfeld und eine grobe Zielsetzung einigen. Steht ein Thema fest, dann erfolgt die weitere Dokumentation, Schulterblick und Abgabe der Artefakte, über mein [Thesis Repo](https://github.com/cnoss/thesis). - -#### Schritt 2: Titel und Zielbild der Arbeit -Für den nächsten Sprechstundentermin bereiten Sie bitte mindestens **10 mögliche Titel** der Arbeit und mindestens **3 mögliche Zielbilder** vor. Dokumentieren Sie diese im [Thesis Repo](https://github.com/cnoss/thesis). Wir besprechen Titel und Zielbilder dann gemeinsam, versuchen einen verbindlichen Titel zu vereinbaren und besprechen mögliche Vorgehensoptionen. - -#### Schritt 3: Anmeldung der Arbeit (nur Bachelor- und Masterarbeiten) -Bachelor- und Masterarbeiten müssen angemeldet werden. Hier finden Sie die erforderlichen Unterlagen: -- [Medieninformatik Bachelor – Ordnungen und Formulare ](https://www.th-koeln.de/studium/medieninformatik-bachelor--ordnungen-und-formulare_3963.php) -- [Medieninformatik Master – Ordnungen und Formulare](https://www.th-koeln.de/studium/medieninformatik-master--ordnungen-und-formulare_3724.php) - - - - - - - - - diff --git a/_includes/shift-2024.html b/_includes/shift-2024.html deleted file mode 100755 index 6d8cde0..0000000 --- a/_includes/shift-2024.html +++ /dev/null @@ -1,22 +0,0 @@ -Mit dem Sommersemester habe ich die Ausrichtung der Themen und Arbeiten, die ich betreue, umgestellt. Ich betreue nur Projektarbeiten, an deren Ende ein erlebbares Werk steht. Das kann eine Software, ein Film, ein Spiel, ein Kunstwerk, ein Prototyp, ein Designkonzept, eine Installation, eine App, ein Workshop, ein Event, ein Spielzeug, ein Instrument, ein Tool, ein Service, ein Produkt, ein Unternehmen, eine Organisation, eine Initiative, eine Kampagne, eine Bewegung, eine Plattform, eine Community, eine Aktion, eine Performance, eine Ausstellung, eine Website, ein Magazin, ein Podcast, ein Video, ein Blog, ein Comic, ein Festival, eine Konferenz, ein Coaching, ein Mentoring, ein Training, ein Modell, eine Visualisierung, ein Möbel, ein Kleidungsstück, ein Accessoire … sein. Aber es ist keine Hausarbeit, die ausschließlich in einem PDF-Dokument endet. - -### Warum? - -Ich habe in den letzten Jahren festgestellt, dass die meisten Studierenden, die ich betreue etwas machen wollen, was sie begeistert, was sie stolz macht, was sie zeigen können und sie bewegt. Sie wollen etwas, das sie in der Welt sichtbar macht. Ich will Arbeiten und Projekte betreuen, die das ermöglichen. Und dies lässt sich nur selten in einem PDF-Dokument von 60 Seiten abbilden. - -### Was muss abgegeben werden? - -Neben dem Werk müssen verschiedene Artefakte abgegeben werden, die das Werk dokumentieren und die Arbeit reflektieren. Dazu gehören: - - - -Diese bilden die Basis für die Bewertung der Arbeit. Abhängig von der Art der Arbeit (Praxisprojekt, Bachelorarbeit oder Masterarbeit) gibt es unterschiedliche Anforderungen an die Artefakte, bzw. werden nicht alle Artefakte benötigt. Weitere Informationen dazu finden Sie in den jeweiligen Erläuterungen zu den Arbeiten: -- [Praxisprojekt](types-of-work#praxisprojekt) -- [Bachelorarbeit](types-of-work#bachelorarbeit) -- [Masterarbeit](types-of-work#masterarbeit) \ No newline at end of file diff --git a/_includes/state-of-work.html b/_includes/state-of-work.html deleted file mode 100644 index cf654b2..0000000 --- a/_includes/state-of-work.html +++ /dev/null @@ -1,39 +0,0 @@ -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
PraxisprojekteBachelor ArbeitenMaster Arbeiten
in Vorbereitung
in Bearbeitung
in Bewertung
freie Plätze
- -
\ No newline at end of file diff --git a/_includes/suggest-topic.html b/_includes/suggest-topic.html deleted file mode 100644 index 243d5f6..0000000 --- a/_includes/suggest-topic.html +++ /dev/null @@ -1,25 +0,0 @@ -

- Haben Sie einen Themenwunsch oder -vorschlag? Ich suche vor allem nach Themen, die Interfaces im industriellen und musealen Kontext behandeln. Keine reinen Tech-Themen – Interfaces im Fokus! -

- -
-
-
- - -
-
- - -
-
- - -
-
- - -
- -
-
\ No newline at end of file diff --git a/_includes/working-on-the-thesis.html b/_includes/working-on-the-thesis.html deleted file mode 100755 index 2a8dda3..0000000 --- a/_includes/working-on-the-thesis.html +++ /dev/null @@ -1,4 +0,0 @@ -Die Arbeit/ Projekt führen Sie weitestgehend selbständig durch. Falls Sie Feedback oder Unterstützung benötigen, kommen Sie bitte auch in die Sprechstunde. Ich brauche keine Statusupdates oder Zwischenversionen. Bei Bedarf kann ich das **Inhaltsverzeichnis**, die **Einleitung** und das **Literaturverzeichnis** gegenlesen. Stellen Sie auch hierfür bitte die Korrekturversion via [Thesis Repo](https://github.com/cnoss/thesis) bereit und initieren Sie einen Pull Request. - - - diff --git a/_layouts/default.html b/_layouts/default.html deleted file mode 100755 index fb56c19..0000000 --- a/_layouts/default.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - - - - - - {{ site.data.settings.basic_settings.site_title }} // {{ site.data.settings.basic_settings.site_tagline }} - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -{% include header.html %} -
- {{content}} -
-{% include footer.html %} - - - \ No newline at end of file diff --git a/_layouts/empty.html b/_layouts/empty.html deleted file mode 100644 index e69de29..0000000 diff --git a/_layouts/simple.html b/_layouts/simple.html deleted file mode 100755 index f886019..0000000 --- a/_layouts/simple.html +++ /dev/null @@ -1,10 +0,0 @@ ---- - -layout: default - ---- - -
-

{{page.title}}

- {{ content | markdownify }} -
diff --git a/_layouts/work-result.html b/_layouts/work-result.html deleted file mode 100755 index 9a9f086..0000000 --- a/_layouts/work-result.html +++ /dev/null @@ -1,78 +0,0 @@ ---- -layout: default ---- - -
-
- {% if page.thumbnail and page.thumbnail != '' %} -
- {{page.title}} -
- {% endif %} - -

{{page.title}}

-

{{page.type}} von {{page.author}}

-
- -
- - - {% if page.avatar and page.avatar != '' %} -
- {{page.author}} -
- {% endif %} - -
- -
- {{ content | markdownify }} -
- -
- -{% if page.slideshow and page.slideshow == true %} -{% assign path = page.url | relative_url | split: "/" %} -{% assign path = path | pop %} -{% assign path = path | join: "/" %} - -
-

Bilder aus dem Projektverlauf

- -
-{% endif %} - -{% if page.final-presentation and page.final-presentation != '' %} -
-

Abschlussvideo

-
- -
-
-{% endif %} diff --git a/_layouts/work.html b/_layouts/work.html deleted file mode 100755 index e05395e..0000000 --- a/_layouts/work.html +++ /dev/null @@ -1,23 +0,0 @@ ---- -layout: default ---- - -
-

{{page.title}}

- - -
-
Keywords
-
-
    - {% for list-item in page.keywords %}
  • {{list-item}}
  • {% endfor %} -
-
-
Status
-
{{page.status}}
-
Datum
-
{{page.datum | date: "%d.%m.%Y"}}
-
- - {{ content | markdownify }} -
diff --git "a/_research-questions/2025-03-03-selektive-komprimierung-f\303\274r-bilder-in-web-anwendungen.md" "b/_research-questions/2025-03-03-selektive-komprimierung-f\303\274r-bilder-in-web-anwendungen.md" deleted file mode 100644 index 27217cd..0000000 --- "a/_research-questions/2025-03-03-selektive-komprimierung-f\303\274r-bilder-in-web-anwendungen.md" +++ /dev/null @@ -1,8 +0,0 @@ ---- -layout: work -title: Selektive Komprimierung für Bilder in Web Anwendungen -datum: 03.03.2025 -status: proposal -keywords: Web, Bilder, Komprimierung, KI ---- -Im Web versuchen wir stets die Ladezeit der Website und aller notwendigen Ressourcen möglichst kurz zu halten. Daher werden pixel-basierte Bilder komprimiert. Für verschiedene Bildinhalte sind unterschiedliche Komprimierungverfahren und Komprimierungsstärken von Vorteil. Im Rahmen dieser Arbeit sollen verschiedene Bildformate und Komprimierungsmöglichkeiten für unterschiedliche Bildinhalte analysiert und verglichen werden. Im zweiten Schritt soll ein Verfahren/ Tool/ Plugin entwickelt werden, welches automatisiert für ein konkretes Bild mit konkretem Bildinhalt das effizienteste Format und Komprimierungverfahren anwendet. diff --git a/_research-questions/2025-03-05-web-basierte-anwendung-zur-analyse-der-papierstruktur-historischer-drucke-im-kontext-des-cranach-digital-archive.md b/_research-questions/2025-03-05-web-basierte-anwendung-zur-analyse-der-papierstruktur-historischer-drucke-im-kontext-des-cranach-digital-archive.md deleted file mode 100644 index 35357fb..0000000 --- a/_research-questions/2025-03-05-web-basierte-anwendung-zur-analyse-der-papierstruktur-historischer-drucke-im-kontext-des-cranach-digital-archive.md +++ /dev/null @@ -1,17 +0,0 @@ ---- -layout: work -title: Web-basierte Anwendung zur Analyse der Papierstruktur historischer Drucke - im Kontext des Cranach Digital Archive -datum: 05.03.2025 -status: proposal -keywords: Web, Cranach Digital Archive, UX, Frontend ---- -In diesem Projekt sollen die Ergebnisse der Arbeit [ChainLineNet: Deep-Learning-Based Segmentation and Parameterization of Chain Lines in Historical Prints](https://www.mdpi.com/2313-433X/7/7/120) nutzbar gemacht werden. Die Papierstruktur historischer Drucke ist eine Art einzigartiger Fingerabdruck. Papier mit gleicher Herkunft weist ähnliche Kettenlinienabstände auf. Die manuelle Messung von Kettenlinienabständen jedoch extrem zeitaufwendig. - -Im Rahmen der Arbeit wurde **ChainLineNet** entwickelt, eine Deep-Learning-Methode zur automatisierten Erkennung und Parametrisierung von Kettenlinien in historischen Drucken des 16. Jahrhunderts. Dafür wurde ein end-to-end trainierbares neuronales Netzwerk auf Basis eines **konditionalen generativen adversarialen Netzwerks (cGAN)** erstellt, das sowohl die Segmentierung als auch die präzise Messung der Linien vornimmt. Mit ChainLineNet ist es möglich, Kettenlinienmuster systematisch zu analysieren und miteinander zu vergleichen, um Rückschlüsse auf die Herkunft von Papier zu ziehen. Damit können Museen und Archive effizienter arbeiten und beispielsweise Drucke identifizieren, die aus derselben Papierform stammen ("Moldmates"). Die Methode bietet somit eine wertvolle Unterstützung für die Untersuchung und Authentifizierung historischer Dokumente. - -Leider fehlt hierbei noch die Brücke zu den Endnutzer:innen. Im Rahmen dieses Projekts soll diese Lücke geschlossen werden und auf Basis des ChainLineNets eine nutzbare Anwendung für Museen und Archive entwickelt werden, mit der konkrete Fragestellungen und Workflows abgebildet werden. - -## Weiteres Material -- [ChainLineNet: Deep-Learning-Based Segmentation and Parameterization of Chain Lines in Historical Prints (Paper)](https://www.mdpi.com/2313-433X/7/7/120) -- [Differentiable RANSAC: Learning Robust Line Fitting](https://github.com/vislearn/DSACLine) diff --git a/_research-questions/adaptive-watermarks-cranach.md b/_research-questions/adaptive-watermarks-cranach.md deleted file mode 100644 index ddb2748..0000000 --- a/_research-questions/adaptive-watermarks-cranach.md +++ /dev/null @@ -1,15 +0,0 @@ ---- -title: Adaptive Wasserzeichen Lucas Cranach -keywords: WebDev, Massenbildbearbeitung, WebArch -layout: work -status: in-progress -datum: 11.05.2023 ---- - -Die offene Forschungsdatenbank [Cranach Digital Archive](https://lucascranach.org/gallery) umfasst derzeit über 2000 Werke aus dem Werk Lucas Cranachs. Insgesamt kann über das web-basierte Tool auf mehr als 20.000 Bilder zugegriffen werden. Diese werden mit «Wasserzeichen» versehen, damit die Urheberschaft klar wird. - -Die Wasserzeichen und der zugehörige Prozess sind derzeit etwas improvisiert und die Wasserzeichen sind teils zu offensichtlich und teils zu wenig sichtbar. Hier gilt es ein Verfahren zu entwicklen, dass «bessere» Wasserzeichen erzeugt und sich im Rahmen des Ingest Prozesses sinnvoll eingliedert. - ---- -### Weitere Infos: -- [Cranach Digital Archive](https://lucascranach.org) \ No newline at end of file diff --git a/_research-questions/alternative-texts-by-ml.md b/_research-questions/alternative-texts-by-ml.md deleted file mode 100644 index b94bf52..0000000 --- a/_research-questions/alternative-texts-by-ml.md +++ /dev/null @@ -1,14 +0,0 @@ ---- -layout: work -title: Alternativtexte für Bilder via KI -datum: 15.01.2023 -status: unpublished -keywords: Accessibility, KI, Bildanalyse ---- - -Alternativtexte für Bilder auf Websites machen den Inhalt und die Funktion von Bildern für blinde Menschen zugänglich. Außerdem machen sie Bildinhalte für Maschinen zugänglich. Wie ist der Stand der Technik/ Forschung bei der automatischen Erstellung von Alternativtexten? - ---- - -### Weitere Infos -[Nathalie Kuhn, 2022. Erarbeitung eines barrierefreien UX-Design für sehbehinderte und blinde Personen im "E-Commerce"-Bereich [online]. Gummersbach.](https://doi.org/10.57683/EPUB-2040) diff --git a/_research-questions/arbeiten-rund-um-das-projekt-plyteq.md b/_research-questions/arbeiten-rund-um-das-projekt-plyteq.md deleted file mode 100644 index 789c624..0000000 --- a/_research-questions/arbeiten-rund-um-das-projekt-plyteq.md +++ /dev/null @@ -1,53 +0,0 @@ ---- -layout: work -title: PLYTEQ – Kooperationsprojekte mit dem Institut für Technische Gebäudeausrüstung -date: 12.02.2024 -datum: 12.02.2024 -status: unpublished -keywords: - - UI/UX - - Design - - App - - KI ---- - - - - -PLYTEQ ist eine Ausgründung aus den Forschungsaktivitäten des Instituts für Technische Gebäudeausrüstung und wird im Rahmen des Programms StartUp-Transfer.NRW durch die EU-Förderinitiative EFRE unterstützt. - -**PLYTEQ entwickelt die Smart Watch für Gebäude!** - -Schlüsseltechnologien sind Embedded Systems, künstliche Intelligenz zur Datenaufbereitung, Informationsmodellierung/digitale Zwillinge und u.a. technisches Monitoring als Anwendung. - -In diesem Kontext werden Studierende mit Dev, Design und UX Skills gesucht, mit denen gemeinsam neue Konzepte erforscht und innovative Anwendungen entwickelt werden, die dabei helfen, dass die Daten der Smart Watch in der zugehörigen App so intuitiv aufbereitet werden, dass jeder sein Gebäude verstehen und optimieren kann. - -[Weitere Infos](/thesis/assets/uploads/flyerdesignthinkinggummersbach.pdf) - -Hierzu machen wir mit dem Team von PLYTEQ zunächst einen kleinen Design Thinking/ Ideenworkshop. Daraus sollten dann idealerweise konkrete Ideen für Abschlussarbeiten (bzw. Praxisprojekte) im Bachelor und Master entstehen. Ein paar kontrete Ideen zu Themen gibt es bereits (siehe unten). - ---- - -### Ideenworkshop -14\. März 2024 -13:00 Uhr -Raum 3.215 -Campus Gummersbach - ---- - -Falls Interesse besteht, bitte eine E-Mail an mich oder an [contact@plyteq.com](contact@plyteq.com). - -- Konzeptionierung eines KI-basierten Chatbots zur Optimierung des Facility Managements -- Autonome Optimierung von Bestandsautomatisierungen durch Methoden der Künstlichen Intelligenz/Reinforcement Learning -- Extraktion von Informationen aus Planungs- und Herstellerunterlagen zur Integration in den digitalen Zwilling von Anlagen/Gebäuden mit Methoden der Künstlichen Intelligenz (NLP, Computer Vision) -- BIM vs. Industrie 4.0 - Synergien zwischen BIM und dem digitalen Zwilling der Industrie​ -Plattformintegration von KPIs inkl. automatisierter Bereitstellung von Handlungsempfehlungen​ -- Intuitive Navigation durch den digitalen Zwilling eines Gebäudes, visuelle Unterstützung durch 3D-Modellierung (Frontend, UX/UI) -- Visuell gestützte Interaktion mit dem digitalen Zwilling durch Drag&Drop Funktionalität zur Veränderung der Struktur des Zwillings (Frontend, UX/UI) -- Preisgestaltung und Marketing-Strategien ​ diff --git a/_research-questions/captcha-for-blind-people.md b/_research-questions/captcha-for-blind-people.md deleted file mode 100644 index a794f06..0000000 --- a/_research-questions/captcha-for-blind-people.md +++ /dev/null @@ -1,14 +0,0 @@ ---- -layout: work -title: Capchas für Menschen mit Sehbehinderungen -datum: 15.01.2023 -status: unpublished -keywords: Accessibility, Web-Security, UX ---- - -Wie gut lassen sich Captchas (completely automated public Turing test to tell computers and humans apart) von Menschen mit Sehbehinderungen benutzen und wie müsste ein Captcha gestaltet sein, damit es von dieser Nutzergruppe optimal verwendet werden kann? - ---- - -### Weitere Infos -[Nathalie Kuhn, 2022. Erarbeitung eines barrierefreien UX-Design für sehbehinderte und blinde Personen im "E-Commerce"-Bereich [online]. Gummersbach.](https://doi.org/10.57683/EPUB-2040) diff --git a/_research-questions/carbon-reduction-by-design.md b/_research-questions/carbon-reduction-by-design.md deleted file mode 100644 index ecf694c..0000000 --- a/_research-questions/carbon-reduction-by-design.md +++ /dev/null @@ -1,17 +0,0 @@ ---- -layout: work -title: Energieeffizienz von Web-Anwendungen -datum: 15.01.2023 -status: unpublished -keywords: WebDev, Sustainability ---- - -Das Internet verursacht derzeit etwa 3,8 % der weltweiten Kohlenstoffemissionen, Tendenz steigend. Welche Auswirkungen auf die Umwelt haben unsere Design- und Technologieentscheidungen? - - - ---- -### Weitere Infos -- [What is sustainable web design?](https://sustainablewebdesign.org) -- [Sustainable Web Manifesto](https://www.sustainablewebmanifesto.com) -- [Sustainable Web Design](https://www.mightybytes.com/blog/sustainable-web-design/) diff --git a/_research-questions/cranach-infoseite.md b/_research-questions/cranach-infoseite.md deleted file mode 100644 index 31dc854..0000000 --- a/_research-questions/cranach-infoseite.md +++ /dev/null @@ -1,15 +0,0 @@ ---- -title: Redesign des redaktionellen Bereich des Cranach Digital Archives -keywords: Screendesign, WebDesign, Frontend Dev -layout: work -status: proposal -datum: 07.11.2023 ---- - -Die offene Forschungsdatenbank [Cranach Digital Archive](https://lucascranach.org/gallery) umfasst derzeit über 2000 Werke aus dem Werk Lucas Cranachs. Insgesamt kann über das web-basierte Tool auf mehr als 20.000 Bilder zugegriffen werden. Das Gesamtprojekt besteht aus verschiedenen Teilprojekten, die zumeist aus verschiedenen Projekt-/Förderphasen hervorgegangen sind. - -Grundsätzlich ist die cda Website in zwei verschiedene Bereiche aufgeteilt: die Forschungsdatenbank und der redaktionelle Teil. Im Rahmen dieses Projekts soll der redaktionelle Teil neu gestaltet und das Redesign (im besten Fall) auch implementiert werden. - ---- -### Weitere Infos: -- [Cranach Digital Archive](https://lucascranach.org) \ No newline at end of file diff --git a/_research-questions/cranach-meisterwerke-coffeetable.md b/_research-questions/cranach-meisterwerke-coffeetable.md deleted file mode 100644 index e7c8d0a..0000000 --- a/_research-questions/cranach-meisterwerke-coffeetable.md +++ /dev/null @@ -1,17 +0,0 @@ ---- -title: Cranach Meisterwerke als digitales Coffee Table Book -keywords: Screendesign, Interactiondesign, WebDesign, Frontend Dev -layout: work -status: proposal -datum: 07.11.2023 ---- - -Die offene Forschungsdatenbank [Cranach Digital Archive](https://lucascranach.org/gallery) umfasst derzeit über 2000 Werke aus dem Werk Lucas Cranachs. Insgesamt kann über das web-basierte Tool auf mehr als 20.000 Bilder zugegriffen werden. Derzeit sind 100 Werke als Meisterwerke klassifiziert. - -Im Rahmen dieses Projekts sollen diese Meisterwerke als digitales [Coffee Table Book](https://de.wikipedia.org/wiki/Coffee_Table_Book) erlebbar gemacht werden. Zu den einzelnen Werken stehen umfangreiche Beschreibungen, Untersuchungen und Abbildungen zur Verfügung. - ---- -### Weitere Infos: -- [Cranach Meisterwerke](https://lucascranach.org/de/search/?is_best_of=1&page=1) -- [Meisterwerk: Die Enthauptung der Hl. Katharina](https://lucascranach.org/de/CZ_ESGK_KE2371) - diff --git a/_research-questions/cranach-timeline.md b/_research-questions/cranach-timeline.md deleted file mode 100644 index ccb053b..0000000 --- a/_research-questions/cranach-timeline.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -layout: work -title: Redesign & Überarbeitung Cranach Timeline -datum: 01.10.2024 -status: proposal -keywords: Design, Refactoring, Web Development ---- -Im Rahmen unseres Forschungsprojekts [Cranach Digital Archive](https://lucascranach.org) wurde im Master vor einiger Zeit eine Timeline konzipiert und entwickelt. Zum damaligen Zeitpunkt fehlten jedoch im Archive einiges an Design, Struktur und Daten. Diese sind nun vorhaben. - -Im Rahmen dieses Projekts soll die damals entwickelte Timeline so überarbeitet werden, dass sie in den aktuellen Projektkontext passt und hier integriert werden kann. diff --git a/_research-questions/cranach-vr.md b/_research-questions/cranach-vr.md deleted file mode 100644 index c739a5e..0000000 --- a/_research-questions/cranach-vr.md +++ /dev/null @@ -1,18 +0,0 @@ ---- -title: Cranach Meisterwerke via WebVR erlebbar machen -keywords: Interactiondesign, WebDesign, Frontend Dev -layout: work -status: proposal -datum: 07.11.2023 ---- - -Die offene Forschungsdatenbank [Cranach Digital Archive](https://lucascranach.org/gallery) umfasst derzeit über 2000 Werke aus dem Werk Lucas Cranachs. Insgesamt kann über das web-basierte Tool auf mehr als 20.000 Bilder zugegriffen werden. Derzeit sind 100 Werke als Meisterwerke klassifiziert. - -Im Rahmen dieses Projekts sollen diese Meisterwerke via WebVR erlebbar gemacht werden. Zu den einzelnen Werken stehen umfangreiche Beschreibungen, Untersuchungen und Abbildungen zur Verfügung. Er gibt bereits einen kleinen Prototypen, der aber "mit recht heißer Nadel gestrickt" ist und zunächst mal die Möglichkeiten von [A-Frame](https://aframe.io) ausloten sollte. - - ---- -### Weitere Infos: -- [Cranach Meisterwerke](https://lucascranach.org/de/search/?is_best_of=1&page=1) -- [Cranach Digital Archive WebVR Demo](https://lucascranach.org/vr) -- [Meisterwerk: Die Enthauptung der Hl. Katharina](https://lucascranach.org/de/CZ_ESGK_KE2371) \ No newline at end of file diff --git a/_research-questions/darstellung-der-bezuege-innerhalb-des-cda.md b/_research-questions/darstellung-der-bezuege-innerhalb-des-cda.md deleted file mode 100644 index 22cff64..0000000 --- a/_research-questions/darstellung-der-bezuege-innerhalb-des-cda.md +++ /dev/null @@ -1,21 +0,0 @@ ---- -title: Darstellung der Bezüge zwischen den Werken des Cranach Digital Archives -keywords: Data Visualisation, Interactive Art, Generative Gestaltung, UX -layout: work -status: proposal -datum: 15.01.2023 ---- - -Die offene Forschungsdatenbank [Cranach Digital Archive](https://lucascranach.org/gallery) umfasst derzeit über 2000 Werke aus dem Werk Lucas Cranachs. Insgesamt kann über das web-basierte Tool auf mehr als 20.000 Bilder zugegriffen werden. Zwischen den Werken gibt es verschiedene Bezüge. Hier ein paar Beispiele: -- zeitlicher Bezug: Werke aus dem gleichen Jahr -- inhaltlicher Bezug: Werke aus einer Serie, Werke mit dem gleichen Motiv -- funkionaler Bezug: Werke für den gleichen Einsatzzweck wie Triptycha -- Materialbezug: Werke auf dem gleichen Grund -- Bezüge über erläuterende Literatur -- etc - -In dieser Arbeit sollen die verschiedenen Bezüge visualisiert und erfahrbar gemacht werden. - ---- -### Weitere Infos: -- [Cranach Digital Archive](https://lucascranach.org) \ No newline at end of file diff --git a/_research-questions/history-of-typo-film.md b/_research-questions/history-of-typo-film.md deleted file mode 100644 index 31adb6f..0000000 --- a/_research-questions/history-of-typo-film.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -layout: work -title: Kurze Geschichte der Typographie als Film und/ oder Website -datum: 11.02.2023 -status: in-progress -keywords: Typographie, Design, Screendesign ---- - -Da gibt es einen ganz [netten Film](https://www.youtube.com/watch?v=VEFjzBjqgz4), den ich in Screendesign zeige. Der ist aber sehr alt. Es wäre cool, das Thema mal medial und leicht verdaulich aufzubereiten. Ziegruppe: Medieninformatiker und alle anderen, die ein bisschen Typo-KnowHow brauchen könnten. diff --git a/_research-questions/kartenbasierte-darstellung-von-cda-artefakten.md b/_research-questions/kartenbasierte-darstellung-von-cda-artefakten.md deleted file mode 100644 index 59d7030..0000000 --- a/_research-questions/kartenbasierte-darstellung-von-cda-artefakten.md +++ /dev/null @@ -1,20 +0,0 @@ ---- -layout: work -title: Kartenbasierte Darstellung von Artefakten des Cranach Digital Archives -datum: 15.01.2023 -status: unpublished -keywords: Data Visualisation, UX ---- - -Die offene Forschungsdatenbank [Cranach Digital Archive](https://lucascranach.org/gallery) umfasst derzeit über 2000 Werke aus dem Werk Lucas Cranachs. Insgesamt kann über das web-basierte Tool auf mehr als 20.000 Bilder zugegriffen werden. - -Aufbauend auf der Arbeit «Geografische Visualisierung der künstlerischen Artefakte des Cranach Digital Archives» von Julia Voell, soll im Rahmen dieses Projekts das Projekt implementiert werden. Hierzu sind unter anderem folgende Schritte erforderlich: - -- Analyse des bestehenden Projekts/ Codes -- Integration der Anreicherung um Geodaten in den bestehenden Prozess -- Homogenisierung des Designs -- Erarbeitung und Implementierung eines Deployment Konzepts - ---- -### Weitere Infos: -- [Cranach Digital Archive](https://lucascranach.org) diff --git a/_research-questions/ki-bildkonzept-mi-website.md b/_research-questions/ki-bildkonzept-mi-website.md deleted file mode 100644 index 13279fc..0000000 --- a/_research-questions/ki-bildkonzept-mi-website.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -layout: work -title: KI Bildkonzept Medieninformatik -datum: 02.02.2024 -status: proposal -keywords: Design, Screendesign, Storytelling, Fotographie, KI ---- -Wie könnte ein Bildkonzept für KI generierte Bilder für die Medieninformatik Website aussehen? Wir brauchen Bilder, damit wir unser Studienangebot interessant, erlebbar, authentisch und plastisch vorstellen könnnen. Leider ist es recht aufwändig immer passende Bilder bereit zu stellen. - -Wie könnte eine Bildkonzept für KI generierte Bilder aussehen, die der Medieninformatik am Campus gerecht werden? diff --git a/_research-questions/ki-toolchains-screendesign.md b/_research-questions/ki-toolchains-screendesign.md deleted file mode 100644 index 1385d27..0000000 --- a/_research-questions/ki-toolchains-screendesign.md +++ /dev/null @@ -1,14 +0,0 @@ ---- -title: KI Tools für's Screendesign -keywords: Screendesign, KI -layout: work -status: proposal -datum: 16.08.2023 ---- - -Das Modul „Screendesign” ist im Medieninformatik Bachelor im dritten Fachsemester verankert. Im Rahmen des Moduls sollen die Studierenden die Kompetenz erlangen, in interdisziplinären Teams die Design-Perspektive zu verstehen und einzunehmen. Sie sollen in die Lage versetzt werden, einen bestehenden Gestaltungskontext zu analysieren und zu erweitern. Darüber hinaus sollen die Studierenden eine gestalterische Grundkompetenz aufbauen. Wo und wie könnten, sollten und müssten AI Tools im Modul integriert werden? - ---- -### Weitere Infos: -- [Modul Screendesign](https://th-koeln.github.io/mi-bachelor-screendesign/) -- [AI Powered Creator Tools](https://miro.com/app/board/uXjVP1tqX3k=/?share_link_id=206411122255) \ No newline at end of file diff --git a/_research-questions/soundgenerierung-im-web.md b/_research-questions/soundgenerierung-im-web.md deleted file mode 100644 index bf9575c..0000000 --- a/_research-questions/soundgenerierung-im-web.md +++ /dev/null @@ -1,13 +0,0 @@ ---- -title: Soundgenerierung mit Webtechnologien -keywords: Audio, WebDev -layout: work -status: proposal -datum: 07.11.2023 ---- - -Was geht eigentlich derzeit in Sachen Soundgenerierung und -verarbeitung mit Webtechnologien? - ---- - --[Web Audio API](https://developer.mozilla.org/en-US/docs/Web/API/Web_Audio_API?retiredLocale=de) \ No newline at end of file diff --git a/_research-questions/typo-im-web.md b/_research-questions/typo-im-web.md deleted file mode 100644 index d1b002b..0000000 --- a/_research-questions/typo-im-web.md +++ /dev/null @@ -1,13 +0,0 @@ ---- -title: Typographie im Web -keywords: Typographie, Design, Screendesign, Frontend-Development -layout: work -status: in-progress -datum: 11.02.2023 ---- - -Hier gibt es schon recht viel, aber es wäre cool, dass mal für Medieninformatiker\*innen zusammen zu fassen und aufzubereiten. - -Stichworte: -- Schriften auswählen -- Schriften kombinieren \ No newline at end of file diff --git "a/_research-questions/web-basiertes-pflegetool-f\303\274r-iptc-daten.md" "b/_research-questions/web-basiertes-pflegetool-f\303\274r-iptc-daten.md" deleted file mode 100644 index bb5dbe3..0000000 --- "a/_research-questions/web-basiertes-pflegetool-f\303\274r-iptc-daten.md" +++ /dev/null @@ -1,8 +0,0 @@ ---- -layout: work -title: Web-basiertes Pflegetool für IPTC Daten -datum: 23.10.2024 -status: proposal -keywords: WebDev, Images, Content, Media ---- -Die Pflege von Metadaten im IPTC-IIM-Standard ist in verschiedenen Tools möglich. Aber so richtig viele und vor allem schöne, einfache Stand-alone Tools gibt es dann doch nicht. In dieser Lücke soll im Rahmen dieses Praxisprojekts oder Bachelorarbeit ein Tool entwickelt werden. diff --git a/_works/-clientseitige-generierung-von-pdf-dokumenten-aus-webinhalten-mit-html-markup-und-css-layout-june-11-2024-12-00-am.md b/_works/-clientseitige-generierung-von-pdf-dokumenten-aus-webinhalten-mit-html-markup-und-css-layout-june-11-2024-12-00-am.md deleted file mode 100644 index 77c4fee..0000000 --- a/_works/-clientseitige-generierung-von-pdf-dokumenten-aus-webinhalten-mit-html-markup-und-css-layout-june-11-2024-12-00-am.md +++ /dev/null @@ -1,13 +0,0 @@ ---- -layout: work-result -author: Benedikt Engel -title: Clientseitige Generierung von PDF-Dokumenten aus Webinhalten mit - HTML-Markup und CSS-Layout -date: 2024-06-11 -type: Masterarbeit -visibility: published -status: finished -keywords: PDF-Generierung, HTML-Markup, CSS-Layout, clientseitige Bibliothek -thumbnail: /assets/uploads/c.noss_a_teaser_image_for_a_html_to_pdf_library_where_images_an_63c0185b-ad0b-47b4-851c-0369af67b964.jpg ---- -Diese Arbeit untersucht die clientseitige Generierung von PDF-Dokumenten aus HTML-Markup und CSS-Layout. Der Ansatz zielt darauf ab, den Pflegeprozess von Webinhalten und PDF-Dokumenten zu vereinfachen, indem Informationen im Webinhalt angegeben werden und aus diesem bei Bedarf das PDF-Dokument generiert werden kann. Zum einen werden die zum Zeitpunkt dieser Arbeit vorhandenen Technologien und Möglichkeiten zur clientseitigen Generierung betrachtet und auf ihre Vor- und Nachteile untersucht. Dabei zeigt sich, dass für alle Möglichkeiten Nachteile bestehen, welche bei einer Nutzung beachtet werden müssen. Zum anderen wurde untersucht, wie sich eine Bibliothek entwickeln lässt, welche die ermittelten Nachteile minimiert. Es wird dabei die Teilfrage beantwortet, wie sich der Inhalt und das Layout von HTML-Elementen in PDF-Dokumenten abbilden lassen. Es wird gezeigt, wie sich Texte aus Webinhalten zeilenweise auslesen und mit den angewendeten CSS-Regeln in ein PDF-Dokument übertragen lassen. Des Weiteren wird auf Möglichkeiten des Transfers von Hintergründen und Umrandungen von Elementen eingegangen. Zudem wird gezeigt, wie sich aus dem Webinhalt die Document Outlines generieren lassen, welche ein Inhaltsverzeichnis des Dokuments darstellen, und wie eine Möglichkeit für Kopf- und Fußzeilen, welche in der Regel in Dokumenten genutzt werden, umgesetzt werden können, ohne dass diese in dem Webinhalt dargestellt werden. diff --git a/_works/-explorative-konzeption-und-implementierung-einer-web-basierten-plattform-zur-musikalischen-echtzeit-kollaboration-an-modular-synthesizern-august-5-2024-12-00-am.md b/_works/-explorative-konzeption-und-implementierung-einer-web-basierten-plattform-zur-musikalischen-echtzeit-kollaboration-an-modular-synthesizern-august-5-2024-12-00-am.md deleted file mode 100644 index e50cbd4..0000000 --- a/_works/-explorative-konzeption-und-implementierung-einer-web-basierten-plattform-zur-musikalischen-echtzeit-kollaboration-an-modular-synthesizern-august-5-2024-12-00-am.md +++ /dev/null @@ -1,30 +0,0 @@ ---- -layout: work-result -author: Sebastian Brock -related-folder: 2024-brock-sebastian -title: Explorative Konzeption und Implementierung einer web-basierten Plattform - zur musikalischen Echtzeit- Kollaboration an Modular-Synthesizern -date: 2024-08-05 -result-pdf: - - uploads/ma-sebastian-brock.pdf -result-website: https://sebastianbroc.github.io/websynth/ -result-repo: https://github.com/sebastianbroc/websynth -slideshow: true -final-presentation: v683mTqOySw -type: Masterarbeit -visibility: published -status: finished -keywords: Echtzeit-Kollaboration, Modular-Synthesizer, digitale Klangerzeugung, - Remote-Kollaboration -thumbnail: /assets/uploads/sbrock_2_kollaboration-s.webp ---- -Diese Arbeit untersucht die Konzeption und Implementierung einer webbasierten Plattform für die musikalische Echtzeit-Kollaboration an Modular-Synthesizern. Traditionelle musikalische Zusammenarbeit erfordert in der Regel die Anwesenheit aller Teilnehmer -am gleichen Ort. Während bereits Softwarelösungen für Kontexte wie Remote-Proben von Bands existieren, lösen diese nicht die einzigartigen Herausforderungen, welche von hoch individualisierbaren Instrumenten wie Modular-Synthesizern ausgehen. Synthesizer dieser Art sind hochgradig anpassbar, wodurch jedes Setup einzigartig sein kann. Zusätzlich macht ihre analoge Bauweise die genaue Replikation von Einstellungen zwischen entfernten Systemen in der Praxis nahezu unmöglich. - -Das Hauptziel dieses Projekts ist die Entwicklung eines Systems, welches eine kollaborative Klangerzeugung mit Modular-Synthesizern über das Web ermöglicht. Dies erfordert nicht nur technische Lösungen für die Klangerzeugung, sondern auch Strategien zur Synchronisierung mehrerer Sitzungen in Echtzeit unter Berücksichtigung der Herausforderungen von Web-Architekturen und Latenz. - -Das Projekt verfolgt sowohl in der Konzeption als auch in der Implementierung einen explorativen Ansatz, sodass technische Möglichkeiten durch die praktische Anwendung bewertet werden können. Zentrale Aufgaben umfassen die Grundlagenforschung zur webbasierten Klangerzeugung, die Überprüfung bestehender Lösungen und die Entwicklung einer funktionalen Plattform, die eine virtuelle Zusammenarbeit an Modular-Synthesizern ermöglicht. - -Herausforderungen wie die Minimierung der Latenz und die inhärenten Einschränkungen digitaler Simulationen im Vergleich zu ihren analogen Gegenstücken werden adressiert. Das Projekt zielt darauf ab, Erkenntnisse zu liefern, die nicht nur für die musikalische Kollaboration relevant sind, sondern auch auf andere Bereiche anwendbar sind, die eine Echtzeit-Interaktion über das Web erfordern. - -Das praktische Ergebnis dieser Arbeit ist ein funktionsfähiges, webbasiertes System für die synchrone Zusammenarbeit an einem virtuellen Modular-Synthesizer. Die während des Projekts gewonnenen Erkenntnisse und entwickelten Methoden werden dokumentiert und bieten Beiträge zu den Bereichen Webentwicklung, digitale Klangerzeugung und Technologien für die Remote-Kollaboration. diff --git a/_works/-featureentwicklung-in-modernen-browsern-june-1-2023-12-00-am.md b/_works/-featureentwicklung-in-modernen-browsern-june-1-2023-12-00-am.md deleted file mode 100644 index ab6740e..0000000 --- a/_works/-featureentwicklung-in-modernen-browsern-june-1-2023-12-00-am.md +++ /dev/null @@ -1,15 +0,0 @@ ---- -layout: work-result -author: Raphael Höser -related-folder: "" -title: Featureentwicklung in modernen Browsern -date: 2023-06-01 -type: Bachelorarbeit -visibility: published -status: finished -keywords: - - Webentwicklung - - Browser-Kompatibilität - - Feature-Unterstützung ---- -Webentwicklung ist ein sich laufend weiterentwickelndes Feld mit einer Vielzahl an Stakeholderinnen wie Browserherstellerinnen, Standardisierungsorganisationen, Entwicklerinnen und Nutzerinnen. Diese Weiterentwicklung läuft gerade in Browsern oftmals nicht synchron ab, und so ist die tatsächliche Unterstützung, besonders für neue Features in unterschiedlichen Browsern, für Entwicklerinnen oft schwierig einzuschätzen. Diese Einschätzung ist jedoch für Entwicklerinnen relevant, da sie die Nutzung neuer Features in ihren Projekten abwägen müssen. Diese Arbeit zeigt auf, wie die Standardisierung und Umsetzung neuer Features funktioniert und wie Google Chrome eine führende Rolle einnimmt, während sich Apples Safari in den letzten Jahren verändert hat. Dies wird unter anderem durch eine Analyse historischer Kompatibilitätsdaten aus unterschiedlichen Quellen wie CanIUse erreicht. Des Weiteren zeigt diese Arbeit, welche Ansätze zur Unterstützung neuer Features in allen Browsern genutzt werden und dass Safari, entgegen einiger Behauptungen, nicht der neue Internet Explorer ist und gerade seit 2022 deutlich in der Featureunterstützung auf Google Chrome und Mozilla Firefox aufholt. diff --git "a/_works/-konzeption-und-entwicklung-eines-plugins-zur-automatisierten-moderation-von-textinhalten-durch-ki-f\303\274r-die-woltlab-suite-community-software-november-1-2023-12-00-am.md" "b/_works/-konzeption-und-entwicklung-eines-plugins-zur-automatisierten-moderation-von-textinhalten-durch-ki-f\303\274r-die-woltlab-suite-community-software-november-1-2023-12-00-am.md" deleted file mode 100644 index ce9e322..0000000 --- "a/_works/-konzeption-und-entwicklung-eines-plugins-zur-automatisierten-moderation-von-textinhalten-durch-ki-f\303\274r-die-woltlab-suite-community-software-november-1-2023-12-00-am.md" +++ /dev/null @@ -1,13 +0,0 @@ ---- -layout: work-result -author: " Moritz Hendrik Levin Dahlke" -title: Konzeption und Entwicklung eines Plugins zur automatisierten Moderation - von Textinhalten durch KI für die WoltLab Suite Community Software -date: 2023-11-01 -type: Bachelorarbeit -visibility: published -status: finished -keywords: Moderation nutzergenerierter Inhalte, Sprachmodelle, automatisierte - Inhaltsmoderation, künstliche Intelligenz ---- -Die Moderation von nutzergenerierten Inhalten im Internet ist eine wichtige, aber auch sehr aufwändige Aufgabe. Diese Arbeit thematisiert, wie Sprachmodelle den Prozess der Inhaltsmoderation vereinfachen und automatisieren können. Das Ziel der vorliegenden Arbeit war es, zu überprüfen, ob und wie eine automatisierte Moderation von nutzergenerierten Inhalten durch Sprachmodelle funktioniert und implementiert werden kann. Dabei sollte ermittelt werden, welche Ergebnisse damit erzielt werden können, ob sich Sprachmodelle im Allgemeinen für diesen Zweck eignen und ob künstliche Intelligenz die Moderation von nutzergenerierten Inhalten zukünftig vollständig übernehmen kann. Zur Demonstration der automatisierten Inhaltsmoderation durch Sprachmodelle wurde im Rahmen dieser Arbeit ein Plugin für die WoltLab Suite Community Software konzipiert und entwickelt, welches verschiedene Anwendungsfälle für Inhaltsmoderation mit Hilfe der von OpenAI zur Verfügung gestellten Schnittstelle zur Nutzung von GPT-Modellen realisiert. Die Evaluation des entwickelten Plugins hat ergeben, dass sich Sprachmodelle für die automatisierte Inhaltsmoderation eignen und bereits jetzt eine gute Alternative oder Ergänzung zu herkömmlichen Moderationsmethoden darstellen. diff --git "a/_works/-partizipative-weiterentwicklung-und-ver\302\250-offentlichung-eines-ger-\302\250-ate\302\250-ubergreifenden-browserspiels-als-open-source-projekt-may-4-2024-12-00-am.md" "b/_works/-partizipative-weiterentwicklung-und-ver\302\250-offentlichung-eines-ger-\302\250-ate\302\250-ubergreifenden-browserspiels-als-open-source-projekt-may-4-2024-12-00-am.md" deleted file mode 100644 index 3978c65..0000000 --- "a/_works/-partizipative-weiterentwicklung-und-ver\302\250-offentlichung-eines-ger-\302\250-ate\302\250-ubergreifenden-browserspiels-als-open-source-projekt-may-4-2024-12-00-am.md" +++ /dev/null @@ -1,25 +0,0 @@ ---- -layout: work-result -author: Florian Michel Berghahn -title: Partizipative Weiterentwicklung und Veröffentlichung eines - geräteübergreifenden Browserspiels als Open-Source-Projekt -date: 2024-04-04 -type: Bachelorarbeit -visibility: published -status: finished -keywords: Gerätegrenzenübergreifende Browserspiele, partizipativer - Entwicklungsprozess, Open-Source-Software, Websockets, WebGL -thumbnail: /assets/uploads/final-blockdown.webp ---- -Angesichts der wachsenden Bedeutung verteilter Systeme, der vielfältigen Nutzung von Multimedia-Inhalten auf unterschiedlichen Geräten und der fortlaufenden Weiterentwicklung von Browsern wird die Relevanz deutlich, das Potenzial von geräteübergreifenden Browserspielen zu untersuchen. - -Das Ziel dieser Arbeit besteht darin, den im vorangegangenen Praxisprojekt entwickelten Prototyp des Spiels „Finalblockdown“ durch einen partizipativen Prozess weiterzuentwickeln und schließlich als Open-Source-Software zu veröffentlichen. Das direkte Einbeziehen ausgewählter Testnutzer in die Weiterentwicklung des Spiels zielt darauf ab, das Spielerlebnis, die technische Leistung sowie die Benutzerfreundlichkeit umfassend und nutzerorientiert zu verbessern. - -Zur Durchführung des partizipativen Prozesses wurden mehrere Fokusgruppen gebildet, die während der gesamten Entwicklung aktiv mitwirkten und jede Iteration eingehend testeten sowie evaluierten. Die Testläufe waren eine Kombination aus Play-Testing und Gruppeninterviews, die zur Auswertung mitgeschnitten wurden. Basierend auf dem dokumentierten, zusammengetragenen und eingestuften Feedback aller Gruppen wurde ein Entwicklungsplan für die jeweilige Iteration erstellt. - -Der partizipative Prozess brachte signifikante Vorteile, insbesondere im Hinblick auf die Gestaltung der Benutzeroberfläche, Spielmechaniken und des Testens. Limitierungen durch begrenzte Zeit und Ressourcen zeigen jedoch, dass der partizipative Ansatz zeitintensiv ist, was in der Planung berücksichtigt werden muss. - -Durch den Prozess wurde ein visuell und spielerisch überzeugendes Spiel entwickelt, das komplexe Programmierkonzepte wie Websockets, WebGL-Grafiken und Spatial Hashing in Vanilla JavaScript umgesetzt hat und durch eigenes Hosting veröffentlicht wurde. Trotzdem hat das System noch umfangreiches Optimierungs- und Entwicklungspotenzial, weswegen es sich gut als Open-Source-Software eignet und so über den Projektrahmen hinaus weiterentwickelt werden wird. - -Weiterführende Forschungen könnten sich sowohl auf prozessbezogene als auch auf technische Aspekte konzentrieren. In der Weiterentwicklung des partizipativen Prozesses könnte man analysieren, wie die Einbindung von Testnutzern in komplexe Bereiche der Entwicklung, einschließlich Systemarchitektur und Leistung, die Demokratisierung des Designs verstärken könnte. Technische Untersuchungen könnten sich darauf konzentrieren, wie Optimierungen in den Bereichen Hosting, Websockets und Kollisionserkennung zur Leistungssteigerung des Systems beitragen können. - diff --git a/_works/-state-of-the-art-approaches-to-working-with-sounds-on-the-web-september-15-2023-12-00-am.md b/_works/-state-of-the-art-approaches-to-working-with-sounds-on-the-web-september-15-2023-12-00-am.md deleted file mode 100644 index f5fe1ab..0000000 --- a/_works/-state-of-the-art-approaches-to-working-with-sounds-on-the-web-september-15-2023-12-00-am.md +++ /dev/null @@ -1,12 +0,0 @@ ---- -layout: work-result -author: Dmitrii Kuznetsov -title: State-of-the-Art approaches to working with sounds on the web -date: 2023-09-15 -type: Masterarbeit -visibility: published -status: finished -keywords: Webtechnologien, Web Audio API, Audiokomposition, interaktive Webanwendungen ---- -Webtechnologien, und insbesondere das Frontend, haben in den letzten zehn Jahren einen enormen Entwicklungssprung gemacht. Heutzutage haben Entwickler -Zugang zu verschiedenen Web-APIs, die es ihnen ermöglichen, komplexe interaktive Webanwendungen zu erstellen, die in allen modernen Browsern funktionieren. Eine davon ist die Web Audio API - ein flexibles und leistungsstarkes System, das die Audiokomposition und -verarbeitung ermöglicht. Leider gibt es nicht viele Anleitungen und technische Literatur, die sich dieser Technologie widmen, daher kann es ziemlich herausfordernd sein, zu verstehen, wie sie funktioniert. Diese Arbeit behandelt vergangene, gegenwärtige und zukünftige Ansätze zur Arbeit mit Audio im Web. Sie beschreibt die Architektur der Web Audio API, ihre Bestandteile und bietet zahlreiche Beispiele, um zu zeigen, wie man die Technologie in der Praxis anwenden kann. Diese Arbeit kann als Ausgangspunkt für eine vertiefte Untersuchung bestimmter Aspekte der Web Audio API dienen, wie beispielsweise räumlicher Klang oder die Analyse von Audiosignalen. diff --git a/_works/-strategien-und-methoden-zur-reduzierung-des-energieverbrauchs-in-webanwendungen-january-15-2024-12-00-am.md b/_works/-strategien-und-methoden-zur-reduzierung-des-energieverbrauchs-in-webanwendungen-january-15-2024-12-00-am.md deleted file mode 100644 index 0e0fd9a..0000000 --- a/_works/-strategien-und-methoden-zur-reduzierung-des-energieverbrauchs-in-webanwendungen-january-15-2024-12-00-am.md +++ /dev/null @@ -1,12 +0,0 @@ ---- -layout: work-result -author: Jan Koll -title: " Strategien und Methoden zur Reduzierung des Energieverbrauchs in - Webanwendungen" -date: 2024-01-15 -type: Masterarbeit -visibility: published -status: finished -keywords: Energieeffizienz, Webanwendungen, Energieverbrauch ---- -In einer zunehmend digitalisierten Welt, in der das Internet signifikant zum Energieverbrauch beiträgt, untersucht diese Arbeit Strategien zur Reduzierung des Energieverbrauchs in Webanwendungen. Unter Berücksichtigung von Literatur aus Regierungs- und Umweltverbänden analysiert sie energieintensive Aspekte von Webtechnologien und entwickelt energieeffiziente Lösungen. Zentrale Prinzipien sind die Minimierung der Datenmenge und die Maximierung der Prozessgeschwindigkeit. Das Ziel ist, einen Beitrag zur Energieeffizienz im IT-Sektor zu leisten und so zur Erreichung des Pariser 1,5-Grad-Ziels beizutragen. diff --git "a/_works/-wie-man-kunst-online-f\303\274r-interessierte-mithilfe-von-webvr-erlebbar-machen-kann-webvr-erlebnisraum-am-beispiel-des-cranach-digital-archive-june-3-2024-12-00-am.md" "b/_works/-wie-man-kunst-online-f\303\274r-interessierte-mithilfe-von-webvr-erlebbar-machen-kann-webvr-erlebnisraum-am-beispiel-des-cranach-digital-archive-june-3-2024-12-00-am.md" deleted file mode 100644 index 07c3f85..0000000 --- "a/_works/-wie-man-kunst-online-f\303\274r-interessierte-mithilfe-von-webvr-erlebbar-machen-kann-webvr-erlebnisraum-am-beispiel-des-cranach-digital-archive-june-3-2024-12-00-am.md" +++ /dev/null @@ -1,15 +0,0 @@ ---- -layout: work-result -author: Valeria Orlova -title: "Wie man Kunst online für Interessierte mithilfe von WebVR erlebbar - machen kann: WebVR Erlebnisraum am Beispiel des Cranach Digital Archive" -date: 2024-06-03 -type: Masterarbeit -visibility: published -status: finished -keywords: WebVR, Cranach Digital Archive, UX, Playful Experience -thumbnail: /assets/uploads/c.noss_a_lucas_cranach_exibition_with_paintings_which_are_prese_63eaa10b-fca7-461f-9ea0-ac4dac887979.jpg ---- -Das Ziel dieser Masterarbeit ist es, ein Konzept für eine WebVR-Applikation zu entwickeln, das die Inhalte zu den digitalisierten Gemälden im Cranach Digital Archive auf spannende Weise an Kunstinteressierte vermitteln kann. Hierzu beinhalteten die Forschungsfragen, inwieweit WebVR eingesetzt werden kann, um eine attraktive sowie stimulierende Erfahrung bei der Entdeckung und Erforschung digitalisierter Kunstwerke zu ermöglichen, wie Interaktionselemente in Virtual Reality so gestaltet werden können, dass diese Kunst für Interessierte greifbarer machen und lehrreiche Inhalte spannend vermitteln können, und inwieweit der dreidimensionale Raum in Virtual Reality effektiv genutzt werden kann, um Kunst auf spannende Weise an Interessierte zu vermitteln. - -Um Antworten auf diese Fragen zu finden, wurden mithilfe von Design Thinking Prozessen zehn Konzepte entwickelt, die in einer Befragung bewertet wurden. Aus diesen Konzepten wurde das beliebteste zu einem Prototypen weiterentwickelt, welcher abschließend mit den Zielgruppen getestet wurde. Die Auswertungen der Umfrage sowie des Tests zeigten, dass die Simulation einer traditionellen Kunstgalerie in virtueller Realität keinen Mehrwert für das Publikum bietet und die meisten Personen es bevorzugen, vor Ort reale Ausstellungen zu besuchen. Nutzt man jedoch den virtuellen Raum sowie die hohe Zugänglichkeit von WebVR, um dem Publikum neue Interaktionsmöglichkeiten im Kontext von Kunstausstellungen zu bieten und die Atmosphäre angenehm zu gestalten, so eignet sich ein VR-Erlebnis als gute Alternative, falls die Kunst schwer zugänglich ist. diff --git a/_works/2022-probst-maxim-konzeption-und-entwicklung-einer-vaadin-applikation-zur-modifikation-des-layouts-eines-webklienten-im-kontext-der-mediengesellschaft-rtl-06-10-2023.md b/_works/2022-probst-maxim-konzeption-und-entwicklung-einer-vaadin-applikation-zur-modifikation-des-layouts-eines-webklienten-im-kontext-der-mediengesellschaft-rtl-06-10-2023.md deleted file mode 100644 index e4d4a23..0000000 --- a/_works/2022-probst-maxim-konzeption-und-entwicklung-einer-vaadin-applikation-zur-modifikation-des-layouts-eines-webklienten-im-kontext-der-mediengesellschaft-rtl-06-10-2023.md +++ /dev/null @@ -1,17 +0,0 @@ ---- -layout: work-result -author: Maxim Anton Probst -related-folder: 2022-probst-maxim -title: Konzeption und Entwicklung einer Vaadin-Applikation zur Modifikation des - Layouts eines Webklienten im Kontext der Mediengesellschaft RTL -date: 2023-10-06 -type: Bachelorarbeit -visibility: published -status: finished -keywords: Web Frontend Development -partner: RTL Mediengruppe -partner-url: https://company.rtl.com/de/homepage/ ---- - -Diese Bachelorarbeit befasst sich mit der Konzeption und Entwicklung eines Layout-Editors und wurde in Zusammenarbeit mit RTL Deutschland verfasst. Diese Applikation soll dem Editieren der Nutzeroberfläche einer bestehenden Webanwendung dienen und in diese integriert werden. Ziel dieser Arbeit ist es auch, sich mit dem Vaadin-Framework auseinanderzusetzen und dessen positiven und negativen Aspekte für die Softwareentwicklung in dem gegebenen Umfeld zu analysieren. In dieser Arbeit werden die aktuellen Standards der Webentwicklung betrachtet und mit Vaadin verglichen. Dabei wird auch die Implementierung einer Drag-and-Drop-Funktionalität behandelt, die dem Anwender eine intuitive Bedienung ermöglichen soll. Zudem sollen Möglichkeiten zur Speicherung der entstehenden Daten und die Integration in das bestehende System betrachtet werden. -Resultat der Arbeit ist ein funktionierender Layout-Editor, mit welchem die Oberfläche der schon bestehenden Webanwendung mittels Drag-and-Drop manipuliert werden kann. Für eine Integration in das bestehende System sind noch Anpassungen nötig. Festgestellt wurde, dass Vaadin sich besonders für Projekte eignet, welche kompakt und relativ unabhängig von anderen agieren. Wenn das Backend für mehr als nur ein Frontend entwickelt werden soll, eignet sich Vaadin eher weniger. In dem Falle wäre eine traditionelle Trennung von Backend und Frontend zu bevorzugen. diff --git a/_works/2022-probst-maxim/02-titles-and-research-questions.md b/_works/2022-probst-maxim/02-titles-and-research-questions.md deleted file mode 100644 index cbd8e41..0000000 --- a/_works/2022-probst-maxim/02-titles-and-research-questions.md +++ /dev/null @@ -1,29 +0,0 @@ -# Titel und Forschungsfrage Praxisprojekt - -- Die Erstellung einer automatisierten Umsetzung des Frontends durch eine XML-Vorlage im Umfeld einer großen Geschäftsumgebung -- Ein Prototyp zur autmatischen generierung eines Webclients mit XML-Vorlage. Kontext: Geschäftsumgebung -- Prototypisierung einer automatisierten Frontenderstellung mittels XML-Vorlage und das Vorgehen in einer Geschäftsumgebung -- Das Erstellen einer Softwarelösung in einer Geschäftsumgebung. - Ein automatisches System zur generierung eines Frontends mittels XML-Vorlage -- Ein Prototyp zu automatischen generierung eines Frontends in einer Geschäftsumgebung. Von Planung bis zur implementierung. -- Generierung eines Fronends auf grundlage einer XML-Vorlage. Das detalilierte Vorgehen in einer Geschäftsumgebung. -- Das Vorgehen bei einer prototypisierung von einer Softwarelösung in Geschäftsumgebung. Ein Programm zur automatischen generierung eines Fronends anhand einer XML-Vorlage -- Eine automatisch Generierte Webseite mittels XML-Vorlage. - Die Erstellung eines Prototypen in Unternehmensumgebung -- Das Erstellen einer Softwarelösung zum Generieren von Webseiten in einer Unternehmensumgebung. -- Eine Softwarelösung zum Generieren eines Frontends basierend auf einer XML-Vorlage. - Kontext: Großunternehme - - > Konzeption und Entwicklung eines Prototyps zur automatischen Generierung eines Web-Frontends auf Basis einer bestehenden XML-Vorlage im Kontext einer großen Mediengesellschaft. - -# Forsschungsfragen un Ziele - -- Wie geht man bei Planung und Ausführung eines Projektes in einer Unternehmensumgebung vor? -- Welche framework eignen sich am ehesten (React/Vaadin)? -- Das einlesen einer XML-Vorlage. -- Implementieren eines Regelwerks. -- Erstellen und Designen von Frontendelementen. -- Erstellen Der einzelnen Seiten basierend auf den Komponenten und der XML-Vorlage -- Füllen der Komponenten mit real Daten (anbindung der Datenbank) - -Bitte notieren Sie mindestens 10 mögliche Titel der Arbeit und mindestens 5 mögliche Forschungsfragen/ Zielsetzungen in dieses Dokument. diff --git a/_works/2022-probst-maxim/03-expose.md b/_works/2022-probst-maxim/03-expose.md deleted file mode 100644 index 790b977..0000000 --- a/_works/2022-probst-maxim/03-expose.md +++ /dev/null @@ -1,17 +0,0 @@ -# Exposé -Eine Firma möchte ihr veraltetes Programm und dessen Nutzeroberfläche erneuern und in eine neue und moderne Web-Umgebung überführen. Der alte FAT-Klient greift auf eine SQL-Datenbank zu und stellt die dort zu findenden Daten mithilfe einer beschreibenden XML-Vorlage dar. Da der alte FAT-Klient schon mehrere Jahrzehnte im Einsatz war, und technisch sowie visuell nicht auf modernen Standards beruht soll dieser jetzt ausrangiert werden. -Das folgende Praxisprojekt soll als eine Zwischenlösung für die Umgestaltung der alten Bedienungsoberflächen dienen und für den Nutzer, sowie für die Programmierer und Designer als ersten Prototypen bereitstehen. -Durch das Projekt wird soll der Firma eine Möglichkeit geboten werden auf Basis der bestehenden XML-Vorlage einen automatisch generierten Webklienten zu erstellen. Dieser soll einen ersten Eindruck für das neue Design ermöglichen und im besten Falle als eine Übergangslösung für die Umstellung dienen. -Hierbei werden Folgende Fragen gestellt: -- Was ist das beste Vorgehen bei dem Einlesen und Interpretieren der bestehenden XML-Vorlage? -- Welches Frontend-Framework eignet sich bei einer Solchen Umsetzung am besten? -- Wie komplex ist eine Inbetriebnahme durch Anschluss der Datenbank, in einer solchen generierten Webumgebung? -Die im bestehenden FAT-Klienten dargestellten Daten werden, auf mehreren Tabs verteilt, basierend auf bestimmten Nutzerrechten sowie Geschäft Logik, dem Nutzer zu Verfügung gestellt. Die in der Einleitung erwähnte XML-Vorlage beschreibt im Detail die Anordnung dieser Daten in den dargestellten Tabs. Diese Daten sind in Komponenten (Tabellen, Dropdowns, etc.) aufgeteilt, welche zusätzlich Nutzerrechte, Daten Befüllung und sonstige komplexe Darstellungs-Sonderregeln beschreibt. -Ein dem Unternehmen wird für das Frontend größtenteils „React“ genutzt, allerdings wird „Vaadin“ immer häufiger als alternative für neue Projekte erwägt. Die Abwägung dieser Frameworks und deren detaillierte Beschreibung wird als Teil des Projektes betrachtet. -Das Projekt Teilschritte gegliedert. Zunächst ist es wichtig durch Recherche im Internet, aber auch durch interne Expertenbefragung zu den oben erwähnten Frameworks das am besten geeignete und zu ermitteln. Da firmen intern mehrere Frontendentwickler momentan React und Vaadin nutzen bietet sich hier mehrere Experteninterviews an. -In dem zweiten Schritt muss das Regelwerk erstellt werden, welches zum Interpretieren der XML-Vorlage dient. Dieses wird zunächst statisch anhand der vorhandenen Regeln in dem Programm implementiert. -Folgend wird dann eine Lösung zum Einlesen der XML-Vorlage erstellt, welche auf Basis der Regeln in eine von dem Programm interpretierbare Form bringt. -Wenn alle notwendigen Daten in dem neuen System vorhanden sind, müssen diese dann mittels Frontendkomponenten dargestellt werden. Diese Komponenten sind zu designen und anhand der Regeln anzuordnen. -In dem letzten Schritt wird die Komplexität einer Anbindung an die Datenbank ermittelt, und ob diese noch im Umfang meines Projektes unter einem angemessenen Umfang an Arbeit ergänzt werden kann. -Zum Ende des Projektes soll ein Prototyp zur Generierung eines Frontenddesigns erstellt und durch eine umfassende Dokumentation beschrieben sein. Dieser Prototyp sollte als eine mögliche Designvorlage für das vollständige Projekt dienen können und mit relativ wenig Arbeitsumfang an andere Systeme angepasst werden können. -Zudem wird eine umfassende Analyse zu dem genutzten und abgewogenen Frameworks erstellt, welche in zukünftigen Projekten als Unterstützung zur Entscheidungsfindung dienen kann. diff --git a/_works/2023-berghahn-florian/01-resarch-area-analysis/Themenfeldcluster.pdf b/_works/2023-berghahn-florian/01-resarch-area-analysis/Themenfeldcluster.pdf deleted file mode 100644 index 739ef24..0000000 Binary files a/_works/2023-berghahn-florian/01-resarch-area-analysis/Themenfeldcluster.pdf and /dev/null differ diff --git a/_works/2023-berghahn-florian/02-titles-and-research-questions.md b/_works/2023-berghahn-florian/02-titles-and-research-questions.md deleted file mode 100644 index 2d55c57..0000000 --- a/_works/2023-berghahn-florian/02-titles-and-research-questions.md +++ /dev/null @@ -1,43 +0,0 @@ -# Titel und Forschungsfrage - -**Forschungsfragen:** -1. Wie kann man ein Webgame für alle mobilen Endgeräte implementieren? -2. Wie kann man ein auf dem Complementarity Pattern basierendes Webgame für alle mobilen -Endgeräte implementieren? -3. Auf welche Arten lassen sich mobile Endgeräte für ein Webgame verbinden? -4. Was ist die effizienteste Art mehrere mobile Endgeräte für ein Webgame zu verbinden? -5. Wie kann man mobile Endgeräte am effizientesten für die Steuerung eines einfachen Multiplayer -Webgames einsetzen? -6. Welche Techniken gibt es, um mobile Endgeräte als Controller für ein Browsergame zu nutzen? - - -**Titel:** -1. Mobile Endgeräte als Controller - Implementierung eines webbasierten Minigames, das mobile -Endgeräte zur Steuerung verwendet. -2. Complementarity Pattern - Implementierung eines webbasierten Minigames, das mobile -Endgeräte als Controller einbindet. -3. Implementierung eines Multiscreengames - Auf welche Arten lassen sich mobile Endgeräte für -ein Webgame verbinden? -4. Implementierung eines geräteübergreifenden Spiels – Wie lassen sich mobile Endgeräte als -Controller nutzen? -5. Implementierung eines Multiscreengames - Wie lassen sich mobile Endgeräte als Controller -nutzen? -6. Welche Techniken gibt es, um mobile Endgeräte als Controller für ein Browsergame zu nutzen? -7. Implementierung eines geräteübergreifenden Spiels - Welche Techniken gibt es, um mobile -Endgeräte als Controller für ein Browsergame zu nutzen? -8. Complementarity Pattern - Was ist die effizienteste Art, mehrere mobile Endgeräte für ein -Webgame zu verbinden? -9. Mobile Endgeräte als Controller - Auf welche Arten lassen sich mobile Endgeräte für ein -Webgame verbinden? -10. Wie kann man mobile Endgeräte am effizientesten für die Steuerung eines einfachen -Multiplayer Webgames einsetzen? - -**Überarbeitete Titel:** - -1. Mobile Endgeräte als Controller: Umsetzungsmöglichkeiten des Complementarity Patterns am Beispiel eines webbasierten geräteübergreifenden Minigames. - -2. Mobile Endgeräte als Controller: Analyse der Implementierungsmöglichkeiten des Complementarity Patterns am Beispiel eines webbasierten, geräteübergreifenden Minispiels. - -3. Mobile Endgeräte als Controller: Erforschung der Realisierungsmöglichkeiten des Complementarity Patterns durch die Entwicklung eines webbasierten Minispiels, das geräteübergreifende Interaktion ermöglicht. - -4. Mobile Endgeräte als Controller - Evaluierung der Implementierungsmethoden des Complementarity Patterns am Beispiel eines webbasierten, geräteübergreifenden Minispiels. diff --git a/_works/2023-berghahn-florian/03-expose.md b/_works/2023-berghahn-florian/03-expose.md deleted file mode 100644 index 2e81a68..0000000 --- a/_works/2023-berghahn-florian/03-expose.md +++ /dev/null @@ -1,49 +0,0 @@ -# Exposé - -## Mobile Endgeräte als Controller - Umsetzungsmöglichkeiten des Complementarity Patterns am Beispiel eines webbasierten geräteübergreifenden Minigames - -### Problemfeld und Kontext -Studien zeigen, dass ein großer und stetig wachsender Teil der Internetnutzer im Jahr 2023 mehrere Geräte teils gleichzeitig für den Internetzugriff nutzen. **[Ratcliff, 2014](https://econsultancy.com/more-than-40-of-online-adults-are-multi-device-users-stats/)** Um diesem Trend gerecht zu werden, müssen moderne Anwendungen in der Lage sein, reibungslos zwischen verschiedenen Geräten zu synchronisieren und zu kommunizieren. -Dieses Problemfeld wird immer relevanter, da die Anzahl der Geräte, die Menschen besitzen und verwenden, weiter zunimmt und die Fähigkeit, nahtlos zwischen ihnen zu wechseln, für viele Benutzer immer wichtiger wird. **[SevenOne Media GmbH, 21.10.2022](https://de.statista.com/statistik/daten/studie/476467/umfrage/persoenliche-geraetenutzung-fuer-den-medienkonsum-in-deutschland/)**
-Außerdem ist mit der zunehmenden Verfügbarkeit von digitalen Inhalten wie Videos, Musik und Spielen die Nutzung mehrerer Bildschirme zu einem beliebten Ansatz geworden, um ein erweitertes Multimedia-Erlebnis zu schaffen. Beispiele für so ein Multimedia-Erlebnis sind Live Chats, die von einem anderen Gerät über Interaktion zum Inhalt beitragen, Spiele die mehrere Geräte miteinander verbinden oder Software die gleichzeitig auf mehreren Geräten läuft und gesteuert werden kann, wie MS Teams und Spotify. -Diese Interaktionen, bei denen Nutzer über den Input anderer Geräte den gezeigten Inhalt beeinflussen können, werden durch das Complementarity Pattern beschrieben. -Deshalb soll in dem Projekt erforscht werden, welche Möglichkeiten es zur Umsetzung des Patterns gibt. Der Fokus soll dabei auf mobile Endgeräte gelegt werden, da sie sich durch allgemeine Verfügbarkeit und zusätzliche Funktionen wie Sensordaten am besten für das Pattern eignen.
-Um die verschiedenen Funktionen sowie Grenzen der mobilen Endgeräte zur Steuerung testen zu können, soll erforscht werden, wie sich Spielmechaniken geräteübergreifend umsetzen lassen. -Die Implementierung soll im Webkontext stattfinden, da das System somit die Verfügbarkeit für fast alle Endgeräte bietet und eine Starthürde wie z.B eine Installation, die bei nativen Apps notwendig wäre, vermieden wird. -Im geplanten Anwendungsfall in Form eines Minigames soll vor allem darauf abgezielt werden, dass jedem potenziellen Nutzer das System schnell und einfach zugänglich ist und es mit seinem Endgerät kompatibel ist. - -### Ziel -Das Endergebnis des Projekts soll ein Browserspiel oder mehrere einfache Spielmechaniken sein die im Browser umgesetzt werden und bei dem/denen mobile Endgeräte zur Steuerung verwendet werden. Es soll sowohl spielerisch als auch am Code vorgeführt werden können, welche Möglichkeiten und welche Grenzen mobile Endgeräte als Controller übers das Web haben. Die verschiedenen Umsetzungsmöglichkeiten sollen im Bezug auf die Systemarchitektur, den Implementierungsaufwand, aber auch Nutzen und weitere Anwendungsmöglichkeiten analysiert werden. - -### Motivation - -Neben dem Studium übe ich noch eine selbstständige Tätigkeit als Webentwickler aus, weshalb ich das Ziel hatte, mich im Praxisprojekt mit einer neuen Webtechnologie auseinanderzusetzen. Darüber hinaus ist der mobile Kontext schon länger einer meiner Interessenschwerpunkte, der durch das Wahlpflichtmodul Mobile Computing noch gefestigt wurde. So ist der Gedanke entstanden, ein Thema zu erforschen, das beide Themengebiete miteinander verbindet. Was durch aktuelle Trends im Web noch bekräftigt wurde, die auch darauf aus sind, eine nahtlose Verbindung zwischen verschiedenen Geräten herzustellen und ein interaktives Nutzererlebnis zu schaffen. -Das Projekt bietet eine Möglichkeit, die technischen Herausforderungen der geräteübergreifenden Kommunikation spielerisch zu erkunden und innovative Lösungen zu entwickeln, die in Zukunft auch auf andere Anwendungsgebiete übertragen werden können. - -
    -
  1. Einleitung
  2. -
      -
    1. Hintergrund und Motivation
    2. -
    3. Zielsetzung des Projekts
    4. -
    5. Aufbau der Arbeit
    6. -
    -
  3. Recherche
  4. -
      -
    1. Konkurrenzanalyse
    2. -
    3. Frameworks
    4. -
    5. Verbindung von Geräten
    6. -
    7. Mögliche Anwendungsfälle
    8. -
    9. Performance
    10. -
    11. Websockets
    12. -
    -
  5. Anforderungsanalyse
  6. -
  7. Technische Umsetzung
  8. -
  9. Iterationsprozess
  10. -
  11. Test und Evaluation
  12. -
  13. Konzeptionsmap
  14. -
  15. Fazit
  16. -
  17. Anhang
  18. -
      -
    1. Entwickelter Code
    2. -
    -
\ No newline at end of file diff --git a/_works/2023-berghahn-florian/04-results/README.md b/_works/2023-berghahn-florian/04-results/README.md deleted file mode 100644 index 7742390..0000000 --- a/_works/2023-berghahn-florian/04-results/README.md +++ /dev/null @@ -1,3 +0,0 @@ -# Ergebnisse - -Bitte legen Sie Ihre Ergebnisse hier ab. Achten Sie bitte auf moderate Dateigrößen. Bitte legen Sie nur geschlossene Dokument, z.B. PDF statt *.doc ab. \ No newline at end of file diff --git a/_works/2023-misenko-vassilij/01-resarch-area-analysis/Concept Map Typography.pdf b/_works/2023-misenko-vassilij/01-resarch-area-analysis/Concept Map Typography.pdf deleted file mode 100644 index 68a4ce9..0000000 Binary files a/_works/2023-misenko-vassilij/01-resarch-area-analysis/Concept Map Typography.pdf and /dev/null differ diff --git a/_works/2023-misenko-vassilij/01-resarch-area-analysis/README.md b/_works/2023-misenko-vassilij/01-resarch-area-analysis/README.md deleted file mode 100644 index 8311bbc..0000000 --- a/_works/2023-misenko-vassilij/01-resarch-area-analysis/README.md +++ /dev/null @@ -1,3 +0,0 @@ -# Themenfeldanalyse - -Bitte legen Sie Ihre Concept Map zur Themenfeldanalyse hier als PDF ab. Die Datei sollte nicht größer als 2 Mbyte sein. \ No newline at end of file diff --git a/_works/2023-misenko-vassilij/02-titles-and-research-questions.md b/_works/2023-misenko-vassilij/02-titles-and-research-questions.md deleted file mode 100644 index cebda29..0000000 --- a/_works/2023-misenko-vassilij/02-titles-and-research-questions.md +++ /dev/null @@ -1,31 +0,0 @@ -# Titel und Forschungsfrage - -Bitte notieren Sie mindestens 10 mögliche Titel der Arbeit und mindestens 5 mögliche Forschungsfragen/ Zielsetzungen in dieses Dokument. - -Titel: -1. Typographische Gestaltung im Web: Eine Analyse und Anwendung für Medieninformatiker -2. Typographie im Web für Medieninformatiker: Gestaltungsprinzipien, Implementierung und Bedeutung -3. Webtypographie als Tool für Medieninformatiker -4. Webtypographie für Medieninformatiker: Erstellung eines umfassenden Cheatsheets für optimale Gestaltung und Know How -5. Typographie im Web leicht gemacht: Ein Cheatsheet für Medieninformatiker und Screendesigner -6. Typographie im Web: Ein Einstieg in die Gestaltungsprinzipien -7. Typographie im Web: Eine umfassende Übersicht über Schlüsselaspekte -8. Webtypographie leicht gemacht: Eine zusammenfassende Ressource für Screendesigner -9. Die Kunst der Typographie im Web: Eine Zusammenfassung für Medieninformatiker -10. Screendesign meets Webtypographie: Wichtige Aspekte auf einen Blick -11. **Typographie im Web: Konzeption und Erstellung eines interaktiven Leitfadens für Medieninformatiker:innen** - - - -Forschungsfragen: -1. Wie kann die Zusammenfassung für das Thema Typographie im Web so gestaltet werden, dass sie benutzerfreundlich und leicht verständlich ist, um Medieninformatikern einen schnellen Zugriff auf relevante Informationen zu ermöglichen? -2. Was sollte auf einem Cheatsheet Poster zusammngefasst und gestaltet werden, damit Medieninformatiker Zugriff auf eine leichte und effektive Ressource der relevanten Informationen über das Thema Typographie im Web haben? -3. Welche Werkzeuge und Techniken sollten für Medieninformatiker in dem Themenbereich der Typographie im Web zusammengefasst werden, um einen leichten Einblick in diese Thematik zu bekommen? -4. Wie sollte eine Zusammenfassung gestaltet werden, um Bedürfnisse und Anforderungen von Medieninformatiker in Bezug auf typographische Informationen darzustellen? -5. Wie kann eine Ressource gestaltet werden und was muss diese beinhalten, damit Medieninformatiker einen Einblick in relevante Aspekte der Typographie Im Web haben? -6. Was muss eine Zusammenfassung des Themas Typographie im Web beinhalten und wie muss diese dargestellt werden, damit Medieninformatiker einen Einblick in die Thematik bekommen, um so in Zukunft mit dem Verständnis für Typographie hochwertige und benutzerfreundliche Webseiten zu gestalten. -7. Wie kann die Zusammenfassung für das Thema Typographie im Web so gestaltet werden, dass sie benutzerfreundlich und leicht verständlich ist, um Medieninformatikern einen schnellen Zugriff auf relevante Informationen zu ermöglichen und sie für das Thema zu sensibilisieren? - -Zielsetzung: -Es sollen relevante Informationen über das Thema der Typographie im Web für Medieninformatiker ermittelt, zusammengefasst und als eine Ressource dargestellt werden. -Es ist noch nicht sicher, ob das Endergebnis die Form eines wissenschaftlichen Posters oder einer kleinen informativen Website haben soll. diff --git a/_works/2023-misenko-vassilij/03-expose.md b/_works/2023-misenko-vassilij/03-expose.md deleted file mode 100644 index 6e81ac2..0000000 --- a/_works/2023-misenko-vassilij/03-expose.md +++ /dev/null @@ -1,24 +0,0 @@ -# Exposé - -## Webtypography 2.0: Eine interaktive Reise durch Schriftgestaltung im Web für Medieninformatiker - -### Problemfeld und Kontext -Dieses Exposé widmet sich dem Thema der Typographie im Kontext des World Wide Web aus der Perspektive der Medieninformatik. Die Digitalisierung und das Internet haben die Art und Weise, wie Informationen konsumiert und kommuniziert werden, transformiert. Webseiten dienen nicht allein der Bereitstellung von Inhalten, sondern sind darüber hinaus auch visuelle Erfahrungsräume. In diesem Kontext spielt die Typographie eine wichtige Rolle, da sie die Grundlage für eine effektive Kommunikation sowie die Gestaltung einer ansprechenden Nutzererfahrung im digitalen Raum bildet. -Die Herausforderung besteht darin, etablierte typografische Prinzipien und Gestaltungskonzepte, die ihren Ursprung in der gedruckten Welt haben, ins Web zu übertragen. Verschiedene Bildschirmgrößen, Browser-Variationen und Endgeräte, ebenso wie die Anforderungen an Barrierefreiheit und Ladezeiten, generieren neue Anforderungen an die Gestaltung. -Als Medieninformatiker hier einen Anfang und Überblick zu finden, um sich weiterzubilden, ist schwer, da Informationsressourcen in diesem Gebiet zu technisch formuliert sind oder sich auf ein kleines Gebiet fokussieren. (Beispiel Literatur: **[Jason Beaird, Alex Walker, James George, 2020](https://www.google.de/books/edition/The_Principles_of_Beautiful_Web_Design/BczDEAAAQBAJ?hl=de&gbpv=0)** , **[Vitaly Friedman, 2007](https://www.google.de/books/edition/Praxisbuch_Web_2_0/519PtwAACAAJ?hl=de)** ) - - -### Ziel und Aufgabenstellung -Das Ziel dieser Arbeit besteht darin, die verschiedenen Aspekte der Typographie sowie Best Practices in diesem Feld für Medieninformatiker*innen und vergleichbare Berufe sowie Stakeholder zusammenzufassen. Dabei soll zuerst herausgefunden werden, welche Aspekte für Medieninformatiker*innen relevant sind, um eine leicht zugängliche Wissensbasis zu erstellen. Hieraus soll eine systematische Roadmap entstehen, welche dazu dient, relevante Themen für Medieninformatiker*innen verständlich darzustellen. - - -### Lösungsansätze -Mittels einer Recherche sollen wichtige und relevante Aspekte der Typographie für Medieninformatiker*innen ermittelt werden. Diese Erkenntnisse sollen daraufhin auf einer interaktiven Webseite zusammengefasst und anhand von Kriterien bewertet werden. Dabei soll der Aufwand und Nutzen der Aspekte bewertet und auf einer Roadmap sortiert werden. Die Sortierung der Aspekte soll anhand der Bewertung erfolgen. Die Bewertung für den Aufwand und den Nutzen soll anhand von folgenden Fragen durchgeführt werden: - --Aufwand: Wie leicht können Medieninformatiker*innen die Aspekte in ihren Projekten integrieren? --Nutzen: Wie relevant und hilfreich sind die Aspekte für Medieninformatiker*innen? Gibt es konkrete Beispiele oder Szenarien, in denen sie besonders nützlich sind? - - -### Motivation -Meine Motivation für das Thema der Typographie im Web entspringt aus eigener Erfahrung, da ich selber Probleme mit dem Thema hatte. Damit zukünftige studierende Personen der Medieninformatik nicht auf dieses Problem stoßen, würde ich gerne dieses Thema ausführlich in Form eines Praxisprojektes erarbeiten und eventuell als eine interaktive Webseite zu verwirklichen. - diff --git a/_works/2023-misenko-vassilij/04-results/README.md b/_works/2023-misenko-vassilij/04-results/README.md deleted file mode 100644 index 7742390..0000000 --- a/_works/2023-misenko-vassilij/04-results/README.md +++ /dev/null @@ -1,3 +0,0 @@ -# Ergebnisse - -Bitte legen Sie Ihre Ergebnisse hier ab. Achten Sie bitte auf moderate Dateigrößen. Bitte legen Sie nur geschlossene Dokument, z.B. PDF statt *.doc ab. \ No newline at end of file diff --git a/_works/2023-mutlu-mert/01-resarch-area-analysis/Concept Map - Themenfeldanalyse.pdf b/_works/2023-mutlu-mert/01-resarch-area-analysis/Concept Map - Themenfeldanalyse.pdf deleted file mode 100644 index a76f56a..0000000 Binary files a/_works/2023-mutlu-mert/01-resarch-area-analysis/Concept Map - Themenfeldanalyse.pdf and /dev/null differ diff --git a/_works/2023-mutlu-mert/01-resarch-area-analysis/README.md b/_works/2023-mutlu-mert/01-resarch-area-analysis/README.md deleted file mode 100644 index a70215d..0000000 --- a/_works/2023-mutlu-mert/01-resarch-area-analysis/README.md +++ /dev/null @@ -1,5 +0,0 @@ -# Themenfeldanalyse - -Bitte legen Sie Ihre Concept Map zur Themenfeldanalyse hier als PDF ab. Die Datei sollte nicht größer als 2 Mbyte sein. - -// Figma Link: https://www.figma.com/file/gWI3EvYV8tS1eda7nXh1oC/Untitled?type=design&node-id=5%3A2&mode=design&t=tGHfJNKwYqZvHwpU-1 \ No newline at end of file diff --git a/_works/2023-mutlu-mert/02-titles-and-research-questions.md b/_works/2023-mutlu-mert/02-titles-and-research-questions.md deleted file mode 100644 index 3d274dd..0000000 --- a/_works/2023-mutlu-mert/02-titles-and-research-questions.md +++ /dev/null @@ -1,24 +0,0 @@ -# Titel und Forschungsfrage - -Bitte notieren Sie mindestens 10 mögliche Titel der Arbeit und mindestens 5 mögliche Forschungsfragen/ Zielsetzungen in dieses Dokument. - -## Titelvorschläge -- KI-gesteuerte Inhalte für Kinder: Entwicklung (Konzeption) einer Online-Plattform für digitale Kinderbücher -- Kinderbücher 2.0: Integration von Künstlicher Intelligenz in Text und Gestaltung -- Mensch-Maschine-Synergie: Entwicklung einer KI-basierten Plattform für Kinderliteratur -- KI-gestützte Generierung von Kinderbuchinhalten -- Zukunft des Kinderbuchs: Die Synergie von KI in der Kinderliteratur - -*Titel "KI-gestützte Generierung von Kinderbuchinhalten" wurde in einem gemeinsamen Meeting akzeptiert und als Titel für das Praxisprojekt gewählt.* - - -## Forschungsfrage -Wie kann generative Künstliche Intelligenz in der Kinderliteratur eingesetzt werden, um pädagogisch wertvolle Inhalte zu kreieren, die sowohl zur kognitiven als auch emotionalen Entwicklung von Kindern beitragen? Und unter welchen ethischen, technischen und inhaltlichen Prämissen sollte diese KI-Technologie in eine Online-Plattform für digitale Kinderbücher integriert werden, um sowohl den Anforderungen der Bildung als auch der verantwortungsbewussten Nutzung Rechnung zu tragen? - -## Zielsetzung -Das Hauptziel dieser Arbeit ist es, die Möglichkeiten generativer KI in der Kinderliteratur zu untersuchen, um pädagogisch wertvolle Inhalte zu schaffen und gleichzeitig die ethischen Standards zu identifizieren, die berücksichtigt werden müssen, wenn sie in eine Online-Plattform für digitale Kinderbücher integriert werden. Diese Arbeit untersucht die Möglichkeiten und Grenzen der Verbindung zwischen Technologie und Kinderliteratur in einem Bereich, in dem pädagogische Wertigkeit und ethische Verantwortung von entscheidender Bedeutung sind. Die Ziele sind wie folgt definiert: - -- **Generative KI und Pädagogik:** Eine gründliche Analyse wird durchgeführt, um zu verstehen, wie generative KI Inhalte schaffen kann, die Kindern helfen können, ihre kognitiven und emotionalen Entwicklungen zu verbessern. Dies umfasst die Untersuchung sowohl der technologischen Vorteile als auch der pädagogischen Bedeutung von KI-erzeugten Inhalten. -- **Ethik und Verantwortung:** Um die moralischen und ethischen Fragen und Herausforderungen zu erkennen, die sich aus dem Einsatz von KI in einem so sensiblen Bereich wie der Kinderliteratur ergeben, wird eine gründliche Bewertung durchgeführt. Es wird besonders darauf geachtet, welche Anforderungen bei der Einbindung in eine Online-Plattform erfüllt sein müssen, um eine verantwortungsvolle Nutzung sicherzustellen. - -Die Ergebnisse dieses Projekts sollen als Grundlage für zukünftige Projekte dienen, die sich mit der praktischen Implementierung dieser Konzepte befassen. \ No newline at end of file diff --git a/_works/2023-orlova-valeria/01-resarch-area-analysis/README.md b/_works/2023-orlova-valeria/01-resarch-area-analysis/README.md deleted file mode 100644 index 8311bbc..0000000 --- a/_works/2023-orlova-valeria/01-resarch-area-analysis/README.md +++ /dev/null @@ -1,3 +0,0 @@ -# Themenfeldanalyse - -Bitte legen Sie Ihre Concept Map zur Themenfeldanalyse hier als PDF ab. Die Datei sollte nicht größer als 2 Mbyte sein. \ No newline at end of file diff --git a/_works/2023-orlova-valeria/01-resarch-area-analysis/Thesis_Concept_Map.png b/_works/2023-orlova-valeria/01-resarch-area-analysis/Thesis_Concept_Map.png deleted file mode 100644 index 1bdb7cc..0000000 Binary files a/_works/2023-orlova-valeria/01-resarch-area-analysis/Thesis_Concept_Map.png and /dev/null differ diff --git a/_works/2023-orlova-valeria/02-titles-and-research-questions.md b/_works/2023-orlova-valeria/02-titles-and-research-questions.md deleted file mode 100644 index 9cc9c33..0000000 --- a/_works/2023-orlova-valeria/02-titles-and-research-questions.md +++ /dev/null @@ -1,46 +0,0 @@ -# Titel und Forschungsfrage - -> Bitte notieren Sie mindestens 10 mögliche Titel der Arbeit und mindestens 5 mögliche Forschungsfragen/ Zielsetzungen in dieses Dokument. - -## Mögliche Titel - -- Kunst online mithilfe von WebVR erlebbarer machen am Beispiel der Cranach Digital Archive Artefakte - -- Digitalisierte Kunst in 3-dimensionalem Raum: Möglichkeiten und Grenzen von WebVR bei der Darstellung von Kunst und Wissen für Interessierte - -- Traditionelle Kunst in virtuellem Raum: WebVR als Mittel für die interaktive digitale Kunstgalerie - -- Kunstwerke mithilfe von WebVR online greifbar vermitteln - -- Lehrreiche Informationen und visuelle Inhalte spannend vermittelt mithilfe von WebVR - -
- -- Eine neue Darstellungsweise von Kunstgalerien in WebVR - -- Eine alternative Darstellungsweise von Kunst in WebVR am Beispiel des CDA - -- Kunst online spannender gestalten mithilfe neuer Design-Konzepte in WebVR am Beispiel des CDA - -- Die Erkundung von VR Interaktionselementen im Kontext von Kunst am Beispiel der Lucas Cranach Gemälde - -- Wie man Kunst online für Interessierte mithilfe von WebVR greifbarer machen kann - - -## Mögliche Forschungsfragen/Zielsetzungen - -- Wie gestaltet man VR Interaktionselemente, sodass diese - - - Kunst für Interessierte greifbarer machen - - - lehrreiche Inhalte spannend vermitteln - - - nutzertauglich sind? - -- Wie gestaltet man eine WebVR Anwendung, sodass diese barrierefrei und spannend Wissen vermitteln kann? - -- Wie können bereits existierende Inhalte in einer neuen VR Anwendung genutzt werden, sodass diese spannend an Interessierte vermittelt werden können? - -- Wie können Kuratoren/Redaktoren von Kunstgalerien unkompliziert Kunstwerke in eine WebVR Anwendung einpflegen, sodass diese interaktiv und interessant bleibt? - -- Wie kann der dreidimensionale Raum in VR effektiver genutzt werden, um Kunst auf spannende Weise an Interessierte zu vermitteln? \ No newline at end of file diff --git a/_works/2023-orlova-valeria/03-expose.md b/_works/2023-orlova-valeria/03-expose.md deleted file mode 100644 index 233bf26..0000000 --- a/_works/2023-orlova-valeria/03-expose.md +++ /dev/null @@ -1,106 +0,0 @@ -# Exposé - -**Arbeitstitel:** - -Wie man Kunst online für Interessierte mithilfe von WebVR erlebbar machen kann: WebVR Erlebnisraum am Beispiel des Cranach Digital Archive - -**Forschungsfragen:** -- Wie kann WebVR eingesetzt werden, um eine bedeutsame sowie unterhaltsame Erfahrung bei der Entdeckung und Erforschung digitalisierter Kunstwerke zu ermöglichen? - -- Wie gestaltet man VR Interaktionselemente, sodass diese Kunst für Interessierte greifbarer machen, lehrreiche Inhalte spannend vermitteln und dabei nutzertauglich sind? - -- Wie kann der dreidimensionale Raum in VR effektiver genutzt werden, um Kunst auf spannende Weise an Interessierte zu vermitteln? - -- Sind die Bestandsdaten des CDA ausreichend für eine interaktive und spannende WebVR-Applikation oder müssen diese um bestimmte Daten angereichert werden? - -**Autorin:** Valeria Orlova - -**Kontakt:** vorlova@th-koeln.de / Github: vorlova - -## Einleitung - -Das Cranach Digital Archive (CDA) ist ein Forschungsprojekt der Stiftung Museum Kunstpalast in Düsseldorf und der Technischen Hochschule Köln welches die Erhaltung, Erschließung, sowie Erforschung und Nutzungsvermittlung der Werke und Archivalien Lucas Cranachs des Älteren, seiner Söhne und seiner Werkstatt umfasst. Die digitalisierte Kollektion seiner Gemälde ist online für Forscher und Interessierte zur Betrachtung zugänglich. - -Das Ziel dieser Arbeit ist es die Kollektion der 100 Meisterwerke Cranachs und die dazugehörigen Informationen mithilfe von modernen Web-Technologien wie WebVR an Interessierte auf spannende Weise zu vermitteln. - -Aktuell gibt es verschiedene Anbieter, die Kunstmuseen und anderen Kunstausstellern die Option anbieten ihre gesammelten digitalisierten Werke in einer VR-Galerie auszustellen (Beispiele: siehe Weitere Quellen: [VR-Galerie-Applikationen](#VRGaleries)). Demgegenüber soll diese Arbeit alternative Herangehensweisen an die Präsentation von digitalisierter Kunst erforschen, die folgende Kriterien erfüllen sollen: - -1. Die bereits existierenden Inhalte der Text- und Bilddaten des CDA können für die Applikation verwendet werden und die Herstellung neuer Inhalte für die VR-Applikation beschränkt sich auf ein Minimum. - -2. Die Interaktionsmöglichkeiten der VR-Anwendung sind nutzertauglich für eine breite Palette an Nutzenden, da diese allen Besuchern des CDA zugänglich sein soll. - -3. Die Interaktionsmöglichkeiten sollen den Nutzenden Spaß machen, um den bildenden Aspekt zu unterstützen und diesen nicht überschatten. - -4. Die Umsetzung soll mithilfe von Webtechnologien erfolgen, sodass keine native App erforderlich ist. - - -## Forschungsstand -Die Idee Kunstgalerien in VR darzustellen existiert schon seit über 20 Jahren. So hat beispielsweise bereits 2001 die Stiftung der hellenistischen Welt in Athen VR genutzt um lehrreiche Inhalte über den Hellenismus zu vermitteln. (Rossou, 2001) - -Noch deutlich früher im Jahr 1993 wurden schon Ideen untersucht mithilfe von VR die Lehre zu unterstützen (Pantelidis, 1993). - -Im Kontext eines VR-Museumsbesuches wurden auch verschiedene Arten der Interaktion untersucht und wie diese von verschiedenen Nutzergruppen genutzt und angenommen wurden. So sollte die meist geringere technische Affinität von älteren Personen bedacht werden. Laut einer Studie aus Finnland aus dem Sommer 2023 tendierten ältere Besucher eher zum Zuhören und Beobachten bei einer solchen VR-Ausstellung, während jüngere Besucher eher die interaktiven Elemente ausprobierten (Vishwanath, 2023). - -Interaktive VR-Applikationen werden jedoch allgemein als eindeutig immersiver wahrgenommen, auch im Vergleich zu einer 360-Video-Tour durch ein Museum (Kalving et al., 2022). - -## Konzept - -Wie kann WebVR eingesetzt werden, um eine bedeutsame sowie unterhaltsame Erfahrung bei der Entdeckung und Erforschung digitalisierter Kunstwerke zu ermöglichen? Wie kann auf spannende Weise über Kunstforschung gelehrt werden und welche Faktoren spielen dabei eine Rolle? - -Playfulness und Gamification sind immer beliebter werdende Konzepte in Bildung und Lehre, unter anderem da sie die Motivation und Lernfähigkeit von Personen steigern können (Lazzaro, 2021)(Malone, 1982). - -Durch die sich immer weiter steigernde Zugänglichkeit von VR-Hardware in privaten Haushalten, sowie die erweiterten Interaktionsmöglichkeiten im dreidimensionalen Raum hat Playfulness viel Potenzial zur Integration in das digitale Erlebnis einer Kunstgalerie. - -Bei einer Umfrage in Deutschland zu genutzten Virtual-Reality-Inhalten gaben rund 91 Prozent der befragten VR-Nutzer an, mit einer VR-Brille Computer- und Videospiele gespielt zu haben. Im Vergleich dazu haben nur 16% die VR-Brille dazu genutzt um Museen, Ausstellungen oder Messen virtuell zu besuchen und nur 13% nutzten diese für Bildungs- oder Lernprojekte. (Statista, 2023) - -Daher ist es zu erwarten, dass Playfulness und Gamification-Elemente ein wichtiger Bestandteil für die positive Rezeption der VR-Kunstausstellung sind. - -Um diese Annahme zu überprüfen soll ein Konzept entwickelt werden, welches Playfulness und Gamification-Elemente miteinbezieht. - -In der Inspiration-Phase soll zunächst eine Annäherung an das Verständnis von "spannenden" Inhalten geschehen. Es soll eine Recherche und Auswahl der VR Technologien und deren Limitierungen, sowie eine Zielgruppen- und Marktanalyse stattfinden. Darüber hinaus sollen auch die Theorien zu und Anwendung von Playfulness und Gamification erkundet werden. - -In der Ideation-Phase werden basierend auf dem gesammelten Wissen Ideen generiert und eingeordnet, die in das Gesamtkonzept der VR-Anwendung hineinspielen sollen. Hierbei soll die herkömmliche Darstellungweise (Imitation einer physischen Kunstausstellung) hinterfragt und alternative Darstellungsweisen gefunden werden. - -In der Implementation-Phase soll ein Prototyp entwickelt und mit potenziellen Nutzenden getestet werden. Ein Fragebogen soll dabei helfen die Bewertungen der Nutzenden aus den Tests qualitativ und quantitativ zu evaluieren. - -Die Ergebnisse aus den Nutzertests werden daraufhin evaluiert und anhand dessen sollen Verbesserungen an den Konzepten und Prototypen vorgenommen werden, die für ein klareres Ergebnis in einer zweiten Iteration getestet und evaluiert werden sollen. - - - -## Gliederung - -1. Einleitung -2. Theoretischer Hintergrund -3. Design Konzepte -4. Prototypisierung -5. User Tests -6. Ergebnisse und Evaluation -7. Fazit und Ausblick - -## Zeitplan -| Wann | Was | -|--|--| -| 1. Monat: | Inspiration Phase – Recherche und Auswahl der VR Technologien und deren Limitierungen, Zielgruppen- und Marktanalyse. Erkundung der Theorien zu und Anwendung von Playfulness und Gamification. -| 2. Monat: | Ideation Phase – Verschiedene Konzepte für eine VR Kunst-Galerie erstellen, die auf neue Weisen Inhalte an Interessierte vermitteln kann, sowie Beginn der Implementation Phase. -| 3. Monat: | Implementation Phase –  Prototypisierung der Konzepte. -| 4. Monat: | Fertigstellung des Prototypen und Vorbereitung und Durchführung der ersten User Tests. -| 5. Monat: | Evaluation der Konzepte anhand des User-Feedbacks. Anpassungen an Konzepten und Prototypen. -| 6. Monat: | Durchführung weiterer User Tests und Evaluation der angepassten Konzepte. - - -## Literatur -- [Roussou, Maria. (2001). Immersive Interactive Virtual Reality in the Museum.](https://www.researchgate.net/publication/2861971_Immersive_Interactive_Virtual_Reality_in_the_Museum) -- [Pantelidis, Veronica S. (1993). Virtual Reality in the Classroom.](https://www.jstor.org/stable/44428033?typeAccessWorkflow=login) -- [Vishwanath, Gautam. (2023). Enhancing Engagement through Digital Cultural Heritage: A Case Study about Senior Citizens using a Virtual Reality Museum.](https://dl.acm.org/doi/10.1145/3573381.3596154) -- [Kalving, Matilda et al. (2022). Comparing VR and Desktop 360 Video Museum Tours.](https://dl.acm.org/doi/10.1145/3568444.3570596) -- [Lazzaro, Nicole. (2012). Why We Play: Affect and the Fun of Games—Designing Emotions for Games, Entertainment Interfaces, and Interactive Products.](https://www.taylorfrancis.com/chapters/edit/10.1201/b11963-ch-31/play-nicole-lazzaro) -- [Malone, Thomas W. (1982). Heuristics for designing enjoyable user interfaces: Lessons from computer games.](https://dl.acm.org/doi/10.1145/800049.801756) -- [Statista. (2023). Für welche Inhalte haben Sie Virtual Reality bereits genutzt?](https://de.statista.com/statistik/daten/studie/1247695/umfrage/umfrage-zu-beliebten-einsatzszenarien-fuer-virtual-reality-in-deutschland/) - -## weitere Quellen - -### VR-Galerie-Applikationen -- https://vrallart.com/ -- https://www.artsteps.com/ -- https://www.smithsonianmag.com/travel/worlds-first-entirely-virtual-art-museum-is-open-for-visitors-180975759/ -- https://www.meta.com/en-gb/experiences/pcvr/2581900071911230/?intern_source=blog&intern_content=unleash-your-creativity-through-vr-art&utm_source=www.meta.com&utm_medium=oculusredirect \ No newline at end of file diff --git a/_works/2023-orlova-valeria/04-results/README.md b/_works/2023-orlova-valeria/04-results/README.md deleted file mode 100644 index 7742390..0000000 --- a/_works/2023-orlova-valeria/04-results/README.md +++ /dev/null @@ -1,3 +0,0 @@ -# Ergebnisse - -Bitte legen Sie Ihre Ergebnisse hier ab. Achten Sie bitte auf moderate Dateigrößen. Bitte legen Sie nur geschlossene Dokument, z.B. PDF statt *.doc ab. \ No newline at end of file diff --git a/_works/2023-probst-maxim-bachelorarbeit/01-resarch-area-analysis/README.md b/_works/2023-probst-maxim-bachelorarbeit/01-resarch-area-analysis/README.md deleted file mode 100644 index 8311bbc..0000000 --- a/_works/2023-probst-maxim-bachelorarbeit/01-resarch-area-analysis/README.md +++ /dev/null @@ -1,3 +0,0 @@ -# Themenfeldanalyse - -Bitte legen Sie Ihre Concept Map zur Themenfeldanalyse hier als PDF ab. Die Datei sollte nicht größer als 2 Mbyte sein. \ No newline at end of file diff --git a/_works/2023-probst-maxim-bachelorarbeit/02-titles-and-research-questions.md b/_works/2023-probst-maxim-bachelorarbeit/02-titles-and-research-questions.md deleted file mode 100644 index 70d4a63..0000000 --- a/_works/2023-probst-maxim-bachelorarbeit/02-titles-and-research-questions.md +++ /dev/null @@ -1,30 +0,0 @@ -# Titel - -• Konzeption und Entwicklung eines Layouteditors für den „Content360“-Webclienten - -• Konzeption und Entwicklung einer Vaadin-Applikation zur Modifikation des Layouts vom Content360-Webclienten - -• Konzeption und Entwicklung einer, zu dem Content360-Webklienten komplementären, Vaadin-Applikation zur individuellen Anpassung der Nutzeroberfläche - -• Ein Projekt zur Erweiterung des Content360-Webklienten durch eine individuelle Editierung und Gestaltung der Weboberfläche - -• Die Entwicklung einer Add-On-Applikation für die Layout-Konfiguration des "Content360"-Webklienten - -• Konzeption und Entwicklung eines Layouteditors innerhalb eines Vaadin-Frameworks und die Implementierung einer intuitiven Drag-and-Drop Funktion. - -# Finaler Titel - -Konzeption und Entwicklung einer Vaadin-Applikation zur Modifikation des Layouts vom Content360-Webclienten. -Kontext: Die Mediengesellschaft "RTL" - -# Forschungsfragen - -• Es soll ermittelt werden, welche Persistenz Möglichkeiten für ein solches Projekt und dessen benötigte Daten in Frage kommen, und welche sich als das am besten geeignet erweist. - -• Wieso eignet sich Vaadin als Entwicklungs-Framework, was sind dessen Vorteile und welchen Einfluss hat diese Wahl auf den Entwicklungsprozess eines solchen Projektes? - -• Wie baut man eine geeignete Frontend-Struktur, in Hinsicht auf Komponenten, Styling und Logik auf? - -• Wie kann man intuitive "Drag and Drop" Funktionen in eine React-Web-Applikation integrieren. - -• Wie ist es möglich alt bekannte Systeme und Arbeitsabläufe für die Anwender zu modernisieren ohne die Vertrautheit dieser zu verlieren? diff --git a/_works/2023-probst-maxim-bachelorarbeit/03-expose.md b/_works/2023-probst-maxim-bachelorarbeit/03-expose.md deleted file mode 100644 index ff4f142..0000000 --- a/_works/2023-probst-maxim-bachelorarbeit/03-expose.md +++ /dev/null @@ -1,7 +0,0 @@ -# Exposé - -Innerhalb der Mediengesellschaft „RTL“ wird eine circa 20 Jahre alte Applikation namens „Rights“ in eine neue Webumgebung überführt. Das neue Projekt hat den Namen „Content360“, und dient zur Darstellung umfassender Daten, welche aus einer Microsoft-SQL-Datenbank geliefert werden. Bei den Daten handelt es sich unter anderen um Metadaten vom Film-, Serien-, Episoden- und Staffelobjekten, welche von den verschiedenen Titeln, Presseinformationen, über Stabsinformationen bis zu Lizenz Daten reichen. Diese Informationen werden strukturell in verschiedenen thematisch geordneten Reitern dargestellt (Objekt-Tab, Redaktionell-Tab, etc.). Die Nutzer dieser Applikation können mittels dieser neuen und modernen Weboberfläche verschiedene Operationen ausführen, welche die ausgewählten Datensätze manipulieren. - -Über die Jahre der Entwicklung dieser Applikation hat sich die Anzahl der Tabs sehr stark angehäuft und wenn ein Nutzer Informationen einsehen und manipulieren möchte, kann es durch die Menge an Navigationsmöglichkeiten zu Übersichtsproblemen kommen. Zudem führt die Anzahl and Datensätzen, die für jeden Abruf benötigt werden zu Performance-Problemen, welche sich insbesondere durch verlängerte ladezeiten bemerkbar machen. -Dieses Projekt soll nun für die Konzeption und Entwicklung einer separaten Applikation dienen, welche es dem Nutzer ermöglichen soll, ein persönliches Layout der Tabs zu erzeugen. Zudem werden verschiedene Komponenten der Implementierung im Detail betrachtet, unter anderem eine Intuitive „Drag-and-Drop“ Funktion, die Abwägung von Persistenz Optionen und die Implementierung einer „Azure AD“-Authentifizierung. Diese Applikation soll zunächst selbständig stehen, und in der Zukunft in der Webapplikation integriert werden. -Durch die Arbeit wird eine funktionsfähige „Vaadin“-Applikation, welche sich mit einer Datenbank verbindet zur Verfügung gestellt, welche bei Notwendigkeit zusätzlich erstellt und eingerichtet wird. Zudem werden die verschiedenen Design-Herangehensweisen abgewogen und erläutert. Es wird auch ermittelt, wie eine Integration in die Umgebung des „Content306“-Klienten ablaufen würde. Begleitend wird eine Ausführliche Dokumentation bereitgestellt, welche fortlaufenden Entwicklern einen schnellen Einblick in die Applikation gewähren soll. diff --git a/_works/2023-probst-maxim-bachelorarbeit/04-results/README.md b/_works/2023-probst-maxim-bachelorarbeit/04-results/README.md deleted file mode 100644 index 7742390..0000000 --- a/_works/2023-probst-maxim-bachelorarbeit/04-results/README.md +++ /dev/null @@ -1,3 +0,0 @@ -# Ergebnisse - -Bitte legen Sie Ihre Ergebnisse hier ab. Achten Sie bitte auf moderate Dateigrößen. Bitte legen Sie nur geschlossene Dokument, z.B. PDF statt *.doc ab. \ No newline at end of file diff --git a/_works/2023-reh-richard/01-resarch-area-analysis/README.md b/_works/2023-reh-richard/01-resarch-area-analysis/README.md deleted file mode 100644 index 8311bbc..0000000 --- a/_works/2023-reh-richard/01-resarch-area-analysis/README.md +++ /dev/null @@ -1,3 +0,0 @@ -# Themenfeldanalyse - -Bitte legen Sie Ihre Concept Map zur Themenfeldanalyse hier als PDF ab. Die Datei sollte nicht größer als 2 Mbyte sein. \ No newline at end of file diff --git a/_works/2023-reh-richard/01-resarch-area-analysis/minimalism in webdesign.pdf b/_works/2023-reh-richard/01-resarch-area-analysis/minimalism in webdesign.pdf deleted file mode 100644 index 99c9963..0000000 Binary files a/_works/2023-reh-richard/01-resarch-area-analysis/minimalism in webdesign.pdf and /dev/null differ diff --git a/_works/2023-reh-richard/01-resarch-area-analysis/mobile-web-nav.pdf b/_works/2023-reh-richard/01-resarch-area-analysis/mobile-web-nav.pdf deleted file mode 100644 index 56f364f..0000000 Binary files a/_works/2023-reh-richard/01-resarch-area-analysis/mobile-web-nav.pdf and /dev/null differ diff --git a/_works/2023-reh-richard/02-titles-and-research-questions.md b/_works/2023-reh-richard/02-titles-and-research-questions.md deleted file mode 100644 index b611d1f..0000000 --- a/_works/2023-reh-richard/02-titles-and-research-questions.md +++ /dev/null @@ -1,30 +0,0 @@ -# Titel und Forschungsfrage - -## Forschungsfragen - -1. Wie kann die Auswahl eines Navigation-Patterns abhängig vom Content und der Informationsarchitektur einer Webseite auf mobilen Endgeräten getroffen werden? -2. Welche allgemeinen Kriterien sind für einen Webentwickler nötig, um sich für ein bestimmtes mobiles Navigationspattern zu entscheiden ? -3. Welche konkreten UX-Kriterien sollten bei der Wahl eines mobilen Navigationspatterns beachtet werden und welche Relevanz haben sie bei der Wahl? -4. Wann sollte für welchen Zweck der zu entwickelnden Webseite, welches Navigation-Pattern verwendet werden ? -5. Welche Vorteile und Nachteile liefern aktuelle Navigation-Patterns ? -6. Wie kann man mit den aktuellsten Trends der Navigation-Patterns mithalten? -7. Andersrum vielleicht: Welche Fehler sollte man bei der Wahl eines Navigation-Patterns für die zu entwickelnde Webseite vermeiden ? -8. Wie sollte die Wahl getroffen werden, um eine möglichst positive UX auf mobilen Endgeräten zu erlangen ? -9. Wie bestimmt die Zielgruppe einer Webseite die Navigationspatterns ? -10. Wie sollte die Wahl von Navigtion-Pattern abhängig vom Content-type, Content-Menge und Nutzungskontext getroffen werden ? - -## Forschungstitel - -1. Mobile Web Navigation -2. Web Navigation: Optimale / Passende Wahl eines Navigation-Patterns für Webseiten auf mobilen Endgeräten. -3. Web Navigation: Korrekte Verwendung von Navigation-Pattern für Webseiten auf mobilen Endgeräten. -4. Auswahl eines Navigation-Patterns für mobile Webseiten anhand von Merkmalen der Webseite. -5. Web Navigation Design: Leitfaden für die Wahl und Verwendung von Navigation-Pattern auf mobilen Webseiten. -6. Optimierung der Benutzererfahrung von Webseiten auf mobilen Endgeräten durch gezielte Auswahl -und Implementierung von Navigation-Pattern. -7. Bereitstellung einer intuitiven UI durch effektive Navigation-Pattern auf mobilen Endgeräten. -8. Web Navigation: Vorgehen bei der Implementierung einer Navigation für mobile Versionen einer Webseite. -9. Optimierung von Orientierung und Navigation auf mobilen Webseiten. -10. Die gezielte Wahl eines Navigation-Patterns anhand der Informationsarchitektur einer Webseite. - -{::comment} Statt auf Webentwickler allgemein, könnten die Titel und Fragen sich stattdessen auf Medieninformatiker fokussiren. {:/comment} diff --git a/_works/2023-reh-richard/03-expose.md b/_works/2023-reh-richard/03-expose.md deleted file mode 100644 index 61be6ed..0000000 --- a/_works/2023-reh-richard/03-expose.md +++ /dev/null @@ -1,45 +0,0 @@ -# Exposé - -## Problemstellung und Kontext - -Bei der Entwicklung von Webseiten berücksichtigen Entwickler verschiedene Lösungen für eine effiziente Navigation. Hierbei greifen sie auf Navigation-Patterns zurück, um verschiedene Arten von Menüs zur Weiterleitung zu spezifischen Inhalten der Webseite zu ermöglichen. Als Beispiel dafür können verschiedene Navigation-Patterns dienen, darunter: - -- Top-Navigationsleisten -- Hamburger-Menüs -- Accordion-Menüs -- Breadcrumbs - -Dabei versuchen sie, verschiedene Displaygrößen aller Endgeräte zu beachten, mittels welcher auf die zu entwickelnde Webseite zugegriffen werden soll und wählen ein passendes Navigations-pattern [@navigation-importance, S. 34]. - -Insbesondere bei mobilen Endgeräten kann es vorkommen, dass die Wahl des Navigation-patterns falsch getroffen wird und die Nutzer dadurch die Webseite auf manchen Endgeräten nicht optimal nutzen können. Mobile Endgeräte verfügen je nach Gerät über ein kleines Display, verwenden andere Interaktionsgesten mit der Benutzeroberfläche und sind leistungsschwächer als Desktop-Computer. Es entstehen auch Bedienungsprobleme bei einem Navigation-Pattern, welches nicht auf die darunterliegende Informationsarchitektur der Webseite angepasst ist. Wenn ein ungeeignetes Navigations-Pattern für die mobile Version der Webseite gewählt wird, kann die Bedienung für Nutzer unintuitiv sein und die Suche nach spezifischen Inhalten erschwert werden, was die Nutzererfahrung negativ beeinflusst [@bad-user-experience, S. 7, 20; @navigation-importance, S. 37]. Daher stellt es eine Herausforderung für Entwickler dar, die Navigation einer Webseite auf mobilen Endgeräten ebenso benutzerfreundlich zu gestalten, wie die der entsprechenden Desktop-Version. - -## Zielsetzung und Aufgabenstellung - -Das Ziel ist es, eine Entscheidungsgrundlage für Webentwickler zu schaffen, die Ihnen dabei hilft, ein geeignetes Navigation-Pattern zu finden und damit eine positive Nutzererfahrung auf mobilen Endgeräten zu erreichen. Die Entscheidung soll auf bewährten Vorgehensweisen, der spezifischen Informationsarchitektur und des "Content-Types" der zu entwickelnden Webseite basieren. Die besten Vorgehensweisen und Merkmalkriterien werden im Verlauf des Projekts durch umfassende Literaturrecherche bestimmt. Dabei soll Wissen über die Gestaltung und Nutzung verschiedener aktueller Navigation-Pattern gesammelt werden. Die Vorgehensweise in der Aufgabenstellung beinhaltet folgende Punkte in der Recherche: - -- Verwendung von Navigtionspattern im Rahmen von mobiler UI. -- Historie der Entwicklung mobiler Navigation. -- Effektivität aktueller Navigationspattern und bewährte Vorgehensweisen. -- Informationsarchitekturen und ihr Zusammenhang mit der UI. - -## Lösungsansatz - -Anschließend wird eine "Map" entwickelt, die das aus der Literaturrecherche gewonnene Wissen zusammenfasst und präsentiert. Diese "Map" ist konzipiert, um Webentwicklern bei der Wahl von Navigation-Pattern Unterstützung und Orientierung zu bieten. Die konkrete Ausgestaltung der "Map" wird im Verlauf des Projekts erörtert. Eine Möglichkeit ist es, die Map durch eine Webseite darzustellen. Auf einer Webseite lassen sich Informationen gut in übersichtliche Abschnitte strukturieren und einzelne Navigation-Pattern visuell darstellen. Eine andere Möglichkeit ist es, die Map in Form einer wissenschaftlichen Arbeit zu verfassen, und somit rein textuell das Wissen aus der Literaturrecherche zu vermitteln. - -## Ressourcen - -Für das Projekt ist vorwiegend eine umfassende Literaturrecherche erforderlich. Geeignete Quellen für die Literaturrecherche sind Bücher und Artikel von der Nielsen Norman Group, die sich im Wesentlichen mit UX und UI befassen und unter anderem auch mit der Navigation auf Webseiten. Für die Erstellung des Lösungsansatzes der Webseite sind zusätzlich Kenntnisse im Bereich der Frontend-Entwicklung mit HTML und CSS benötigt. - -## Motivation - -Meine Motivation für das Thema der Navigationspatterns auf mobilen Plattformen entsteht aus meiner Vertiefung im Studium in der Web-Development Richtung. Hierbei habe ich Erfahrungen in der Entwicklung und Gestaltung von Webseiten gesammelt und möchte diese nun weiter im Rahmen dieses Projekts vertiefen. Zudem habe ich Interesse nach dem Studium im Bereich der Webentwicklung tätig zu sein, wobei mir die Erkenntnisse aus diesem Projekt auch helfen werden, meine Kenntnisse zu erweitern. Des Weiteren gibt es hierbei eine Überschneidung zwischen Screendesign und Front-End-Development, wobei Medieninformatiker sich mit beiden Themengebieten stark auseinandersetzen und daher für sie relevant sind. Abgesehen davon erfordert jede Art von Webseiten eine Form von Navigation, weswegen sich Webentwickler zwangsläufig mit dem Thema der Navigation-Pattern bei der Gestaltung und Implementierung ihrer Webseite auseinandersetzen müssen. - -## Setup, Abhängigkeiten und Meilensteine - -Das Projekt wird im Rahmen des Moduls Praxisprojekt an der TH Köln im Studiengang Medieninformatik durchgeführt. Aufgrund des Themenbereichs Web-Development ist Herr Prof. Christian Noss als Betreuer geeignet. Bislang sind der Titel und die Forschungsfrage vorläufig festgelegt, und es muss noch spezifische Literaturrecherche durchgeführt werden. Weitere Meilensteine stehen noch aus und müssen noch mit dem Betreuer besprochen werden. - -## Quellenverzeichnis - -[1] S. Ritonummi, “User experience on an ecommerce website – a case study,” 2020. -[2] P. D. P. Lili L ́ang, “Deceptive interfaces,” J ̈onk ̈oping University School of Enginee- -ring, 2019. diff --git a/_works/2023-reh-richard/04-results/Praxisprojekt_Arbeit_WiSe_2023_24_Reh_Richard.pdf b/_works/2023-reh-richard/04-results/Praxisprojekt_Arbeit_WiSe_2023_24_Reh_Richard.pdf deleted file mode 100644 index 2fc7b32..0000000 Binary files a/_works/2023-reh-richard/04-results/Praxisprojekt_Arbeit_WiSe_2023_24_Reh_Richard.pdf and /dev/null differ diff --git a/_works/2023-reh-richard/04-results/README.md b/_works/2023-reh-richard/04-results/README.md deleted file mode 100644 index 7742390..0000000 --- a/_works/2023-reh-richard/04-results/README.md +++ /dev/null @@ -1,3 +0,0 @@ -# Ergebnisse - -Bitte legen Sie Ihre Ergebnisse hier ab. Achten Sie bitte auf moderate Dateigrößen. Bitte legen Sie nur geschlossene Dokument, z.B. PDF statt *.doc ab. \ No newline at end of file diff --git a/_works/2024-09-17-benjamin-pagelsdorf.md b/_works/2024-09-17-benjamin-pagelsdorf.md deleted file mode 100644 index c3f38de..0000000 --- a/_works/2024-09-17-benjamin-pagelsdorf.md +++ /dev/null @@ -1,28 +0,0 @@ ---- -layout: work-result -author: Benjamin Pagelsdorf -title: Analyse und Konzeption von Maßnahmen zum Schutz von Bildern im Web am - Beispiel der offenen Forschungsdatenbank Cranach Digital Archive mit über 20000 - Abbildungen -date: 2024-09-17 -slideshow: false -research-diary: false -type: Masterarbeit -status: finished -visibility: published -keywords: DRM, Web, Bildschutz, Wasserzeichen, Captcha -main-examiner: true ---- -Das Cranach Digital Archive stellt frei zugänglich qualitativ hochwertige Abbildungen sowie -Informationen zu den Gemälden, Archivalien und Druckgrafiken bereit. Diese angebotenen -Dienste sind zum Teil gemeinfrei verfügbar, andere aber urheberrechtlich geschützt. Deshalb -ist das Anfertigen von Kopien einzelner Seiten, Inhalten und Bildmaterialien nicht gestattet. -Zum Schutz des Urheberrechts werden aktuell Wasserzeichen eingesetzt. Diese dienen -zur Kennzeichnung des Urhebers. Mit neuen Technologien, die zum Teil mit künstlicher -Intelligenz arbeiten, ist es möglich, gegen Schutzmaßnahmen wie Wasserzeichen vorzugehen. -In dieser Arbeit werden die bestehenden Maßnahmen analysiert und auf ihre Wirksamkeit -überprüft. Weiterführend werden existierende Konzepte und Technologien zum Schutz -von Bildern im Web begutachtet und bewertet. Mit den gewonnenen Erkenntnissen soll -der Schutz der Bilder verbessert werden. Dazu erfolgt eine Optimierung des bestehenden -Wasserzeichens, eine Integration eines Captchas sowie die Nutzung eines IP-Filters. Die -Ergebnisse dieser Arbeit zeigen, dass die konzeptionierten Maßnahmen die bestehende Schutzwirkung des Cranach Digital Archive verbessern können. diff --git a/_works/2024-12-05-sofia-neubert.md b/_works/2024-12-05-sofia-neubert.md deleted file mode 100644 index 9bcbdb2..0000000 --- a/_works/2024-12-05-sofia-neubert.md +++ /dev/null @@ -1,14 +0,0 @@ ---- -layout: work-result -author: Sofia Neubert -title: Cranach Meisterwerke als digitales Coffee Table Book -date: 2024-12-05 -slideshow: false -research-diary: false -type: Praxisprojekt -status: in-progress -visibility: unpublished -keywords: Design, Frontend -main-examiner: true ---- -tbd diff --git a/_works/2024-brock-sebastian/01-titel_forschungsfragen.md b/_works/2024-brock-sebastian/01-titel_forschungsfragen.md deleted file mode 100644 index 323b163..0000000 --- a/_works/2024-brock-sebastian/01-titel_forschungsfragen.md +++ /dev/null @@ -1,26 +0,0 @@ -## Masterarbeit Sebastian Brock im SS2024 - Sound und musikalische Kollaboration im Web - -### Finaler Titel -Explorative Konzeption und Implementierung einer Web-basierten Plattform zur musikalischen Echtzeit-Kollaboration an Modular-Synthesizern - -### Mögliche Titel - -1. Musikalische Kollaboration im digitalen Raum: explorative Entwicklung und Studie eines Systems zur Soundgenerierung im Web -2. Interaktive Klangerzeugung im Web - eine Studie über technologische und soziale Potenziale -3. Virtuelle Harmonien: Entwicklung und Erforschung von musikalischer Kooperation in Echtzeit im Web -4. Webbasierte Musikproduktion: Analyse sozialer und kreativer Dynamiken in Online-Kollaborationen -5. Explorative Entwicklung eines Web-basierten Dienstes zur musikalischen Echtzeit-Kollaboration -6. Webbasierte Jam-Sessions: Design und Umsetzung eines virtuellen Modularsynthesizers für interaktive Musiksessions -7. Echtzeit-Musikkollaboration im Web - eine Forschung über technische und soziale Möglichkeiten und Grenzen -8. Explorative Erforschung und Entwicklung kollektiver Klanggestaltung in der Cloud -9. Konzeption und Implementierung einer web-basierten Plattform zur musikalischen Echtzeit-Kollaboration an Modular-Synthesizern -10. Synthesizer Online - Erforschung von Potenzialen der digitalisierung von musikalischer Kollaboration - - -### Forschungsfragen - -* Wie ist der Stand von Klanggenerierung im Web im Jahr 2024? -* Wie kann musikalische Echtzeit-Kollaboration in einem Web-basierten System umgesetzt werden (Architektur & Software)? -* Wie kann mit der Wechselwirkung zwischen Latenz und Datenqualität bei synchronen Sessions umgegangen werden? -* Welche Vorteile sind im gegebenen Rahmen im Web möglich, wenn es um kreativen musikalischen Prozess geht? -* Kann Austausch zwischen Kollaborateuren, welcher über Klanggenerierung hinausgeht von einem Web-System hinreichend umgesetzt werden? diff --git a/_works/2024-brock-sebastian/02-sbrock_ma_expose.md b/_works/2024-brock-sebastian/02-sbrock_ma_expose.md deleted file mode 100644 index ed34bf6..0000000 --- a/_works/2024-brock-sebastian/02-sbrock_ma_expose.md +++ /dev/null @@ -1,148 +0,0 @@ -## Explorative Konzeption und Implementierung einer Web-basierten Plattform zur musikalischen Echtzeit-Kollaboration an Modular-Synthesizern - -### Problemfeld und Kontext -Das synchrone Musizieren mit mehreren Personen ist eine Aktivität, -welche in aller Regel einen örtliche Nähe voraussetzt. -Während es in Band-Kontexten, in welchen jede Person -ein separates Instrument spielt - vor allem vorangetrieben -durch die Covid 19-Pandemie - Software-Lösungen für -Remote-Probesessions gibt (z.B. Jamkazam https://jamkazam.com oder Jamulus https://jamulus.io/de/), stellt die rein elektronische Klangerzeugung -ein abzugrenzendes Problemfeld dar. -Synthesizer und speziell Modular-Synthesizer sind Instrumente, -welche in der Regel nie zwei mal identisch vorhanden sein können. -Durch die Zusammensetzung des Synthesizers durch Module, -welche (innerhalb eines standardisierten Formats wie Eurorack) -frei wählbar sind und nach belieben angeordnet werden können, -ist es nahezu unmöglich, mit mehr als einer Person an einem Modular-Synthesizer zu arbeiten, -wenn nicht beide Personen sich im gleichen Raum befinden. - -Selbst wenn zwei Personen an zwei unterschiedlichen Orten -über ein identisch konfiguriertes Modularsynthesizer-System verfügen würden, -besteht eine zentrale Hürde in der Analogität des Systems. -Die in den Modulen verbauten Potentiometer sind in der Regel stufenlos -und können theoretisch unendlich viele Positionen einnehmen (dies ermöglicht unter Anderem Mikrotonalität), -was es praktisch unmöglich macht, dass zwei Personen an zwei Systemen -die exakt gleichen Reglerpositionen einstellen und somit nie einen identischen Klang erzeugen können. - - -### Ziel -Das Ziel dieses Projekts besteht darin, Möglichkeiten für die Klangerzeugung im Web zu konzipieren -und im Kontext eines Systems zur kollaborativen Nutzung von Modular-Synthesizern zu implementieren. -Neben rein technischen Ansätzen zur Klangerzeugung soll dabei auch untersucht werden, -welche Strategien zur Synchronisierung von mehreren Sessions sinnvoll sein können - hier entstehen vor allem Herausforderungen im Kontext von zu verwendenden Web-Architekturen. - -Der Weg zu dem definierten Ziel eines nutzbaren Systems ist dabei -bewusst hinsichtlich der Konzeption und Implementierung explorativ aufgebaut - durch das Projekt sollen vor allem unterschiedliche technische Möglichkeiten -und Implementierungsansätze durch die praktische Anwendung im Entwicklungsprozess untereinander abgewogen werden. - - -### Aufgabenstellung -Die zentrale Aufgabe besteht darin, eine real nutzbare Plattform zur virtuellen Kollaboration -an Modular-Synthesizern im Web umzusetzen. - -Dabei sollen Fragen und Herausforderungen, welche zu Beginn oder während der Implementation -des Systems entstehen, nach wissenschaftlichen Prinzipien erforscht und beantwortet werden. -Die praktische Umsetzung bietet dabei neben der rein theoretischen Abwägung von Handlungsansätzen -eine reale Umsetzung der erforschten Ansätze und beweist oder widerlegt diese durch praktische Anwendung. -Durch die explorative Gestaltung dieses Prozesses kann der gesamte Forschungs- -und Entwicklungsablauf sehr dynamisch auf entstehende Hürden reagieren und Rückschritte ermöglichen. - - -### Lösungsansätze -Die vorgegebene Aufgabenstellung setzt voraus, dass der gesamte technische Stapel der Klanggenerierung -im Web betrachtet werden muss, um das System entwickeln und dabei wissenschaftliche Erkenntnisse sammeln zu können. - -Grundsätzlich muss zur Umsetzung des Systems eine Grundlagenforschung zur Funktionsweise -und möglichen Ansätzen von Klanggenerierung im Web stattfinden. -Dies ist nötig, da weitere Eigenentwicklungen oder beispielsweise bestehende Bibliotheken -anderer Entwickler voraussichtlich auf den Grundlagen dieses Tech-Stacks aufbauen, -und nur so ein tiefgreifendes Verständnis über den gesamten Stack entstehen kann. - -Neben der Theorieforschung ist es dabei wichtig, bestehende Lösungen zu betrachten, -welche in vergleichbaren Kontexten existieren. So kann durch die Betrachtung praktischer Umsetzungen -(und im besten Fall des Source-Codes bei Open-Source Projekten) -weiteres Verständnis und Erkenntnisse hinsichtlich der praktischen Umsetzung entstehen. - - -### Chancen und Risiken -Kollaborative musikalische Prozesse setzen in der Regel voraus, -dass auditives Feedback zwischen den Musikern (nach menschlicher Wahrnehmung) Latenzfrei stattfindet. -Andernfalls können zeitliche Abweichungen entstehen und der gemeinsame Rhythmus verloren gehen. -Die Minimierung der Latenz bei gleichzeitiger Berücksichtigung akzeptabler Audioqualität ist somit unabdingbar -und stellt perspektivisch eine der zentralen Herausforderungen des Projekts dar. - -Die im Kapitel 1 - Problemfeld beschriebene Analogität modularer Synthesizer -und die damit einhergehenden theoretisch unendlichen Konfigurationsmöglichkeiten -werden häufig als einer der zentralen Alleinstellungsmerkmale analoger Synthesizer gesehen. -Da diese Bandbreite an Möglichkeiten durch die digitale Simulation gezwungenermaßen eingegrenzt werden muss, -besteht in diesem Punkt das Risiko, dieses Alleinstellungsmerkmal eines Modularsynthesizers zu verlieren. -Ob und in welchem Umfang dies tatsächlich geschieht, wird davon abhängig sein, -wie stark diese Möglichkeiten unter Berücksichtigung anderer Anforderungen eingegrenzt werden müssen. - -Die Ergebnisse dieser Arbeit können perspektivisch die Chance bieten, -Erkenntnisse über den Kontext der musikalischen Kollaboration hinaus zu bieten. -Es gibt viele Anwendungsfälle, in welchen ein synchroner Austausch mit mindestens zwei Personen -via des Webs nötig ist - dies kann auditiv oder visuell stattfinden, oder über einen anderen Kanal erfolgen. -Idealerweise bietet die Entwicklung der Synthesizer-Plattform neben Kontextspezifischen -auch allgemeingültige Erkenntnisse, welche für solche weiteren Projekte -wertvoll sein können - beispielsweise bezüglich Web-Architekturen, Frontend-Entwicklungsansätzen oder weiteren Themenfeldern. - - -### Ressourcen -Neben einem Grundverständnis zur Funktionsweise von Synthesizern und Modularsynthesizern im speziellen -ist es wichtig zu verstehen, wie der kollaborative Prozess an solcher Hardware in der Regel abläuft, -um die Anforderungen für eine Digitalisierung dieses Prozesses erarbeiten zu können. -Dafür steht ein Teenage Engineering PO400 (https://teenage.engineering/store/400) zur Verfügung. -Dieser Synthesizer bietet eine ähnlich modulare Aufteilung wie vollständig modulare Synthesizer -und kann somit im Rahmen des Projekts genutzt werden, um Vergleiche zwischen digitalen -und realen Handlungsschritten zu ziehen. - -Desweiteren besteht ein Grundverständnis und -Erfahrung in der Nutzung von VCVRack (https://vcvrack.com), -einer Simulation von Eurorack-Synthesizern. Dies bietet ein Beispiel für Software, -anhand welcher ein Abgleich zu bisher existierenden digitalen Simulationen solcher Systeme gezogen werden kann. - - -### Motivation -Musikalische Kollaboration ist ein Prozess, welcher neben dem Unterhaltungsfaktor -und der Schaffung eines kreativen Ventils durch den Input mehrerer Personen häufig persönliche, -kreative Grenzen erweitern kann. In einer zunehmend digitalen Welt, -in welcher Freundschaften immer häufiger keine geographische Nähe voraussetzen -und vermehrt Prozesse des Alltags digital über große Distanzen stattfinden können, -besteht eine klare Motivation, auch Prozesse des musikalischen Kontextes in solchen Rahmen zu ermöglichen. -Ansätze wie das für dieses Projekt visionierte System haben das Potenzial, vielen Menschen zu helfen, -welche andernfalls aufgrund geographischer Distanz musikalische Projekte nicht umsetzen könnten. - -Sollten die in diesem Projekt geschaffenen Erkenntnisse allgemeingültig anwendbar sein, -könnten Anwendungsfälle weit über den musikalischen Kontext hinaus betrachtet -und in technischer Hinsicht ermöglicht oder verbessert werden. - - -### Setup, Abhängigkeiten und Meilensteine -Bis auf die Vorgabe, das System im Web aufzubauen und via Browser zugänglich zu machen, -ist das Projektsetup bewusst offen gehalten - durch den explorativen Forschungsansatz -sollen möglichst keine Entwicklungsmöglichkeiten durch eine zu frühe Eingrenzung unbetrachtet bleiben. - -Um das resultierende System hinreichend Testen zu können, wird das Hinzuziehen -von mindestens einer Testperson nötig sein - aus technischer Sicht mögen zwei Endgeräte zum Testen reichen, -doch um zwischenmenschliche Aspekte bei Remote-Kollaboration betrachten zu können, -ist eine reale Testperson unabdingbar. - -Die umgesetzten Funktionalitätsstufen des Systems können als zentrale Meilensteine -in der Projektlaufzeit betrachtet werden. Diese Funktionalitätsstufen können in der Basis -zum Beispiel die Verbindung zweier Web-Sessions umfassen, -in einem späteren Schritt die Klang-Synchronisierung zwischen Sessions beschreiben, -und im letzten Meilenstein schließlich in das vollumfänglich abgeschlossene System münden. -Wie sich diese Stufen konkret unterteilen und welche Meilensteine dadurch entstehen, -wird perspektivisch Teil des Projektablaufes sein. - - -### Arbeitsergebnis -Das Ergebnis der Arbeit ist ein funktionales, Web-basiertes System zur synchronen Kollaboration -zwischen mindestens zwei Personen an einem virtuellen Abbild eines Modular-Synthesizers. -Damit einher gehen die Erkenntnisse, welche während der Konzeption und Entwicklung -dieses konkreten Systems entstanden sind. Diese Erkenntnisse haben daher den Mehrwert, -dass sie im Rahmen einer real stattgefundenen, praktischen Umsetzung entstanden sind -und daher nicht (nur) auf Basis von theoretischer Forschung bestehen. - -Lösungsansätze, stattgefundene Abwägungen und Hürden auf dem Weg zu dem fertigen System -werden dabei anhand der Masterthesis dokumentiert und kritisch eingeordnet. diff --git a/_works/2024-brock-sebastian/04-results/images/metadata.json b/_works/2024-brock-sebastian/04-results/images/metadata.json deleted file mode 100644 index e42ff24..0000000 --- a/_works/2024-brock-sebastian/04-results/images/metadata.json +++ /dev/null @@ -1,178 +0,0 @@ -[ - { - "src": "images/sbrock_10_Software-Hardware-1-s.webp", - "metadata": { - "Title": "Software-Hardware", - "Description": "Auf diesem Bild ist ein PO400 Modular-Synthesizer der Firma Teenage Engineering zu sehen. Neben dem Synthesizer ist eine Nachbildung der im Synthesizer vorhandenen Module im Web-System zu sehen. Alle Module bis auf das \"noise\" und \"random\" Modul sind dabei nachempfunden.", - "Rights": "© Sebastian Brock", - "ImageWidth": 1600, - "ImageHeight": 1060, - "Orientation": "landscape" - } - }, - { - "src": "images/sbrock_11_Software-Hardware-2-s.webp", - "metadata": { - "Title": "Software-Hardware 2", - "Description": "Dieses Bild zeigt die Oberfläche der Webanwendung, fotografiert durch die Patchkabel des realen Gegenstücks.", - "Rights": "© Sebastian Brock", - "ImageWidth": 1600, - "ImageHeight": 1060, - "Orientation": "landscape" - } - }, - { - "src": "images/sbrock_12_WebAudioAPI-Verbindung-s.webp", - "metadata": { - "Title": "WebAudioAPI-Verbindung", - "Description": "Dieses Bild zeigt den beispielhaften Signalweg von einem Oszillator über einen Filter zum Ausgang der Web Audio API anhand einer Grafik und zugehörigem Code.", - "Rights": "© Sebastian Brock", - "ImageWidth": 1600, - "ImageHeight": 900, - "Orientation": "landscape" - } - }, - { - "src": "images/sbrock_13_Kommunikationsarchitektur-s.webp", - "metadata": { - "Title": "Kommunikationsarchitektur", - "Description": "Dieses Bild bietet eine Übersicht über die Kommunikationsprinzipien von Komponenten innerhalb des Frontends der Anwendung über State-Speicher und Event-Bus.", - "Rights": "© Sebastian Brock", - "ImageWidth": 1600, - "ImageHeight": 1031, - "Orientation": "landscape" - } - }, - { - "src": "images/sbrock_14_WebsocketServer-inAction-s.webp", - "metadata": { - "Title": "WebsocketServer in Action", - "Description": "Dieses Bild zeigt die Konsolenausgabe des Websocketservers, nachdem eine kollaborative Session gestartet und beendet wurde.", - "Rights": "© Sebastian Brock", - "ImageWidth": 1600, - "ImageHeight": 1060, - "Orientation": "landscape" - } - }, - { - "src": "images/sbrock_15_AudioKontext-Initialisierung-s.webp", - "metadata": { - "Title": "Audiokontext Initialisierung", - "Description": "Das Bild zeigt den Codeausschnitt der Anwendung, welcher den Haupt-Audiokontext des Frontends erstellt.", - "Rights": "© Sebastian Brock", - "ImageWidth": 1600, - "ImageHeight": 1060, - "Orientation": "landscape" - } - }, - { - "src": "images/sbrock_16_MIDI-Tabelle-s.webp", - "metadata": { - "Title": "MIDI Tabelle", - "Description": "Dieses Bild zeigt Code, welcher einen eingehenden MIDI-Code in die entsprechende Frequenzangabe für diese Note übersetzt und zurückgibt.", - "Rights": "© Sebastian Brock", - "ImageWidth": 1600, - "ImageHeight": 1060, - "Orientation": "landscape" - } - }, - { - "src": "images/sbrock_1_Entwicklungsumgebung-s.webp", - "metadata": { - "Title": "Entwicklungsumgebung", - "Description": "Dieses Bild zeigt das Setup für die Entwicklung von Features für die Kollaborative Arbeit im System.", - "Rights": "© Sebastian Brock", - "ImageWidth": 1060, - "ImageHeight": 1600, - "Orientation": "portrait" - } - }, - { - "src": "images/sbrock_2_Kollaboration-s.webp", - "metadata": { - "Title": "Kollaboration", - "Description": "Auf diesem Bild ist ein Ausschnitt eines Patches zu sehen, auf welchem der Mauszeiger eines Kollaborationspartners einen Regler des Mixer-Moduls bearbeitet.", - "Rights": "© Sebastian Brock", - "ImageWidth": 1600, - "ImageHeight": 1060, - "Orientation": "landscape" - } - }, - { - "src": "images/sbrock_3_Performance-Aufnahme-s.webp", - "metadata": { - "Title": "Performance-Aufnahme", - "Description": "Dieses Bild zeigt die Umgebung, in der Videos von Performances anhand der Software aufgenommen wurden. In der Software OBS laufen das Kamerabild und die Bildschirmaufnahme in ein Video zusammen.", - "Rights": "© Sebastian Brock", - "ImageWidth": 1600, - "ImageHeight": 1060, - "Orientation": "landscape" - } - }, - { - "src": "images/sbrock_4_MIDI-Modul-s.webp", - "metadata": { - "Title": "MIDI-Modul", - "Description": "Dieses Bild zeigt ein virtuelles MIDI-Modul, welches durch ein via USB angeschlossenes Keyboard Daten entgegen nimmt und einem Oszillator-Modul eine Frequenz übergibt.", - "Rights": "© Sebastian Brock", - "ImageWidth": 1600, - "ImageHeight": 1060, - "Orientation": "landscape" - } - }, - { - "src": "images/sbrock_5_Beitrittsanfrage-s.webp", - "metadata": { - "Title": "Beitrittsanfrage", - "Description": "Das Bild zeigt die Beitrittsanfrage eines Kollaborateurs zu einer bestehenden Session. In einem Fenster erhält der Nutzer die Option, den neuen Nutzer anzunehmen oder abzulehnen.", - "Rights": "© Sebastian Brock", - "ImageWidth": 1600, - "ImageHeight": 1060, - "Orientation": "landscape" - } - }, - { - "src": "images/sbrock_6_Datentransfer-s.webp", - "metadata": { - "Title": "Datentransfer", - "Description": "Auf dieser Übersicht wird der Signalweg einer einzelnen Änderung, ausgehend von der Arbeitsfläche des Nutzers 1 beispielhaft dargestellt.", - "Rights": "© Sebastian Brock", - "ImageWidth": 1600, - "ImageHeight": 870, - "Orientation": "landscape" - } - }, - { - "src": "images/sbrock_7_Latenz-Test-s.webp", - "metadata": { - "Title": "Latenz-Test", - "Description": "Dieses Bild zeigt zwei Instanzen der Software nebeneinander. Die Entwicklertools des Browsers geben Auskunft über die Latenz zwischen Senden und Empfang von Websocket-Nachrichten.", - "Rights": "© Sebastian Brock", - "ImageWidth": 1600, - "ImageHeight": 883, - "Orientation": "landscape" - } - }, - { - "src": "images/sbrock_8_Performance-s.webp", - "metadata": { - "Title": "Performance", - "Description": "Dieses Bild zeigt einen Ausschnitt aus einem der Performance-Videos, welche in der Readme-Datei des GitHub Repos verlinkt sind. Der konfigurierte Patch spielt zwei Melodien über Sequencer und erlaubt die Steuerung eines Oszillators über das MIDI-Keyboard, welches im Ausschnitt unten rechts zu sehen ist.", - "Rights": "© Sebastian Brock", - "ImageWidth": 1600, - "ImageHeight": 950, - "Orientation": "landscape" - } - }, - { - "src": "images/sbrock_9_Modulübersicht-s.webp", - "metadata": { - "Title": "Modulübersicht", - "Description": "Dieses Bild zeigt die Modul-Leiste des Frontends. Es sind alle im System verfügbaren Module aufgelistet. Außerdem wird in der Navigationsleiste angezeigt, dass das System gerade Teil einer kollaborativen Session ist.", - "Rights": "© Sebastian Brock", - "ImageWidth": 1060, - "ImageHeight": 1600, - "Orientation": "portrait" - } - } -] \ No newline at end of file diff --git a/_works/2024-brock-sebastian/04-results/images/sbrock_10_Software-Hardware-1-s.webp b/_works/2024-brock-sebastian/04-results/images/sbrock_10_Software-Hardware-1-s.webp deleted file mode 100644 index 4f2c7cf..0000000 Binary files a/_works/2024-brock-sebastian/04-results/images/sbrock_10_Software-Hardware-1-s.webp and /dev/null differ diff --git a/_works/2024-brock-sebastian/04-results/images/sbrock_11_Software-Hardware-2-s.webp b/_works/2024-brock-sebastian/04-results/images/sbrock_11_Software-Hardware-2-s.webp deleted file mode 100644 index 35e0cb4..0000000 Binary files a/_works/2024-brock-sebastian/04-results/images/sbrock_11_Software-Hardware-2-s.webp and /dev/null differ diff --git a/_works/2024-brock-sebastian/04-results/images/sbrock_12_WebAudioAPI-Verbindung-s.webp b/_works/2024-brock-sebastian/04-results/images/sbrock_12_WebAudioAPI-Verbindung-s.webp deleted file mode 100644 index 7d49d90..0000000 Binary files a/_works/2024-brock-sebastian/04-results/images/sbrock_12_WebAudioAPI-Verbindung-s.webp and /dev/null differ diff --git a/_works/2024-brock-sebastian/04-results/images/sbrock_13_Kommunikationsarchitektur-s.webp b/_works/2024-brock-sebastian/04-results/images/sbrock_13_Kommunikationsarchitektur-s.webp deleted file mode 100644 index ad24a7f..0000000 Binary files a/_works/2024-brock-sebastian/04-results/images/sbrock_13_Kommunikationsarchitektur-s.webp and /dev/null differ diff --git a/_works/2024-brock-sebastian/04-results/images/sbrock_14_WebsocketServer-inAction-s.webp b/_works/2024-brock-sebastian/04-results/images/sbrock_14_WebsocketServer-inAction-s.webp deleted file mode 100644 index b0437f3..0000000 Binary files a/_works/2024-brock-sebastian/04-results/images/sbrock_14_WebsocketServer-inAction-s.webp and /dev/null differ diff --git a/_works/2024-brock-sebastian/04-results/images/sbrock_15_AudioKontext-Initialisierung-s.webp b/_works/2024-brock-sebastian/04-results/images/sbrock_15_AudioKontext-Initialisierung-s.webp deleted file mode 100644 index 783785a..0000000 Binary files a/_works/2024-brock-sebastian/04-results/images/sbrock_15_AudioKontext-Initialisierung-s.webp and /dev/null differ diff --git a/_works/2024-brock-sebastian/04-results/images/sbrock_16_MIDI-Tabelle-s.webp b/_works/2024-brock-sebastian/04-results/images/sbrock_16_MIDI-Tabelle-s.webp deleted file mode 100644 index 7551388..0000000 Binary files a/_works/2024-brock-sebastian/04-results/images/sbrock_16_MIDI-Tabelle-s.webp and /dev/null differ diff --git a/_works/2024-brock-sebastian/04-results/images/sbrock_1_Entwicklungsumgebung-s.webp b/_works/2024-brock-sebastian/04-results/images/sbrock_1_Entwicklungsumgebung-s.webp deleted file mode 100644 index 8914904..0000000 Binary files a/_works/2024-brock-sebastian/04-results/images/sbrock_1_Entwicklungsumgebung-s.webp and /dev/null differ diff --git a/_works/2024-brock-sebastian/04-results/images/sbrock_2_Kollaboration-s.webp b/_works/2024-brock-sebastian/04-results/images/sbrock_2_Kollaboration-s.webp deleted file mode 100644 index 88e16cb..0000000 Binary files a/_works/2024-brock-sebastian/04-results/images/sbrock_2_Kollaboration-s.webp and /dev/null differ diff --git a/_works/2024-brock-sebastian/04-results/images/sbrock_3_Performance-Aufnahme-s.webp b/_works/2024-brock-sebastian/04-results/images/sbrock_3_Performance-Aufnahme-s.webp deleted file mode 100644 index acdfcf9..0000000 Binary files a/_works/2024-brock-sebastian/04-results/images/sbrock_3_Performance-Aufnahme-s.webp and /dev/null differ diff --git a/_works/2024-brock-sebastian/04-results/images/sbrock_4_MIDI-Modul-s.webp b/_works/2024-brock-sebastian/04-results/images/sbrock_4_MIDI-Modul-s.webp deleted file mode 100644 index 6831c9f..0000000 Binary files a/_works/2024-brock-sebastian/04-results/images/sbrock_4_MIDI-Modul-s.webp and /dev/null differ diff --git a/_works/2024-brock-sebastian/04-results/images/sbrock_5_Beitrittsanfrage-s.webp b/_works/2024-brock-sebastian/04-results/images/sbrock_5_Beitrittsanfrage-s.webp deleted file mode 100644 index bcb998b..0000000 Binary files a/_works/2024-brock-sebastian/04-results/images/sbrock_5_Beitrittsanfrage-s.webp and /dev/null differ diff --git a/_works/2024-brock-sebastian/04-results/images/sbrock_6_Datentransfer-s.webp b/_works/2024-brock-sebastian/04-results/images/sbrock_6_Datentransfer-s.webp deleted file mode 100644 index fdc0d1f..0000000 Binary files a/_works/2024-brock-sebastian/04-results/images/sbrock_6_Datentransfer-s.webp and /dev/null differ diff --git a/_works/2024-brock-sebastian/04-results/images/sbrock_7_Latenz-Test-s.webp b/_works/2024-brock-sebastian/04-results/images/sbrock_7_Latenz-Test-s.webp deleted file mode 100644 index 60250ad..0000000 Binary files a/_works/2024-brock-sebastian/04-results/images/sbrock_7_Latenz-Test-s.webp and /dev/null differ diff --git a/_works/2024-brock-sebastian/04-results/images/sbrock_8_Performance-s.webp b/_works/2024-brock-sebastian/04-results/images/sbrock_8_Performance-s.webp deleted file mode 100644 index f5c91a7..0000000 Binary files a/_works/2024-brock-sebastian/04-results/images/sbrock_8_Performance-s.webp and /dev/null differ diff --git "a/_works/2024-brock-sebastian/04-results/images/sbrock_9_Modul\303\274bersicht-s.webp" "b/_works/2024-brock-sebastian/04-results/images/sbrock_9_Modul\303\274bersicht-s.webp" deleted file mode 100644 index 03f9ac0..0000000 Binary files "a/_works/2024-brock-sebastian/04-results/images/sbrock_9_Modul\303\274bersicht-s.webp" and /dev/null differ diff --git a/_works/2024-brock-sebastian/notes/concept_map.jpg b/_works/2024-brock-sebastian/notes/concept_map.jpg deleted file mode 100644 index 67b4c30..0000000 Binary files a/_works/2024-brock-sebastian/notes/concept_map.jpg and /dev/null differ diff --git a/_works/2024-brock-sebastian/notes/first_notes.jpg b/_works/2024-brock-sebastian/notes/first_notes.jpg deleted file mode 100644 index f0d48b2..0000000 Binary files a/_works/2024-brock-sebastian/notes/first_notes.jpg and /dev/null differ diff --git a/_works/2024-fuhrmann-lisa/01-resarch-area-analysis/Cluster-Barrierefreiheit.pdf b/_works/2024-fuhrmann-lisa/01-resarch-area-analysis/Cluster-Barrierefreiheit.pdf deleted file mode 100644 index 00ea6a5..0000000 Binary files a/_works/2024-fuhrmann-lisa/01-resarch-area-analysis/Cluster-Barrierefreiheit.pdf and /dev/null differ diff --git a/_works/2024-fuhrmann-lisa/01-resarch-area-analysis/README.md b/_works/2024-fuhrmann-lisa/01-resarch-area-analysis/README.md deleted file mode 100644 index 8311bbc..0000000 --- a/_works/2024-fuhrmann-lisa/01-resarch-area-analysis/README.md +++ /dev/null @@ -1,3 +0,0 @@ -# Themenfeldanalyse - -Bitte legen Sie Ihre Concept Map zur Themenfeldanalyse hier als PDF ab. Die Datei sollte nicht größer als 2 Mbyte sein. \ No newline at end of file diff --git a/_works/2024-fuhrmann-lisa/01-resarch-area-analysis/Themenfeldanalyse-Alternative-Steuerungsmethoden.pdf b/_works/2024-fuhrmann-lisa/01-resarch-area-analysis/Themenfeldanalyse-Alternative-Steuerungsmethoden.pdf deleted file mode 100644 index 34198e0..0000000 Binary files a/_works/2024-fuhrmann-lisa/01-resarch-area-analysis/Themenfeldanalyse-Alternative-Steuerungsmethoden.pdf and /dev/null differ diff --git a/_works/2024-fuhrmann-lisa/02-titles-and-research-questions.md b/_works/2024-fuhrmann-lisa/02-titles-and-research-questions.md deleted file mode 100644 index df6f39c..0000000 --- a/_works/2024-fuhrmann-lisa/02-titles-and-research-questions.md +++ /dev/null @@ -1,33 +0,0 @@ -# Titel und Forschungsfrage - -Bitte notieren Sie mindestens 10 mögliche Titel der Arbeit und mindestens 5 mögliche Forschungsfragen/ Zielsetzungen in dieses Dokument. - -## Mögliche Titel - -1. Alternative Techniken und Methoden zur barrierefreien Website-Navigation und Steuerung -2. Barrierefreie Websites: Alternative Techniken und Methoden zur Navigation und Steuerung -3. Techniken und Methoden zur alternativen Navigation und Steuerung für barrierefreie Websites -4. Alternative Ansätze zur Steuerung und Navigation für barrierefreie Websites -5. Innovative Techniken und Methoden für die barrierefreie Navigation und Steuerung von Websites -6. Barrierefreie Navigation und Steuerung: Neue Methoden und Techniken für das Web -7. Zukunftsfähige Techniken und Methoden zur barrierefreien Steuerung von Websites -8. Innovative Steuerungs- und Navigationstechniken für barrierefreie Webdesigns -9. Alternativen zur traditionellen Website-Navigation: Barrierefreie Techniken und Methoden -10. Techniken und Methoden für die barrierefreie Interaktion auf modernen Websites - -## Mögliche Forschungsfragen/ Zielsetzungen - -**Untersuchung existierender alternativer Eingabemethoden zur Förderung der Barrierefreiheit:** -Die Arbeit widmet sich der Untersuchung bereits existierender alternativer Eingabemethoden wie Sprach- und Gestensteuerung mit dem Ziel, deren Anwendbarkeit zur Verbesserung der Barrierefreiheit von Websites für Menschen mit motorischen Einschränkungen zu evaluieren. Durch eine systematische Analyse bestehender Technologien, einschlägiger Literatur und bereits durchgeführter Benutzerstudien sollen Erkenntnisse über die bereits vorhandenen Lösungsansätze und deren Implementierbarkeit gewonnen werden. Die Arbeit strebt an, auf dieser Grundlage geeignete Ansätze für die Weiterentwicklung und Implementierung zu identifizieren. - -**Untersuchung der Effektivität alternativer Steuerungs- und Navigationstechniken zur Verbesserung der Barrierefreiheit:** -Die Arbeit konzentriert sich auf die Analyse und Bewertung bestehender Steuerungs- und Navigationstechniken wie Sprach- und Gestensteuerung. Ziel ist es, deren Effektivität zur Unterstützung der Barrierefreiheit von Websites für Menschen mit motorischen Einschränkungen zu beurteilen. Durch eine detaillierte Untersuchung der praktischen Anwendbarkeit und Benutzerfreundlichkeit dieser Techniken sollen die am besten geeigneten Ansätze zur Verbesserung der Barrierefreiheit identifiziert werden. - -**Integration innovativer Eingabemethoden zur Optimierung der Barrierefreiheit in Webanwendungen:** -Die Arbeit zielt darauf ab, innovative Eingabemethoden wie Augen- und Gedankensteuerung in bestehende Webanwendungen zu integrieren, um die Barrierefreiheit zu verbessern. Es wird untersucht, wie diese Technologien effektiv eingesetzt werden können, um Menschen mit motorischen Einschränkungen einen barrierefreien Zugang zu digitalen Inhalten zu ermöglichen. Dabei werden sowohl technische Herausforderungen als auch praktische Implementierungsstrategien beleuchtet. - -**Analyse der Potenziale und Herausforderungen alternativer Steuerungstechniken für die barrierefreie Webnutzung:** -Ziel dieser Arbeit ist es, die Potenziale und Herausforderungen alternativer Steuerungstechniken wie Sprach- und Gestensteuerung für die barrierefreie Nutzung von Websites zu untersuchen. Durch eine systematische Analyse der Technologie, Nutzererfahrungen und bestehenden Implementierungen sollen Hindernisse identifiziert und Lösungen entwickelt werden, die die Barrierefreiheit verbessern und eine inklusivere Nutzung ermöglichen. - -**Auswirkungen unterschiedlicher alternativer Eingabemethoden auf die Benutzerfreundlichkeit und Zugänglichkeit von Websites:** -Die Arbeit untersucht, wie verschiedene alternative Eingabemethoden die Benutzerfreundlichkeit und Zugänglichkeit von Websites für Menschen mit unterschiedlichen Behinderungen beeinflussen. Ziel ist es, umfassende Erkenntnisse über die Vor- und Nachteile dieser Methoden zu gewinnen und Empfehlungen zur Anpassung von Websites zu entwickeln, um eine optimale Zugänglichkeit für eine diverse Nutzergruppe zu gewährleisten. diff --git a/_works/2024-fuhrmann-lisa/03-expose.md b/_works/2024-fuhrmann-lisa/03-expose.md deleted file mode 100644 index cd1e7c5..0000000 --- a/_works/2024-fuhrmann-lisa/03-expose.md +++ /dev/null @@ -1,112 +0,0 @@ -# Exposé: Alternative Techniken und Methoden zur barrierefreien Website-Navigation und Steuerung - -## Problemfeld & Kontext - -Die digitale Welt bietet immer weiter wachsende Möglichkeiten für Kommunikation, Information und Austausch. Jedoch sind viele Websites für Menschen mit verschiedenen Einschränkungen schwer zugänglich. Das führt zu einem erheblichen Ausschluss dieser Nutzer aus dem digitalen Raum. - -### Kontext - -Die Web Accessibility Initiative (WAI) und die Web Content Accessibility Guidelines (WCAG) setzen Standards für die Barrierefreiheit, die aktuell jedoch oft unzureichend umgesetzt werden. Trotz technischer Fortschritte in der Webentwicklung bleiben viele Websites aufgrund fehlender alternativer Steuerungsmethoden unzugänglich. Wichtige Aspekte hierbei sind - -- **Technologische Defizite:** Viele Websites unterstützen keine oder nur unzureichende alternative Eingabemethoden wie Sprach- und Gestensteuerung. -- **Soziale Relevanz:** Barrierefreiheit im Web ist ein zentrales Thema, um die digitale Teilhabe für alle sicherzustellen. -- **Gesetzliche Anforderungen:** - Gesetze wie der European Accessibility Act fordern barrierefreie digitale Angebote, was die Dringlichkeit der Problematik unterstreicht. - -## Ziel - -Das Hauptziel der Arbeit ist es, existierende alternative Eingabemethoden zu evaluieren und deren Anwendbarkeit zur Verbesserung der Barrierefreiheit von Websites zu untersuchen. Hierbei soll ein besonderer Fokus auf Menschen mit motorischen Einschränkungen gelegt werden, um deren Zugang zu digitalen Inhalten zu erleichtern. - -- **Verbesserung der Zugänglichkeit:** Durch die Integration alternativer Steuerungsmethoden soll die Bedienbarkeit von Websites für Menschen mit Beeinträchtigungen signifikant verbessert werden. -- **Förderung der Inklusion:** Langfristig sollen diese Techniken zu einer umfassenderen digitalen Teilhabe beitragen. -- **Identifikation von Weiterentwicklungsansätzen:** - Basierend auf der Analyse sollen Ansätze zur Weiterentwicklung und Implementierung geeigneter Technologien identifiziert werden. - -## Aufgabenstellung - -Die Arbeit umfasst folgende konkrete Aufgaben: - -1. Evaluierung bestehender Technologien: - - Untersuchung von Sprach- und Gestensteuerung in aktuellen Webanwendungen - - Analyse der Benutzerfreundlichkeit und Barrierefreiheit -2. Vergleich der Eingabemethoden: - - Vergleich der Vor- und Nachteile verschiedener Steuerungsmethode - - Bewertung der technischen Machbarkeit und Benutzerakzeptanz -3. Entwicklung von Empfehlungen: - - Entwicklung von Empfehlungen für die Integration dieser Methoden in Webanwendungen - - Identifikation von Best Practices und Optimierungspotenzial - -## Lösungsansätze - -### Ansatz 1: Analyse und Vergleich bestehender Methoden - -Systematische Analyse bestehender Eingabemethoden anhand von Kriterien wie Benutzerfreundlichkeit, technische Machbarkeit und Barrierefreiheit. - -### Ansatz 2: Prototyping und Benutzerstudien - -Entwicklung von Prototypen, die alternative Steuerungsmethoden integrieren, und Durchführung von Benutzerstudien zur Evaluierung der Usability und Akzeptanz. - -### Ansatz 3: Zusammenarbeit mit Expertengruppen - -Kooperation mit Experten für Barrierefreiheit und betroffenen Nutzergruppen zur Identifikation der wichtigsten Anforderungen und zur Evaluation der entwickelten Lösungen. - -## Chancen & Risiken - -### Chancen - -Die Untersuchung und Implementierung alternativer Techniken und Methoden zur Steuerung und Navigation bietet mehrere Chancen. Eine signifikante Verbesserung der digitalen Teilhabe kann erreicht werden, indem die Zugänglichkeit und Nutzerfreundlichkeit von Websites für Menschen mit Einschränkungen erhöht wird. Durch die Integration dieser alternativen Eingabemethoden kann die Inklusion gefördert werden, was langfristig zu einer breiteren und gerechteren digitalen Partizipation führt. - -Darüber hinaus bietet die Arbeit eine Plattform für Innovationen. Sie trägt zur Weiterentwicklung und Implementierung neuer Technologien bei, die das Potenzial haben, die Barrierefreiheit nachhaltig zu verbessern. Zudem unterstützt die Arbeit die Einhaltung gesetzlicher Anforderungen zur Barrierefreiheit, wie sie durch den European Accessibility Act vorgeschrieben sind. Dies trägt nicht nur zur rechtlichen Konformität bei, sondern erhöht auch das Bewusstsein für die Notwendigkeit von barrierefreien digitalen Angeboten. - -### Risiken - -Die Integration neuer Steuerungsmethoden in bestehende Systeme bringt jedoch auch technische Herausforderungen mit sich. Die Implementierung kann komplex und zeitaufwändig sein und erfordert möglicherweise umfangreiche Anpassungen an bestehenden Websites und Plattformen. Es besteht auch das Risiko, dass die neuen Methoden von den Nutzern nicht akzeptiert werden, insbesondere wenn sie ungewohnt oder schwer zu erlernen sind. - -Ein weiteres Risiko sind die hohen Kosten, die mit der Entwicklung und Implementierung neuer Technologien verbunden sind. Diese können für viele Organisationen eine erhebliche finanzielle Belastung darstellen. Es ist daher wichtig, die Kosten und den Nutzen sorgfältig abzuwägen und effiziente, kostengünstige Lösungen zu finden. - -## Ressourcen - -Für die Durchführung der Arbeit werden verschiedene Ressourcen benötigt. Aktuelle Fachliteratur und wissenschaftliche Artikel zu alternativen Eingabemethoden und Web-Barrierefreiheit bilden die Grundlage für die theoretische Auseinandersetzung und die Analyse bestehender Technologien. - -Technologisch stehen Open-Source-Tools und APIs zur Implementierung von Sprach- und Gestensteuerung zur Verfügung. Diese Werkzeuge ermöglichen es, Prototypen zu entwickeln und alternative Steuerungsmethoden zu testen. Zugriff auf Dokumentierte Zusammenarbeiten mit Organisationen wie dem W3C und Fachverbänden für Barrierefreiheit bieten die Möglichkeit, Feedback zu erörtern und sicherzustellen, dass die entwickelten Lösungen den aktuellen Standards und Best Practices entsprechen. - -## Motivation - -Meine Motivation, mich mit diesem Thema auseinanderzusetzen, liegt in meinem Interesse für inklusives Design und der Überzeugung, dass digitale Inhalte für alle Menschen zugänglich sein sollten. Barrierefreiheit ist ein wichtiger Schritt zur Schaffung einer gerechteren und inklusiveren digitalen Welt. Als Medieninformatiker habe ich die Möglichkeit, durch mein technisches Wissen und meine Kreativität innovative Lösungen zu entwickeln, die Menschen mit Beeinträchtigungen helfen, besser an der digitalen Welt teilzuhaben. - -Außerden sehe ich in der Entwicklung barrierefreier Technologien nicht nur eine technische, sondern auch eine soziale Verantwortung, der ich gerne nachkomme. - -## Setup, Abhängigkeiten & Meilensteine - -### Arbeitsumgebung - -Die Arbeitsumgebung für dieses Projekt wird hauptsächlich durch ein gut ausgestattetes Home-Office definiert. Es stehen ein leistungsfähiger Computer sowie Standard-Hardware wie Mikrofone und Webcams zur Verfügung, um alternative Eingabemethoden wie Sprach- und Gestensteuerung zu entwickeln und zu testen. - -Für die Entwicklung und Prototyping-Arbeiten werden frei verfügbare Software-Tools eingesetzt, darunter Entwicklungsumgebungen wie Visual Studio Code und Design-Tools wie Figma. Diese Tools ermöglichen die Erstellung von benutzerfreundlichen und barrierefreien Webanwendungen. Ergänzend werden Test-Tools wie WebAIM WAVE genutzt, um die Barrierefreiheit der entwickelten Lösungen zu überprüfen. - -### Technische Ausstattung - -Die technische Ausstattung umfasst: - -- Hardware: Notwendige Geräte wie Computer, Testgeräte für alternative Eingabemethoden (z.B. Sprach- und Gestensteuerungstools). -- Software: Entwicklungs- und Design-Tools sowie Software für Usability-Tests und Barrierefreiheitsprüfungen. - -### Arbeitsmethoden - -Das Projekt wird durch eine klare und strukturierte Planung in einzelne Aufgaben unterteilt, die in eigenständiger Arbeit durchgeführt werden. Die Nutzung von To-Do-Listen und Projektmanagement-Tools hilft dabei, den Fortschritt zu überwachen und die Aufgaben systematisch abzuarbeiten. - -Die Dokumentation der Fortschritte erfolgt kontinuierlich durch das Führen von Research Diarys und Fortschritts-Uploads. Die Kommunikation mit Betreuern erfolgt über Github oder Online-Meetings. Diese flexible und selbstorganisierte Arbeitsweise ermöglicht es, sich effizient auf die wesentlichen Aufgaben zu konzentrieren. - -### Meilensteine - -Die Arbeit ist in mehrere Phasen unterteilt, um sicherzustellen, dass alle Aufgaben strukturiert und effizient durchgeführt werden. - -- **Phase 1: Recherche und Analyse:** In dieser Phase wird eine umfassende Literaturrecherche durchgeführt und bestehende Technologien werden analysiert. Dies bildet die Grundlage für die weitere Arbeit und hilft, ein tiefes Verständnis der aktuellen Techniken und Methoden zu entwickeln. -- **Phase 2: Entwicklung von Prototypen:** Basierend auf den Erkenntnissen aus der ersten Phase werden erste Prototypen entwickelt, die alternative Eingabemethoden integrieren. Diese Prototypen werden getestet, um ihre Anwendbarkeit und Benutzerfreundlichkeit zu bewerten. -- **Phase 3: Evaluation und Optimierung:** Die abschließende Phase beinhaltet eine technische Evaluation der entwickelten Prototypen. Diese Evaluation wird anhand vordefinierter Kriterien wie Benutzerfreundlichkeit, technische Leistungsfähigkeit und Barrierefreiheit durchgeführt. Basierend auf dieser Analyse werden Verbesserungen vorgenommen, um die Prototypen zu optimieren und die Ergebnisse in Form von detaillierten Empfehlungen und Best Practices zu dokumentieren. - -## Arbeitsergebnis - -Am Ende der Arbeit steht eine detaillierte Analyse und Evaluierung alternativer Eingabemethoden sowie konkrete Empfehlungen für deren Implementierung zur Verbesserung der Barrierefreiheit von Websites. Diese Ergebnisse sollen Entwicklern und Designern helfen, barrierefreie Webanwendungen zu erstellen und die digitale Teilhabe für Menschen mit motorischen Einschränkungen zu fördern. - -Die Arbeit wird zeigen, wie alternative Steuerungsmethoden effektiv in Websites integriert werden können, um die Barrierefreiheit zu verbessern. Die erarbeiteten Empfehlungen werden als Leitfaden dienen, um die Integration solcher Technologien in zukünftige Webentwicklungen zu unterstützen und eine umfassendere digitale Teilhabe zu ermöglichen. diff --git a/_works/2024-fuhrmann-lisa/04-results/Praxisprojekt_Arbeit_SoSe_24_Lisa_Fuhrmann.pdf b/_works/2024-fuhrmann-lisa/04-results/Praxisprojekt_Arbeit_SoSe_24_Lisa_Fuhrmann.pdf deleted file mode 100644 index c8de7ec..0000000 Binary files a/_works/2024-fuhrmann-lisa/04-results/Praxisprojekt_Arbeit_SoSe_24_Lisa_Fuhrmann.pdf and /dev/null differ diff --git a/_works/2024-fuhrmann-lisa/04-results/README.md b/_works/2024-fuhrmann-lisa/04-results/README.md deleted file mode 100644 index 42684e4..0000000 --- a/_works/2024-fuhrmann-lisa/04-results/README.md +++ /dev/null @@ -1,5 +0,0 @@ -# Ergebnisse - - -Bitte legen Sie Ihre Ergebnisse hier ab. Achten Sie bitte auf moderate Dateigrößen. Bitte legen Sie nur geschlossene Dokument, z.B. PDF statt \*.doc ab. - diff --git a/_works/2024-polarek-nils/01-resarch-area-analysis/README.md b/_works/2024-polarek-nils/01-resarch-area-analysis/README.md deleted file mode 100644 index 8311bbc..0000000 --- a/_works/2024-polarek-nils/01-resarch-area-analysis/README.md +++ /dev/null @@ -1,3 +0,0 @@ -# Themenfeldanalyse - -Bitte legen Sie Ihre Concept Map zur Themenfeldanalyse hier als PDF ab. Die Datei sollte nicht größer als 2 Mbyte sein. \ No newline at end of file diff --git a/_works/2024-polarek-nils/01-resarch-area-analysis/polarek-nils-ba-conceptmap-ss24.pdf b/_works/2024-polarek-nils/01-resarch-area-analysis/polarek-nils-ba-conceptmap-ss24.pdf deleted file mode 100644 index 671c696..0000000 Binary files a/_works/2024-polarek-nils/01-resarch-area-analysis/polarek-nils-ba-conceptmap-ss24.pdf and /dev/null differ diff --git a/_works/2024-polarek-nils/01-resarch-area-analysis/polarek-nils-ba-wordcloud-ss24.pdf b/_works/2024-polarek-nils/01-resarch-area-analysis/polarek-nils-ba-wordcloud-ss24.pdf deleted file mode 100644 index f7ca80f..0000000 Binary files a/_works/2024-polarek-nils/01-resarch-area-analysis/polarek-nils-ba-wordcloud-ss24.pdf and /dev/null differ diff --git a/_works/2024-polarek-nils/02-titles-and-possible-goals.md b/_works/2024-polarek-nils/02-titles-and-possible-goals.md deleted file mode 100644 index e5516a9..0000000 --- a/_works/2024-polarek-nils/02-titles-and-possible-goals.md +++ /dev/null @@ -1,42 +0,0 @@ -# Titel und Zielbilder - -## Initiale Titel -* State of Content Authenticity Initiative - Verfügbare Lösungen und Methoden zur Authentisierung von Inhalten im Web -* State of Content Authenticity Initiative - Recherche aktueller Methoden zur Authentisierung von Webinhalten im Kontext eines redaktionellen Workflows -* Authentizität in Zeiten von generativer KI - Recherche zu Methoden der Authentisierung von Webinhalten anhand eines redaktionellen Workflows -* Authentizität von Medien im Web - Analyse aktueller Möglichkeiten zur Authentisierung von Webinhalten im Kontext eines redaktionellen Workflows -* Integration von CAI/C2PA in redaktionelle Workflows - Recherche zu verfügbaren Lösungen und Methoden zur Erstellung authentischer Webinhalte -* Authentische Medien im Web - Eine Recherche zur Anwendbarkeit der Authentisierung von Medien mittels C2PA-Spezifikation im Kontext journalistischer Arbeitsabläufe -* Content Authenticity Initiative (CAI) in the real world - Untersuchung verfügbarer Lösungen und Methoden zur Authentisierung von Webinhalten in einzelnen Schritten eines redaktionellen Workflows -* Can I CAI? - Entwicklung einer Webapp zur Überprüfung von Veröffentlichungsprozessen auf lückenlose Kompatibilität mit der C2PA-Spezifikation -* Beweisbar authentische Inhalte in Zeiten von generativer KI - Aktuell verfügbare Methoden zum Beweis der Authentizität von Inhalten im Kontext eines redaktionellen Workflows -* CAI konforme Veröffentlichungsprozesse - Entwicklung einer Wissensdatenbank über verfügbare Lösungen und Methoden zur Authentisierung von Webinhalten im Kontext redaktioneller Workflows - -## Überarbeitete Titel -1. Can I CAI? - Entwicklung einer Webapp zur Überprüfung von Veröffentlichungsprozessen auf lückenlose Kompatibilität mit Spezifikationen der Content Authenticity Initiative -2. Can I CAI? - Entwicklung einer Webapp zur Überprüfung von Veröffentlichungsprozessen auf lückenlose Kompatibilität mit aufkommenden Standards der Content Authenticity Initiative zur Auszeichnung von authentischen Medien im Web -3. Can I CAI? - Entwicklung einer Webanwendung zur Verifizierung der Kompatibilität von digitalen Veröffentlichungsprozessen mit Spezifikationen der Content Authenticity Initiative -4. Can I CAI? - Eine Webapp zur Überprüfung von Prozessen zur Veröffentlichung von authentischen Medien im Web auf Kompatibilität mit Spezifikationen der Content Authenticity Initiative -5. Can I CAI? - Eine Webapp zur Überprüfung von redaktionellen Workflows auf eine lückenlose Kompatibilität mit Spezifikationen der Content Authenticity Initiative zur Auszeichnung von authentischen Medien im Web - -## Zielbilder - -### CAI Workflow checker -Eine Webapp, welche es ermöglicht, den eigenen (redaktionellen) Workflow einzugeben und welche aufzeigt, an welchen Stellen der Kette CAI/C2PA supported wird und welche Stellen die lückenlose Kette von Metadaten brechen würden. - * Anhand von zusammensetzbaren Workflow-Blocks (z.B. Kamera, DAM, Editorsoftware, CMS System, CLI-Tools, etc.) kann der Nutzer seinen Workflow zusammenstellen und erhält eine Übersicht, welche Schritte bereits CAI/C2PA unterstützen und welche nicht. Zudem enthält er Informationen zu möglichen Lösungen für die fehlenden Schritte/fehlerhaften Blocks. - * Blocks gehören Kategorien an, welche aufeinander folgen, um sinnvolle Workflows zu garantieren (Erstellung, Bearbeitung, Export, Publishing etc.). - * Möglicherweise illustration der Workflow-Blocks bzw. deren Verbindungen via Canvas API (auf Wissen aus PP aufbauen). - * Recherche von Workflows und Tools anhand von Gesprächen mit Journalisten, Redakteuren, Fotografen, Social Media Beauftragten, etc. als Basis für blocks, Kategorien und Tools. - -### ~~Case-Study Website~~ -Zusammentragen tatsächlichen redaktionellen Workflows(3), Recherche von Integration von CAI/C2PA in Tools dieser Workflows, Aufzeigen von Lücken und Lösungen. Case-Study Website, welche die Ergebnisse der Recherchen anhand der Workflows aufzeigt, um so Bewusstsein für die Lücken/Problematischen Stellen in der aktuellen Kette von Tools im Kontext von authentischen Medien im Web zu schaffen. - -### ~~Wissensdatenbank / Zusammentragen akuteller Stände~~ -Website, welche verfügbare Tools (und inkompatible, aber weitverbreitete Tools) und Lösungen zur Nutzung vo~ CAI/C2PA für einzelne Schritte eines journalistischen/redaktionellen Workflows durchsuchbar und schnell auffindbar macht. Zudem sollte die Website einen Anriss/Verständnis für Nutzer liefern, um den Need von authentischen Medien im Web aufzuzeigen. Zusätzlich ggf. blogartige Beiträge zu aktuellen Entwicklungen und Updates von CAI/C2PA anhand der Tools/Geräte in der Wissensdatenbank. - * Beispiel Kategorien: Aufnahme (Kamera), Verwaltung (DAM), Bearbeitung (Photoshop), Veröffentlichung (CMS, Image pipelines, Social Media) - * Beispiel Imagemagick CLI Tool: aktuell inkompatibel, aber weit verbreitet, Erklärung aktueller Stand und Link zu [github repo mit diskussion](https://github.com/ImageMagick/ImageMagick/discussions/6952) über mögliche Implementierung. - * Beispiel Leica M11p Kamera: voll kompatible, Startpunkt einer authentischen Kette von Metadaten. - * Beispiel Photoshop: kompatibel, aber in Beta Phase, explizites opt-in nötig, publish der content credentials in Adobe Cloud neben Metadaten in Bild möglich. - * Recherche von Workflows und Tools anhand von Gesprächen mit Journalisten, Redakteuren, Fotografen, Social Media Beauftragten, etc. als Basis für Datenbank. - - diff --git a/_works/2024-polarek-nils/04-results/README.md b/_works/2024-polarek-nils/04-results/README.md deleted file mode 100644 index 61632e4..0000000 --- a/_works/2024-polarek-nils/04-results/README.md +++ /dev/null @@ -1,11 +0,0 @@ -# Ergebnisse - -Bitte legen Sie Ihre Ergebnisse hier ab. Achten Sie bitte auf moderate Dateigrößen. Bitte legen Sie nur geschlossene Dokument, z.B. PDF statt *.doc ab. - -## Repository - -Das zugehörige Repository ist unter [https://github.com/n-pola/can-i-cai](https://github.com/n-pola/can-i-cai) zu finden. - -## Werk - -Die entstandene Webapp ist unter [https://www.can-i-cai.de/](https://www.can-i-cai.de/) zu finden. diff --git a/_works/2024-polarek-nils/04-results/polarek-nils-ba-ss24.pdf b/_works/2024-polarek-nils/04-results/polarek-nils-ba-ss24.pdf deleted file mode 100644 index f789662..0000000 Binary files a/_works/2024-polarek-nils/04-results/polarek-nils-ba-ss24.pdf and /dev/null differ diff --git a/_works/2024-strebinger-penner-pp/04-results/images/metadata.json b/_works/2024-strebinger-penner-pp/04-results/images/metadata.json deleted file mode 100644 index ede8478..0000000 --- a/_works/2024-strebinger-penner-pp/04-results/images/metadata.json +++ /dev/null @@ -1,123 +0,0 @@ -[ - { - "src": "images/photo-log-paul-strebinger-justin-penner-2024-03-12-09-s.webp", - "metadata": { - "Title": "Erste Value Map", - "Rights": "Paul Strebinger, Justin Penner", - "ImageWidth": 1600, - "ImageHeight": 685, - "Orientation": "landscape" - } - }, - { - "src": "images/photo-log-paul-strebinger-justin-penner-2024-04-11-01-s.webp", - "metadata": { - "Title": "Domänenmodell", - "Rights": "Paul Strebinger, Justin Penner", - "ImageWidth": 1600, - "ImageHeight": 1090, - "Orientation": "landscape" - } - }, - { - "src": "images/photo-log-paul-strebinger-justin-penner-2024-05-12-10-s.webp", - "metadata": { - "Title": "Finale Value Map", - "Rights": "Paul Strebinger, Justin Penner", - "ImageWidth": 1600, - "ImageHeight": 677, - "Orientation": "landscape" - } - }, - { - "src": "images/photo-log-paul-strebinger-justin-penner-2024-09-12-11-s.webp", - "metadata": { - "Title": "Nutzereinstellungen in der Erweiterung", - "Rights": "Paul Strebinger, Justin Penner", - "ImageWidth": 1600, - "ImageHeight": 763, - "Orientation": "landscape" - } - }, - { - "src": "images/photo-log-paul-strebinger-justin-penner-2024-09-12-12-s.webp", - "metadata": { - "Title": "Fertige Erweiterung", - "Rights": "Paul Strebinger, Justin Penner", - "ImageWidth": 1600, - "ImageHeight": 762, - "Orientation": "landscape" - } - }, - { - "src": "images/photo-log-paul-strebinger-justin-penner-2024-11-11-02-s.webp", - "metadata": { - "Title": "Concept Map", - "Description": "Dieses Bild zeigt die Domäne und wurde am Anfang des Projektes auf Basis des Domänenmodells erstellt.", - "Rights": "Paul Strebinger, Justin Penner", - "ImageWidth": 1440, - "ImageHeight": 1600, - "Orientation": "portrait" - } - }, - { - "src": "images/photo-log-paul-strebinger-justin-penner-2024-14-11-03-s.webp", - "metadata": { - "Title": "Erstes Mockup", - "Rights": "Paul Strebinger, Justin Penner", - "ImageWidth": 1056, - "ImageHeight": 1600, - "Orientation": "portrait" - } - }, - { - "src": "images/photo-log-paul-strebinger-justin-penner-2024-18-11-04-s.webp", - "metadata": { - "Title": "Kommunikation zwischen Erweiterung und API", - "Rights": "Paul Strebinger, Justin Penner", - "ImageWidth": 1600, - "ImageHeight": 512, - "Orientation": "landscape" - } - }, - { - "src": "images/photo-log-paul-strebinger-justin-penner-2024-18-11-05-s.webp", - "metadata": { - "Title": "Arbeitsweise Service Worker", - "Rights": "Paul Strebinger, Justin Penner", - "ImageWidth": 1600, - "ImageHeight": 1125, - "Orientation": "landscape" - } - }, - { - "src": "images/photo-log-paul-strebinger-justin-penner-2024-19-11-06-s.webp", - "metadata": { - "Title": "Erstes Design Konzept", - "Rights": "Paul Strebinger, Justin Penner", - "ImageWidth": 1037, - "ImageHeight": 1600, - "Orientation": "portrait" - } - }, - { - "src": "images/photo-log-paul-strebinger-justin-penner-2024-22-11-07-s.webp", - "metadata": { - "Title": "Broweserweiterung Zwischenstand", - "Rights": "Paul Strebinger, Justin Penner", - "ImageWidth": 1600, - "ImageHeight": 900, - "Orientation": "landscape" - } - }, - { - "src": "images/photo-log-paul-strebinger-justin-penner-2024-26-11-08-s.webp", - "metadata": { - "Title": "Kommunikation zwischen Debugger und Erweiterung", - "Rights": "Paul Strebinger, Justin Penner", - "ImageWidth": 1600, - "ImageHeight": 660, - "Orientation": "landscape" - } - } -] \ No newline at end of file diff --git a/_works/2024-strebinger-penner-pp/04-results/images/photo-log-paul-strebinger-justin-penner-2024-03-12-09-s.webp b/_works/2024-strebinger-penner-pp/04-results/images/photo-log-paul-strebinger-justin-penner-2024-03-12-09-s.webp deleted file mode 100644 index 82f22fc..0000000 Binary files a/_works/2024-strebinger-penner-pp/04-results/images/photo-log-paul-strebinger-justin-penner-2024-03-12-09-s.webp and /dev/null differ diff --git a/_works/2024-strebinger-penner-pp/04-results/images/photo-log-paul-strebinger-justin-penner-2024-04-11-01-s.webp b/_works/2024-strebinger-penner-pp/04-results/images/photo-log-paul-strebinger-justin-penner-2024-04-11-01-s.webp deleted file mode 100644 index de5627a..0000000 Binary files a/_works/2024-strebinger-penner-pp/04-results/images/photo-log-paul-strebinger-justin-penner-2024-04-11-01-s.webp and /dev/null differ diff --git a/_works/2024-strebinger-penner-pp/04-results/images/photo-log-paul-strebinger-justin-penner-2024-05-12-10-s.webp b/_works/2024-strebinger-penner-pp/04-results/images/photo-log-paul-strebinger-justin-penner-2024-05-12-10-s.webp deleted file mode 100644 index 2c1d945..0000000 Binary files a/_works/2024-strebinger-penner-pp/04-results/images/photo-log-paul-strebinger-justin-penner-2024-05-12-10-s.webp and /dev/null differ diff --git a/_works/2024-strebinger-penner-pp/04-results/images/photo-log-paul-strebinger-justin-penner-2024-09-12-11-s.webp b/_works/2024-strebinger-penner-pp/04-results/images/photo-log-paul-strebinger-justin-penner-2024-09-12-11-s.webp deleted file mode 100644 index 5e9ffbc..0000000 Binary files a/_works/2024-strebinger-penner-pp/04-results/images/photo-log-paul-strebinger-justin-penner-2024-09-12-11-s.webp and /dev/null differ diff --git a/_works/2024-strebinger-penner-pp/04-results/images/photo-log-paul-strebinger-justin-penner-2024-09-12-12-s.webp b/_works/2024-strebinger-penner-pp/04-results/images/photo-log-paul-strebinger-justin-penner-2024-09-12-12-s.webp deleted file mode 100644 index ca93d70..0000000 Binary files a/_works/2024-strebinger-penner-pp/04-results/images/photo-log-paul-strebinger-justin-penner-2024-09-12-12-s.webp and /dev/null differ diff --git a/_works/2024-strebinger-penner-pp/04-results/images/photo-log-paul-strebinger-justin-penner-2024-11-11-02-s.webp b/_works/2024-strebinger-penner-pp/04-results/images/photo-log-paul-strebinger-justin-penner-2024-11-11-02-s.webp deleted file mode 100644 index 500f5e4..0000000 Binary files a/_works/2024-strebinger-penner-pp/04-results/images/photo-log-paul-strebinger-justin-penner-2024-11-11-02-s.webp and /dev/null differ diff --git a/_works/2024-strebinger-penner-pp/04-results/images/photo-log-paul-strebinger-justin-penner-2024-14-11-03-s.webp b/_works/2024-strebinger-penner-pp/04-results/images/photo-log-paul-strebinger-justin-penner-2024-14-11-03-s.webp deleted file mode 100644 index 2dbf3ed..0000000 Binary files a/_works/2024-strebinger-penner-pp/04-results/images/photo-log-paul-strebinger-justin-penner-2024-14-11-03-s.webp and /dev/null differ diff --git a/_works/2024-strebinger-penner-pp/04-results/images/photo-log-paul-strebinger-justin-penner-2024-18-11-04-s.webp b/_works/2024-strebinger-penner-pp/04-results/images/photo-log-paul-strebinger-justin-penner-2024-18-11-04-s.webp deleted file mode 100644 index 7019113..0000000 Binary files a/_works/2024-strebinger-penner-pp/04-results/images/photo-log-paul-strebinger-justin-penner-2024-18-11-04-s.webp and /dev/null differ diff --git a/_works/2024-strebinger-penner-pp/04-results/images/photo-log-paul-strebinger-justin-penner-2024-18-11-05-s.webp b/_works/2024-strebinger-penner-pp/04-results/images/photo-log-paul-strebinger-justin-penner-2024-18-11-05-s.webp deleted file mode 100644 index 2777979..0000000 Binary files a/_works/2024-strebinger-penner-pp/04-results/images/photo-log-paul-strebinger-justin-penner-2024-18-11-05-s.webp and /dev/null differ diff --git a/_works/2024-strebinger-penner-pp/04-results/images/photo-log-paul-strebinger-justin-penner-2024-19-11-06-s.webp b/_works/2024-strebinger-penner-pp/04-results/images/photo-log-paul-strebinger-justin-penner-2024-19-11-06-s.webp deleted file mode 100644 index 6d7ab09..0000000 Binary files a/_works/2024-strebinger-penner-pp/04-results/images/photo-log-paul-strebinger-justin-penner-2024-19-11-06-s.webp and /dev/null differ diff --git a/_works/2024-strebinger-penner-pp/04-results/images/photo-log-paul-strebinger-justin-penner-2024-22-11-07-s.webp b/_works/2024-strebinger-penner-pp/04-results/images/photo-log-paul-strebinger-justin-penner-2024-22-11-07-s.webp deleted file mode 100644 index 4e28eb1..0000000 Binary files a/_works/2024-strebinger-penner-pp/04-results/images/photo-log-paul-strebinger-justin-penner-2024-22-11-07-s.webp and /dev/null differ diff --git a/_works/2024-strebinger-penner-pp/04-results/images/photo-log-paul-strebinger-justin-penner-2024-26-11-08-s.webp b/_works/2024-strebinger-penner-pp/04-results/images/photo-log-paul-strebinger-justin-penner-2024-26-11-08-s.webp deleted file mode 100644 index 1667239..0000000 Binary files a/_works/2024-strebinger-penner-pp/04-results/images/photo-log-paul-strebinger-justin-penner-2024-26-11-08-s.webp and /dev/null differ diff --git a/_works/2024-zaitsev-anton/01-resarch-area-analysis/README.md b/_works/2024-zaitsev-anton/01-resarch-area-analysis/README.md deleted file mode 100644 index 8311bbc..0000000 --- a/_works/2024-zaitsev-anton/01-resarch-area-analysis/README.md +++ /dev/null @@ -1,3 +0,0 @@ -# Themenfeldanalyse - -Bitte legen Sie Ihre Concept Map zur Themenfeldanalyse hier als PDF ab. Die Datei sollte nicht größer als 2 Mbyte sein. \ No newline at end of file diff --git a/_works/2024-zaitsev-anton/01-resarch-area-analysis/zaitsev-concept-map.pdf b/_works/2024-zaitsev-anton/01-resarch-area-analysis/zaitsev-concept-map.pdf deleted file mode 100644 index 52297c8..0000000 Binary files a/_works/2024-zaitsev-anton/01-resarch-area-analysis/zaitsev-concept-map.pdf and /dev/null differ diff --git a/_works/2024-zaitsev-anton/01-resarch-area-analysis/zaitsev-wordcloud.png b/_works/2024-zaitsev-anton/01-resarch-area-analysis/zaitsev-wordcloud.png deleted file mode 100644 index 35c8d9a..0000000 Binary files a/_works/2024-zaitsev-anton/01-resarch-area-analysis/zaitsev-wordcloud.png and /dev/null differ diff --git a/_works/2024-zaitsev-anton/02-titles-and-research-questions.md b/_works/2024-zaitsev-anton/02-titles-and-research-questions.md deleted file mode 100644 index f05a4b6..0000000 --- a/_works/2024-zaitsev-anton/02-titles-and-research-questions.md +++ /dev/null @@ -1,32 +0,0 @@ -# Titel und Forschungsfrage - -## Titel - -**Konzeption und Entwicklung einer Webanwendung zur einfachen Integration und Verwaltung von Augmented Reality Inhalten, am Beispiel des Kooperationsprojektes “ARlebnispfade OBK”** - - -Optionen: -- Konzeption und Umsetzung einer Webanwendung zur Verwaltung von AR-Inhalten -- Content Management for the Augmented World: Entwicklung einer Webanwendung zur Verwaltung von AR-Inhalten -- Content Management für Augmented Reality Inhalte im Web -- Entwicklung einer Webanwendung zur Verwaltung von Augmented Reality-Inhalten -- Verwaltung von Augmented Reality Inhalten im Web -- Content Management für Augmented Reality Inhalte im Web -- Entwicklung eines AR-Content-Management-Systems für das Web -- Nutzerfreundliche Interfaces für die Verwaltung von Augmented Reality Inhalten im Web -- Entwicklung eines Backends für die Verwaltung von Augmented Reality Inhalten im Web - -## Forschungsfragen - -- **Welche Herausforderungen ergeben sich aus der Integration verschiedener AR-Inhalte für die redaktionelle Pflege und Verwaltung einer Webanwendung?** -- **Welche technischen Lösungen stehen zur Verfügung, um die Eingabe und Verwaltung von multimodalen Inhalten (Texte, Bilder, Audio, Video, 3D-Modelle und Geolocation-Daten) in der Webanwendung zu unterstützen?** -- **Wie können neue AR-Inhalte mit bestehenden Datenstrukturen (11ty) verknüpft werden, um eine nahtlose Integration in die Webanwendung zu gewährleisten?** - - -Optionen: -- Wie kann eine benutzerfreundliche Webanwendung konzipiert und umgesetzt werden, die Redakteuren die einfache Integration und Verwaltung von AR-Inhalten ermöglicht? -- Welche Anforderungen müssen bei der Gestaltung des User Interfaces berücksichtigt werden, um eine effiziente Verwaltung von AR-Inhalten durch nicht-technische Benutzer zu gewährleisten? -- Welche Content Management Systeme für die Verwaltung von AR-Inhalten stehen zur Verfügung und wie können sie in die Webanwendung integriert werden? -- Wie können die AR-Inhalte im Backend gespeichert und abgerufen werden, um sie in der Webanwendung anzuzeigen? -- Wie können automatisierte Mechanismen für die Validierung und Formatierung von AR-Inhalten implementiert werden, um sicherzustellen, dass die eingefügten Daten den technischen Anforderungen entsprechen? -- Wie können Schnittstellen geschaffen werden, um die Integration von AR-Inhalten mit anderen Plattformen und Anwendungen zu erleichtern? (Youtube, Twitter/X, Vimeo?, Anbieter von 3D-Modellen, ...) diff --git a/_works/2024-zaitsev-anton/03-expose.md b/_works/2024-zaitsev-anton/03-expose.md deleted file mode 100644 index 754e07d..0000000 --- a/_works/2024-zaitsev-anton/03-expose.md +++ /dev/null @@ -1,78 +0,0 @@ -# Exposé - -# _Titel_ - -## Problemfeld und Kontext - -Im Rahmen des Projektes "Historische Augmented Reality Tour 'ARlebnis OBK'" der VHS Oberberg wird entlang der [Straße der Arbeit][strasse-der-arbeit] in Wiehl und Wipperfürth ein innovatives Konzept zur digitalen Weiterbildung mittels Augmented Reality (AR) entwickelt. Ältere, nicht technikaffine Menschen und jüngere, technikaffine Menschen sowie Schulklassen werden gleichermaßen an neue Technologien herangeführt und erhalten gleichzeitig einen Zugang zur Geschichte und Kultur ihrer Region. Der Fokus des Projektes liegt somit auf der Förderung einer generationenübergreifenden, inklusiven und nachhaltigen Strategie der digitalen Bildung. -Die Anwendung wird von den Teilnehmern des Kooperationsprojektes an der TH Köln entwickelt. - -Wie AR im Web funktioniert und wie die Technologie genutzt werden kann, um AR-Inhalte in Webanwendungen zu integrieren, wurde bereits in einem vorangegangenen Praxisprojekt untersucht. - -Mögliche AR-Inhalte werden von den Teilnehmern des Kooperationsprojektes in Form von Texten, Bildern, Audio, Video, 3D-Modellen und Geolocation-Daten zur Verfügung gestellt. Diese werden derzeit manuell in den Entwicklungsprozess der Anwendung integriert. Die redaktionelle Verwaltung von AR-Inhalten im Web wurde daher nicht betrachtet. - -## Zielsetzung - -Ziel dieser Bachelorarbeit ist es, eine Möglichkeit zur vereinfachten redaktionellen Pflege von AR-Inhalten zu konzipieren und zu implementieren. Die Anwendung soll die Möglichkeit bieten, AR-Inhalte in Form von Texten, Bildern, Audio, Video, 3D-Modellen und Geolocation-Daten zu verwalten und in die bestehenden Datenstrukturen der Webanwendung "ARlebnis OBK" zu integrieren. - -## Aufgabenstellung - -Aus der zuvor beschriebenen Problemstellung, dem Kontext und dem Ziel der Bachelorarbeit lässt sich als konkrete Aufgabenstellung die Entwicklung einer Webanwendung zur Verwaltung von AR-Inhalten im Web definieren, in der Redakteure die Möglichkeit haben, AR-Inhalte in Form von Texten, Bildern, Audio, Video, 3D-Modellen und Geolocation-Daten zu verwalten und als Vorschau zu betrachten. - -## Lösungsansätze und Ressourcen - -Folgende Ressourcen können für die Bearbeitung des Projektes benötigt werden: - -- Entwicklungsumgebung -- AR-Inhalte zur Darstellung (Texte, Bilder, Audio, Video, 3D-Modelle und Geolocation-Daten) -- Aktuelle Datenstrukturen der Webanwendung "ARlebnis OBK" -- Aktueller Lösungsansatz zur Integration von AR-Inhalten in die Webanwendung "ARlebnis OBK" - -Bereits existierende Implementierungen von AR-spezifischen Content Management Systemen sollten ebenfalls berücksichtigt werden. - -## Chancen und Risiken - -Durch die Bearbeitung dieser Bachelorarbeit kann vor allem die Möglichkeit geschaffen werden, AR-Inhalte für das Kooperationsprojekt "ARlebnis OBK" zu integrieren. - -Bei einer erfolgreichen Umsetzung können technische und nicht-technische Redakteure AR-Inhalte in Form von Texten, Bildern, Audio, Video, 3D-Modellen und Geolocation-Daten verwalten und visualisieren. - -Als mögliches Risiko kann die Verfügbarkeit inkompatibler AR-Inhalte angesehen werden. Darüber hinaus muss für jeden Inhaltstyp eine eigene Lösung gefunden werden, um die Inhalte zu verwalten und die Kompatibilität mit bestehenden Datenstrukturen zu gewährleisten. - -## Motivation - -Die Motivation zur Bearbeitung des Projektes besteht zum einen aus dem Interesse an neuen Technologien. Im Bereich XR ist in den nächsten Jahren mit einem verstärkten Wachstum zu rechnen, wodurch sich sehr gute Perspektiven für die zukünftige Entwicklung und Nutzung der Technologie ergeben. - -Als Medieninformatiker bringe ich zudem die notwendigen technischen Kompetenzen im Umgang mit Webtechnologien und erste Erfahrungen mit WebAR mit. - -Durch den Studienort am Campus Gummersbach besteht ein persönlicher Bezug zum Oberbergischen Kreis. Das Projekt kann somit einen Beitrag zur regionalen Entwicklung leisten. - -## Durchführungskontext und zeitliche Planung - -### Setup - -Die Bachelorarbeit wird im Rahmen des Kooperationsprojektes an der TH Köln durchgeführt. Als Initiator fungiert die VHS Oberberg als Auftraggeber zusammen mit weiteren Kooperationspartnern mit direktem Interesse, jedoch ohne direkten Einfluss auf die Bachelorarbeit. - -### Abhängigkeiten - -Die Durchführung dieser Bachelorarbeit ist nicht von anderen Projekten abhängig. Die Erkenntnisse aus dem Praxisprojekt werden für die Bearbeitung dieser Bachelorarbeit vorausgesetzt. Die für die erfolgreiche Durchführung des Projektes notwendigen technischen Ressourcen müssen vorhanden sein. Es besteht keine direkte Abhängigkeit von den Ergebnissen dieser Bachelorarbeit. - -### Meilensteine und Zeitrahmen - -Für die Bachelorarbeit mit einer Bearbeitungszeit von 9 Wochen können die zu erarbeitenden Meilensteine wie folgt eingeteilt werden: - -Anmeldung Juni 2024 (z.B. Freitag 21.06.2024) -- Analyse bestehender Systeme / Literaturrecherche (1 Woche) -- Analyse aktueller Lösungsansätze (Mario Faske?) (1 Woche) -- Konzeption Schnittstelle & Datenmodellierung (1 Woche) -- Prototypische Umsetzung des Konzepts (2 Wochen) -- Dokumentation der Ergebnisse (3 Wochen) -- Korrekturlesen und Abgabe (1 Woche) - - -## Arbeitsergebnis - -Das Ergebnis der Bachelorarbeit soll eine Webanwendung zur Verwaltung von AR-Inhalten im Web sein. Es soll untersucht werden, wie verschiedene Arten von AR-Inhalten (Texte, Bilder, Audio, Video, 3D-Modelle und Geolocation-Daten) verwaltet und betrachtet werden können. - - - -[strasse-der-arbeit]: https://www.ich-geh-wandern.de/stra%C3%9Fe-der-arbeit-bergisches-land diff --git a/_works/2024-zaitsev-anton/04-results/README.md b/_works/2024-zaitsev-anton/04-results/README.md deleted file mode 100644 index 7742390..0000000 --- a/_works/2024-zaitsev-anton/04-results/README.md +++ /dev/null @@ -1,3 +0,0 @@ -# Ergebnisse - -Bitte legen Sie Ihre Ergebnisse hier ab. Achten Sie bitte auf moderate Dateigrößen. Bitte legen Sie nur geschlossene Dokument, z.B. PDF statt *.doc ab. \ No newline at end of file diff --git a/_works/2025-01-05-ermira-niemczyk.md b/_works/2025-01-05-ermira-niemczyk.md deleted file mode 100644 index 32b54bb..0000000 --- a/_works/2025-01-05-ermira-niemczyk.md +++ /dev/null @@ -1,14 +0,0 @@ ---- -layout: work-result -author: Ermira Niemczyk -title: KI Bildkonzept Medieninformatik -date: 2025-01-05 -slideshow: false -research-diary: false -type: Praxisprojekt -status: in-progress -visibility: unpublished -keywords: KI, Kommunikationsdesign, Fotografie -main-examiner: true ---- -tbd diff --git a/_works/2025-01-16-vassilij-misenko.md b/_works/2025-01-16-vassilij-misenko.md deleted file mode 100644 index 5559eef..0000000 --- a/_works/2025-01-16-vassilij-misenko.md +++ /dev/null @@ -1,22 +0,0 @@ ---- -layout: work-result -author: Vassilij Misenko -related-folder: 2023-misenko-vassilij -title: Webtypografie - Eine interaktive Reise durch Schriftgestaltung im Web -date: 2025-01-16 -result-pdf: - - uploads/praxisprojekt_arbeit__typografie_im_web__2024_25.pdf -result-website: https://cnoss.github.io/Project-Typography/ -slideshow: false -research-diary: false -type: Praxisprojekt -status: finished -visibility: unpublished -keywords: Typographie, Web, Design -main-examiner: true ---- -Die vorliegende Arbeit behandelt die Entwicklung und Gestaltung einer Informationsressource, die Einsteigern einen strukturierten Zugang zur Webtypografie ermöglichen soll. Da das Themenfeld durch eine Vielzahl uneinheitlicher und unübersichtlicher Quellen geprägt ist, wurde das Ziel verfolgt, relevante Informationen praxisnah und zentral aufzubereiten. Die Ressource richtet sich insbesondere an Medieninformatiker und ähnliche Zielgruppen, die sich orientieren oder vertiefend mit Webtypografie beschäftigen möchten. - -Im Rahmen der Arbeit erfolgte zunächst eine umfassende Recherche zu grundlegenden Aspekten der Typografie und deren spezifischen Anwendungen im Web. Themenschwerpunkte waren unter anderem Webfonts, Variable Fonts, HTML, CSS, Schriftgrößen, Responsive Typography, Barrierefreiheit sowie aktuelle Trends. Diese Inhalte wurden anhand eigens definierter Kriterien analysiert, wobei der Fokus auf dem Nutzen und dem Aufwand für die Zielgruppe lag. - -Die Erkenntnisse wurden in Form einer strukturierten Webseite aufbereitet, die mittels einer Roadmap organisiert ist. Diese Struktur dient der klaren und zugänglichen Vermittlung der zentralen Themen, um Einsteigern einen fundierten Zugang zur Webtypografie zu bieten. Besondere Merkmale der Umsetzung sind die Kombination aus theoretischen Grundlagen und praktischen Beispielen sowie die Bewertung der Inhalte im Hinblick auf deren Relevanz für die Zielgruppe. Die Webseite dient dabei als Informationsquelle und potenzielle Basis für weiterführende Entwicklungen. diff --git a/_works/2025-01-28-justin-penner-paul-strebinger.md b/_works/2025-01-28-justin-penner-paul-strebinger.md deleted file mode 100644 index 4ae048b..0000000 --- a/_works/2025-01-28-justin-penner-paul-strebinger.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -layout: work-result -author: Justin Penner, Paul Strebinger -related-folder: 2024-strebinger-penner-pp -title: Browsererweiterung zur automatisierten Erkennung von - Accessibility-Problemen im Web mit Accesstra -date: 2025-01-28 -result-website: https://www.accesstra.tech/de/ -result-repo: https://github.com/visualsofpaul/accesstra-extension -slideshow: true -final-presentation: 8-Z2Ax1KE24 -research-diary: false -type: Praxisprojekt -status: finished -visibility: published -keywords: Barrierefreiheit im Web, Accessibility-Analyse, Chrome Extension, - automatisierte Fehlererkennung -main-examiner: true -thumbnail: /assets/uploads/photo-log-paul-strebinger-justin-penner-2024-18-11-05.png ---- -Die vorliegende Arbeit beschreibt die Entwicklung einer Browsererweiterung zur automatisierten Erkennung von Accessibility-Problemen im Web. Ziel des Projekts war es, eine Lösung zu schaffen, die Webentwickler*innen und Organisationen dabei unterstützt, Barrierefreiheit frühzeitig in den Entwicklungsprozess zu integrieren. - -Zu diesem Zweck wurde eine Chrome Extension entwickelt, die Accessibility-Probleme automatisch erkennt und konkrete Verbesserungsvorschläge liefert. Die Erweiterung nutzt dabei eine bestehende API des Unternehmens Accesstra und ergänzt diese um zusätzliche Funktionen, wie etwa Keyboard-Trap-Tests, eine erweiterte Analyse sowie ein Continuous Testing-Feature. - -Neben der technischen Umsetzung wurden auch Aspekte des Marketings behandelt, um die Verbreitung des Tools zu fördern. Hierzu wurden Zielgruppen definiert, ein Marketing-Mix entwickelt und Vertriebsstrategien erarbeitet. Eine zentrale Rolle spielt dabei die Distribution über den Chrome Web Store sowie die Einbindung in bestehende Netzwerke und Fachkonferenzen. - -Die Analyse der Ergebnisse zeigt, dass die meisten definierten Ziele erreicht wurden. Allerdings wurde die automatische Fehlerbehebung nicht wie ursprünglich geplant umgesetzt, sondern durch Vorschläge zur manuellen Behebung ersetzt. Ebenso konnte die geplante Fehlerdokumentation aus Zeitgründen nicht vollständig integriert werden. - -Für die Zukunft sind weitere Optimierungen vorgesehen, darunter die Verbesserung der Service-Worker-Implementierung, die Erweiterung der Analysefunktionen und eine bessere Integration in andere Browser und Plattformen. diff --git a/_works/2025-02-03-hafedh-souissi.md b/_works/2025-02-03-hafedh-souissi.md deleted file mode 100644 index 9692d9c..0000000 --- a/_works/2025-02-03-hafedh-souissi.md +++ /dev/null @@ -1,14 +0,0 @@ ---- -layout: work-result -author: Hafedh Souissi -title: Übersetzungstool Modulbeschreibungen -date: 2025-02-03 -slideshow: false -research-diary: false -type: Praxisprojekt -status: finished -visibility: published -keywords: Web, Development, KI -main-examiner: true ---- -Diese Arbeit verfolgt das Ziel, eine rein deutschsprachige Eleventy-Website, die über Jahre gewachsen ist, mit minimalem Eingriff in eine englische Variante zu überführen. Ursprünglich stießen internationale Studieninteressierte beim Besuch der Hochschulwebseiten auf sprachliche Barrieren und benutzten externe Übersetzungswerkzeuge, was häufig zu unpräzisen oder fachspezifisch falschen Formulierungen führte. Um dies zu beheben, wurde ein KI-gestütztes Übersetzungskonzept entwickelt, das über mehrere Skripte den vorhandenen Markdown- und JSON-Inhalt automatisiert in Englisch bereitstellt. Zentral dabei ist eine Datei, in der speziell definierte Fachbegriffe hinterlegt sind, sodass bestimmte Ausdrücke nicht beliebig übersetzt werden. Auf diese Weise entsteht eine konsistente englische Fassung der Website, ohne dass aufwändige i18n-Plugins in Eleventy integriert oder die Dateien manuell neu strukturiert werden müssen. diff --git "a/_works/2025-02-28-melvin-leon-weiersh\303\244user.md" "b/_works/2025-02-28-melvin-leon-weiersh\303\244user.md" deleted file mode 100644 index 6c7d1af..0000000 --- "a/_works/2025-02-28-melvin-leon-weiersh\303\244user.md" +++ /dev/null @@ -1,21 +0,0 @@ ---- -layout: work-result -author: Melvin Leon Weiershäuser -title: Entwicklung und Evaluation barrierefreier Anmeldeverfahren im Web -date: 2025-02-28 -slideshow: false -research-diary: false -type: Masterarbeit -status: finished -visibility: published -keywords: Barrierefreie Authentifizierung, Passkeys vs. Passwort, Digitale - Barrierefreiheit, Single-Sign-On (SSO) Accessibility -main-examiner: false ---- -Die vorliegende Arbeit behandelt interdisziplinär die Entwicklung und Evaluation der Anmeldeverfahren mit Benutzername, Passwort und Multi-Faktor-Authentifizierung (MFA) sowie mit Passkeys vor dem Hintergrund der digitalen Barrierefreiheit im Kontext des Webs. Dabei wird untersucht, welche Barrieren bei der Nutzung dieser Anmeldeverfahren für Menschen mit Behinderungen existieren und wie eine barrierefreie Umsetzung erfolgen kann. Zudem werden die Auswirkungen der verschiedenen Anmeldeverfahren auf die barrierefreie Entwicklung und Nutzung analysiert. - -Zu diesem Zweck werden sowohl die Anmeldeverfahren als auch die Barrierefreiheit im Web theoretisch aufgearbeitet – sowohl einzeln als auch im Zusammenspiel. Basierend auf den Web Content Accessibility Guidelines (WCAG) werden mögliche Barrieren identifiziert und Anforderungen für eine barrierefreie Umsetzung der Anmeldeverfahren abgeleitet. Diese Erkenntnisse fließen in die Entwicklung eines barrierefreien Single-Sign-On (SSO) Systems ein, das mit Ausnahme der für SSO benötigten Schnittstellen umgesetzt wird. - -Die Analyse der Entwicklung zeigt, dass das passwortbasierte Anmeldeverfahren vor allem eine konforme Implementierung der Benutzereingaben erfordert. Bei der Nutzung von Passkeys hingegen liegt der Schwerpunkt auf der Implementierung der Schnittstellen der zugrundeliegenden Standards. Ein Teil der Kontrolle und Verantwortung für die barrierefreie Gestaltung des Authentifizierungsprozesses wird dabei an die Betriebssysteme und Browser der Nutzenden abgegeben. - -Diese Schwerpunkte der Anmeldeverfahren werden auch in einem User-Test des entwickelten Systems bestätigt. Sechs Testpersonen durchlaufen die Anmeldeverfahren erfolgreich unter Nutzung assistiver Technologien und adaptiver Strategien. Beide Verfahren werden als bedienbar wahrgenommen, wobei das Anmeldeverfahren mit Passkeys insgesamt als angenehmer empfunden wird. Daraus ergibt sich das Gesamtbild, dass eine breite Auswahl an Anmeldeverfahren optimalerweise dazu führt, dass Menschen mit Behinderungen das für sie am besten geeignete Verfahren wählen können. diff --git a/_works/2025-03-14-aaron-asgharzadeh.md b/_works/2025-03-14-aaron-asgharzadeh.md deleted file mode 100644 index e28796c..0000000 --- a/_works/2025-03-14-aaron-asgharzadeh.md +++ /dev/null @@ -1,51 +0,0 @@ ---- -layout: work-result -author: Aaron Asgharzadeh -related-folder: 2025-asgharzadeh-aaron -title: Webbasierte Musikvisualisierung in VR – Möglichkeiten und Grenzen -date: 2025-07-13 -result-pdf: - - uploads/webbasierte-musikvisualisierung-in-vr-moglichkeiten-und-grenzen-2025-ba-aaron.pdf -result-repo: https://github.com/Aaronasgh/bachelor-app -slideshow: true -final-presentation: hJgaUtbpa_U -research-diary: false -type: Bachelorarbeit -status: finished -visibility: published -keywords: Web, VR, Musik -main-examiner: true -thumbnail: /assets/uploads/photo-log-aaron-asgharzadeh-2025-07-11-08.jpg.jpg ---- -Musikvisualisierung ist ein Forschungsfeld mit langer Geschichte, das künstlerische -und pädagogische Potenziale eröffnet. Durch den Einbezug moderner Technologien -ergeben sich neue interaktive Nutzungsszenarien, deren technische Realisierbarkeit -noch nicht umfassend erforscht ist. - -In dieser Arbeit wird ein webbasiertes System zur Echtzeit-Musikvisualisierung in Vir- -tual Reality entwickelt, mit dem Ziel, folgende Frage zu beantworten: Welche techni- -schen Herausforderungen und Potenziale ergeben sich bei der Echtzeit- -Musikvisualisierung in einer webbasierten VR-Umgebung? -Hierzu wurde ein Visualisierungskonzept entwickelt, das auf bestehenden Ansätzen -aufbaut und dabei musiktheoretische Prinzipien einbezieht, um harmonische Zusam- -menhänge visuell darzustellen. Auf Grundlage des Konzepts entstand ein funktiona- -ler Prototyp, der MIDI-Eingaben eines Keyboards in Echtzeit visualisiert und eine -immersive Darstellung über ein VR-Headset ermöglicht. Technisch basiert die Um- -setzung auf webbasierten Technologien wie Web MIDI API, React Three Fiber und -React Three XR. - -Die Ergebnisse demonstrieren, dass eine solche Anwendung technisch realisierbar ist. -Offene Webstandards und eine breite Auswahl von Werkzeugen unterstützen die er- -folgreiche Integration verschiedener Geräte und Technologien. Einschränkungen tra- -ten nur in wenigen Fällen auf, etwa durch funktionale Limitationen des Webbrowsers -oder durch die teilweise unvollständige Umsetzung des Visualisierungskonzepts auf- -grund des begrenzten Zeitrahmens. - -Die Arbeit zeigt, dass medienzentrierte Webanwendungen auch in spezialisierten An- -wendungsfeldern wie der Musikvisualisierung Potenzial bieten. Für zukünftige For- -schungen ergeben sich Anknüpfungspunkte in pädagogischen Anwendungen, inklusi- -ven Zugängen für Gehörlose sowie kollaborativen Nutzungsszenarien. Zudem bieten -sich Forschungsarbeiten an, die das Spieler- bzw. Zuhörererlebnis untersuchen. -Dieses Projekt schafft somit eine Grundlage für weiterführende Entwicklungen im -Bereich der interaktiven Musikvisualisierung sowie medienzentrierter Anwendungen -im Allgemeinen. diff --git a/_works/2025-03-14-denis-anuschewski.md b/_works/2025-03-14-denis-anuschewski.md deleted file mode 100644 index 8549b35..0000000 --- a/_works/2025-03-14-denis-anuschewski.md +++ /dev/null @@ -1,15 +0,0 @@ ---- -layout: work-result -author: Denis Anuschewski -title: Entwicklung einer webbasierten Nutzerschnittstelle zum Erfahrbarmachen - heterogener Bezüge zwischen mittelalterlichen Kunstwerken -date: 2025-03-14 -slideshow: false -research-diary: false -type: Masterarbeit -status: in-preparation -visibility: unpublished -keywords: Datenvisualisierung, CDA, Web -main-examiner: true ---- -tbd diff --git a/_works/2025-03-14-vassilij-misenko.md b/_works/2025-03-14-vassilij-misenko.md deleted file mode 100644 index 49bb13b..0000000 --- a/_works/2025-03-14-vassilij-misenko.md +++ /dev/null @@ -1,40 +0,0 @@ ---- -layout: work-result -author: Vassilij Misenko -related-folder: 2025-misenko-vassilij -title: Die Kunst der Titelsequenz – Die Übertragbarkeit der Prinzipien von Saul - Bass Typografie auf das Web -date: 2025-08-01 -result-pdf: - - uploads/bass-typografie-prinzipien-im-web-2025-vassilij-misenko.pdf -result-website: https://vassjam.github.io/Bass-Typography-Principles-in-the-Web/ -result-repo: https://github.com/VassjaM/Bass-Typography-Principles-in-the-Web -slideshow: true -final-presentation: ynZIkS5gBJM -research-diary: false -type: Bachelorarbeit -status: finished -visibility: published -keywords: Web, Typography, CSS -main-examiner: true -thumbnail: /assets/uploads/photo-log-vassilij-misenko-2025-07-16-08-s.webp ---- -Die vorliegende Arbeit beschäftigt sich mit der Analyse und Übertragung filmischer -Typografieprinzipien aus den Titelsequenzen von Saul Bass in das Medium Web. Ziel ist -es, aufzuzeigen, dass Typografie im Web stärker kontextualisiert und inszeniert werden -kann, um neue Perspektiven für typografische Gestaltung im digitalen Raum zu eröffnen. -Die Herangehensweise umfasst zunächst die Gleichstellung von Filmtypografie und Web- -typografie, gefolgt von der Anwendung eines eigens entwickelten Analysetemplates zur -systematischen Untersuchung ausgewählter Titelsequenzen. Aufbauend auf den gewonne- -nen Erkenntnissen werden die identifizierten Prinzipien mittels Webstandardtechnologien -in Form eines webbasierten Prototyps umgesetzt. -Die Ergebnisse zeigen, dass sich die filmischen Gestaltungsprinzipien erfolgreich auf das -Web übertragen lassen und technisch umsetzbar sind. Eine zentrale Erkenntnis ist jedoch, -dass dem Prototyp eine klare Kontextualisierung fehlt. Während Saul Bass’ Typografie -eng mit den Themen und der Atmosphäre der jeweiligen Filme verbunden ist, präsentiert -der Prototyp die Prinzipien isoliert, was die Wirkung filmisch inspirierter Typografie nur -begrenzt widerspiegelt. -Der Mehrwert der Arbeit liegt in der praktischen Demonstration, dass typografische -Gestaltung im Web nicht nur funktional, sondern auch inszenatorisch gedacht werden -kann. Sie eröffnet neue Perspektiven für animierte Webtypografie und dient als Inspiration -für eine weiterführende Gestaltung animierter Schrift im digitalen Umfeld. diff --git a/_works/2025-03-18-niklas-mehlem.md b/_works/2025-03-18-niklas-mehlem.md deleted file mode 100644 index 91d25ac..0000000 --- a/_works/2025-03-18-niklas-mehlem.md +++ /dev/null @@ -1,24 +0,0 @@ ---- -layout: work-result -author: Niklas Mehlem -related-folder: 2025-niklas-mehlem -title: "Gesichtserkennung in historischen Gemälden: Evaluierung von Modellen für - das Cranach-Archiv" -date: 2025-07-15 -result-repo: https://github.com/NiklasMehlem/cranachDetector -slideshow: true -final-presentation: lD2ZZbAO25I -research-diary: false -type: Bachelorarbeit -status: finished -visibility: published -keywords: Machine Learning, Watermarks -main-examiner: true -thumbnail: /assets/uploads/photo-log-niklas-mehlem-2025-05-30-10.jpg ---- -Im Zuge der automatisierten Wasserzeichenplatzierung auf Bildern historischer Gemälde des Cranach Digital Archive (CDA) wurde untersucht, ob und wie bestehende Gesichtserkennungsmodelle zur zuverlässigen Erkennung von Gesichtern in diesen Werken eingesetzt werden können. Ziel war es, Wasserzeichen ästhetisch sinnvoll zu positionieren, ohne zentrale Bildelemente wie Gesichter zu überdecken. Da viele etablierte Modelle auf modernen Fotos realer Personen trainiert sind, wurden insgesamt neun gängige Verfahren – darunter RetinaFace, MTCNN, Dlib CNN, Caffe und andere – hinsichtlich ihrer Eignung für historische Porträts getestet und verglichen. - -Die Analyse umfasste Tests zur allgemeinen Erkennungstauglichkeit, zur Auflösungsabhängigkeit sowie zur optimalen Festlegung von Confidence-Grenzwerten. Dabei zeigte sich, dass keines der Modelle alleine alle Anforderungen vollständig erfüllt. Durch die Kombination mehrerer leistungsstarker Modelle konnte jedoch eine robuste Lösung entwickelt werden. Basierend auf den Testergebnissen wurde ein flexibles Python-Modul realisiert, das die Gesichtserkennung mit verschiedenen Modellen ermöglicht, deren Ergebnisse zusammenführt und die Überprüfung erlaubt, ob sich ein Wasserzeichen über einem erkannten Gesicht befindet. - -Das Modul ist vielseitig einsetzbar und bietet eine grafische Benutzeroberfläche, verschiedene Eingabeoptionen sowie konfigurierbare Parameter zur Feinabstimmung der Detektion. Damit schafft die Arbeit eine technische Grundlage für den sensiblen Umgang mit digitalen Reproduktionen historischer Kunstwerke und eröffnet neue Möglichkeiten für die automatisierte Bildverarbeitung im Kulturerbebereich. - diff --git "a/_works/2025-04-06-mauricio-k\303\266ppen.md" "b/_works/2025-04-06-mauricio-k\303\266ppen.md" deleted file mode 100644 index b1965b7..0000000 --- "a/_works/2025-04-06-mauricio-k\303\266ppen.md" +++ /dev/null @@ -1,16 +0,0 @@ ---- -layout: work-result -author: Mauricio Köppen -related-folder: "" -title: "KI-Helfer in Screendesign: An welchen Stellen des Double Diamond Modells - man KI effektiv anwenden kann" -date: 2025-04-06 -slideshow: false -research-diary: false -type: Praxisprojekt -status: in-progress -visibility: unpublished -keywords: KI, Design -main-examiner: true ---- -tbd diff --git a/_works/2025-04-06-meike-jungilligens.md b/_works/2025-04-06-meike-jungilligens.md deleted file mode 100644 index 2a8fec1..0000000 --- a/_works/2025-04-06-meike-jungilligens.md +++ /dev/null @@ -1,18 +0,0 @@ ---- -layout: work-result -author: Meike Jungilligens -title: Analyse der Konformität von UI-Frameworks mit den WCAG-Standards -date: 2025-04-06 -slideshow: false -research-diary: false -type: Praxisprojekt -status: in-progress -visibility: unpublished -keywords: A11ty, Web Development -main-examiner: true ---- -- **Kriterienkatalog** für die weitere Evaluierung der Barrierefreiheit von UI-Komponenten - - - - **Checkliste** für Entwickler bei der Benutzung entsprechender Komponenten - - (Digitales) **Poster/Infografik** als Überblick über Forschungsergebnisse diff --git a/_works/2025-08-01-methusshan-elankumaran.md b/_works/2025-08-01-methusshan-elankumaran.md deleted file mode 100644 index f35a16f..0000000 --- a/_works/2025-08-01-methusshan-elankumaran.md +++ /dev/null @@ -1,17 +0,0 @@ ---- -layout: work-result -author: Methusshan Elankumaran -title: Accessibility as a Service - Konzeption und Integration von - mandantenspezifischen barrierefreien Komponenten für ein Multi-Tenant - Empfehlungssytem -date: 2025-08-01 -slideshow: false -research-diary: false -type: Masterarbeit -status: in-preparation -visibility: unpublished -keywords: barrierefreie Komponenten, Empfehlungssystem, - Multi-Tenant-Architektur, Accessibility, modulare Bausteine -main-examiner: true ---- -Die Arbeit verfolgt das Ziel, barrierefreie Komponenten für ein Empfehlungssystem zu entwickeln, das auf einer Multi-Tenant-Architektur basiert. Im Mittelpunkt steht dabei die Konzeption und Implementierung modularer Bausteine, die flexibel auf die individuellen Wünsche und Anforderungen der einzelnen Mandanten angepasst werden können, ohne dabei die Barrierefreiheit des Gesamtsystems zu gefährden. Besondere Beachtung finden dabei zentrale Aspekte der Accessibility wie korrekte Überschriftenhierarchien, konsistente Tabreihenfolgen und eine klare semantische Struktur, die in jeder denkbaren Konfiguration des Produkts gewährleistet bleiben müssen. Darüber hinaus werden Strategien entwickelt, wie sich Änderungen oder Erweiterungen an den Komponenten so gestalten lassen, dass sie die bestehenden barrierefreien Funktionen nicht beeinträchtigen. Als Ergebnis entsteht ein praxisorientierter Leitfaden, der Schritt für Schritt erläutert, wie neue Feature-Module zu erstellen sind, damit sie sich nahtlos und barrierefrei in das bestehende System integrieren lassen und die hohen Qualitätsstandards auch langfristig gewahrt bleiben. diff --git a/_works/2025-asgharzadeh-aaron/01-resarch-area-analysis/Concept Map - Webbasierte Musiktools.jpg b/_works/2025-asgharzadeh-aaron/01-resarch-area-analysis/Concept Map - Webbasierte Musiktools.jpg deleted file mode 100644 index d584c1e..0000000 Binary files a/_works/2025-asgharzadeh-aaron/01-resarch-area-analysis/Concept Map - Webbasierte Musiktools.jpg and /dev/null differ diff --git a/_works/2025-asgharzadeh-aaron/02-titles-and-research-questions.md b/_works/2025-asgharzadeh-aaron/02-titles-and-research-questions.md deleted file mode 100644 index 3ce490c..0000000 --- a/_works/2025-asgharzadeh-aaron/02-titles-and-research-questions.md +++ /dev/null @@ -1,19 +0,0 @@ -# Titel und Forschungsfragen - -## Mögliche Titel - -- Echtzeit-Musikvisualisierung (in VR) durch MIDI-gesteuerte Instrumente – Einfluss auf das Spielerlebnis / Zuschauererlebnis -- Der Einfluss von Echtzeit-Musikvisualisierung in VR auf das Spielerlebnis -- Konzeption und Entwicklung eines webbasierten Prototyps für Echtzeit-Musikvisualisierung in VR -- Webbasierte Musikvisualisierung in VR – Möglichkeiten und Grenzen -- Technologische Herausforderungen und Lösungen bei webbasierter Echtzeit-Musikvisualisierung in VR -- Potenziale von Musikvisualisierung beim Lernen von Instrumenten - Entwicklung eines webbasierten Prototyps -- Die Rolle der visuellen Darstellung musikalischer Parameter auf das emotionale Spielerlebnis - -## Mögliche Forschungsfragen - -- Können bestimmte Farben, Formen oder andere Darstellungsformen in der Musikvisualisierung gezielt eingesetzt werden, um Emotionen beim Spieler/Zuschauer zu beeinflussen? -- Welchen Einfluss hat die Visualisierung bestimmter Parameter wie Takt oder Harmonie auf das Spielerlebnis? -- In welchen Anwendungsbereichen kann Echtzeit-Musikvisualisierung einen praktischen Nutzen bieten? -- Welche Herausforderungen ergeben sich bei der Echtzeit-Musikvisualisierung in einer webbasierten VR-Umgebung? Welche Lösungsansätze gibt es? -- Welche Vor- und Nachteile liefert eine VR-Umgebung? diff --git a/_works/2025-asgharzadeh-aaron/03-expose.md b/_works/2025-asgharzadeh-aaron/03-expose.md deleted file mode 100644 index 9fb8ea5..0000000 --- a/_works/2025-asgharzadeh-aaron/03-expose.md +++ /dev/null @@ -1,28 +0,0 @@ -# Exposé - -# **Webbasierte Musikvisualisierung in VR – Möglichkeiten und Grenzen** - -## Problemfeld - -Die webbasierte Visualisierung von Musik, insbesondere in Virtual Reality, ist bisher wenig erforscht. Dabei könnten kreative und pädagogische Anwendungsbereiche interessante Potenziale bieten. -Eine wesentliche Herausforderung eines solchen Projektes ist die Integration verschiedener Webtechnologien, die nicht primär für die gemeinsame Nutzung entwickelt wurden. -Hier wird besonders Bezug auf die Technologien Web MIDI API, Web Audio API und WebXR Device API genommen, wobei letztere zum Zeitpunkt dieser Arbeit noch als experimentell gilt. -Die zentrale Problemstellung dieser Arbeit besteht darin, die technologischen Hürden und den damit verbundenen (Zeit-)Aufwand bei der Entwicklung eines solchen Systems zu untersuchen. - -## Zielsetzung - -Ziel dieser Arbeit ist es ein Konzept für eine Webanwendung zu entwickeln, die Musik in Virtual Reality visualisiert. Dieses Konzept soll im zweiten Schritt in einen funktionalen Prototyp überführt werden. -Die im Problemfeld beschriebenen Herausforderungen, insbesondere die Integration verschiedener Webtechnologien, werden im Verlauf der Entwicklung untersucht und evaluiert. Mögliche Bewertungsmethoden zur Evaluation sind Zeitmessungen, sowie die Erfassung von Lines of Code für die individuellen Komponenten der Anwendung. - -## Zeitplan - -Basierend auf der Zielsetzung werden folgendene Meilensteine festgelegt: - -- Recherche und Konzeption -- Entwicklung des Prototyps -- Dokumentation und Abgabe - -## Quellen - -Als Hauptquelle dienen die MDN Web Docs, welche die technischen Dokumentationen zu den verwendeten Webtechnologien (Web MIDI API, Web Audio API und WebXR Device API) bereitstellen. -Weitere Quellen wie relevante Fachliteratur, wissenschaftliche Arbeiten, Code-Repositories sowie Video-Tutorials können im Verlauf der Recherche oder Arbeit hinzugezogen werden. diff --git a/_works/2025-asgharzadeh-aaron/04-results/images/images.html b/_works/2025-asgharzadeh-aaron/04-results/images/images.html deleted file mode 100644 index c17cef7..0000000 --- a/_works/2025-asgharzadeh-aaron/04-results/images/images.html +++ /dev/null @@ -1,111 +0,0 @@ - -
  • -
    - Image -
    -

    -

    -

    Dieses Oculus Quest VR-Headset wurde von der TH Köln bereitgestellt und diente während der Entwicklung des Prototyps dazu, die VR-Funktionalitäten zu testen.

    - -
    -
    -
  • -
  • -
    - Image -
    -

    -

    -

    Das Roland E-09 Keyboard wurde während der Entwicklung des Prototyps dazu verwendet, die erforderlichen MIDI-Daten einzuspielen.

    - -
    -
    -
  • -
  • -
    - Image -
    -

    -

    -

    Der Arbeitsplatz, an dem die gesamte Bachelorarbeit entstanden ist.

    - -
    -
    -
  • -
  • -
    - Image -
    -

    -

    -

    Der Quintenzirkel lieferte die Grundlage zur Entwicklung des Visualisierungskonzepts.

    - -
    -
    -
  • -
  • -
    - Image -
    -

    -

    -

    Die Transformation des Quintenzirkels zum Key Spanning Circle Of Thirds ermöglichte eine Farbzuordnung von Tönen, die harmonische Beziehungen abbildet.

    - -
    -
    -
  • -
  • -
    - Image -
    -

    -

    -

    Das Visualisierungskonzept angewendet an einer Oktave. Die Farbzuordnung bildet harmonische Beziehungen durch farbliche Ähnlichkeit ab.

    - -
    -
    -
  • -
  • -
    - Image -
    -

    -

    -

    Die Entwicklungsumgebung, in der der Prototyp entwickelt wurde. Verwendete Bibliotheken umfassen u.a. React, React Three Fiber und React Three XR.

    - -
    -
    -
  • -
  • -
    - Image -
    -

    -

    -

    Das Visualisierungskonzept umgesetzt in einer 3D-Umgebung. Alle Töne werden noch statisch dargestellt und reagieren nicht auf Tastendruck.

    - -
    -
    -
  • -
  • -
    - Image -
    -

    -

    -

    Die Logik zur Verarbeitung der MIDI-Daten war essenziell, damit der Prototyp Töne dynamisch darstellen konnte.

    - -
    -
    -
  • -
  • -
    - Image -
    -

    -

    -

    Benutzeroberfläche des fertigen Prototyps zur Musikvisualisierung. Töne erscheinen dynamisch. Visualisiert wird der Akkord e-Moll.

    - -
    -
    -
  • \ No newline at end of file diff --git a/_works/2025-asgharzadeh-aaron/04-results/images/metadata.json b/_works/2025-asgharzadeh-aaron/04-results/images/metadata.json deleted file mode 100644 index dc860ce..0000000 --- a/_works/2025-asgharzadeh-aaron/04-results/images/metadata.json +++ /dev/null @@ -1,112 +0,0 @@ -[ - { - "src": "images/photo-log-aaron-asgharzadeh-2025-07-11-01.jpg-s.webp", - "metadata": { - "Rights": "Aaron Asgharzadeh", - "Description": "Dieses Oculus Quest VR-Headset wurde von der TH Köln bereitgestellt und diente während der Entwicklung des Prototyps dazu, die VR-Funktionalitäten zu testen.", - "Headline": "Oculus Quest VR-Headset", - "ImageWidth": 1600, - "ImageHeight": 739, - "Orientation": "landscape" - } - }, - { - "src": "images/photo-log-aaron-asgharzadeh-2025-07-11-02.jpg-s.webp", - "metadata": { - "Rights": "Aaron Asgharzadeh", - "Description": "Das Roland E-09 Keyboard wurde während der Entwicklung des Prototyps dazu verwendet, die erforderlichen MIDI-Daten einzuspielen.", - "Headline": "Roland E-09", - "ImageWidth": 1600, - "ImageHeight": 739, - "Orientation": "landscape" - } - }, - { - "src": "images/photo-log-aaron-asgharzadeh-2025-07-11-03.jpg-s.webp", - "metadata": { - "Rights": "Aaron Asgharzadeh", - "Description": "Der Arbeitsplatz, an dem die gesamte Bachelorarbeit entstanden ist.", - "Headline": "Schreibtisch mit Arbeitsmaterialien", - "ImageWidth": 1600, - "ImageHeight": 739, - "Orientation": "landscape" - } - }, - { - "src": "images/photo-log-aaron-asgharzadeh-2025-07-11-04.jpg-s.webp", - "metadata": { - "Rights": "Aaron Asgharzadeh", - "Description": "Der Quintenzirkel lieferte die Grundlage zur Entwicklung des Visualisierungskonzepts.", - "Headline": "Quintenzirkel", - "ImageWidth": 1600, - "ImageHeight": 1589, - "Orientation": "landscape" - } - }, - { - "src": "images/photo-log-aaron-asgharzadeh-2025-07-11-05.jpg-s.webp", - "metadata": { - "Rights": "Aaron Asgharzadeh", - "Description": "Die Transformation des Quintenzirkels zum Key Spanning Circle Of Thirds ermöglichte eine Farbzuordnung von Tönen, die harmonische Beziehungen abbildet.", - "Headline": "Überführung des Quintenzirkels zum Key Spanning Circle Of Thirds", - "ImageWidth": 1600, - "ImageHeight": 458, - "Orientation": "landscape" - } - }, - { - "src": "images/photo-log-aaron-asgharzadeh-2025-07-11-06.jpg-s.webp", - "metadata": { - "Rights": "Aaron Asgharzadeh", - "Description": "Das Visualisierungskonzept angewendet an einer Oktave. Die Farbzuordnung bildet harmonische Beziehungen durch farbliche Ähnlichkeit ab.", - "Headline": "Visualisierungskonzept an einer Oktave", - "ImageWidth": 1600, - "ImageHeight": 1047, - "Orientation": "landscape" - } - }, - { - "src": "images/photo-log-aaron-asgharzadeh-2025-07-11-07.jpg-s.webp", - "metadata": { - "Rights": "Aaron Asgharzadeh", - "Description": "Die Entwicklungsumgebung, in der der Prototyp entwickelt wurde. Verwendete Bibliotheken umfassen u.a. React, React Three Fiber und React Three XR.", - "Headline": "Visual Studio Code", - "ImageWidth": 1600, - "ImageHeight": 859, - "Orientation": "landscape" - } - }, - { - "src": "images/photo-log-aaron-asgharzadeh-2025-07-11-08.jpg-s.webp", - "metadata": { - "Rights": "Aaron Asgharzadeh", - "Description": "Das Visualisierungskonzept umgesetzt in einer 3D-Umgebung. Alle Töne werden noch statisch dargestellt und reagieren nicht auf Tastendruck.", - "Headline": "Visualisierungskonzept im Prototyp", - "ImageWidth": 1600, - "ImageHeight": 900, - "Orientation": "landscape" - } - }, - { - "src": "images/photo-log-aaron-asgharzadeh-2025-07-11-09.jpg-s.webp", - "metadata": { - "Rights": "Aaron Asgharzadeh", - "Description": "Die Logik zur Verarbeitung der MIDI-Daten war essenziell, damit der Prototyp Töne dynamisch darstellen konnte.", - "Headline": "Aktivitätsdiagramm zur Verarbeitung von MIDI-Daten", - "ImageWidth": 1600, - "ImageHeight": 859, - "Orientation": "landscape" - } - }, - { - "src": "images/photo-log-aaron-asgharzadeh-2025-07-11-10.jpg-s.webp", - "metadata": { - "Rights": "Aaron Asgharzadeh", - "Description": "Benutzeroberfläche des fertigen Prototyps zur Musikvisualisierung. Töne erscheinen dynamisch. Visualisiert wird der Akkord e-Moll.", - "Headline": "Prototyp: Musikvisualisierung", - "ImageWidth": 1600, - "ImageHeight": 900, - "Orientation": "landscape" - } - } -] \ No newline at end of file diff --git a/_works/2025-asgharzadeh-aaron/04-results/images/photo-log-aaron-asgharzadeh-2025-07-11-01.jpg-s.webp b/_works/2025-asgharzadeh-aaron/04-results/images/photo-log-aaron-asgharzadeh-2025-07-11-01.jpg-s.webp deleted file mode 100644 index d26c4a9..0000000 Binary files a/_works/2025-asgharzadeh-aaron/04-results/images/photo-log-aaron-asgharzadeh-2025-07-11-01.jpg-s.webp and /dev/null differ diff --git a/_works/2025-asgharzadeh-aaron/04-results/images/photo-log-aaron-asgharzadeh-2025-07-11-02.jpg-s.webp b/_works/2025-asgharzadeh-aaron/04-results/images/photo-log-aaron-asgharzadeh-2025-07-11-02.jpg-s.webp deleted file mode 100644 index c6106db..0000000 Binary files a/_works/2025-asgharzadeh-aaron/04-results/images/photo-log-aaron-asgharzadeh-2025-07-11-02.jpg-s.webp and /dev/null differ diff --git a/_works/2025-asgharzadeh-aaron/04-results/images/photo-log-aaron-asgharzadeh-2025-07-11-03.jpg-s.webp b/_works/2025-asgharzadeh-aaron/04-results/images/photo-log-aaron-asgharzadeh-2025-07-11-03.jpg-s.webp deleted file mode 100644 index 8118efd..0000000 Binary files a/_works/2025-asgharzadeh-aaron/04-results/images/photo-log-aaron-asgharzadeh-2025-07-11-03.jpg-s.webp and /dev/null differ diff --git a/_works/2025-asgharzadeh-aaron/04-results/images/photo-log-aaron-asgharzadeh-2025-07-11-04.jpg-s.webp b/_works/2025-asgharzadeh-aaron/04-results/images/photo-log-aaron-asgharzadeh-2025-07-11-04.jpg-s.webp deleted file mode 100644 index b80fb1f..0000000 Binary files a/_works/2025-asgharzadeh-aaron/04-results/images/photo-log-aaron-asgharzadeh-2025-07-11-04.jpg-s.webp and /dev/null differ diff --git a/_works/2025-asgharzadeh-aaron/04-results/images/photo-log-aaron-asgharzadeh-2025-07-11-05.jpg-s.webp b/_works/2025-asgharzadeh-aaron/04-results/images/photo-log-aaron-asgharzadeh-2025-07-11-05.jpg-s.webp deleted file mode 100644 index d5959dd..0000000 Binary files a/_works/2025-asgharzadeh-aaron/04-results/images/photo-log-aaron-asgharzadeh-2025-07-11-05.jpg-s.webp and /dev/null differ diff --git a/_works/2025-asgharzadeh-aaron/04-results/images/photo-log-aaron-asgharzadeh-2025-07-11-06.jpg-s.webp b/_works/2025-asgharzadeh-aaron/04-results/images/photo-log-aaron-asgharzadeh-2025-07-11-06.jpg-s.webp deleted file mode 100644 index 0daf250..0000000 Binary files a/_works/2025-asgharzadeh-aaron/04-results/images/photo-log-aaron-asgharzadeh-2025-07-11-06.jpg-s.webp and /dev/null differ diff --git a/_works/2025-asgharzadeh-aaron/04-results/images/photo-log-aaron-asgharzadeh-2025-07-11-07.jpg-s.webp b/_works/2025-asgharzadeh-aaron/04-results/images/photo-log-aaron-asgharzadeh-2025-07-11-07.jpg-s.webp deleted file mode 100644 index ed9e42d..0000000 Binary files a/_works/2025-asgharzadeh-aaron/04-results/images/photo-log-aaron-asgharzadeh-2025-07-11-07.jpg-s.webp and /dev/null differ diff --git a/_works/2025-asgharzadeh-aaron/04-results/images/photo-log-aaron-asgharzadeh-2025-07-11-08.jpg-s.webp b/_works/2025-asgharzadeh-aaron/04-results/images/photo-log-aaron-asgharzadeh-2025-07-11-08.jpg-s.webp deleted file mode 100644 index 3735943..0000000 Binary files a/_works/2025-asgharzadeh-aaron/04-results/images/photo-log-aaron-asgharzadeh-2025-07-11-08.jpg-s.webp and /dev/null differ diff --git a/_works/2025-asgharzadeh-aaron/04-results/images/photo-log-aaron-asgharzadeh-2025-07-11-09.jpg-s.webp b/_works/2025-asgharzadeh-aaron/04-results/images/photo-log-aaron-asgharzadeh-2025-07-11-09.jpg-s.webp deleted file mode 100644 index f1657e3..0000000 Binary files a/_works/2025-asgharzadeh-aaron/04-results/images/photo-log-aaron-asgharzadeh-2025-07-11-09.jpg-s.webp and /dev/null differ diff --git a/_works/2025-asgharzadeh-aaron/04-results/images/photo-log-aaron-asgharzadeh-2025-07-11-10.jpg-s.webp b/_works/2025-asgharzadeh-aaron/04-results/images/photo-log-aaron-asgharzadeh-2025-07-11-10.jpg-s.webp deleted file mode 100644 index c4dc3bc..0000000 Binary files a/_works/2025-asgharzadeh-aaron/04-results/images/photo-log-aaron-asgharzadeh-2025-07-11-10.jpg-s.webp and /dev/null differ diff --git a/_works/2025-misenko-vassilij/01-resarch-area-analysis/README.md b/_works/2025-misenko-vassilij/01-resarch-area-analysis/README.md deleted file mode 100644 index 8311bbc..0000000 --- a/_works/2025-misenko-vassilij/01-resarch-area-analysis/README.md +++ /dev/null @@ -1,3 +0,0 @@ -# Themenfeldanalyse - -Bitte legen Sie Ihre Concept Map zur Themenfeldanalyse hier als PDF ab. Die Datei sollte nicht größer als 2 Mbyte sein. \ No newline at end of file diff --git a/_works/2025-misenko-vassilij/02-titles-and-research-questions.md b/_works/2025-misenko-vassilij/02-titles-and-research-questions.md deleted file mode 100644 index 9a47e53..0000000 --- a/_works/2025-misenko-vassilij/02-titles-and-research-questions.md +++ /dev/null @@ -1,3 +0,0 @@ -# Titel und Forschungsfrage - -Bitte notieren Sie mindestens 10 mögliche Titel der Arbeit und mindestens 5 mögliche Forschungsfragen/ Zielsetzungen in dieses Dokument. \ No newline at end of file diff --git a/_works/2025-misenko-vassilij/03-expose.md b/_works/2025-misenko-vassilij/03-expose.md deleted file mode 100644 index 46594be..0000000 --- a/_works/2025-misenko-vassilij/03-expose.md +++ /dev/null @@ -1,43 +0,0 @@ -# Exposé - - -## Die Kunst der Titelsequenz: Die Übertragbarkeit der Prinzipien von Saul Bass’ Typografie auf das Web - -### Sekundärtitel -Eine Untersuchung zur Umsetzung mit Web-Standard-Methoden für Animation - -### Problemstellung und Frage -Filmtitelsequenzen sind eine eigenständige Kunstform, die wesentlich zur Stimmung und Atmosphäre eines Films beiträgt. Sie dienen nicht nur der reinen Namensnennung, sondern können durch visuelle Gestaltung Erwartungen erzeugen, den Ton des Films setzen und eine emotionale Verbindung zum Publikum herstellen. Der Designer Saul Bass hat diese Kunstform geprägt, indem er minimalistische, oft abstrakte Typografie mit Bewegung kombinierte, um Motive und Themen eines Films visuell erfahrbar zu machen. Seine Arbeiten, etwa für „Psycho“, „Vertigo“ oder „North by Northwest“, setzten neue Maßstäbe in der Gestaltung von Titelsequenzen und beeinflussten die visuelle Sprache des Films. -Auch im Web spielt Typografie eine wichtige Rolle bei der Gestaltung von Nutzererlebnissen. Sie kann Markenidentität transportieren, den Ton einer Webseite setzen und die Wahrnehmung von Inhalten beeinflussen. Besonders auf Landing Pages oder interaktiven Webseiten trägt Typografie und typografische Animation dazu bei, Aufmerksamkeit zu erzeugen und den ersten Eindruck zu prägen. - -Daraus ergibt sich die zentrale Forschungsfrage dieser Arbeit: Lassen sich die Prinzipien der bewegten Typografie von Saul Bass auf das Web übertragen, um dessen gestalterische Ausdruckskraft zu erweitern und Typografie gezielt für die visuelle Inszenierung von Webseiten einzusetzen? - -Folgende weitere Fragen helfen bei der Beantwortung der zentralen Frage: -- Welche typografischen Prinzipien verwendet Saul Bass in seinen animierten Filmtitelsequenzen? -- Gibt es Parallelen zwischen diesen Prinzipien und Webtypografie? -- Ist es sinnvoll oder praktikabel, diese Prinzipien in das Web zu übertragen? -- Falls eine Übertragung nicht direkt möglich ist, welche Elemente wären dennoch wünschenswert? - -### Zielsetzung und Aufgabe -Das Ziel dieser Arbeit ist es, die typografischen Prinzipien in den Werken von Saul Bass zu analysieren und ihre Übertragbarkeit auf das Web zu untersuchen. Dies geschieht durch die Herausarbeitung der Unterschiede und Gemeinsamkeiten zwischen animierter Filmtypografie von Saul Bass Werken in Titelsequenzen und Webtypografie. Abschließend wird ein Prototyp entwickelt, um die visuelle Wirkung dieser Prinzipien im Web praktisch zu demonstrieren. - -### Methodik und Vorgehensweise -Die Arbeit gliedert sich in drei Hauptphasen: - -1. Theoretische Analyse: - -Recherche zur Typografie in Titelsequenzen von Saul Bass. - -Untersuchung typografischer Gestaltungsprinzipien im Web. - -Vergleich der beiden Bereiche und Identifikation von Parallelen oder Unterschieden. - -2. Praktische Untersuchung: - -Prüfung, welche Prinzipien von Saul Bass mit Web-Standard-Methoden (CSS, SVG) umsetzbar sind - -Falls Prinzipien nicht direkt übertragbar sind: Überlegungen, welche gestalterischen Lösungen für das Web geeignet wären. - -3. Prototypische Umsetzung: - -Entwicklung einer typografischen Animation, die die erarbeiteten Prinzipien im Web demonstrieren. - -### Abgrenzung und Einschränkungen -Diese Arbeit konzentriert sich ausschließlich auf die Typografie in Filmtitelsequenzen und nicht auf die allgemeine Filmgestaltung. Im Fokus stehen dabei ausschließlich die Werke von Saul Bass. Für die Umsetzung des Prototyps werden ausschließlich Web-Standard-Technologien wie CSS und SVG verwendet, externe Animationsframeworks finden keine Anwendung. Die Untersuchung erfolgt als gestalterische und technische Analyse, ohne empirische Studien oder Nutzerbefragungen. Zudem werden weder 3D-Typografie noch komplexe interaktive Szenarien berücksichtigt. - -### Motivation -Meine Motivation für dieses Thema entstand aus einem Praxisprojekt, in dem ich mich intensiv mit Webtypografie beschäftigt habe. Dabei habe ich verschiedene Techniken und Gestaltungsmöglichkeiten analysiert, die eine ansprechende Typografie im Web ermöglichen. Aus dem Wunsch heraus, Typografie noch stärker als gestalterisches Element auf Landing Pages zu inszenieren, entstand die Idee, filmische Titelsequenzen als Inspirationsquelle heranzuziehen. Saul Bass spielte dabei eine zentrale Rolle, da er mit seinen innovativen Titelsequenzen die Wahrnehmung und Wirkung bewegter Typografie im Film maßgeblich geprägt hat. Ich sehe in dieser Analyse nicht nur eine spannende gestalterische Herausforderung, sondern auch einen praktischen Mehrwert für zukünftige Medieninformatiker und Webentwickler, die sich mit der Weiterentwicklung von Webtypografie beschäftigen. diff --git a/_works/2025-misenko-vassilij/04-results/README.md b/_works/2025-misenko-vassilij/04-results/README.md deleted file mode 100644 index 7742390..0000000 --- a/_works/2025-misenko-vassilij/04-results/README.md +++ /dev/null @@ -1,3 +0,0 @@ -# Ergebnisse - -Bitte legen Sie Ihre Ergebnisse hier ab. Achten Sie bitte auf moderate Dateigrößen. Bitte legen Sie nur geschlossene Dokument, z.B. PDF statt *.doc ab. \ No newline at end of file diff --git a/_works/2025-misenko-vassilij/04-results/images/images.html b/_works/2025-misenko-vassilij/04-results/images/images.html deleted file mode 100644 index 5b984ce..0000000 --- a/_works/2025-misenko-vassilij/04-results/images/images.html +++ /dev/null @@ -1,122 +0,0 @@ - -
  • -
    - Trello-Board -
    -

    Trello-Board

    -

    Dieses Bild zeigt das Trello-Board, das zur Planung und Organisation der Bachelorarbeit verwendet wurde. Es veranschaulicht den Fortschritt der gesamten Arbeit von der ersten Strukturierung über das Schreiben der einzelnen Kapitel bis hin zur Umsetzung des Prototyps.

    -

    Dieses Bild zeigt das Trello-Board, das zur Planung und Organisation der Bachelorarbeit verwendet wurde. Es veranschaulicht den Fortschritt der gesamten Arbeit von der ersten Strukturierung über das Schreiben der einzelnen Kapitel bis hin zur Umsetzung des Prototyps.

    - -
    -
    -
  • -
  • -
    - Trello-Board -
    -

    Trello-Board

    -

    Dieses Bild zeigt das in Figma erstellte Styleguide für die Webseite. Es enthält Vorgaben zu Schriftarten, Schriftgrößen, Schriftschnitten und Farben, die anschließend für die Gestaltung der Website verwendet wurden.

    -

    Dieses Bild zeigt das in Figma erstellte Styleguide für die Webseite. Es enthält Vorgaben zu Schriftarten, Schriftgrößen, Schriftschnitten und Farben, die anschließend für die Gestaltung der Website verwendet wurden.

    - -
    -
    -
  • -
  • -
    - Prototypische Gestaltungen -
    -

    Prototypische Gestaltungen

    -

    Dieses Bild zeigt in Figma entworfene prototypische Gestaltungen für verschiedene Komponenten der Website. Dargestellt sind eine Card , eine Umsetzung der „North by Northwest“-Sequenz sowie eine Bento-Box-Card als allgemeine Infobox.

    -

    Dieses Bild zeigt in Figma entworfene prototypische Gestaltungen für verschiedene Komponenten der Website. Dargestellt sind eine Card , eine Umsetzung der „North by Northwest“-Sequenz sowie eine Bento-Box-Card als allgemeine Infobox.

    - -
    -
    -
  • -
  • -
    - Mockups des Prototyps -
    -

    Mockups des Prototyps

    -

    Dieses Bild zeigt die in Figma erstellten allgemeinen Mockups für alle Seiten des Prototyps. Sie dienen als visuelle Grundlage für den strukturellen und gestalterischen Aufbau der finalen Website.

    -

    Dieses Bild zeigt die in Figma erstellten allgemeinen Mockups für alle Seiten des Prototyps. Sie dienen als visuelle Grundlage für den strukturellen und gestalterischen Aufbau der finalen Website.

    - -
    -
    -
  • -
  • -
    - Entwicklungsumgebung -
    -

    Entwicklungsumgebung

    -

    Dieses Bild zeigt die lokale Entwicklungsumgebung in Visual Studio Code. Sichtbar ist der HTML- und JavaScript-Code, der für die Umsetzung des Prototyps erstellt wurde.

    -

    Dieses Bild zeigt die lokale Entwicklungsumgebung in Visual Studio Code. Sichtbar ist der HTML- und JavaScript-Code, der für die Umsetzung des Prototyps erstellt wurde.

    - -
    -
    -
  • -
  • -
    - Test der Bildschirmgröße -
    -

    Test der Bildschirmgröße

    -

    Dieses Bild zeigt das lokale Testen des Prototyps im Browser. Durch manuelles Anpassen der Bildschirmgröße wird überprüft, ob die lokale Ausführung manuell angepasst werden kann.

    -

    Dieses Bild zeigt das lokale Testen des Prototyps im Browser. Durch manuelles Anpassen der Bildschirmgröße wird überprüft, ob die lokale Ausführung manuell angepasst werden kann.

    - -
    -
    -
  • -
  • -
    - Animierte Titelschrift -
    -

    Animierte Titelschrift

    -

    Dieses Bild zeigt die Landing Page des Prototyps während des Tests der Schriftanimation. Es veranschaulicht, wie sich die Typografie beim Laden der Seite dynamisch bewegt.

    -

    Dieses Bild zeigt die Landing Page des Prototyps während des Tests der Schriftanimation. Es veranschaulicht, wie sich die Typografie beim Laden der Seite dynamisch bewegt.

    - -
    -
    -
  • -
  • -
    - Prototypische Umsetzung -
    -

    Prototypische Umsetzung

    -

    Dieses Bild zeigt ein Beispiel für die Umsetzung typografischer Prinzipien im Web. Durch die Bewegung der Maus wird eine interaktive Schriftanimation ausgelöst, die auf den gefundenen filmischen Gestaltungsansätzen basiert.

    -

    Dieses Bild zeigt ein Beispiel für die Umsetzung typografischer Prinzipien im Web. Durch die Bewegung der Maus wird eine interaktive Schriftanimation ausgelöst, die auf den gefundenen filmischen Gestaltungsansätzen basiert.

    - -
    -
    -
  • -
  • -
    - Umsetzung einer Titelsequenz -
    -

    Umsetzung einer Titelsequenz

    -

    Dieses Bild zeigt die konkrete Umsetzung der Titelsequenz von North by Northwest im Web. Die typografische Animation wird im Browser betrachtet und orientiert sich gestalterisch an der filmischen Vorlage.

    -

    Dieses Bild zeigt die konkrete Umsetzung der Titelsequenz von North by Northwest im Web. Die typografische Animation wird im Browser betrachtet und orientiert sich gestalterisch an der filmischen Vorlage.

    - -
    -
    -
  • -
  • -
    - Typografie als Körper -
    -

    Typografie als Körper

    -

    Dieses Bild zeigt eine weitere Umsetzung filmischer Typografie im Web. Der Text bewegt sich dabei als ein zusammenhängender Körper, der die Form eines Drachens annimmt und veranschaulicht so kreative Animationsmöglichkeiten.

    -

    Dieses Bild zeigt eine weitere Umsetzung filmischer Typografie im Web. Der Text bewegt sich dabei als ein zusammenhängender Körper, der die Form eines Drachens annimmt und veranschaulicht so kreative Animationsmöglichkeiten.

    - -
    -
    -
  • -
  • -
    - Gedruckte Bachelorarbeit -
    -

    Gedruckte Bachelorarbeit

    -

    Dieses Bild zeigt ein Foto der gedruckten Bachelorarbeit als Abschluss des Projekts.

    -

    Dieses Bild zeigt ein Foto der gedruckten Bachelorarbeit als Abschluss des Projekts.

    - -
    -
    -
  • \ No newline at end of file diff --git a/_works/2025-misenko-vassilij/04-results/images/metadata.json b/_works/2025-misenko-vassilij/04-results/images/metadata.json deleted file mode 100644 index d6d213a..0000000 --- a/_works/2025-misenko-vassilij/04-results/images/metadata.json +++ /dev/null @@ -1,145 +0,0 @@ -[ - { - "src": "images/photo-log-vassilij-misenko-2025-07-16-01-s.webp", - "metadata": { - "Title": "Trello-Board", - "Description": "Dieses Bild zeigt das Trello-Board, das zur Planung und Organisation der Bachelorarbeit verwendet wurde. Es veranschaulicht den Fortschritt der gesamten Arbeit von der ersten Strukturierung über das Schreiben der einzelnen Kapitel bis hin zur Umsetzung des Prototyps.", - "Rights": "Vassilij Misenko", - "Caption": "Dieses Bild zeigt das Trello-Board, das zur Planung und Organisation der Bachelorarbeit verwendet wurde. Es veranschaulicht den Fortschritt der gesamten Arbeit von der ersten Strukturierung über das Schreiben der einzelnen Kapitel bis hin zur Umsetzung des Prototyps.", - "Headline": "Trello-Board", - "ImageWidth": 1600, - "ImageHeight": 900, - "Orientation": "landscape" - } - }, - { - "src": "images/photo-log-vassilij-misenko-2025-07-16-02-s.webp", - "metadata": { - "Title": "Trello-Board", - "Description": "Dieses Bild zeigt das in Figma erstellte Styleguide für die Webseite. Es enthält Vorgaben zu Schriftarten, Schriftgrößen, Schriftschnitten und Farben, die anschließend für die Gestaltung der Website verwendet wurden.", - "Rights": "Vassilij Misenko", - "Caption": "Dieses Bild zeigt das in Figma erstellte Styleguide für die Webseite. Es enthält Vorgaben zu Schriftarten, Schriftgrößen, Schriftschnitten und Farben, die anschließend für die Gestaltung der Website verwendet wurden.", - "Headline": "Trello-Board", - "ImageWidth": 1600, - "ImageHeight": 473, - "Orientation": "landscape" - } - }, - { - "src": "images/photo-log-vassilij-misenko-2025-07-16-03-s.webp", - "metadata": { - "Title": "Prototypische Gestaltungen", - "Description": "Dieses Bild zeigt in Figma entworfene prototypische Gestaltungen für verschiedene Komponenten der Website. Dargestellt sind eine Card , eine Umsetzung der „North by Northwest“-Sequenz sowie eine Bento-Box-Card als allgemeine Infobox.", - "Rights": "Vassilij Misenko", - "Caption": "Dieses Bild zeigt in Figma entworfene prototypische Gestaltungen für verschiedene Komponenten der Website. Dargestellt sind eine Card , eine Umsetzung der „North by Northwest“-Sequenz sowie eine Bento-Box-Card als allgemeine Infobox.", - "Headline": "Prototypische Gestaltungen", - "ImageWidth": 1600, - "ImageHeight": 442, - "Orientation": "landscape" - } - }, - { - "src": "images/photo-log-vassilij-misenko-2025-07-16-04-s.webp", - "metadata": { - "Title": "Mockups des Prototyps", - "Description": " Dieses Bild zeigt die in Figma erstellten allgemeinen Mockups für alle Seiten des Prototyps. Sie dienen als visuelle Grundlage für den strukturellen und gestalterischen Aufbau der finalen Website.", - "Rights": "Vassilij Misenko", - "Caption": " Dieses Bild zeigt die in Figma erstellten allgemeinen Mockups für alle Seiten des Prototyps. Sie dienen als visuelle Grundlage für den strukturellen und gestalterischen Aufbau der finalen Website.", - "Headline": "Mockups des Prototyps", - "ImageWidth": 1600, - "ImageHeight": 900, - "Orientation": "landscape" - } - }, - { - "src": "images/photo-log-vassilij-misenko-2025-07-16-05-s.webp", - "metadata": { - "Title": "Entwicklungsumgebung", - "Description": "Dieses Bild zeigt die lokale Entwicklungsumgebung in Visual Studio Code. Sichtbar ist der HTML- und JavaScript-Code, der für die Umsetzung des Prototyps erstellt wurde.", - "Rights": "Vassilij Misenko", - "Caption": "Dieses Bild zeigt die lokale Entwicklungsumgebung in Visual Studio Code. Sichtbar ist der HTML- und JavaScript-Code, der für die Umsetzung des Prototyps erstellt wurde.", - "Headline": "Entwicklungsumgebung", - "ImageWidth": 1600, - "ImageHeight": 900, - "Orientation": "landscape" - } - }, - { - "src": "images/photo-log-vassilij-misenko-2025-07-16-06-s.webp", - "metadata": { - "Title": "Test der Bildschirmgröße", - "Description": "Dieses Bild zeigt das lokale Testen des Prototyps im Browser. Durch manuelles Anpassen der Bildschirmgröße wird überprüft, ob die lokale Ausführung manuell angepasst werden kann.", - "Rights": "Vassilij Misenko", - "Caption": "Dieses Bild zeigt das lokale Testen des Prototyps im Browser. Durch manuelles Anpassen der Bildschirmgröße wird überprüft, ob die lokale Ausführung manuell angepasst werden kann.", - "Headline": "Test der Bildschirmgröße", - "ImageWidth": 1600, - "ImageHeight": 900, - "Orientation": "landscape" - } - }, - { - "src": "images/photo-log-vassilij-misenko-2025-07-16-07-s.webp", - "metadata": { - "Title": "Animierte Titelschrift", - "Description": "Dieses Bild zeigt die Landing Page des Prototyps während des Tests der Schriftanimation. Es veranschaulicht, wie sich die Typografie beim Laden der Seite dynamisch bewegt.", - "Rights": "Vassilij Misenko", - "Caption": "Dieses Bild zeigt die Landing Page des Prototyps während des Tests der Schriftanimation. Es veranschaulicht, wie sich die Typografie beim Laden der Seite dynamisch bewegt.", - "Headline": "Animierte Titelschrift", - "ImageWidth": 1600, - "ImageHeight": 1200, - "Orientation": "landscape" - } - }, - { - "src": "images/photo-log-vassilij-misenko-2025-07-16-08-s.webp", - "metadata": { - "Title": "Prototypische Umsetzung", - "Description": "Dieses Bild zeigt ein Beispiel für die Umsetzung typografischer Prinzipien im Web. Durch die Bewegung der Maus wird eine interaktive Schriftanimation ausgelöst, die auf den gefundenen filmischen Gestaltungsansätzen basiert.", - "Rights": "Vassilij Misenko", - "Caption": "Dieses Bild zeigt ein Beispiel für die Umsetzung typografischer Prinzipien im Web. Durch die Bewegung der Maus wird eine interaktive Schriftanimation ausgelöst, die auf den gefundenen filmischen Gestaltungsansätzen basiert.", - "Headline": "Prototypische Umsetzung", - "ImageWidth": 1600, - "ImageHeight": 900, - "Orientation": "landscape" - } - }, - { - "src": "images/photo-log-vassilij-misenko-2025-07-16-09-s.webp", - "metadata": { - "Title": "Umsetzung einer Titelsequenz", - "Description": "Dieses Bild zeigt die konkrete Umsetzung der Titelsequenz von North by Northwest im Web. Die typografische Animation wird im Browser betrachtet und orientiert sich gestalterisch an der filmischen Vorlage.", - "Rights": "Vassilij Misenko", - "Caption": "Dieses Bild zeigt die konkrete Umsetzung der Titelsequenz von North by Northwest im Web. Die typografische Animation wird im Browser betrachtet und orientiert sich gestalterisch an der filmischen Vorlage.", - "Headline": "Umsetzung einer Titelsequenz", - "ImageWidth": 1600, - "ImageHeight": 900, - "Orientation": "landscape" - } - }, - { - "src": "images/photo-log-vassilij-misenko-2025-07-16-10-s.webp", - "metadata": { - "Title": "Typografie als Körper", - "Description": "Dieses Bild zeigt eine weitere Umsetzung filmischer Typografie im Web. Der Text bewegt sich dabei als ein zusammenhängender Körper, der die Form eines Drachens annimmt und veranschaulicht so kreative Animationsmöglichkeiten.", - "Rights": "Vassilij Misenko", - "Caption": "Dieses Bild zeigt eine weitere Umsetzung filmischer Typografie im Web. Der Text bewegt sich dabei als ein zusammenhängender Körper, der die Form eines Drachens annimmt und veranschaulicht so kreative Animationsmöglichkeiten.", - "Headline": "Typografie als Körper", - "ImageWidth": 1600, - "ImageHeight": 900, - "Orientation": "landscape" - } - }, - { - "src": "images/photo-log-vassilij-misenko-2025-07-16-11-s.webp", - "metadata": { - "Title": "Gedruckte Bachelorarbeit", - "Description": "Dieses Bild zeigt ein Foto der gedruckten Bachelorarbeit als Abschluss des Projekts.", - "Rights": "Vassilij Misenko", - "Caption": "Dieses Bild zeigt ein Foto der gedruckten Bachelorarbeit als Abschluss des Projekts.", - "Headline": "Gedruckte Bachelorarbeit", - "ImageWidth": 1600, - "ImageHeight": 1200, - "Orientation": "landscape" - } - } -] \ No newline at end of file diff --git a/_works/2025-misenko-vassilij/04-results/images/photo-log-vassilij-misenko-2025-07-16-01-s.webp b/_works/2025-misenko-vassilij/04-results/images/photo-log-vassilij-misenko-2025-07-16-01-s.webp deleted file mode 100644 index 35e2b23..0000000 Binary files a/_works/2025-misenko-vassilij/04-results/images/photo-log-vassilij-misenko-2025-07-16-01-s.webp and /dev/null differ diff --git a/_works/2025-misenko-vassilij/04-results/images/photo-log-vassilij-misenko-2025-07-16-02-s.webp b/_works/2025-misenko-vassilij/04-results/images/photo-log-vassilij-misenko-2025-07-16-02-s.webp deleted file mode 100644 index 6178a01..0000000 Binary files a/_works/2025-misenko-vassilij/04-results/images/photo-log-vassilij-misenko-2025-07-16-02-s.webp and /dev/null differ diff --git a/_works/2025-misenko-vassilij/04-results/images/photo-log-vassilij-misenko-2025-07-16-03-s.webp b/_works/2025-misenko-vassilij/04-results/images/photo-log-vassilij-misenko-2025-07-16-03-s.webp deleted file mode 100644 index c15692d..0000000 Binary files a/_works/2025-misenko-vassilij/04-results/images/photo-log-vassilij-misenko-2025-07-16-03-s.webp and /dev/null differ diff --git a/_works/2025-misenko-vassilij/04-results/images/photo-log-vassilij-misenko-2025-07-16-04-s.webp b/_works/2025-misenko-vassilij/04-results/images/photo-log-vassilij-misenko-2025-07-16-04-s.webp deleted file mode 100644 index 548b79a..0000000 Binary files a/_works/2025-misenko-vassilij/04-results/images/photo-log-vassilij-misenko-2025-07-16-04-s.webp and /dev/null differ diff --git a/_works/2025-misenko-vassilij/04-results/images/photo-log-vassilij-misenko-2025-07-16-05-s.webp b/_works/2025-misenko-vassilij/04-results/images/photo-log-vassilij-misenko-2025-07-16-05-s.webp deleted file mode 100644 index beea35d..0000000 Binary files a/_works/2025-misenko-vassilij/04-results/images/photo-log-vassilij-misenko-2025-07-16-05-s.webp and /dev/null differ diff --git a/_works/2025-misenko-vassilij/04-results/images/photo-log-vassilij-misenko-2025-07-16-06-s.webp b/_works/2025-misenko-vassilij/04-results/images/photo-log-vassilij-misenko-2025-07-16-06-s.webp deleted file mode 100644 index fa347eb..0000000 Binary files a/_works/2025-misenko-vassilij/04-results/images/photo-log-vassilij-misenko-2025-07-16-06-s.webp and /dev/null differ diff --git a/_works/2025-misenko-vassilij/04-results/images/photo-log-vassilij-misenko-2025-07-16-07-s.webp b/_works/2025-misenko-vassilij/04-results/images/photo-log-vassilij-misenko-2025-07-16-07-s.webp deleted file mode 100644 index 583163a..0000000 Binary files a/_works/2025-misenko-vassilij/04-results/images/photo-log-vassilij-misenko-2025-07-16-07-s.webp and /dev/null differ diff --git a/_works/2025-misenko-vassilij/04-results/images/photo-log-vassilij-misenko-2025-07-16-08-s.webp b/_works/2025-misenko-vassilij/04-results/images/photo-log-vassilij-misenko-2025-07-16-08-s.webp deleted file mode 100644 index 8fdb1f6..0000000 Binary files a/_works/2025-misenko-vassilij/04-results/images/photo-log-vassilij-misenko-2025-07-16-08-s.webp and /dev/null differ diff --git a/_works/2025-misenko-vassilij/04-results/images/photo-log-vassilij-misenko-2025-07-16-09-s.webp b/_works/2025-misenko-vassilij/04-results/images/photo-log-vassilij-misenko-2025-07-16-09-s.webp deleted file mode 100644 index 9a555ea..0000000 Binary files a/_works/2025-misenko-vassilij/04-results/images/photo-log-vassilij-misenko-2025-07-16-09-s.webp and /dev/null differ diff --git a/_works/2025-misenko-vassilij/04-results/images/photo-log-vassilij-misenko-2025-07-16-10-s.webp b/_works/2025-misenko-vassilij/04-results/images/photo-log-vassilij-misenko-2025-07-16-10-s.webp deleted file mode 100644 index 9351b11..0000000 Binary files a/_works/2025-misenko-vassilij/04-results/images/photo-log-vassilij-misenko-2025-07-16-10-s.webp and /dev/null differ diff --git a/_works/2025-misenko-vassilij/04-results/images/photo-log-vassilij-misenko-2025-07-16-11-s.webp b/_works/2025-misenko-vassilij/04-results/images/photo-log-vassilij-misenko-2025-07-16-11-s.webp deleted file mode 100644 index 004f23f..0000000 Binary files a/_works/2025-misenko-vassilij/04-results/images/photo-log-vassilij-misenko-2025-07-16-11-s.webp and /dev/null differ diff --git a/_works/2025-niemczyk-ermira/expose.md b/_works/2025-niemczyk-ermira/expose.md deleted file mode 100644 index 250c665..0000000 --- a/_works/2025-niemczyk-ermira/expose.md +++ /dev/null @@ -1,256 +0,0 @@ -# Expose Bachelorarbeit - -Von Ermira Niemczyk -Matrikelnummer 11117335 -Studiengang Medieninformatik - -Künstliche Intelligenz als visueller Wegweiser. Prototying eines Webtools zur interaktiven Studienorientierung in der Medieninformatik mit Hilfe von Text-to-Image Technologien. - -Geplanter Zeitraum: Sommersemester 2025 - 21.05.2025 - 23.07.2025 -Betreuer: Prof. Christian Noss - Prof. Hans Kornacher - -## Ausgangslage und Problemstellung - -Die TH Köln steht als moderne Hochschule vor der Herausforderung, ihre vielfältigen Studienangebote und Forschungsschwerpunkte verständlich, ansprechend und zeitgemäß zu kommunizieren. Insbesondere Studieninteressierte sowie neue Studierende profitieren von visuellen Darstellungen, die ihnen Einblicke in die Lernumgebung, Inhalte und Möglichkeiten eines Studiengangs geben. Klassische Fotos oder allgemeine Illustrationen stoßen dabei schnell an ihre Grenzen, wenn es darum geht, individuelle, kontextbezogene oder zukunftsorientierte Inhalte visuell zu vermitteln. - -Dank generativer Künstlicher Intelligenz, insbesondere Text-to-Image-Verfahren, eröffnen sich neue Möglichkeiten für eine flexible, fotorealistische und zugleich kontextgerechte Visualisierung. Diese Technologien können gezielt eingesetzt werden, um virtuelle Einblicke in typische Szenarien aus dem Studienalltag der Medieninformatik zu geben. - -Bisher fehlt es an einem interaktiven System, das es ermöglicht, KI-generierte, ortsspezifische und fotorealistische Bilder gezielt anhand von Suchbegriffen (Prompts) aufzurufen, etwa um typische Räume, Situationen oder Lehrinhalte der TH Köln visuell darzustellen. Dozierende, Studieninteressierte oder die Hochschulkommunikation haben dadurch keine einfache Möglichkeit, passende Bildmaterialien dynamisch zu generieren oder gezielt abzurufen, z. B. um Vorträge, Infoseiten oder Präsentationen visuell zu unterstützen. - -Ein besonderes Problem liegt in der Zugänglichkeit: Es fehlt ein intuitives Webtool, mit dem relevante Begriffe wie "Greenscreen", "Labor" oder "Projektraum" in einer benutzerfreundlichen Oberfläche gesucht und durch KI in ein passendes, realitätsnahes Bild der TH Köln überführt werden können. Genau hier setzt der entwickelte Prototyp an. - -## Zielsetzung / Fragestellung des Projektes - -Ziel dieser Arbeit ist die Konzeption und prototypische Umsetzung eines interaktiven Webtools, das generative Künstliche Intelligenz (insbesondere Text-to-Image-Verfahren) nutzt, um die Medieninformatik an der TH Köln visuell zu repräsentieren. Mithilfe fotorealistischer KI-Bilder sollen typische Studieninhalte sowie reale Campusbereiche wie Seminarräume oder Labore verständlich und anschaulich dargestellt werden. - -Zur Erzeugung der Bilder wird insbesondere Midjourney eingesetzt, wobei ein kombinierter Ansatz verfolgt wird: Zunächst werden reale Räumlichkeiten der TH Köln fotografisch dokumentiert, insbesondere solche, in denen typische Lehr- oder Studiensituationen stattfinden. Anschließend werden diese Bilddaten als Grundlage für ein Image-to-Image-Verfahren genutzt, bei dem Personen und Räume fotorealistisch von der KI generiert werden, die unter Berücksichtigung der visuellen Identität der TH Köln wiederspiegelt. - -Ein besonderer Fokus liegt auf der experimentellen Erprobung verschiedener Bildperspektiven. Vergleichsweise Frontalansicht, Vogelperspektive oder diagonale Raumtiefe. Dies dient dazu herauszufinden, wie sich unterschiedliche Perspektiven auf die Verständlichkeit, Orientierung und Wirkung der KI-generierten Darstellungen auswirken. Die Auswahl und gezielte Steuerung dieser Perspektiven erfolgt sowohl durch Prompt-Formulierungen als auch durch die Nutzung von Bildvorlagen im Image-to-Image-Prozess mit Midjourney. - -Ein zusätzlicher Forschungsschwerpunkt liegt auf der Prompt-Analyse: Es wird untersucht, welche Textprompts in Midjourney notwendig sind, um bestimmte räumliche oder semantische Inhalte möglichst präzise abzubilden. Auf diese Weise soll nachvollzogen werden, wie effektiv sich KI-Bildgenerierung steuern lässt und wie realitätsnahe Darstellungen durch gezielte Promptformulierung erzielt werden können. - -Der letzte zentrale Aspekt dieser Arbeit, ist die Analyse der Konsistenz von KI-generierten Bildern, über verschiedene Zeitpunkte hinweg. Dazu werden identische Prompts an mehreren aufeinanderfolgenden Tagen in Midjourney eingegeben, um zu untersuchen, ob und inwieweit sich die generierten Bilder verändern. Ziel ist es, die Reproduzierbarkeit sowie die Stabilität der Text-to-Image-Ergebnisse zu bewerten – insbesondere im Hinblick auf die Einsatzmöglichkeiten im Bereich Studiengangsvisualisierung und Hochschulkommunikation. - -Es stellen sich folgende Forschungsfragen: - -1. Wie beeinflusst die Wahl der Bildperspektive (Frontalansicht, Vogelperspektive etc.) die Wahrnehmung, Orientierung und Verständlichkeit von KI-generierten Visualisierungen in einem digitalen Studienorientierungstool? -2. Welche Veränderungen treten bei der wiederholten Verwendung gleicher Prompts in Midjourney im zeitlichen Verlauf auf, und welche Rückschlüsse lassen sich daraus für die Reproduzierbarkeit von KI-generierten Studieninhalten ziehen? -3. Welche Vorteile und Herausforderungen ergeben sich bei der Verwendung von Prompt-basierten Suchfunktionen zur gezielten Generierung von KI-Bildern für die Studienorientierung? - -## Stand der Wissenschaft / Technik und Beriffe - -### Interaktive Repräsentation der Medieninformatik -Die digitale Repräsentation von Studieninhalten ist ein zentrales Element moderner Hochschulkommunikation. Interaktive Anwendungen ermöglichen es, abstrakte Themen, Vergleichsweise Programmierung, Algorithmen oder Interface Design, zugänglich zu visualisieren und explorativ zu erleben. Besonders in der Medieninformatik, einem interdisziplinären Feld zwischen Technik und Gestaltung, bieten interaktive Visualisierungen Potenzial für eine zielgruppengerechte Ansprache (Dörner et al., 2016). - -### Prototyping -Prototyping bezeichnet die iterative Erstellung und Evaluation von digitalen Systemen. Es dient dazu, frühzeitig nutzbare Versionen zu entwickeln, um Ideen zu testen, Feedback einzuholen und Anforderungen anzupassen (Rogers et al., 2011). In dieser Arbeit wird ein funktionsfähiger Webtool-Prototyp erstellt, der die technische Umsetzung und Nutzbarkeit generativer KI für die Hochschulkommunikation demonstriert. - -### Webtool -Ein Webtool ist eine internetbasierte Anwendung, die direkt im Browser läuft. Solche Tools sind ortsunabhängig zugänglich und eignen sich besonders für Informationsvisualisierung und Interaktion in Bildungssettings (Preece et al., 2015). Der hier entwickelte Prototyp dient dazu, KI-generierte Bilder auf Basis von Benutzereingaben bereitzustellen. - -### Text-to-Image -Text-to-Image bezeichnet ein Verfahren der generativen KI, bei dem aus einem Textprompt ein Bild erzeugt wird. Aktuelle Systeme wie Midjourney, DALL·E oder Stable Diffusion nutzen neuronale Netzwerke, um semantische Textinformationen in visuelle Darstellungen zu übersetzen (Ramesh et al., 2022). In dieser Arbeit dient das Verfahren der bildlichen Darstellung von Studieninhalten und realen Campus-Szenen, mit Hilfe von Midjourney. - -### Image-to-Image -Beim Image-to-Image-Verfahren wird ein Ausgangsbild als visuelle Grundlage verwendet, das mithilfe KI-basierter Modelle transformiert oder erweitert wird, etwa durch Stilübertragung, Kontextveränderung oder fotorealistische Neukomposition (Isola et al., 2017). Diese Technik erlaubt es, reale Aufnahmen von Campusräumen mit KI zu überarbeiten und dabei inhaltlich realitätsnah zu bleiben. - -### Bildperspektive -Die Perspektive eines Bildes beeinflusst seine Informationswirkung stark. Frontalansichten bieten klare Strukturen, Vogelperspektiven ermöglichen Orientierung, schräge Perspektiven erzeugen räumliche Tiefe. Studien zeigen, dass Perspektivwahl sowohl emotionale als auch kognitive Reaktionen beeinflusst (McCloud, 1993). In dieser Arbeit werden gezielt verschiedene Perspektiven getestet, um ihre Eignung für Studiengangsvisualisierungen zu analysieren. - -### Generative Künstliche Intelligenz (KI) -Generative KI umfasst Modelle, die eigenständig Inhalte wie Texte, Bilder oder Audio generieren können. Dazu zählen unter anderem Generative Adversarial Networks (GANs) und Diffusionsmodelle. Solche Systeme sind in der Lage, kreative Aufgaben zu übernehmen, basierend auf gelernten Mustern aus großen Datensätzen (Goodfellow et al., 2014; Saharia et al., 2022). Im Rahmen dieser Arbeit wird generative KI eingesetzt, um neue Wege der Studiengangspräsentation und Orientierung zu ermöglichen. - -## Eigene Vorgehensweise / Methoden - -In dieser Arbeit wird ein exploratives, praxisorientiertes Vorgehen gewählt, um den Einsatz generativer KI zur Visualisierung der Medieninformatik an der TH Köln zu untersuchen. Die Entwicklung erfolgt in mehreren Phasen: - -### Recherche und Konzeptentwicklung -Zunächst werden relevante wissenschaftliche Grundlagen zum Einsatz von generativer KI im Bildungsbereich sowie bestehende Visualisierungsansätze für Studiengänge analysiert. Auf dieser Basis wird ein inhaltliches und technisches Konzept für das Webtool erstellt. - -### Datenerhebung durch Fotografie realer Räume -Anschließend werden ausgewählte Räumlichkeiten der TH Köln (z. B. Labore, Seminarräume, Aufenthaltsbereiche) fotografisch dokumentiert. Ziel ist es, reale Ausgangsmaterialien für das spätere Image-to-Image-Verfahren zu sammeln. - -### Experimentelle Bildgenerierung mit Midjourney -Die aufgenommenen Bilder werden durch Midjourney über ein Image-to-Image-Verfahren fotorealistisch und symbolisch überarbeitet. Parallel werden Textprompts mehrfach zu unterschiedlichen Tageszeiten und an verschiedenen Tagen verwendet, um die Konsistenz des Outputs zu analysieren. - -### Analyse und Vergleich -Die generierten Bilder werden hinsichtlich Perspektive, Ästhetik, Wiedererkennbarkeit und semantischer Genauigkeit bewertet. Auch Unterschiede zwischen Text-to-Image und Image-to-Image Ergebnissen werden analysiert. - -### Prototyping des Webtools -Im Rahmen eines iterativen Prototypings wird ein Webtool entwickelt, in dem ausgewählte generierte Bilder durchsuchbar und interaktiv erkundbar sind. Dozent:innen oder Studieninteressierte können durch Begriffe gezielt Inhalte aufrufen. - -### Evaluation und Reflexion -Abschließend erfolgt eine qualitative Evaluation der Bildqualität und Tool-Usability, sowie eine Reflexion des kreativen und technischen Potenzials generativer KI für die Hochschulkommunikation. - -## Vorläufige Gliederung und Zeitplanung - -### Gliederung - -1. Einleitung -1.1 Problemstellung -1.2 Zielsetzung der Arbeit -1.3 Forschungsfragen -1.4 Aufbau der Arbeit - -2. Theoretische Grundlagen -2.1 Medieninformatik und Hochschulkommunikation -2.2 Interaktive Repräsentation: Definitionen und Relevanz -2.3 Prototyping und Webtools im Bildungskontext - -3. Künstliche Intelligenz und Bildgenerierung -3.1 Generative KI: Grundlagen (GANs, Diffusion Models etc.) -3.2 Text-to-Image und Image-to-Image: Vergleich und Funktionsweise -3.3 Midjourney im Einsatz: Chancen und Einschränkungen -3.4 Perspektiven in der Bildkomposition (Frontal, Vogelperspektive etc.) - -4. Stand der Technik -4.1 Bestehende Tools und Projekte zur KI-Visualisierung im Hochschulbereich -4.2 Analyse vergleichbarer Anwendungen (z. B. DALL·E, DreamStudio, Artbreeder etc.) -4.3 Relevante Forschungsergebnisse und wissenschaftliche Diskurse - -5. Eigene Vorgehensweise und Methodik -5.1 Datengrundlage: Eigene Bildaufnahmen der TH Köln -5.2 Auswahl der Räume und Motive -5.3 Anwendung von Midjourney (Text-to-Image & Image-to-Image) -5.4 Prompt-Vergleich über mehrere Tage: Konsistenztests -5.5 Analyse der Bildperspektiven und Bildwirkung -5.6 Toolentwicklung (Konzept, Funktion, Usability) - -6. Umsetzung des Prototyps -6.1 Anforderungen und Zielgruppe -6.2 Design und technische Umsetzung (Frontend/UX) -6.3 Integration der KI-generierten Visualisierungen -6.4 Suchfunktion nach Keywords (Prompts) -6.5 Evaluation und Testlauf (z. B. mit Studierenden/Dozenten) - -7. Ergebnisse und Diskussion -7.1 Erkenntnisse aus den Prompt-Tests -7.2 Analyse der visuellen Unterschiede (Tage, Perspektiven, Bildqualität) -7.3 Bewertung der Praxistauglichkeit im Hochschulkontext -7.4 Chancen und Limitationen von KI-generierten Bildern in der Studienorientierung - -8. Fazit und Ausblick -8.1 Zusammenfassung der zentralen Erkenntnisse -8.2 Kritische Reflexion der Methode und Umsetzung -8.3 Potenziale für Weiterentwicklung (z. B. VR-Campus, AR-Visualisierungen, barrierefreie Tools) - -9. Literaturverzeichnis (APA-Stil) - -### Zeitplanung - -### Woche 1: Literaturrecherche und theoretische Grundlagen - -Ziel: Fundierte Basis zu den Begriffen "generative KI", "Text-to-Image", "Image-to-Image", "Prototyping" und "Bildperspektiven" schaffen. - -Aufgaben: -1. Recherche zu aktuellen wissenschaftlichen Quellen. -2. Auswertung und Zusammenfassung relevanter Literatur. -3. Erste Gliederung der theoretischen Kapitel. -4. Beginn der Formulierung von Problemstellung und Zielsetzung. - -### Woche 2: Konzeptentwicklung und technische Planung - -Ziel: Grundlegendes Konzept für das Webtool und die KI-Experimente entwickeln. - -Aufgaben: -1. Festlegen der zu visualisierenden Räume und Studieninhalte. -2. Entscheidung über technische Tools (Midjourney). -3. Entwurf des UI/UX-Konzepts für das Webtool (Skizzen, Wireframes). -4. Definition der Testmethodik: Wie und wann werden die Prompts getestet? -5. Klärung datenschutzrechtlicher Fragen bei Bildaufnahmen mit Personen. - -### Woche 3: Fotografie der TH Köln – Räume und Umgebung - -Ziel: Eigenes Bildmaterial erzeugen, das später durch die KI verarbeitet wird. - -Aufgaben: -1. Fotografieren ausgewählter Campus-Räume (z. B. Seminarräume, Labore, Aufenthaltsbereiche). -2. Fokus auf unterschiedliche Perspektiven (Frontalansicht, Vogelperspektive, schräge Winkel). -3. Auswahl der geeignetsten Fotos für die Weiterverarbeitung. -4. Dokumentation der Aufnahmesituation (Zeitpunkt, Wetter, Licht, Perspektive). - -### Woche 4: Erste Midjourney-Tests (Image-to-Image + Perspektivenanalyse) -Ziel: Erste Transformationen mit KI durchführen, Bildwirkung untersuchen. - -Aufgaben: -1. Auswahl einzelner Bilder für Image-to-Image-Transformation in Midjourney. -2. Einsatz verschiedener Prompts zur Erzeugung fotorealistischer Varianten. -3. Untersuchung, wie Perspektiven (z. B. frontal vs. schräg) das KI-Ergebnis beeinflussen. -4. Dokumentation der Ergebnisse inkl. Prompt, Bildquelle und Output. - -### Woche 5: Text-to-Image-Generierung & Konsistenztests -Ziel: Verlässlichkeit und Bildstil der KI analysieren. - -Aufgaben: -1. Anwendung identischer Prompts an verschiedenen Tagen. -2. Vergleich der Ergebnisse auf Unterschiede bei Stil, Details und Komposition. -3. Entwicklung einer Bewertungsmatrix (z. B. Realitätsnähe, Verständlichkeit, Symbolik). -4. Auswahl der besten Ergebnisse für das Webtool. - -### Woche 6: Bildvergleich & Interpretation der Unterschiede -Ziel: Analytischer Vergleich aller generierten Bilder. - -Aufgaben: -1. Gegenüberstellung von Image-to-Image- und Text-to-Image-Ergebnissen. -2. Identifikation von typischen Mustern, Abweichungen, Stärken und Schwächen. -3. Bewertung, welche Varianten besonders geeignet für die Studiengangsvisualisierung sind. -4. Reflexion der Perspektivenwirkung. - -### Woche 7: Prototyping des Webtools -Ziel: Funktionierender Prototyp des interaktiven Tools. - -Aufgaben: -1. Entwicklung eines durchsuchbaren Webtools (z. B. nach Raum, Motiv, Prompt-Stichwort). -2. Implementierung einer simplen Benutzeroberfläche (HTML/JS oder mit Figma klickbar). -3. Integration der generierten Bilder in das Tool. -4. Test des Tools im Hinblick auf einfache Bedienbarkeit und technische Funktionalität. - -### Woche 8: Usability-Tests & Tool-Anpassung -Ziel: Erste Nutzertests und Optimierung des Tools. - -Aufgaben: -1. Durchführung eines kleinen Nutzertests (z. B. mit Studierenden oder Dozent:innen). -2. Sammlung von Feedback zur Navigation, Bildwahl, Verständlichkeit. -3. Optimierung von Design und Funktionalität anhand der Rückmeldungen. -4. Vorbereitung der Ergebnisdokumentation. - -### Woche 9: Evaluation, Analyse & Abschluss -Ziel: Abschließende Bewertung der Ergebnisse und Fertigstellung der Arbeit. - -Aufgaben: -1. Zusammenfassung der Ergebnisse: Was zeigt die KI gut? Wo sind Grenzen? -2. Reflexion: Wie kann generative KI Studieninhalte visualisieren und Kommunikation verbessern? -3. Fertigstellung der schriftlichen Arbeit (Feinschliff, Formatierung, Abgabevorbereitung). -4. Erstellung einer Präsentation (optional für Verteidigung/Kolloquium). - -## Grundlegene Literatur - -Moser, H., & Nake, F. (2012). Medieninformatik: Eine Einführung. Springer. -Seel, N. M. (Hrsg.). (2012). Enzyklopädie der Medienpädagogik. Springer VS. -Schnotz, W. (2014). Multimedia Learning – Theory and Research. In: R. Mayer (Hrsg.), The Cambridge Handbook of Multimedia Learning. Cambridge University Press. -Goodfellow, I., Bengio, Y., & Courville, A. (2016). Deep Learning. MIT Press. -Kietzmann, J., Paschen, J., & Treen, E. (2018). Artificial intelligence in advertising: How marketers can leverage AI. Journal of Advertising Research, 58(3), 263–267. -Floridi, L. (2019). The Logic of Information: A Theory of Philosophy as Conceptual Design. Oxford University Press. -Boehm, G. (2007). Wie Bilder Sinn erzeugen. Berlin University Press. -Kepes, G. (1944). Language of Vision. Dover Publications. -Arnheim, R. (2004). Kunst und Sehen: Eine Psychologie des schöpferischen Auges. de Gruyter. -Jäger, S. (2015). Bildperspektiven – Theorie und Analyse visueller Kommunikation. UVK Verlag. -Preece, J., Rogers, Y., & Sharp, H. (2015). Interaction Design: Beyond Human-Computer Interaction. Wiley. -Garrett, J. J. (2011). The Elements of User Experience: User-Centered Design for the Web and Beyond. New Riders. -Tidwell, J. (2020). Designing Interfaces: Patterns for Effective Interaction Design. O’Reilly. -Ramesh, A. et al. (2021). Zero-Shot Text-to-Image Generation. -Saharia, C. et al. (2022). Photorealistic Text-to-Image Diffusion Models with Deep Language Understanding. -Nichol, A. et al. (2022). GLIDE: Towards Photorealistic Image Generation and Editing with Text-Guided Diffusion Models. -Ho, J. et al. (2020). Denoising Diffusion Probabilistic Models. NeurIPS. - -## Literaturverzeichnis -Dörner, R., Broll, W., Grimm, P., & Jung, B. (2016). Virtual and Augmented Reality (VR/AR). Springer. -Goodfellow, I., Pouget-Abadie, J., Mirza, M., Xu, B., Warde-Farley, D., Ozair, S., Courville, A., & Bengio, Y. (2014). Generative adversarial nets. Advances in Neural Information Processing Systems, 27, 2672–2680. -Isola, P., Zhu, J. Y., Zhou, T., & Efros, A. A. (2017). Image-to-image translation with conditional adversarial networks. In Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition (pp. 1125–1134). -McCloud, S. (1993). Understanding Comics: The Invisible Art. Harper Perennial. -Preece, J., Rogers, Y., & Sharp, H. (2015). Interaction Design: Beyond Human-Computer Interaction (4th ed.). Wiley. -Ramesh, A., Dhariwal, P., Nichol, A., Chu, C., & Chen, M. (2022). Hierarchical Text-Conditional Image Generation with CLIP Latents. arXiv preprint arXiv:2204.06125. -Rogers, Y., Sharp, H., & Preece, J. (2011). Interaction Design: Beyond Human-Computer Interaction (3rd ed.). Wiley. -Saharia, C., Chan, W., Saxena, S., Li, L., Salimans, T., Ho, J., & Fleet, D. J. (2022). Photorealistic Text-to-Image Diffusion Models with Deep Language Understanding. arXiv preprint arXiv:2205.11487. diff --git a/_works/2025-niemczyk-ermira/titles-and-research-questions.md b/_works/2025-niemczyk-ermira/titles-and-research-questions.md deleted file mode 100644 index 5d52d4a..0000000 --- a/_works/2025-niemczyk-ermira/titles-and-research-questions.md +++ /dev/null @@ -1,36 +0,0 @@ -## Titel und Zielsetzung - -#Mögliche Titel - -1. User Experience Design für KI-gestützte Hochschulkommunikation: Konzeption und prototypische Umsetzung einer Webseite zur visuellen Darstellung der TH Köln -2. Gestaltung einer interaktiven Benutzeroberfläche zur Präsentation von KI-generierten Bildwelten – Eine UX-orientierte Herangehensweise für den Studiengang Medieninformatik -3. Entwicklung einer interaktiven Webseite zur Darstellung KI-generierter Bildkonzepte der TH Köln – Eine Anwendung von Text-to-Image-Systemen in der Hochschulkommunikation -4. KI-generierte Bildkonzepte zur realistischen Visualisierung von Hochschulräumen und Studieninhalten der Medieninformatik – Ein Ansatz zur Förderung der visuellen Kommunikation -5. Symbolische und realistische Bildkonzepte im Vergleich – Eine Analyse KI-generierter Visualisierungen im Kontext der Studiengangskommunikation an der TH Köln -6. Visuelle Kommunikation mit KI-gestützten Bildwelten: Eine Anwendung des Drei-Ebenen-Modells nach Paul Watzlawick auf Text-to-Image-Generierungen im Hochschulkontext -7. Der Einsatz generativer KI zur Darstellung von Studieninhalten – Entwicklung eines Visualisierungskonzepts für den Studiengang Medieninformatik an der TH Köln -8. Visuelle Kommunikation im Hochschulkontext: UX-orientierte Gestaltung einer interaktiven Weboberfläche zur Präsentation KI-generierter Bildwelten unter Anwendung des Drei-Ebenen-Modells von Paul Watzlawick -9. KI-gestützte Bildkommunikation im Hochschulkontext: UX-Design einer Webplattform auf Basis von Watzlawicks Drei-Ebenen-Modell -10. Text-to-Image trifft UX: Gestaltung einer interaktiven Plattform zur visuellen Repräsentation der Medieninformatik an der TH Köln - -#Parameter für die Erstellung der Bachelorarbeit Thesis: - -1.Interaktive Repräsentation der Medieninformatik -2.Prototyping -3.Webtool -4.Text-to-Image -5. KI generierte Visualisierung - -#Thesen mit den dargestellten Parameter: - -1. Interaktive Repräsentation der Medieninformatik durch KI-generierte Visualisierung: Entwicklung eines prototypischen Webtools auf Basis von Text-to-Image Systemen. -2. Entwicklung eines Prototyps für ein interaktives Webtool zur visuellen Repräsentation der Medieninformatik unter Einsatz generativer KI-Technologien auf Basis von Text-to-Image-Algorithmen. -3. Interaktive Visualisierung der Medieninformatik: Prototyping eines KI-basierten Webtools mit Text-to-Image-Technologien -4. Interaktive Studiengangsorientierung durch Künstiche Intelligenz: Ein prototypisches Webtool zur Repräsentation der Medieninformatik mittels Text-to-Image Verfahren. -5. Künstliche Intelligenz als visueller Wegweiser. Prototying eines Webtools zur interaktiven Studienorientierung in der Medieninformatik mit Hilfe von Text-to-Image Technologien. - -#Zielbilder - -1. Interaktive Webplattform für Studieninteressierte: Entwicklung einer benutzerfreundlichen Webseite, die KI-generierte Bilder von Hochschulräumen und Studieninhalten präsentiert, um Studieninteressierten einen realistischen Einblick in das Studium der Medieninformatik an der TH Köln zu geben. -2. Digitaler Campusführer: Erstellung eines digitalen Tools, das mittels generativer KI realistische Darstellungen von Campusbereichen bietet und so neuen Studierenden die Orientierung erleichtert. -3. Visualisierung von Studieninhalten: Entwicklung eines Systems, das abstrakte Studieninhalte durch KI-generierte Bilder veranschaulicht, um die Verständlichkeit und Attraktivität des Studiengangs Medieninformatik zu erhöhen. diff --git a/_works/2025-niklas-mehlem/04-results/images/images.html b/_works/2025-niklas-mehlem/04-results/images/images.html deleted file mode 100644 index 6363f8a..0000000 --- a/_works/2025-niklas-mehlem/04-results/images/images.html +++ /dev/null @@ -1,122 +0,0 @@ - -
  • -
    - photo-log-niklas-mehlem-2025-04-18-01 -
    -

    photo-log-niklas-mehlem-2025-04-18-01

    -

    Haar-Cascade schneidet bei den Stichproben-Tests zu schlecht ab. Aufgrund zu vieler False-Positives wird das Modell nicht weiter in der Arbeit getestet.

    -

    Haar-Cascade schneidet bei den Stichproben-Tests zu schlecht ab. Aufgrund zu vieler False-Positives wird das Modell nicht weiter in der Arbeit getestet.

    - -
    -
    -
  • -
  • -
    - photo-log-niklas-mehlem-2025-04-18-02 -
    -

    photo-log-niklas-mehlem-2025-04-18-02

    -

    Test, ob Haar-Cascade bessere Ergebnisse erzielt, wenn ein Bild mit höherer Auflösung verwendet wird. Die Bereiche der erkannten Gesichter wurden kaum bis gar nicht genauer, während die Anzahl an False-Positives stark zunahm.

    -

    Test, ob Haar-Cascade bessere Ergebnisse erzielt, wenn ein Bild mit höherer Auflösung verwendet wird. Die Bereiche der erkannten Gesichter wurden kaum bis gar nicht genauer, während die Anzahl an False-Positives stark zunahm.

    - -
    -
    -
  • -
  • -
    - photo-log-niklas-mehlem-2025-04-18-03 -
    -

    photo-log-niklas-mehlem-2025-04-18-03

    -

    Ergebnis von dlib HOG beim Stichproben Tests für 1er Portraits. Das Modell hat scheinbar Schwierigkeiten große Gesichter zu erkennen.

    -

    Ergebnis von dlib HOG beim Stichproben Tests für 1er Portraits. Das Modell hat scheinbar Schwierigkeiten große Gesichter zu erkennen.

    - -
    -
    -
  • -
  • -
    - photo-log-niklas-mehlem-2025-04-18-04 -
    -

    photo-log-niklas-mehlem-2025-04-18-04

    -

    Ergebnis von dlib HOG beim Stichproben Test für 3er Portraits. Dlib HOG, welches zuvor gezeigt hat das es große Gesichter nicht oder nur schwer erkennen kann, scheint deutlich besser kleinere Gesichter zu erkennen. Es könnte sich also in spezifischen Kontexten besser eignen als andere Modelle.

    -

    Ergebnis von dlib HOG beim Stichproben Test für 3er Portraits. Dlib HOG, welches zuvor gezeigt hat das es große Gesichter nicht oder nur schwer erkennen kann, scheint deutlich besser kleinere Gesichter zu erkennen. Es könnte sich also in spezifischen Kontexten besser eignen als andere Modelle.

    - -
    -
    -
  • -
  • -
    - photo-log-niklas-mehlem-2025-05-16-05 -
    -

    photo-log-niklas-mehlem-2025-05-16-05

    -

    Bild bei dem caffe alle Bereiche markieren sollte von denen es denkt sie enthalten Gesichter. So sollte ein minimaler Grenzwert bestimmt werden, aber das Ergebnis ist zu Chaotisch so der Test mit einem Grenzwert von 0.10 Wiederholt wurde.

    -

    Bild bei dem caffe alle Bereiche markieren sollte von denen es denkt sie enthalten Gesichter. So sollte ein minimaler Grenzwert bestimmt werden, aber das Ergebnis ist zu Chaotisch so der Test mit einem Grenzwert von 0.10 Wiederholt wurde.

    - -
    -
    -
  • -
  • -
    - photo-log-niklas-mehlem-2025-05-16-06 -
    -

    photo-log-niklas-mehlem-2025-05-16-06

    -

    Bild bei dem cnn alle Gesichter markieren sollte die es erkennt. Andere Modelle haben bei Tests ohne Confidence Grenzwert oft mindestens ein paar False-Positives. CNN ist relativ streng wodurch es aber auch in manchen Bildern keine Gesichter erkennt.

    -

    Bild bei dem cnn alle Gesichter markieren sollte die es erkennt. Andere Modelle haben bei Tests ohne Confidence Grenzwert oft mindestens ein paar False-Positives. CNN ist relativ streng wodurch es aber auch in manchen Bildern keine Gesichter erkennt.

    - -
    -
    -
  • -
  • -
    - photo-log-niklas-mehlem-2025-05-16-07 -
    -

    photo-log-niklas-mehlem-2025-05-16-07

    -

    Bild aus den 'Confidence Tests' um einen geeigneten Grenzwert für caffe zu finden. Der Confidence Wert für das erkannte Gesicht ist niedriger als für manche False-Positives im Bild, was das bestimmen eines geeigneten Grenzwerts erschwert.

    -

    Bild aus den 'Confidence Tests' um einen geeigneten Grenzwert für caffe zu finden. Der Confidence Wert für das erkannte Gesicht ist niedriger als für manche False-Positives im Bild, was das bestimmen eines geeigneten Grenzwerts erschwert.

    - -
    -
    -
  • -
  • -
    - photo-log-niklas-mehlem-2025-05-16-08 -
    -

    photo-log-niklas-mehlem-2025-05-16-08

    -

    Bild aus dem finalen Test durchlauf zur Bestimmung geeigneter Gesichtsmodelle. Wie zu sehen wurden zwei Gesichter jeweils von nur einem Modell markiert. Daran zeigt sich das nicht ein Modell allein geeignet ist und je nach Kontext ein möglichst passendes gewählt werden sollte.

    -

    Bild aus dem finalen Test durchlauf zur Bestimmung geeigneter Gesichtsmodelle. Wie zu sehen wurden zwei Gesichter jeweils von nur einem Modell markiert. Daran zeigt sich das nicht ein Modell allein geeignet ist und je nach Kontext ein möglichst passendes gewählt werden sollte.

    - -
    -
    -
  • -
  • -
    - photo-log-niklas-mehlem-2025-06-06-09 -
    -

    photo-log-niklas-mehlem-2025-06-06-09

    -

    Aller erste Version des GUI des CranachDetektors, die Auswahl der Modelle muss an dieser Stelle noch implementiert werden. Die Erstellung eines GUI war eine der schwierigsten Teile der Entwicklung des Moduls.

    -

    Aller erste Version des GUI des CranachDetektors, die Auswahl der Modelle muss an dieser Stelle noch implementiert werden. Die Erstellung eines GUI war eine der schwierigsten Teile der Entwicklung des Moduls.

    - -
    -
    -
  • -
  • -
    - photo-log-niklas-mehlem-2025-06-06-10 -
    -

    photo-log-niklas-mehlem-2025-06-06-10

    -

    Finale Version des GUI des CranachDetektors. Aufgrund von Zeit Mangel muss das Design sehr simpel gehalten werden.

    -

    Finale Version des GUI des CranachDetektors. Aufgrund von Zeit Mangel muss das Design sehr simpel gehalten werden.

    - -
    -
    -
  • -
  • -
    - photo-log-niklas-mehlem-2025-06-06-11 -
    -

    photo-log-niklas-mehlem-2025-06-06-11

    -

    Der Detektor verwirft nun Duplikate falls mehrere Modelle das selber Gesicht markieren. Dabei wird der kleinste aller markierten Bereiche behalten.

    -

    Der Detektor verwirft nun Duplikate falls mehrere Modelle das selber Gesicht markieren. Dabei wird der kleinste aller markierten Bereiche behalten.

    - -
    -
    -
  • \ No newline at end of file diff --git a/_works/2025-niklas-mehlem/04-results/images/metadata.json b/_works/2025-niklas-mehlem/04-results/images/metadata.json deleted file mode 100644 index 407cc98..0000000 --- a/_works/2025-niklas-mehlem/04-results/images/metadata.json +++ /dev/null @@ -1,145 +0,0 @@ -[ - { - "src": "images/photo-log-niklas-mehlem-2025-04-18-01-s.webp", - "metadata": { - "Title": "photo-log-niklas-mehlem-2025-04-18-01", - "Description": "Haar-Cascade schneidet bei den Stichproben-Tests zu schlecht ab. Aufgrund zu vieler False-Positives wird das Modell nicht weiter in der Arbeit getestet.", - "Rights": "Ursprungs Bild aus https://lucascranach.org/de/DE_SKD_GG1906BB/", - "Caption": "Haar-Cascade schneidet bei den Stichproben-Tests zu schlecht ab. Aufgrund zu vieler False-Positives wird das Modell nicht weiter in der Arbeit getestet.", - "Headline": "photo-log-niklas-mehlem-2025-04-18-01", - "ImageWidth": 870, - "ImageHeight": 1600, - "Orientation": "portrait" - } - }, - { - "src": "images/photo-log-niklas-mehlem-2025-04-18-02-s.webp", - "metadata": { - "Title": "photo-log-niklas-mehlem-2025-04-18-02", - "Description": "Test, ob Haar-Cascade bessere Ergebnisse erzielt, wenn ein Bild mit höherer Auflösung verwendet wird. Die Bereiche der erkannten Gesichter wurden kaum bis gar nicht genauer, während die Anzahl an False-Positives stark zunahm.", - "Rights": "Ursprungs Bild aus https://lucascranach.org/de/DE_SKD_GG1906BB/", - "Caption": "Test, ob Haar-Cascade bessere Ergebnisse erzielt, wenn ein Bild mit höherer Auflösung verwendet wird. Die Bereiche der erkannten Gesichter wurden kaum bis gar nicht genauer, während die Anzahl an False-Positives stark zunahm.", - "Headline": "photo-log-niklas-mehlem-2025-04-18-02", - "ImageWidth": 885, - "ImageHeight": 1600, - "Orientation": "portrait" - } - }, - { - "src": "images/photo-log-niklas-mehlem-2025-04-18-03-s.webp", - "metadata": { - "Title": "photo-log-niklas-mehlem-2025-04-18-03", - "Description": "Ergebnis von dlib HOG beim Stichproben Tests für 1er Portraits. Das Modell hat scheinbar Schwierigkeiten große Gesichter zu erkennen. ", - "Rights": "Ursprungs Bild aus https://lucascranach.org/de/CH_SORW_1925-1b/", - "Caption": "Ergebnis von dlib HOG beim Stichproben Tests für 1er Portraits. Das Modell hat scheinbar Schwierigkeiten große Gesichter zu erkennen. ", - "Headline": "photo-log-niklas-mehlem-2025-04-18-03", - "ImageWidth": 1216, - "ImageHeight": 1600, - "Orientation": "portrait" - } - }, - { - "src": "images/photo-log-niklas-mehlem-2025-04-18-04-s.webp", - "metadata": { - "Title": "photo-log-niklas-mehlem-2025-04-18-04", - "Description": "Ergebnis von dlib HOG beim Stichproben Test für 3er Portraits. Dlib HOG, welches zuvor gezeigt hat das es große Gesichter nicht oder nur schwer erkennen kann, scheint deutlich besser kleinere Gesichter zu erkennen. Es könnte sich also in spezifischen Kontexten besser eignen als andere Modelle.", - "Rights": "Ursprungs Bild aus https://lucascranach.org/de/DE_SKD_GG1906BB/", - "Caption": "Ergebnis von dlib HOG beim Stichproben Test für 3er Portraits. Dlib HOG, welches zuvor gezeigt hat das es große Gesichter nicht oder nur schwer erkennen kann, scheint deutlich besser kleinere Gesichter zu erkennen. Es könnte sich also in spezifischen Kontexten besser eignen als andere Modelle.", - "Headline": "photo-log-niklas-mehlem-2025-04-18-04", - "ImageWidth": 880, - "ImageHeight": 1600, - "Orientation": "portrait" - } - }, - { - "src": "images/photo-log-niklas-mehlem-2025-05-16-05-s.webp", - "metadata": { - "Title": "photo-log-niklas-mehlem-2025-05-16-05", - "Description": "Bild bei dem caffe alle Bereiche markieren sollte von denen es denkt sie enthalten Gesichter. So sollte ein minimaler Grenzwert bestimmt werden, aber das Ergebnis ist zu Chaotisch so der Test mit einem Grenzwert von 0.10 Wiederholt wurde.", - "Rights": "Ursprungs Bild aus dem Cranach Digital Archive: https://lucascranach.org/de/DE_MdbKL_44/", - "Caption": "Bild bei dem caffe alle Bereiche markieren sollte von denen es denkt sie enthalten Gesichter. So sollte ein minimaler Grenzwert bestimmt werden, aber das Ergebnis ist zu Chaotisch so der Test mit einem Grenzwert von 0.10 Wiederholt wurde.", - "Headline": "photo-log-niklas-mehlem-2025-05-16-05", - "ImageWidth": 1204, - "ImageHeight": 1600, - "Orientation": "portrait" - } - }, - { - "src": "images/photo-log-niklas-mehlem-2025-05-16-06-s.webp", - "metadata": { - "Title": "photo-log-niklas-mehlem-2025-05-16-06", - "Description": "Bild bei dem cnn alle Gesichter markieren sollte die es erkennt. Andere Modelle haben bei Tests ohne Confidence Grenzwert oft mindestens ein paar False-Positives. CNN ist relativ streng wodurch es aber auch in manchen Bildern keine Gesichter erkennt.", - "Rights": "Bild aus dem Cranach Digital Archive: https://lucascranach.org/de/DE_MdbKL_44/", - "Caption": "Bild bei dem cnn alle Gesichter markieren sollte die es erkennt. Andere Modelle haben bei Tests ohne Confidence Grenzwert oft mindestens ein paar False-Positives. CNN ist relativ streng wodurch es aber auch in manchen Bildern keine Gesichter erkennt.", - "Headline": "photo-log-niklas-mehlem-2025-05-16-06", - "ImageWidth": 1197, - "ImageHeight": 1600, - "Orientation": "portrait" - } - }, - { - "src": "images/photo-log-niklas-mehlem-2025-05-16-07-s.webp", - "metadata": { - "Title": "photo-log-niklas-mehlem-2025-05-16-07", - "Description": "Bild aus den 'Confidence Tests' um einen geeigneten Grenzwert für caffe zu finden. Der Confidence Wert für das erkannte Gesicht ist niedriger als für manche False-Positives im Bild, was das bestimmen eines geeigneten Grenzwerts erschwert. ", - "Rights": "Ursprungsbild aus dem Cranach Digital Archive: https://lucascranach.org/de/DE_ND_ND001b/", - "Caption": "Bild aus den 'Confidence Tests' um einen geeigneten Grenzwert für caffe zu finden. Der Confidence Wert für das erkannte Gesicht ist niedriger als für manche False-Positives im Bild, was das bestimmen eines geeigneten Grenzwerts erschwert. ", - "Headline": "photo-log-niklas-mehlem-2025-05-16-07", - "ImageWidth": 712, - "ImageHeight": 1600, - "Orientation": "portrait" - } - }, - { - "src": "images/photo-log-niklas-mehlem-2025-05-16-08.PNG-s.webp", - "metadata": { - "Title": "photo-log-niklas-mehlem-2025-05-16-08", - "Description": "Bild aus dem finalen Test durchlauf zur Bestimmung geeigneter Gesichtsmodelle. Wie zu sehen wurden zwei Gesichter jeweils von nur einem Modell markiert. Daran zeigt sich das nicht ein Modell allein geeignet ist und je nach Kontext ein möglichst passendes gewählt werden sollte.", - "Rights": "Ursprungsbild aus dem Cranach Digital Archive: https://lucascranach.org/de/DE_GNMN_Gm1352/", - "Caption": "Bild aus dem finalen Test durchlauf zur Bestimmung geeigneter Gesichtsmodelle. Wie zu sehen wurden zwei Gesichter jeweils von nur einem Modell markiert. Daran zeigt sich das nicht ein Modell allein geeignet ist und je nach Kontext ein möglichst passendes gewählt werden sollte.", - "Headline": "photo-log-niklas-mehlem-2025-05-16-08", - "ImageWidth": 1168, - "ImageHeight": 1600, - "Orientation": "portrait" - } - }, - { - "src": "images/photo-log-niklas-mehlem-2025-05-24-09-s.webp", - "metadata": { - "Title": "photo-log-niklas-mehlem-2025-06-06-09", - "Description": "Aller erste Version des GUI des CranachDetektors, die Auswahl der Modelle muss an dieser Stelle noch implementiert werden. Die Erstellung eines GUI war eine der schwierigsten Teile der Entwicklung des Moduls. ", - "Rights": "Abgebildetes Gemäldes kommt aus dem Cranach Digital Archive: https://lucascranach.org/de/AT_KHM_GG6905/", - "Caption": "Aller erste Version des GUI des CranachDetektors, die Auswahl der Modelle muss an dieser Stelle noch implementiert werden. Die Erstellung eines GUI war eine der schwierigsten Teile der Entwicklung des Moduls. ", - "Headline": "photo-log-niklas-mehlem-2025-06-06-09", - "ImageWidth": 1189, - "ImageHeight": 1600, - "Orientation": "portrait" - } - }, - { - "src": "images/photo-log-niklas-mehlem-2025-05-30-10-s.webp", - "metadata": { - "Title": "photo-log-niklas-mehlem-2025-06-06-10", - "Description": "Finale Version des GUI des CranachDetektors. Aufgrund von Zeit Mangel muss das Design sehr simpel gehalten werden. ", - "Rights": "Gemälde aus dem Cranach Digital Archive: https://lucascranach.org/de/DE_SWK_6545/", - "Caption": "Finale Version des GUI des CranachDetektors. Aufgrund von Zeit Mangel muss das Design sehr simpel gehalten werden. ", - "Headline": "photo-log-niklas-mehlem-2025-06-06-10", - "ImageWidth": 1600, - "ImageHeight": 941, - "Orientation": "landscape" - } - }, - { - "src": "images/photo-log-niklas-mehlem-2025-06-02-11-s.webp", - "metadata": { - "Title": "photo-log-niklas-mehlem-2025-06-06-11", - "Description": "Der Detektor verwirft nun Duplikate falls mehrere Modelle das selber Gesicht markieren. Dabei wird der kleinste aller markierten Bereiche behalten.", - "Rights": "Gemälde aus dem Cranach Digital Archive: https://lucascranach.org/de/DE_SWK_6545/", - "Caption": "Der Detektor verwirft nun Duplikate falls mehrere Modelle das selber Gesicht markieren. Dabei wird der kleinste aller markierten Bereiche behalten.", - "Headline": "photo-log-niklas-mehlem-2025-06-06-11", - "ImageWidth": 1600, - "ImageHeight": 937, - "Orientation": "landscape" - } - } -] \ No newline at end of file diff --git a/_works/2025-niklas-mehlem/04-results/images/photo-log-niklas-mehlem-2025-04-18-01-s.webp b/_works/2025-niklas-mehlem/04-results/images/photo-log-niklas-mehlem-2025-04-18-01-s.webp deleted file mode 100644 index 8327ffb..0000000 Binary files a/_works/2025-niklas-mehlem/04-results/images/photo-log-niklas-mehlem-2025-04-18-01-s.webp and /dev/null differ diff --git a/_works/2025-niklas-mehlem/04-results/images/photo-log-niklas-mehlem-2025-04-18-02-s.webp b/_works/2025-niklas-mehlem/04-results/images/photo-log-niklas-mehlem-2025-04-18-02-s.webp deleted file mode 100644 index 9bf4516..0000000 Binary files a/_works/2025-niklas-mehlem/04-results/images/photo-log-niklas-mehlem-2025-04-18-02-s.webp and /dev/null differ diff --git a/_works/2025-niklas-mehlem/04-results/images/photo-log-niklas-mehlem-2025-04-18-03-s.webp b/_works/2025-niklas-mehlem/04-results/images/photo-log-niklas-mehlem-2025-04-18-03-s.webp deleted file mode 100644 index f720bc6..0000000 Binary files a/_works/2025-niklas-mehlem/04-results/images/photo-log-niklas-mehlem-2025-04-18-03-s.webp and /dev/null differ diff --git a/_works/2025-niklas-mehlem/04-results/images/photo-log-niklas-mehlem-2025-04-18-04-s.webp b/_works/2025-niklas-mehlem/04-results/images/photo-log-niklas-mehlem-2025-04-18-04-s.webp deleted file mode 100644 index 0a69e48..0000000 Binary files a/_works/2025-niklas-mehlem/04-results/images/photo-log-niklas-mehlem-2025-04-18-04-s.webp and /dev/null differ diff --git a/_works/2025-niklas-mehlem/04-results/images/photo-log-niklas-mehlem-2025-05-16-05-s.webp b/_works/2025-niklas-mehlem/04-results/images/photo-log-niklas-mehlem-2025-05-16-05-s.webp deleted file mode 100644 index f8fbeca..0000000 Binary files a/_works/2025-niklas-mehlem/04-results/images/photo-log-niklas-mehlem-2025-05-16-05-s.webp and /dev/null differ diff --git a/_works/2025-niklas-mehlem/04-results/images/photo-log-niklas-mehlem-2025-05-16-06-s.webp b/_works/2025-niklas-mehlem/04-results/images/photo-log-niklas-mehlem-2025-05-16-06-s.webp deleted file mode 100644 index 907b513..0000000 Binary files a/_works/2025-niklas-mehlem/04-results/images/photo-log-niklas-mehlem-2025-05-16-06-s.webp and /dev/null differ diff --git a/_works/2025-niklas-mehlem/04-results/images/photo-log-niklas-mehlem-2025-05-16-07-s.webp b/_works/2025-niklas-mehlem/04-results/images/photo-log-niklas-mehlem-2025-05-16-07-s.webp deleted file mode 100644 index 4c0b465..0000000 Binary files a/_works/2025-niklas-mehlem/04-results/images/photo-log-niklas-mehlem-2025-05-16-07-s.webp and /dev/null differ diff --git a/_works/2025-niklas-mehlem/04-results/images/photo-log-niklas-mehlem-2025-05-16-08.PNG-s.webp b/_works/2025-niklas-mehlem/04-results/images/photo-log-niklas-mehlem-2025-05-16-08.PNG-s.webp deleted file mode 100644 index a5ccbec..0000000 Binary files a/_works/2025-niklas-mehlem/04-results/images/photo-log-niklas-mehlem-2025-05-16-08.PNG-s.webp and /dev/null differ diff --git a/_works/2025-niklas-mehlem/04-results/images/photo-log-niklas-mehlem-2025-05-24-09-s.webp b/_works/2025-niklas-mehlem/04-results/images/photo-log-niklas-mehlem-2025-05-24-09-s.webp deleted file mode 100644 index dc1be85..0000000 Binary files a/_works/2025-niklas-mehlem/04-results/images/photo-log-niklas-mehlem-2025-05-24-09-s.webp and /dev/null differ diff --git a/_works/2025-niklas-mehlem/04-results/images/photo-log-niklas-mehlem-2025-05-30-10-s.webp b/_works/2025-niklas-mehlem/04-results/images/photo-log-niklas-mehlem-2025-05-30-10-s.webp deleted file mode 100644 index 9b19548..0000000 Binary files a/_works/2025-niklas-mehlem/04-results/images/photo-log-niklas-mehlem-2025-05-30-10-s.webp and /dev/null differ diff --git a/_works/2025-niklas-mehlem/04-results/images/photo-log-niklas-mehlem-2025-06-02-11-s.webp b/_works/2025-niklas-mehlem/04-results/images/photo-log-niklas-mehlem-2025-06-02-11-s.webp deleted file mode 100644 index 858013c..0000000 Binary files a/_works/2025-niklas-mehlem/04-results/images/photo-log-niklas-mehlem-2025-06-02-11-s.webp and /dev/null differ diff --git a/_works/2025-nikolic-stefan/01-resarch-area-analysis/Concept Map.pdf b/_works/2025-nikolic-stefan/01-resarch-area-analysis/Concept Map.pdf new file mode 100644 index 0000000..1165420 Binary files /dev/null and b/_works/2025-nikolic-stefan/01-resarch-area-analysis/Concept Map.pdf differ diff --git a/_works/2022-probst-maxim/01-resarch-area-analysis/README.md b/_works/2025-nikolic-stefan/01-resarch-area-analysis/README.md similarity index 100% rename from _works/2022-probst-maxim/01-resarch-area-analysis/README.md rename to _works/2025-nikolic-stefan/01-resarch-area-analysis/README.md diff --git a/_works/2025-nikolic-stefan/01-resarch-area-analysis/Schlagwortwolke.pdf b/_works/2025-nikolic-stefan/01-resarch-area-analysis/Schlagwortwolke.pdf new file mode 100644 index 0000000..8208ff2 Binary files /dev/null and b/_works/2025-nikolic-stefan/01-resarch-area-analysis/Schlagwortwolke.pdf differ diff --git a/_works/2025-nikolic-stefan/02-titles-and-research-questions.md b/_works/2025-nikolic-stefan/02-titles-and-research-questions.md new file mode 100644 index 0000000..0c59986 --- /dev/null +++ b/_works/2025-nikolic-stefan/02-titles-and-research-questions.md @@ -0,0 +1,21 @@ +# Titel und Forschungsfrage + +Bitte notieren Sie mindestens 10 mögliche Titel der Arbeit und mindestens 5 mögliche Forschungsfragen/ Zielsetzungen in dieses Dokument. + +# Mögliche Titel: +1. Automatisierte Mehrsprachigkeit für IPTC-Metadaten — Entwicklung eines Neural Machine Translation(NMT)-gestützten Webprototyps und Evaluationsstudie. +2. NMT für Metadaten: Prototyp einer Web-Lösung zur automatischen Übersetzung von IPTC-Feldern. +3. Multilinguale IPTC-Felder. Ein webbasiertes System zur automatisierten Metadatenübersetzung. +4. Übersetzungsautomation im Digital Asset Managment: NMT-Integration für IPTC-Metadaten. +5. Qualitätssichere NMT-Erweiterung für IPTC - Konzeption und prototypische Webimplementierung. +6. Automatische Mehrsprachigkeit für IPTC-Felder mittels Neural Machine Translation. +7. UI-Dashboard für automatische Übersetzung von IPTC-Feldern mit Hilfe von Neural Machine Translation. +8. Translation für IPTC-Metadaten: Entwicklung und Evaluation eines NMT-basierten Prototyps. +9. Nachvollziebare Metadatenübersetzung. Entwicklung eines transparenten NMT-Webprotyps für IPTC-Daten. +10. Feldkontextbasierte NMT_Übersetzung für IPTC-Daten. + +# Zielbilder: +1. Am Ende liegt ein benutzbarer Web-Prototyp vor, der IPTC-Standardfelder automatisch in mehrere Zielsprachen übersetzt . User können Übersetzungen prüfen/korrekturlesen und exportieren. +2. Es existiert ein leicht integrierbarer Import-Export-Prototyp und ein einfaches UI-Dashboard, das Übersetzungsstatus, Fehlermeldungen und Änderungsverfolgung visualisiert. +3. Jede Übersetzung wird versioniert, mit Modelldetails, Confidence-Scores und Änderungsverlauf dokumentiert. +4. diff --git a/_works/2024-polarek-nils/03-expose.md b/_works/2025-nikolic-stefan/03-expose.md similarity index 100% rename from _works/2024-polarek-nils/03-expose.md rename to _works/2025-nikolic-stefan/03-expose.md diff --git a/_works/2025-nikolic-stefan/04-results/Inhaltsverzeichnis_PP.pdf b/_works/2025-nikolic-stefan/04-results/Inhaltsverzeichnis_PP.pdf new file mode 100644 index 0000000..9528b34 Binary files /dev/null and b/_works/2025-nikolic-stefan/04-results/Inhaltsverzeichnis_PP.pdf differ diff --git a/_works/2025-nikolic-stefan/04-results/Praxisprojekt_Stefan_Nikolic_2025.pdf b/_works/2025-nikolic-stefan/04-results/Praxisprojekt_Stefan_Nikolic_2025.pdf new file mode 100644 index 0000000..012be96 Binary files /dev/null and b/_works/2025-nikolic-stefan/04-results/Praxisprojekt_Stefan_Nikolic_2025.pdf differ diff --git a/_works/2022-probst-maxim/04-results/README.md b/_works/2025-nikolic-stefan/04-results/README.md similarity index 100% rename from _works/2022-probst-maxim/04-results/README.md rename to _works/2025-nikolic-stefan/04-results/README.md diff --git a/_works/_template/01-resarch-area-analysis/README.md b/_works/_template/01-resarch-area-analysis/README.md deleted file mode 100644 index 8311bbc..0000000 --- a/_works/_template/01-resarch-area-analysis/README.md +++ /dev/null @@ -1,3 +0,0 @@ -# Themenfeldanalyse - -Bitte legen Sie Ihre Concept Map zur Themenfeldanalyse hier als PDF ab. Die Datei sollte nicht größer als 2 Mbyte sein. \ No newline at end of file diff --git a/_works/_template/02-titles-and-research-questions.md b/_works/_template/02-titles-and-research-questions.md deleted file mode 100644 index 9a47e53..0000000 --- a/_works/_template/02-titles-and-research-questions.md +++ /dev/null @@ -1,3 +0,0 @@ -# Titel und Forschungsfrage - -Bitte notieren Sie mindestens 10 mögliche Titel der Arbeit und mindestens 5 mögliche Forschungsfragen/ Zielsetzungen in dieses Dokument. \ No newline at end of file diff --git a/_works/_template/03-expose.md b/_works/_template/03-expose.md deleted file mode 100644 index f6b88a1..0000000 --- a/_works/_template/03-expose.md +++ /dev/null @@ -1,3 +0,0 @@ -# Exposé - -Bitte schreiben Sie Ihr Exposé in diese Markdown Datei. \ No newline at end of file diff --git a/_works/_template/04-results/README.md b/_works/_template/04-results/README.md deleted file mode 100644 index 7742390..0000000 --- a/_works/_template/04-results/README.md +++ /dev/null @@ -1,3 +0,0 @@ -# Ergebnisse - -Bitte legen Sie Ihre Ergebnisse hier ab. Achten Sie bitte auf moderate Dateigrößen. Bitte legen Sie nur geschlossene Dokument, z.B. PDF statt *.doc ab. \ No newline at end of file diff --git a/_works/a-meisenhelter/01-resarch-area-analysis/Concept Map.pdf b/_works/a-meisenhelter/01-resarch-area-analysis/Concept Map.pdf deleted file mode 100644 index 06cb758..0000000 Binary files a/_works/a-meisenhelter/01-resarch-area-analysis/Concept Map.pdf and /dev/null differ diff --git a/_works/a-meisenhelter/01-resarch-area-analysis/Wortwolke.pdf b/_works/a-meisenhelter/01-resarch-area-analysis/Wortwolke.pdf deleted file mode 100644 index 8e878e2..0000000 Binary files a/_works/a-meisenhelter/01-resarch-area-analysis/Wortwolke.pdf and /dev/null differ diff --git a/_works/a-meisenhelter/02-titles-and-research-questions.md b/_works/a-meisenhelter/02-titles-and-research-questions.md deleted file mode 100644 index 6c2970d..0000000 --- a/_works/a-meisenhelter/02-titles-and-research-questions.md +++ /dev/null @@ -1,29 +0,0 @@ -# Titel und Forschungsfrage - -## Titel - -* Analyse der Barrierefreiheit von tchibo-mobile.de unter Berücksichtigung der WCAG-Normen und Erarbeitung von - Handlungspunkten -* Analyse der Barrierefreiheit einer Website für Mobilfunk-Dienstleistungen unter Berücksichtigung der WCAG-Normen und - Erarbeitung von Handlungspunkten - * Am Beispiel von tchibo-mobile.de -* Untersuchung von tchibo-mobile.de auf Barrieren für Menschen mit Behinderungen und Konzeption von Lösungsansätzen -* Untersuchung und Optimierung von tchibo-mobile.de hinsichtlich Barrieren für Menschen mit Behinderung -* Untersuchung und Konzeption von Lösungsansätzen für tchibo-mobile.de hinsichtlich Barrieren für Menschen mit - Behinderung -* Untersuchung und Konzeption einer barrierefreien Website am Beispiel von tchibo-mobile.de -* Entwicklung einer barrierearmen Website - * Evaluation und Konzeption einer Website nach barrierearmen Web-Prinzipien der WCAG am Beispiel von - tchibo-mobile.de -* **Analyse der Zugänglichkeit eines Nutzerportals für Mobilfunk-Dienstleitungen und Erarbeitung von - Optimierungsansätzen** - * **Am Beispiel von tchibo-mobile.de** - -## Forschungsfragen - -1. Was sind Standards der Barrierefreiheit? Wie werden diese Standards gemessen? -2. Welche Standards sind für eine Nutzerportal relevant? -3. Wie schneidet tchibo-mobil.de bei diesen Standards ab? -4. Wie wird das Portal genutzt? Welche/ wie viele Nutzer hat das Portal? Wie viele der Nutzer haben im Durchschnitt eine - Behinderung? -5. Welche Optimierungsmöglichkeiten gibt es für tchibo-mobile.de? diff --git a/_works/a-meisenhelter/03-expose.md b/_works/a-meisenhelter/03-expose.md deleted file mode 100644 index effe13f..0000000 --- a/_works/a-meisenhelter/03-expose.md +++ /dev/null @@ -1,103 +0,0 @@ -# Analyse der Zugänglichkeit eines Nutzerportals für Mobilfunk-Dienstleitungen und Erarbeitung von Optimierungsansätzen, am Beispiel von tchibo-mobile.de - -## Problemfeld und Kontext - -Das Web ist für die meisten Menschen mittlerweile ein fester Bestandteil des Alltags geworden. Die Bedeutung des -Internets nimmt stetig zu und immer mehr Menschen nutzen das Internet, um sich über Produkte und Dienstleistungen zu -informieren oder Transaktionen durchzuführen. - -Für viele ist die Bedienung einer Website eine Selbstverständlichkeit. Für Menschen mit Behinderungen stellt die -Bedienung einer Website jedoch eine Herausforderung mit vielen Barrieren dar. Die Barrierefreiheit von Websites ist ein -wichtiges Thema, da Menschen mit Behinderungen aufgrund der Barrieren nur in der Lage sind einen Teil der Informationen -zu erhalten, welche für die Allgemeinheit verfügbar sind. - -Eine barrierefreie Website ermöglicht es Menschen mit Behinderungen wie Sehbehinderungen, Hörbehinderungen, kognitiven -Einschränkungen oder motorischen Behinderungen, die Website zu nutzen und die Informationen und Dienstleistungen, die -sie benötigen, zu erhalten. Aber auch Menschen ohne Behinderungen profitieren von einer barrierefreien Website, indem -sie schnellere und effizientere Zugang zu Informationen und Dienstleistungen bekommen. - -## Zielsetzung - -Die Zielsetzung dieser Arbeit ist es, die Zugänglichkeit des Kundenportals tchibo-mobile.de sowie die Benutzung des -Portals zu analysieren und basierend auf den Ergebnissen Optimierungsmöglichkeiten zu erarbeiten. - -## Aufgabenstellung - -Die Zielsetzung dieser Arbeit ist es, die Zugänglichkeit des Kundenportals tchibo-mobile.de zu analysieren und -Optimierungsmöglichkeiten zu erarbeiten. Dazu stellen sich folgende Unterfragen, welche in dieser Arbeit beantwortet -werden sollen: - -1. Was sind Standards der Barrierefreiheit? Wie werden diese Standards gemessen? -2. Welche Standards sind für eine Nutzerportal relevant? -3. Wie schneidet tchibo-mobil.de bei diesen Standards ab? -4. Wie wird das Portal genutzt? Welche/ wie viele Nutzer hat das Portal? Wie viele der Nutzer haben im Durchschnitt eine - Behinderung? -5. Welche Optimierungsmöglichkeiten gibt es für tchibo-mobile.de? - -## Lösungsansätze und Ressourcen - -Im folgenden werden einige Lösungsansätze aufgeführt, welche zur Lösung der Aufgabenstellung verwendet werden können. -Im Rahmen dieser Arbeit werden die Ansätze genauer betrachtet, evaluiert und in die Arbeit integriert. - -### WCAG 2.1 (https://www.w3.org/TR/WCAG21/) - -Die Web Content Accessibility Guidelines (WCAG) 2.1 sind ein Webstandard des W3C aus dem Jahr 2018 und sollen die -Zugänglichkeit und Nutzbarkeit von Webseiten, Nicht-Web-Dokumenten und Software für Menschen mit Behinderungen -sicherstellen. Die WCAG sind jedoch sehr umfangreich und müssen daher auf die jeweilige Nutzungssituation angepasst -werden. - -### Statistisches Bundesamt (https://www.destatis.de/DE/Home/_inhalt.html) - -Das Statistische Bundesamt ist eine deutsche Bundesoberbehörde und hat die Aufgabe, amtliche Statistiken zu erheben, -zu verarbeiten und zu veröffentlichen. Die Statistiken des Statistischen Bundesamtes können genutzt werden, um -Informationen über die Nutzung des Internets und die Anzahl der Menschen mit Behinderungen in Deutschland zu erhalten. - -### Tchibo Mobile (https://www.tchibo-mobile.de/) - -Tchibo Mobile ist ein deutscher Mobilfunkanbieter. In Zusammenarbeit mit Tchibo Mobile kann die Nutzung des -Kundenportals -im hinblick auf die Zugänglichkeit analysiert werden. - -## Chancen und Risiken - -Diese Arbeit bietet die Chance eine Website zugänglicher für alle zu gestalten und einen Beitrag für die Allgemeinheit -zu leisten. Dazu legt diese Arbeit die Grundlage, auf welcher die erarbeiteten Optimierungsmöglichkeiten, für -tchibo-mobile.de, umgesetzt werden können, bspw. in einer Bachelor-Thesis. Die Arbeit bietet zudem die Möglichkeit -die eigenen Fähigkeiten und Kenntnisse im Bereich der Barrierefreihen Webentwicklung zu erweitern. - -## Motivation - -Die Motivation für diese Arbeit stammt aus dem beruflichen Umfeld und dem Wunsch das Internet zugänglicher zu gestalten. -Die Agentur brandung GmbH und Tchibo Mobile unterstützen das Projekt, da sie an einer barrierefreien Website -interessiert sind. Zudem bietet das Projekt die Möglichkeit, die eigenen Fähigkeiten und Kenntnisse im Bereich der -Barrierefreiheit zu erweitern und sich auf das Barrierefreiheitsstärkungsgesetz (BFSG) vorzubereiten, welches 2025 in -Kraft tritt. - -## Durchführungskontext und zeitliche Planung - -### Setup - -Dieses Projekt soll im Rahmen des Moduls "Praxisprojekt" an der TH Köln, in Zusammenarbeit mit der Agentur brandung GmbH -und Tchibo Mobile durchgeführt werden. - -### Abhängigkeiten - -Trotz der Zusammenarbeit mit der Agentur brandung GmbH und Tchibo Mobile, ist die Durchführung des Projekts nicht von -diesen abhängig. Die Agentur brandung GmbH und Tchibo Mobile unterstützen lediglich das Projekt. - -### Meilensteine und Zeitrahmen - -Basierend auf der Aufgabenstellung und den Forschungsfragen lassen sich folgende Meilensteine definieren: - -* Sammeln von Informationen über die Barrierefreiheit von Websites -* Analyse der Standards für Barrierfreiheit für die Nutzung eines Nutzerportals -* Analyse der Zugänglichkeit von tchibo-mobile.de unter Berücksichtigung der erarbeiteten Standards -* Analyse der Nutzung von tchibo-mobile.de -* Erarbeitung von Optimierungsmöglichkeiten für tchibo-mobile.de unter Berücksichtigung der erarbeiteten Standards und - der Nutzung von tchibo-mobile.de - -## Arbeitsergebniss - -Das Ziel des Projektes ist eine dokumentierte Analyse der Zugänglichkeit des Kundenportals tchibo-mobile.de sowie die -Erstellung von Optimierungsmöglichkeiten für tchibo-mobile.de. Die dazu nötigen Prozesse sollen beschrieben und -dokumentiert werden. diff --git a/_works/a-meisenhelter/04-results/README.md b/_works/a-meisenhelter/04-results/README.md deleted file mode 100644 index 7742390..0000000 --- a/_works/a-meisenhelter/04-results/README.md +++ /dev/null @@ -1,3 +0,0 @@ -# Ergebnisse - -Bitte legen Sie Ihre Ergebnisse hier ab. Achten Sie bitte auf moderate Dateigrößen. Bitte legen Sie nur geschlossene Dokument, z.B. PDF statt *.doc ab. \ No newline at end of file diff --git a/_works/a-moujtahid/02-titles-and-reseach-questions.md b/_works/a-moujtahid/02-titles-and-reseach-questions.md deleted file mode 100644 index 99130d4..0000000 --- a/_works/a-moujtahid/02-titles-and-reseach-questions.md +++ /dev/null @@ -1,14 +0,0 @@ -# Titel und Forschungsfrage -## Titel -* Barrierefreie Webanwendungen für Sehbehinderte - Eine Untersuchung der Problematik am Beispiel von Zeit-Online und mögliche Lösungsansätze -* Verbesserung der Zugänglichkeit von Online Zeitungsportale für Sehbehinderte unter Berücksichtigung der WACG-Normen - * Am Beispiel von zeit.de -* Zugänglichkeit visueller Inhalte für Sehbehinderte: Empirische Forschung und Lösungsansätze am Beispiel von Zeit-Online -* ... - -## Forschungsfragen -* Wie können wir mithilfe von UI/UX Designs die Barrierefreiheit, für Sehbehinderte, von Webanwendungen verbessern? -* Was sind die WACG-Normen und wie werden diese Standards gemessen? -* Inwiefern können unzureichende Textbeschreibungen von Bildern und Grafiken, sowie die Unzugänglichkeit von Videos auf Zeitungsportale das barrierenfreie Nutzererlebnis von Sehbehinderten beeinträchtigen? -* Was sind Alternativtexte (alt-Tags) und wie können diese eine effektive Lösungsmöglichkeit sein? -* ... \ No newline at end of file diff --git a/_works/a-moujtahid/03-expose.md b/_works/a-moujtahid/03-expose.md deleted file mode 100644 index d84e287..0000000 --- a/_works/a-moujtahid/03-expose.md +++ /dev/null @@ -1,42 +0,0 @@ -# Zugänglichkeit visueller Inhalte für Sehbehinderte: Empirische Forschung und Lösungsansätze am Beispiel von Zeit-Online - -## Problem & Kontext -Bilder, Grafiken und Videos sind heute ein wichtiger Bestandteil von Webseiten und dienen der Vermittlung von Informationen sowie der Unterhaltung. Jedoch können Sehbehinderte Nutzer aufgrund von fehlenden oder unzureichenden Beschreibungen der visuellen Inhalte häufig nicht verstehen, was gezeigt wird. - -Dieses Problem wird durch die Tatsache verschärft, dass viele Webseitenbetreiber sich nicht an die gängigen Standards zur Barrierefreiheit halten. Ein weiteres Problem, ist, dass automatische Übersetzungs- und Vorlesefunktionen oft nicht in der Lage sind, den visuellen Inhalt der Bilder, Videos und Grafiken adäquat zu beschreiben. - -## Ziel des Projekts -Insgesamt wir dieses Praxisprojekt dazu beitragen, das Bewusstsein für die Herausforderungen und Schwierigkeiten zu erhöhen, mit denen Sehbehinderte konfrontiert sind, wenn sie visuelle Inhalte konsumieren. Darüber hinaus wird es mögliche Lösungsansätze aufzeigen, die dazu beitragen können, die Zugänglichkeit für Sehbehinderte zu verbessern. Die dokumentierte Recherche wird als wichtige Quelle zur zukünftige Forschung und Entwicklung von Technologien und Strategien, im Rahmen der Bachelorarbeit, dienen. Diese zielen darauf ab, die Barrierefreiheit für Sehbehinderte zu verbessern. - -## Komkrete Aufgaben -* Analyse der aktuellen Situation und bestehenden Barrieren für Sehbehinderte bei der Nutzung von Webanwendungen. -* Identifikation von Best Practices und Standards für barrierefreie Webanwendungen. -* Entwicklung von konkreten Lösungsansätze in ausgewählten Webanwendungen. -* Dokumentation der Lösungsansätze in ausgewählten Webanwendungen. -* Evaluation der Wirksamkeit der Lösungsansätze. - -## Lösungsansätze -* Verwendung von alternativem Text (alt-Tags) für Bilder und Grafiken -* Verwendung von ausreichend hohem Kontrast und Schriftgröße -* Verwendung von barrierefreien Formularen und Steuerelementen -* Einsatz von assitiven Tools (z.B. Screenreader, Sprachsteuerung) - -## Chancen und Risiken -### Chancen: -* Steigerung der Barrierefreiheit einer Webanwendung -* Verbesserung der Nutzerfreundlichkeit dieser Webanwendung -* Grundlage für eine Bachelorarbeit -* Eigene Fähigkeiten und Kenntnisse im Bereich der barrierefreien Web-Entwicklung zu erweitern. - -## Motivation -Stammt aus persönlichem Interesse an UI/UX-Research. - -## Benötigte Ressourcen: -* Web content accessibility guidelines (WCAG) 2.1 [https://www.w3.org/WAI/standards-guidelines/wcag/] Internationale Web-Standards des Worldwide Web Consortium (W3C) zur barrierefreien Gestaltung von Internetangeboten. -* Statistiken zur Evaluation der Lösungsansätze [https://www.destatis.de/DE/Home/_inhalt.html] -* Zeit-Online [https://www.zeit.de/] zur Analyse der Zugänglichkeit - -## Schlussfolgerung -Zusammenfassend kann festgestellt werden, dass die mangelnde Barrierefreiheit von Webanwendungen für Sehbehinderte ein bedeutendes Problem darstellt und diese Personen oft von der Nutzung von Webanwendungen ausschließt. Das Projektziel besteht darin, Lösungsansätze zu entwickeln und zu dokumentieren, um die Bedienbarkeit von Zeit-Online für Sehbehinderte zu verbessern und die Barrierefreiheit zu erhöhen. - - diff --git a/_works/a-moujtahid/planning.md b/_works/a-moujtahid/planning.md deleted file mode 100644 index 522c93c..0000000 --- a/_works/a-moujtahid/planning.md +++ /dev/null @@ -1,48 +0,0 @@ -Notiz: Diese Markdown-Datei dient zur Plannung und Strukturierung der nötigen Vorgänge für die Empirische Forschung des Projekts. Es ist wichtig zu betonen, dass die unten genannten Artefakte als Orientierungshilfe dienen und je nach Bedarf angepasst werden können. - -# Mögliche grobe Gliederung für die empirische Forschung: - -## I) Einleitung -* Hintergrund des Projekts -* Zielsetzung des Projekts -* Übersicht über die geplanten Aufgaben - -## II) Theoretische Grundlagen -* Definition von Barrierefreiheit -* Bedeutung der Barrierefreiheit für Sehbehinderte -* Best Practices und Standards zur barrierefreien Gestaltung von Webanwendungen - -## III) Methoden -* Auswahl der zu untersuchenden Webanwendung -* Beschreibung der Methoden zur Analyse und Evalutation der Barrierefreiheit -* Beschreibung der Methoden zur Identifikation und Entwicklung von Lösungsansätzen - -## IV) Ergebnisse -* Analyse der Zugänglichkeit von Zeit-Online für Sehbehinderte -* Identifikation von Barrieren und Problemen bei der Nutzung von Zeit-Online durch Sehbehinderte -* Vorstellung und Dokumentation der entwickelnden Lösungsansätze -* Evaluation der Wirksamkeit der Lösungsansätze - -## V) Diskussion -* Bewertung der Ergebnisse und Lösungsansätze -* Stärken und Schwächen der verwendeten Methoden -* Limitation der Studie und mögliche weitere Forschungsfragen - -## VI) Fazit und Ausblick -* Zusammenfassung der Ergebnisse und Schlussfolgerungen -* Empfehlungen für die Umsetzung barrierefreier Webanwendungen -* Ausblick auf zukünftige Entwicklungen und Forschungsfragen - -## VII) Anhang -* Verwendete Materialien und Ressourcen -* Dokumentation der entwickelten Lösungsansätze - - -# Vorgänge & Methoden -Für die Empirische Forschung zum Thema visueller Inhalte für Sehbehinderte **können** verschiedene Methoden und Vorgehensweisen genutzt werden: -1. Literaturanalyse: Eine umfangreiche Literaturrecherche kann durchgeführt werden, um den aktuellen Stand der Forschung zu verstehen. Hierbei können wissenschaftliche Artikel, Studien, Best Practices, Standards und Leitfäden herangezogen werden. -2. Nutzertests / Usability-Tests: um die Zugänglichkeit und Nutzbarkeit von Zeit-Online für Sehbehinderte zu bewerten. Hierbei können Sehbehinderte Nutzer eingeladen werden, um die Webseite unter realen Bedingungen zu nutzen. Die Ergebnisse dieser Tests können verwendet werden, um Schwachstellen und Bereiche mit hoher Verbesserungspotenzial zu identifizieren. -3. Expertenreview / -interview -4. Datenanalyse -5. Umfragen - diff --git a/_works/a-sadrija/03-expose.md b/_works/a-sadrija/03-expose.md deleted file mode 100644 index d5be5c0..0000000 --- a/_works/a-sadrija/03-expose.md +++ /dev/null @@ -1,59 +0,0 @@ -# apomap Redesign des Auslieferungsprozesses der apomap Driver-App - -## Beschreibung der Domäne - -Die ”apomap GmbH“ wurde im April 2020 gegründet und ist noch ein junges Unternehmen, welches sich mit der Dokumentation vom Versand von Medikamenten beschäftigt. Die Apotheken erhalten dabei einen detailierten Einblick in die fertig ausgeführten Touren. Dazu gehören unter anderem Daten wie Datum, Fahrenden Personen, Start- und Endzeit sowie erfolgreiche Zustellungen. Mit Hilfe dieser Dokumentation können verschiedene Zustellungen von Medikamenten besser verfolgt und nachvollzogen werden. -Allgemein kann alles auf zwei Bereiche aufgeteilt werden. Zum einen steht den Apotheken eine Software zur Verfügung die auf der Internetseite ”www.apomap.app“ erreichbar ist. Dort können die Apotheken ihre Touren planen und erstellen. Außerdem können sie dort weitere Daten der Dokumentation einsehen. -Zum anderen steht den Liefernden die Software ”apomap“, im folgenden auch Driver-App genannt, auf einem mobilen Endgerät zur Verfügung. Diese App soll die Fahrenden bei der Zustellung unterstützen. Auf Weiteres wird im Laufe des Kapitels noch eingegangen. -Die Anbindung der Software erfolgt über das Kassensystem, dort können die Aufträge direkt in das System eingepflegt werden. Mit der bisherigen Einbindung kann bereits ein Großteil aller Apotheken deutschlandweit direkt eingebunden werden. Mit Hilfe dieser Anbindung ist es den Apotheken möglich den Versand über apomap abzuwickeln. -Apomap plant den Versand der Produkte und erstellt eine möglichst optimale Tourenmap der auszuliefernden Produkte. Dabei wird die Tour auf die verschiedenen Fahrenden aufgeteilt, wobei verschiedene Einstellungen möglich sind. Üblicherweise wird die Tour nach der optimalen Zeit konfiguriert, aber es ist auch möglich nach der kürzesten Strecke oder nach den wenigsten Fahrenden zu berechnen. Außerdem gibt es die Möglichkeit ene Zustellung mit einer Priorität zu markieren. Die Priorität stellt Zustellungen dar, welche auf jeden Fall ausgeliefert werden müssen. Des Weiteren ist auch eine Zustellung in einem vom Kunden und Kundinnen gewünschten Zeitraum möglich. -In der Driver-App ”apomap“ bekommen die Fahrenden die Aufträge. Die Fahrenden selbst sind bei den teilnehmenden Apotheken eingestellt und dürfen dadurch rezeptpflichtige Medikamente ausliefern. Diese holen dann die Produkte, welche schon in der Reihenfolge vorsortiert sind, in der Apotheke ab und können dann ihre Tour starten. In der Driver-App sehen sie dann die geordnete Reihenfolge der Zustellung, Prioritäten sowie Zustellzeiträume. Dort kann die Route über Apple oder Google Maps navigiert werden. -Dem Kunden ist es möglich, mit einem per E-Mail versendeten Link die Zustellung zu verfolgen. -Die Driver-App wurde schnell auf den Markt gebracht und dabei ist die Gestaltung in den Hintergrund gestellt worden. Es fehlen einige Anwendungsfälle die nicht mit eingebaut wurden. Außerdem ist die Driver App unübersichltich aufgebaut und in Folge dessen ist es nicht gebrauchsfreundlich. -Im Rahmen der Bachelorarbeit wird nun eine Neugestaltung der Driver-App durchgeführt. Das Vorgehen basiert auf der Analyse des Praxisprojektes. - -## Problemraum -In dem Praxisprojekt wurde die Driver-App ausführlich analysiert. In dieser Arbeit steht nun das User Interfaces des Auslieferungsprozesses im Vordergrund. Der Auslieferungsprozess beschreibt den Vorgang in dem das Produkt dem Kunden übergeben wird. Dazu gehören die jeweiligen Schritte in der Driver-App zur Dokumentation der Auslieferung. Dabei wurden einige Schwächen, ein nicht optimaler Ablauf sowie unübersichtliche Screens aufgedeckt. Dieser Bereich ist einer der Wichtigsten in dem Auslieferungsprozess. Aufgrund dessen soll dieser optimiert und verbessert werden. Hierfür wird der Prozess noch einmal genauer analysiert und hinterfragt um diesen Vorgang zu verbessern. Zu den Problemen gehören unter anderem nicht berücksichtigte Anwendungsfälle, überflüssige Schritt, schlechte Anordnung der einzelnen Objekte sowie gestalterische Schwächen. - -## Titel - -apomap - Neugestaltung des UX Designs des Auslieferungsprozesses der Driver-Applikation - -Neugestaltung des UX Designs des Auslieferungsprozesses der apomap Driver-Applikation - - -## Forschungsfragen - -Wie kann das UX Design gestaltet werden, um den Auslieferungsprozess der apomap Driver-Applikation zu verbessern? - - -## Motivation - -Nachdem im Praxisprojekt die Driver-App analysiert wurde, bin ich sehr motiviert dieses Projekt weiterzuführen. Da nun alle theoretischen Punkte abgearbeitet wurden, kann nun mit der Umsetzung begonnen werden, worauf ich mich schon länger freue. Dabei soll eine neue und überarbeitete Benutzeroberfläche entstehen. Ich bin begeistert die festgestellten Probleme anzugehen und zu beheben. Abschließend wäre eine Übernahme in die tatsächliche App ein persönliches Highlight für mich. Das Thema bezieht sich auf eine Evaluation eines bestehendes Systems. Das System wird täglich von Zustellenden benutzt und es besteht ein enger zusammenhang zwischen dem System und den Nutzern. Die Software sowie das User Interface sollen regelmäßig evaluiert und weiterentwickelt werden. Es wird immer eine Möglichkleit geben das System zu optimieren und an den Anforderungen des Gebrauchs besser anzupassen. Als Grundlage bietet sich hier die Techniken der Medieninformatik an. - - -## Ziel - -Das Ziel der Bachelorarbeit ist die Optimierung des User Interfaces des Auslieferungsprozesses mit einem UX Desgin. In der Folge soll auch mit Hilfe des Ergebnisses der Auslieferungsprozess an sich erleichtert werden. Hierfür wird ein fertigese Konzept erstellt. Dies kann abschließend mithilfe eines Klick-Dummys verdeutlicht werden. - - -## Vorgehen - -Die Bachelorarbeit wird aus mehreren Schritten bestehen. -Zuerst werden die Schwachpunkte des User Interfaces aus dem vorherigen Projekt herausgefiltert. Hinzu kommen zusätzlich Schwächen des Auslieferungsprozesses, welche sich mit dem User Interface beheben lassen. Anschließend werden alle benötigten Elemente, welche in dem User Interface für den Auslieferungsprozess wichtig sind, abgewogen. Daraus erfolgt die Schlussfolgerung, welche Elemente weiterhin benötigt werden. Anschließend werden die Probleme im Auslieferungsprozess analysiert und priorisiert. -Anschließend werden die Nutzungsprobleme des User Interfaces erabeitet. Diese werden aus dem vorherigen Projekt gezogen und weiter vertieft. Im weiteren Verlauf werden Methoden recherchiert, mit welchen die Nutzungsprobleme behoben werden können. Anschließend werden Konzepte erstellt. Zum einen entstehen Konzepte zum allgemeinen Auslieferungsprozess und der notwendigen Schritte. Zum anderen werden Konzepte zu der Gestaltung der einzelnen Schritte im Auslieferungsprozess entwickelt. Abschließend wird ein Klick-Dummy des Auslieferungsprozesses entstehen. - - - -## Meilensteine - -- Es erfolgt eine Erarbeitung der Nutzungsprobleme. -- Anschließend werden die Nutzungsprobleme priorisiert. -- Danach wird ein Konzept der einzelnen Schritte im Auslieferungsprozess entwickelt. -- Dann wird ein Konzept des User Interface erarbeitet. -- Zur verdeutlichung wird ein Klick-Dummy erstellt. -- Abschließend wird eine Dokumentation der Arbeit erstellt. - -## Arbeitsergebnis - -Das Ergebnis der Arbeit wird ein fertiges Konzept des User Interfaces des Auslieferungsprozesses sein. Hinzu kommt eine ausführliche Dokumentation, in der erläutert wird, wie das Ergebnis zustande kommt. Außerdem wird ein Klick-Dummy entworfen. Das Konzept sowie der Klick-Dummy kann in das System übernommen werden und von Nutzern getestet werden. Diese können ein Feedback geben. Dabei können entweder Bestätigung einer Verbesserung gegeben worden oder es können Probleme des neuen User Interfaces benannt werden. \ No newline at end of file diff --git a/_works/a-sadrija/Expose_Arben_Sadrija_Bachelor.pdf b/_works/a-sadrija/Expose_Arben_Sadrija_Bachelor.pdf deleted file mode 100644 index 70cc6d1..0000000 Binary files a/_works/a-sadrija/Expose_Arben_Sadrija_Bachelor.pdf and /dev/null differ diff --git a/_works/a-zaitsev/01-resarch-area-analysis/README.md b/_works/a-zaitsev/01-resarch-area-analysis/README.md deleted file mode 100644 index 8311bbc..0000000 --- a/_works/a-zaitsev/01-resarch-area-analysis/README.md +++ /dev/null @@ -1,3 +0,0 @@ -# Themenfeldanalyse - -Bitte legen Sie Ihre Concept Map zur Themenfeldanalyse hier als PDF ab. Die Datei sollte nicht größer als 2 Mbyte sein. \ No newline at end of file diff --git a/_works/a-zaitsev/01-resarch-area-analysis/a-zaitsev-concept-map-ss23.pdf b/_works/a-zaitsev/01-resarch-area-analysis/a-zaitsev-concept-map-ss23.pdf deleted file mode 100644 index c94cdbd..0000000 Binary files a/_works/a-zaitsev/01-resarch-area-analysis/a-zaitsev-concept-map-ss23.pdf and /dev/null differ diff --git a/_works/a-zaitsev/02-titles-and-research-questions.md b/_works/a-zaitsev/02-titles-and-research-questions.md deleted file mode 100644 index 0c17ed5..0000000 --- a/_works/a-zaitsev/02-titles-and-research-questions.md +++ /dev/null @@ -1,36 +0,0 @@ - - - - -# Titel Praxisprojekt - -**Technologiescouting für AR-Inhalte im Web, am Beispiel des Kooperationsprojektes “ARlebnispfad OBK”** - -# Möglicher Titel Bachelorarbeit - -**Prototypische Umsetzung und Evaluation der Nutzung und Darstellung von AR-Inhalten im Web, am Beispiel des Kooperationsprojektes “ARlebnispfad OBK”** - -# Mögliche Titel - -- Augmented Reality im Web - Eine Analyse technischer Möglichkeiten am Beispiel des “ARlebnispfad OBK” -- AR im Web - Eine technische Analyse von Möglichkeiten und Herausforderungen -- Eine Analyse technischer Möglichkeiten der Darstellung von AR-Inhalten im Web -- Eine prototypische Evaluation der Darstellung von AR-Inhalten im Web -- Augmented Reality im Web - Eine Evaluation und prototypische Implementierung von AR-Inhalten im Browser -- Entwicklung von AR-Anwendungen für das Web - Analyse der Herausforderungen und mögliche Lösungsansätze -- Entwicklung von AR-Anwendungen für das Web - Herausforderungen und Lösungsansätze -- AR und Web-Entwicklung - Ein Überblick über die wichtigsten Werkzeuge und Bibliotheken -- AR im Web - Eine Untersuchung von Anforderungen und Limitierungen der aktuellen Technologien -- Augmented Reality im Web - Ein Vergleich von AR-Technologien und deren Umsetzbarkeit im Browser - -# Mögliche Forschungsfragen - -1. Wie können AR-Inhalte im Web technisch dargestellt werden? -2. Wie können positionsabhängige Audio- und Videoinhalte innerhalb eines AR-Erlebenisses im Web dargestellt werden? -3. Welche Herausforderungen gibt es bei der Darstellung von AR-Inhalten im Web? - -- Welchen Einfluss hat die aktuelle Inkompatibilität von WebXR auf iOS-Geräten auf die Umsetzung von AR-Erlebnissen im Web? - -In einem anderen Projekt: -- Inwiefern beeinflusst die Darstellung von AR-Inhalten im Web die Nutzungsbereitschaft dieser? - diff --git a/_works/a-zaitsev/03-expose.md b/_works/a-zaitsev/03-expose.md deleted file mode 100644 index a51f973..0000000 --- a/_works/a-zaitsev/03-expose.md +++ /dev/null @@ -1,111 +0,0 @@ -# Prototypische Evaluation der Nutzung und Darstellung von AR-Inhalten im Web, am Beispiel des Kooperationsprojektes “ARlebnispfad OBK” - -## Problemfeld und Kontext - -Im Rahmen des Projekts "Historische Augment Reality Tour 'ARlebnis OBK'" der VHS Oberberg soll entlang der [Straße der Arbeit][strasse-der-arbeit] in Wiehl und Wipperfürth ein innovatives Konzept zur digitalen Weiterbildung mittels Augmented Reality (AR) entwickelt werden. Es sollen ältere, nicht technikaffine Menschen sowie jüngere, technikaffine Menschen als auch Schulklassen gleichermaßen an neue Technologien herangeführt und ihnen gleichzeitig der Zugang zur Geschichte und Kultur ihrer Region ermöglicht werden. Der Fokus des Vorhabens liegt somit in der Förderung einer generationenübergreifenden, inklusiven und nachhaltigen Strategie zur digitalen Weiterbildung. - -Augmented Reality gehört zum Sammelbegriff Extended Reality (XR) und umfasst zusätzlich die Technologien Virtual Reality (VR) und Mixed Reality (MR). Es wird davon ausgegangen, dass sich die Marktgröße des XR-Sektors von 2023 bis 2027 mehr als verdoppeln wird ([ARtillery Intelligence, 2022][ar-market-size]). - -AR wird heutzutage in verschiedenen Formen bereits vorwiegend im E-Commerce, in Videospielen und in Social-Media Anwendungen eingesetzt ([Statista, Revenues, 2023][ar-software-statista]). Zu den bekanntesten Anwendungen gehören hierbei Pokémon Go, TikTok, Wayfair, Instagram und IKEA Place mit einem gemeinsamen Marktanteil von 55\% ([Statista, Market Shares, 2023][ar-software-statista]). - -Die meisten AR-Anwendungen werden nativ mit den von Google und Apple bereitsgestellten Software Development Kits (SDKs) [ARCore][ar-core] und [ARKit][ar-kit] entwickelt. Diese bieten den Vorteil, den direkten Zugriff auf die erforderliche Gerätehardware zu ermöglichen und somit ein performantes und nutzerfreundliches Erlebnis mit allen Funktionen anbieten zu können. Ein Nachteil hierbei ist, dass Nutzer und Nutzerinnen vor Verwendung die benötigte App herunterladen und auf dem eigenen Gerät installieren müssen. - -Eine andere Möglichkeit der Entwicklung und Darstellung von AR-Inhalten bietet die [WebXR Device API][webxr] über den Browser. Dadurch, dass die Spezifikation noch in Entwicklung ist und sich stetig verändert, ist eine einhaltliche Entwicklung über die verschiedenen Browser nicht möglich. So wird diese auf Apple iOS Geräten und der von allen auf dem Betriebssystem laufenden Browser-Engine, WebKit, gar nicht unterstützt ([Can I Use, 2023][caniuse-webxr]). Die Integration der benötigten Schnittstellen sind zwar in Entwicklung ([WebKit Bugtracker, 2023][webkit-bugtracker]), jedoch kann hier der Standpunkt nicht genau nachvollzogen werden. - -Damit AR-Inhalte trotzdem auch in Browsern angezeigt werden können, die die WebXR Device API nicht unterstützen, können externe Bibliotheken wie z. B. [AR.js][arjs], [A-Frame][aframe] oder [model-viewer][model-viewer] verwendet werden. Diese setzen intern auf Polyfills, z. B. direkter Zugriff auf benötigte Sensoren, um die fehlenden Funktionen bereitstellen zu können. - -## Zielsetzung - -Das Ziel dieses Praxisprojektes ist es, die technischen Möglichkeiten von AR-Erlebnissen im Web zu analysieren, zu evaluieren und diese dann prototypisch zu implementieren. Das Projekt findet parallel zum Wahlpflichtfach (WPF) "Digitale Kommunikation" statt und soll die dort erarbeiteten Inhalte aufgreifen. - -## Aufgabenstellung - -Anhand des zuvor beschriebenen Problemfeldes, des Kontextes und des Ziels des Praxisprojektes, kann als konkrete Aufgabenstellung das Aufzeigen technischer Möglichkeiten von AR-Erlebnissen mit Hilfe von Webtechnologien festgelegt werden. Hierbei wird der Fokus nicht auf die Erstellung der eigentlichen Inhalte, sondern auf die technische Darstellung und Interaktion mit den Inhalten im Web gelegt. - -## Lösungsansätze und Ressourcen - -Folgende Ressourcen könnten für die Bearbeitung des Projektes benötigt werden: - -- Entwicklungsumgebung -- AR-kompatibles Smartphone -- Tracking-Marker -- Geolocation Daten -- AR-Inhalte zur Darstellung (Video, Audio, Bilder, Text, 3D-Modelle) - -Folgende Literatur könnte für die Bearbeitung des Projektes verwendet werden: - -- [Web AR: A Promising Future for Mobile Augmented Reality - State of the Art, Challenges, and Insights](https://www.researchgate.net/publication/331205524_Web_AR_A_Promising_Future_for_Mobile_Augmented_Reality_-_State_of_the_Art_Challenges_and_Insights) -- [Evaluating User Acceptance using WebXR for an Augmented Reality Information System](https://ieeexplore.ieee.org/document/9419122) - -Folgende Technologien und Ressourcen könnten zur Bearbeitung der Aufgabenstellung herangezogen werden: - -- [WebXR API][webxr-mdn] -- [AR.js][arjs] -- [A-Frame][aframe] -- [Babylon.js][babylonjs] - -## Chancen und Risiken - -Durch die Bearbeitung des Projektes können vor allem die technischen Möglichkeiten zur Umsetzung von AR-Inhalten im Web aufgestellt werden. - -Bei einer erfolgreichen Umsetzung kann das Bildungsangebot für die verschiedenen Zielgruppen erweitert werden. Außerdem wird somit ein neuer Zugang zur Vermittlung von historischem Wissen ermöglicht. - -Das größte potenzielle Risiko wären Probleme bei der technischen Umsetzung der AR-Inhalte im Web-Umfeld, da die WebXR Spezifikation nicht kompatibel mit allen Browsern ist und die anderen genannten Technologien nur einen gewissen Bereich der Tracking-Methoden abdecken. - -## Motivation - -Die Motivation zur Bearbeitung des Projektes besteht zum einen aus dem Interesse zu neuen Technologien. In dem XR-Sektor ist in den nächsten Jahren mit einem erhöhten Wachstum zu rechnen, wodurch sehr gute Perspektiven für die zukünftige Entwicklung und Nutzungsbereitschaft der Technologie geboten werden. - -Als Medieninformatiker bringe ich zusätzlich im Umgang mit Webtechnologien die benötigten fachlichen Kompetenzen mit. - -Durch den Studienort am Campus Gummersbach besteht eine persönliche Bindung an den Oberbergischen Kreis. Durch das Projekt kann also ein Beitrag zur regionalen Entwicklung beigesteuert werden. - -## Durchführungskontext und zeitliche Planung - -### Setup - -Das Projekt soll im Rahmen der TH Köln parallel zum WPF "Digitale Kommunikation" durchgeführt werden. Als Initiator fungiert die VHS Oberberg als Auftraggeber zusammen mit anderen Kooperationspartnern mit direktem Interesse, jedoch ohne direkten Einfluss auf das Projekt. - -### Abhängigkeiten - -Die Durchführung des Projektes ist von den im WPF erarbeiteten Inhalten und Erkenntnissen abhängig. Diese werden im Praxisprojekt aufgegriffen, analysiert und prototypisch implementiert. Außerdem müssen die technischen Ressourcen zur Umsetzung des Projektes gegeben sein. Abhängigkeiten von den Ergebnissen dieser Projektarbeit gibt es nicht. - -### Meilensteine und Zeitrahmen - -Die zu erarbeitenden Meilensteine sind von den Inhalten des WPFs abhängig, können aber in folgende Punkte eingeteilt werden: - -- Festlegung der jeweiligen AR-Inhalte (1 Woche) -- Vergleich AR Bibliotheken/Frameworks (2 Wochen) -- Recherche zu existierenden Implementierungen (1 Woche) -- Prototypische Implementierung der Inhalte (3 Wochen) -- Cross-Browser Tests der Funktionen (1 Woche) -- Dokumentation der Ergebnisse (2 Wochen) - -Der 05.07.2023 ist im WPF als letzter Termin festgelegt. Somit könnte auch dieses Projekt bis zu diesem Termin bzw. bis Mitte Juli fertiggestellt werden. - -**Der 04.07.2023 ist im Sommersemester 2023 als der letzte Termin zur möglichen Abschlusspräsentation des Projektes festgelegt.** - -## Arbeitsergebnis - -Das Ergebnis des Praxisprojektes soll eine genaue Darstellung der Möglichkeiten zur technischen Umsetzung von AR-Inhalten im Web sein und eine Antwort auf die gestellten Forschungsfragen beinhalten. Durch diese kann den Kooperationspartnern bei Fragen zur Einbindung von neuen Inhalt eine klar definierte Antwort mit den jeweiligen Möglichkeiten geboten werden. - - - -[strasse-der-arbeit]: https://www.ich-geh-wandern.de/stra%C3%9Fe-der-arbeit-bergisches-land -[ar-market-size]: https://artilleryiq.com/reports/xr-global-revenue-forecast-2021-2026/ -[ar-software-statista]: https://www.statista.com/outlook/amo/ar-vr/ar-software/worldwide -[ar-core]: https://developers.google.com/ar -[ar-kit]: https://developer.apple.com/augmented-reality/ -[webxr]: https://www.w3.org/TR/webxr/ -[webxr-mdn]: https://developer.mozilla.org/en-US/docs/Web/API/WebXR_Device_API -[caniuse-webxr]: https://caniuse.com/webxr -[webkit-bugtracker]: https://bugs.webkit.org/show_bug.cgi?id=208988 -[arjs]: https://github.com/AR-js-org/AR.js -[aframe]: https://github.com/aframevr/aframe -[model-viewer]: https://github.com/google/model-viewer -[threejs]: https://threejs.org/ -[webgl]: https://www.khronos.org/webgl/ -[artoolkitjs]: https://github.com/artoolkitx/jsartoolkit5 -[webrtc]: https://www.w3.org/TR/webrtc/ -[webvrpolyfill]: https://aframe.io/docs/1.4.0/introduction/vr-headsets-and-webxr-browsers.html#which-browsers-does-a-frame-support -[babylonjs]: https://doc.babylonjs.com/features/featuresDeepDive/webXR/webXRARFeatures diff --git a/_works/a-zaitsev/04-results/README.md b/_works/a-zaitsev/04-results/README.md deleted file mode 100644 index 7742390..0000000 --- a/_works/a-zaitsev/04-results/README.md +++ /dev/null @@ -1,3 +0,0 @@ -# Ergebnisse - -Bitte legen Sie Ihre Ergebnisse hier ab. Achten Sie bitte auf moderate Dateigrößen. Bitte legen Sie nur geschlossene Dokument, z.B. PDF statt *.doc ab. \ No newline at end of file diff --git a/_works/anton-zaitsev-konzeption-und-entwicklung-einer-webanwendung-zur-einfachen-integration-und-verwaltung-von-augmented-reality-inhalten-am-beispiel-des-kooperationsprojektes-arlebnispfade-obk-december-11-2024-8-30-am.md b/_works/anton-zaitsev-konzeption-und-entwicklung-einer-webanwendung-zur-einfachen-integration-und-verwaltung-von-augmented-reality-inhalten-am-beispiel-des-kooperationsprojektes-arlebnispfade-obk-december-11-2024-8-30-am.md deleted file mode 100644 index 9900cf1..0000000 --- a/_works/anton-zaitsev-konzeption-und-entwicklung-einer-webanwendung-zur-einfachen-integration-und-verwaltung-von-augmented-reality-inhalten-am-beispiel-des-kooperationsprojektes-arlebnispfade-obk-december-11-2024-8-30-am.md +++ /dev/null @@ -1,23 +0,0 @@ ---- -layout: work-result -author: Anton Zaitsev -title: Konzeption und Entwicklung einer Webanwendung zur einfachen Integration - und Verwaltung von Augmented Reality Inhalten, am Beispiel des - Kooperationsprojektes «ARlebnispfade OBK» -date: 2024-12-11 -result-pdf: - - uploads/ba-thesis-anton-zaitsev-2024-09-18.pdf -slideshow: false -research-diary: false -type: Bachelorarbeit -visibility: published -status: finished -keywords: CMS, AR im Web -thumbnail: /assets/uploads/photo-log-anton-zaitsev-2024-09-18-10_hubd4f6ee98d8a4fc89b5459d6ffa9f0eb_287524_1600x0_resize_q100_linear.jpg ---- -Diese Bachelorarbeit befasst sich mit der Konzeption und Entwicklung eines speziali- sierten Content-Management-Systems zur Verwaltung von Augmented Reality Inhal- ten für das Kooperationsprojekt „ARlebnispfade OBK“. Ziel der Arbeit ist es, eine benutzerfreundliche Lösung zu schaffen, die den spezifischen Anforderungen der AR- Inhaltserstellung und -verwaltung gerecht wird. - -Die Arbeit umfasst eine detaillierte Analyse bestehender CMS-Lösungen, die Model- lierung von Anforderungen und die Entwicklung einer an das Projekte angepassten Systemarchitektur. Ein besonderer Fokus liegt auf der Integration mit dem GitHub- Repository des Kooperatonsprojekts und der Implementierung einer Vorschaufunktion für AR-Inhalte. -Das resultierende webbasierte CMS ermöglicht eine intuitive Verwaltung verschiedener AR-Inhaltstypen, bietet eine grundlegende AR-Vorschau und integriert sich nahtlos in die bestehenden Projektstrukturen. Die Arbeit schließt mit einer kritischen Evaluati- on des Systems, der Diskussion von Chancen und Risiken sowie einem Ausblick auf zukünftige Entwicklungsmöglichkeiten. - -Die Ergebnisse dieser Arbeit tragen zur Effizienzsteigerung in der AR-Inhaltsverwaltung bei und bieten eine Grundlage für die Weiterentwicklung von spezialisierten CMS im Kontext digitaler Kulturvermittlung. diff --git "a/_works/asas-vergleich-von-ai-tools-zur-automatisierten-grafikerstellung-und-erg-\314\210anzung-und-deren-einsatz-im-online-marketing-october-23-2023-12-00-am.md" "b/_works/asas-vergleich-von-ai-tools-zur-automatisierten-grafikerstellung-und-erg-\314\210anzung-und-deren-einsatz-im-online-marketing-october-23-2023-12-00-am.md" deleted file mode 100644 index d4595a8..0000000 --- "a/_works/asas-vergleich-von-ai-tools-zur-automatisierten-grafikerstellung-und-erg-\314\210anzung-und-deren-einsatz-im-online-marketing-october-23-2023-12-00-am.md" +++ /dev/null @@ -1,17 +0,0 @@ ---- -layout: work-result -author: Tobias Rutsch -related-folder: "" -title: Vergleich von AI-Tools zur automatisierten Grafikerstellung und - -ergänzung und deren Einsatz im Online-Marketing -date: 2023-10-23 -type: Bachelorarbeit -visibility: published -status: finished -keywords: KI-Tools, Grafikerstellung, Online-Marketing -partner: "" -partner-url: "" ---- -Durch den technischen Fortschritt im Bereich der künstlichen Intelligenz werden immer mehr Tools entworfen, die durch den Einsatz von KI unterschiedliche Aufgaben erfüllen. So nimmt auch die Zahl der KI-Tools zur automatisierten Grafikerstellung und -ergänzung zu. Diese können verwendet werden, um herkömmliche Prozesse der Grafikproduktion effizienter zu gestalten. Auch im Online-Marketing werden Grafiken eingesetzt, um verschiedene Zwecke zu erfüllen. Das Ziel der vorliegenden Arbeit ist es, herauszustellen, in welchen Fällen die Verwendung eines KI-Tools zur automatisierten Grafikerstellung und -ergänzung im Kontext des Online-Marketings sinnvoll sein kann. Dafür werden die Einsatzgebiete von Grafiken im Online-Marketing recherchiert und herausgestellt, welche Bearbeitungsschritte dabei vorkommen. Anschließend werden anhand dessen Anwendungsszenarien definiert, die unter Verwendung unterschiedlicher KI-Tools zur automatisierten Grafikerstellung und -ergänzung praktisch umgesetzt werden. Der Vorgang wird dabei dokumentiert und anschließend ausgewertet. Dabei erweisen sich die KI-Tools in vielen Bereichen durchaus als geeignet oder zumindest hilfreich. Im direkten Vergleich der untersuchten Tools konnten die Tools von Adobe (Generative AI und Firefly) am besten abschließen. Diese konnten die meisten Anwendungsszenarien zufriedenstellend und effizient umsetzen und empfehlen sich dadurch am meisten für die Verwendung im Kontext der Grafikerstellung und -ergänzung im Online-Marketing. - -Aufgrund vieler Limitierungen der Untersuchung dient diese Untersuchung lediglich als oberflächliche oder stichprobenartige Einschätzung der Situation. Weiterführende Forschungen mit weiteren unterschiedlichen Anwendungsszenarien, der Berücksichtigung weiterer Tools und weiteren Nutzern, die die Umsetzung der Anwendungsszenarien durchführen, könnten weitaus detailliertere Ergebnisse liefern. diff --git a/_works/b-engel/01-resarch-area-analysis/README.md b/_works/b-engel/01-resarch-area-analysis/README.md deleted file mode 100644 index 8311bbc..0000000 --- a/_works/b-engel/01-resarch-area-analysis/README.md +++ /dev/null @@ -1,3 +0,0 @@ -# Themenfeldanalyse - -Bitte legen Sie Ihre Concept Map zur Themenfeldanalyse hier als PDF ab. Die Datei sollte nicht größer als 2 Mbyte sein. \ No newline at end of file diff --git a/_works/b-engel/01-resarch-area-analysis/ResearchMap-PDF-Webinhalte.pdf b/_works/b-engel/01-resarch-area-analysis/ResearchMap-PDF-Webinhalte.pdf deleted file mode 100644 index 230b419..0000000 Binary files a/_works/b-engel/01-resarch-area-analysis/ResearchMap-PDF-Webinhalte.pdf and /dev/null differ diff --git a/_works/b-engel/02-titles-and-research-questions.md b/_works/b-engel/02-titles-and-research-questions.md deleted file mode 100644 index f40b11c..0000000 --- a/_works/b-engel/02-titles-and-research-questions.md +++ /dev/null @@ -1,34 +0,0 @@ -# Titel und Forschungsfrage - -Bitte notieren Sie mindestens 10 mögliche Titel der Arbeit und mindestens 5 mögliche Forschungsfragen/ Zielsetzungen in dieses Dokument. - -> Legende: -> - ~~durchgestrichen~~: Wurde in der Sprechstunde ausgeschlossen -> - (Zahl): Präferenz des Autors (1a = höchste Präferenz) -> - *kursiv* => **bold** : Vorherige Version => überarbeiteter Titel - - -## Mögliche Titel - -- ~~Clientseitige Generierung von PDF-Dokumenten aus HTML-Markup~~ -- *Entwicklung einer JavaScript-Bibliothek zur clientseitigen Generierung von PDF-Dokumenten aus HTML-Markup* => **Entwicklung einer JavaScript-Bibliothek zur clientseitigen Generierung von PDF-Dokumenten aus HTML-Markup und CSS-Layout**(2b) oder **Entwicklung einer JavaScript-Bibliothek zur clientseitigen Generierung von PDF-Dokumenten aus Webinhalten mit HTML-Markup und CSS-Layout** (2a) -- ~~Möglichkeiten zur clientseitigen Generierung von PDF-Dokumenten aus HTML-Markup~~ -- *PDF Dokumente aus HTML-Inhalten: Betrachtung der aktuellen Möglichkeiten und Entwicklung einer Bibliothek um die Nachteile zu minimieren* => **PDF Dokumente aus Webinhalten mit HTML und CSS: Betrachtung der aktuellen Möglichkeiten und Entwicklung einer clientseitigen Bibliothek um die Nachteile zu minimieren** (3a) oder **PDF Dokumente aus HTML-Inhalten mit CSS-Layout: Betrachtung der aktuellen Möglichkeiten und Entwicklung einer clientseitigen Bibliothek um die Nachteile zu minimieren** (3b) -- *Clientseitige Generierung von PDF-Dokumenten aus HTML-Markup: Betrachtung der aktuellen Möglichkeiten und Entwicklung einer Bibliothek um die Nachteile zu minimieren* => **Clientseitige Generierung von PDF-Dokumenten aus HTML-Markup und CSS-Layout: Betrachtung der aktuellen Möglichkeiten und Entwicklung einer Bibliothek um Nachteile zu minimieren** (1b) oder **Clientseitige Generierung von PDF-Dokumenten aus Webinhalten mit HTML-Markup und CSS-Layout: Betrachtung der aktuellen Möglichkeiten und Entwicklung einer Bibliothek um Nachteile zu minimieren** (1a) -- *Persistierung von Webinhalten als PDF-Dokumente: Entwicklung einer Bibliothek zur clientseitigen Generierung* => **Persistierung von Webinhalten als PDF-Dokumente: Entwicklung einer Bibliothek zur clientseitigen Generierung von PDFs aus HTML&CSS** (4) - -> Bei Auswahl eines Titels mit dem Keyword "Clientseitig" würde die Serverseitige Generierung nicht betrachtet werden. - -## Mögliche Forschungsfragen & Zielsetzungen -- *Wie lassen sich PDF-Dokumente clientseitig aus HTML-Markup generieren?* -- *Welche bestehenden Technologien und Methoden zur clientseitigen PDF-Generierung aus Webinhalten sind derzeit verfügbar, welche Herausforderungen besitzen sie und wie können diese gelöst werden?* -- *Wie können PDF-Dokumente aus Webinhalten generiert werden, sodass Semantik und Inhalt bestehen bleiben?* -- *Welche Möglichkeiten gibt es, PDF-Dokumente aus HTML-Markup im Browser zu generieren?* -- *Wie lassen sich Webinhalte in Form von HTML-Markup als PDF-Dokumente persistieren?* -- *Welche Möglichkeiten gibt es, PDF-Dokumente anhand von HTML-Markup im Browser zu generieren und zu persistieren?* - -### Kombiniert mit Teilfragen: -- Wie lassen sich clientseitig PDF-Dokumente aus HTML-Markup und CSS-Layout generieren? - - Welche Technologien stehen zur Zeit zur Generierung von PDF-Dokumenten zur Verfügung und welche Vor- und Nachteile bieten sie? - - Wie lassen sich die Nachteile in einer neuen Bibliothek minimieren? - - Wie lassen sich Inhalt und Layout (semantisch) korrekt in PDF-Dokumenten abbilden? diff --git a/_works/b-engel/03-expose.md b/_works/b-engel/03-expose.md deleted file mode 100644 index 4d068a8..0000000 --- a/_works/b-engel/03-expose.md +++ /dev/null @@ -1,70 +0,0 @@ -# Exposé - -## Problemfeld und Kontext - -Im Internet lassen sich schnell unzählige Informationen und Inhalte finden und abrufen. Sowohl jurnalistische Texte, Lexikonartikel, als auch Bedienungsanleitung und Stellenanzeigen lassen sich finden. Diese Inhalte werden in der Regel in Form von HTML-Seiten (Hypertext Markup Language) bereitgestellt, wodurch sie sich über ihre URL (Uniform Resource Locator) in einem Browser öffnen, darstellen und betrachten lassen. Zusätzlich können die HTML-Seiten durch den Einsatz von CSS (Cascading Style Sheet) in ein gewünschtes Layout gebracht werden. -Ein Problem für Nutzende ist, dass die Verfasser\*innen, beziehungsweise Betreibenden der Webseiten, jederzeit die Inhalte verändern, an einen anderen Ort verschieben oder löschen können. Dies führt dazu, dass Informationen verloren gehen oder nicht mehr auffindbar sind. Zusätzlich wird in der Regel für das Abrufen der HTML-Seiten und eingebetteten Dateien, wenn diese nicht lokal auf dem Computer des Nutzenden vorliegen, eine aktive Internetverbindung benötigt. -Um die Informationen auch ohne Internetverbindung verfügbar zu machen, können diese beispielsweise in Form von PDF-Dokumenten gespeichert werden. Bei PDF (Portable Document Format) handelt es sich um ein plattformunabhängiges Dateiformat, welches von Adobe entwickelt wurde und als Standard von der PDF Association weiterentwickelt wird [1]. PDF-Dokumente können auf jedem Endgerät mit einem PDF-Reader geöffnet werden und sehen unabhängig von Endgerät und Betriebssystem immer gleich aus. - -Von der Möglichkeit, aus Webinhalten PDF-Dokumente zu erstellen, profitieren sowohl Betreibende der Webangebote als auch die Nutzenden. Betreibende können einen Download als PDF anbieten, ohne das sie die Informationen zweimal aufbereiten müssen, da die Informationen bereits in Form von HTML-Markup mit CSS-Layout vorliegen, woraus das PDF-Dokument generiert wird. Dies kann beispielsweise bei kurzlebigen Stellenanzeigen hilfreich sein, die sowohl als HTML-Seite als auch als PDF-Download zur Verfügung gestellt werden. Die Generierung eines PDF-Dokuments aus dem existierenden Webinhalt kann hier Zeit und Kosten sparen. -Nutzende profitieren von einer als PDF-Dokument gespeicherten Version der Webinhalte unter anderem dadurch, dass sie diese offline nutzen können. Außerdem haben sie einen Stand der Informationen zum Zeitpunkt des Abrufs, welcher sich nicht verändert. Dies kann beispielsweise bei der Recherche von Informationen hilfreich sein. - -Die Generierung von PDF-Dokumenten anhand von Webseiten im HTML-Format unter Verwendung des durch CSS definierten Designs ist aktuell nur mit Einschränkungen möglich. -Eine Möglichkeit ist die serverseitige Generierung, hierbei wird die Webseite auf einem Server in einem Headless-Browser aufgerufen. Unter diesem versteht sich ein Browser, welcher ohne grafische Ausgabe Webinhalte abruft. Nach dem Aufruf der Seite wird diese anschließend als PDF-Dokument gespeichert und daraufhin heruntergeladen. Für diesen Prozess wird ein zusätzlicher Server benötigt, welcher durch Anschaffung und Betrieb weitere Kosten verursacht. -Eine andere Möglichkeit ist die clientseitige Generierung durch eine JS-Bibliothek (JavaScript). Es stehen verschiedene Bibliotheken zur Verfügung, welche unter anderem aus dem HTML- und CSS-Inhalten ein PDF-Dokument generieren können. Die Bibliotheken arbeiten meist mit der Methode, dass die Webseite auf die gewünschte Seitenbreite des PDFs skaliert wird und anschließend ein oder mehrere Bilder des Inhalts, ähnlich einem Bildschirmfoto, in der Größe einer PDF-Seite erstellt wird. Die daraus entstehenden Bilder werden anschließend in das PDF-Dokument eingefügt. Es kommt dazu, dass es sich nur noch um ein Bild handelt und jeglicher Text nicht mehr als Text, sondern als Teil des Bilds vorliegt. Dies hat zur Folge, dass der Text nicht mehr markiert, kopiert oder durchsucht werden kann. Die Inhalte verlieren ihre Semantik, welche sie als Teil der HTML-Seite besitzen. -Eine weitere Option ist die Generierung von PDF-Dokumenten durch den Druckdialog des Browsers. Im Gegensatz zu der clientseitigen Generierung durch eine Bibliothek geht die Semantik nicht verloren. Ein Nachteil dieser Variante ist jedoch, dass die Browser unteranderem standardmäßig Hintergrundfarben von Elementen entfernen um im wirklichen Druck Farbe zu sparen. Dadurch sehen die Inhalte nicht mehr so aus wie auf der Webseite. Zusätzlich werden Elemente, wenn sie auf einen Seitenumbruch fallen, in der Regel halbiert und auf die beiden Seiten verteilt. Dies kann dazu führen, dass beispielsweise Bilder, Tabellen oder Texte nicht mehr vollständig auf einer Seite dargestellt werden und schwerer für den Betrachter ergreifbar sind. - -## Ziel - -In dieser Masterarbeit sollen die verschiedenen Möglichkeiten der clientseitigen Generierung von PDF-Dokumenten aus HTML-Markup unter Berücksichtigung der Gestaltung durch CSS betrachtet und deren Resultate verglichen werden. Hierdurch wird der aktuelle Stand der Technik betrachtet. Anschließend soll eine Bibliothek entwickelt werden, welche die Vorteile der verschiedenen Möglichkeiten vereint und die Nachteile minimiert. Dabei soll die Bibliothek unter anderem die verschiedenen Inhalte erkennen und daraufhin als solche im PDF-Dokument darstellen, sodass die Semantik nicht verloren geht. Des Weiteren soll die Bibliothek es ermöglichen, das Layout durch Text-Dokument-typische Elemente wie Seiten-Header und -Footer, Inhaltsverzeichnis und Seitenzahlen zu erweitern. - -## Vorläufige Gliederung (weitere Unterkapitel und Veränderungen möglich) - -1. Einleitung - * Problemstellung - * Motivation - * Zielsetzung - * Kontext -2. Grundlagen des PDF-Formats - 1. Versionen von PDF (1.0, 1.1-1.4, 1.5, 1.7, 2.0) - 2. Arten von PDF - 3. Geschichte von PDF (Exkurs) - 4. Aufbau von PDF - 1. Grundstruktur - 2. Boxes / Boxmodel - 3. Datentypen - 4. Direkte und indirekte Objekte -3. Aufbau von Webseiten mit HTML und CSS - 1. Grundlagen HTML - 2. Grundlagen CSS -4. Aktueller Stand der Technik - 1. Clientseitige Generierung - 2. (Serverseitige Generierung (kurz, da Fokus auf clientseitiger Generierung)) -5. Konzeption für die Umsetzung der Bibliothek - 1. Zielsetzung - 2. Nichtfunktionale Anforderungen - 3. Funktionale Anforderungen - 4. Aufteilung der Artefakte - 5. Mögliche Komplikationen -5. Umsetzung und Entwicklung der Bibliothek - 1. PDF-Datenmodell - 2. HTML-Parsing und Interpretation - 3. Schreiben des PDFs - 4. Weitere Einblicke -6. Fazit - * Zusammenfassung - * Fazit - * Ausblick - - -## Mögliche Quellen und Literatur - -- ISO 32000-1:2008 - "Document management — Portable document format — Part 1: PDF 1.7" https://pdfa.org/resource/iso-32000-pdf/ (Zuletzt abgerufen: 04.09.2023) -- ISO 32000-2:2020 - "Document management – Portable document format – Part 2: PDF 2.0" https://pdfa.org/resource/iso-32000-pdf/ (Zuletzt abgerufen: 04.09.2023) -- Rosenthol, L., 2013. Developing with PDF: Dive Into the Portable Document Format. O’Reilly Media. -- Bienz, T., Cohn, R., & Adobe Systems (Mountain View, Calif.). 1993. Portable document format reference manual. Addison-Wesley. -- Bühler, P., Schlaich, P., Sinner, D. 2018. PDF-Grundlagen. In: Bibliothek der Mediengestaltung. Springer Vieweg, Berlin, Heidelberg. https://doi.org/10.1007/978-3-662-54615-4_1 -- Atkins, T., Etemad, E., Rivoal, F., Lilley, C. 2023. CSS Snapshot 2023, W3C Group Draft Note. https://www.w3.org/TR/2023/DNOTE-css-2023-20230214/ (Zuletzt abgerufen: 04.09.2023) -- Pieters, S., Adams, G., van Kesteren, A. 2021. CSS Object Model (CSSOM), W3C Working Draft. https://www.w3.org/TR/cssom-1/ (Zuletzt abgerufen: 04.09.2023) -- Whitington, J. 2011. PDF explained. O'Reilly Media. -- [1] PDF Association, o.D. . About the Portable Document Format. https://pdfa.org/about-us/the-portable-document-format/ (Zuletzt abgerufen: 04.09.2023) diff --git a/_works/b-engel/04-results/Masterarbeit-Benedikt-Engel.pdf b/_works/b-engel/04-results/Masterarbeit-Benedikt-Engel.pdf deleted file mode 100644 index e5d3224..0000000 Binary files a/_works/b-engel/04-results/Masterarbeit-Benedikt-Engel.pdf and /dev/null differ diff --git a/_works/b-engel/04-results/README.md b/_works/b-engel/04-results/README.md deleted file mode 100644 index 7742390..0000000 --- a/_works/b-engel/04-results/README.md +++ /dev/null @@ -1,3 +0,0 @@ -# Ergebnisse - -Bitte legen Sie Ihre Ergebnisse hier ab. Achten Sie bitte auf moderate Dateigrößen. Bitte legen Sie nur geschlossene Dokument, z.B. PDF statt *.doc ab. \ No newline at end of file diff --git a/_works/d-kuznetsov/01-resarch-area-analysis/Concept Map zur Themenfeldanalyse.pdf b/_works/d-kuznetsov/01-resarch-area-analysis/Concept Map zur Themenfeldanalyse.pdf deleted file mode 100644 index a51d826..0000000 Binary files a/_works/d-kuznetsov/01-resarch-area-analysis/Concept Map zur Themenfeldanalyse.pdf and /dev/null differ diff --git a/_works/d-kuznetsov/01-resarch-area-analysis/README.md b/_works/d-kuznetsov/01-resarch-area-analysis/README.md deleted file mode 100644 index 8311bbc..0000000 --- a/_works/d-kuznetsov/01-resarch-area-analysis/README.md +++ /dev/null @@ -1,3 +0,0 @@ -# Themenfeldanalyse - -Bitte legen Sie Ihre Concept Map zur Themenfeldanalyse hier als PDF ab. Die Datei sollte nicht größer als 2 Mbyte sein. \ No newline at end of file diff --git a/_works/d-kuznetsov/02-titles-and-research-questions.md b/_works/d-kuznetsov/02-titles-and-research-questions.md deleted file mode 100644 index 53dae80..0000000 --- a/_works/d-kuznetsov/02-titles-and-research-questions.md +++ /dev/null @@ -1,19 +0,0 @@ -## Mögliche Titel -1. State of the art in Web Audio API -2. State of the art in sound web technologies -3. Working with audio in Web -4. Working with sound using web technologies -5. Working with Web Audio API -6. Working with audio using HTML5 -7. Working with sound in modern browsers -8. Web Audio API: What can be done just with HTML5? -9. Sound technologies in Web: What can be done just with Web Audio API? -10. Sound technologies in Web: What can be done just with HTML5? - - -## Mögliche Forschungsfragen/ Zielsetzungen -1. What can be done using just the Web Audio API? -2. Explore a modern approach to working with sounds in web -3. Explore the development of technologies for working with sound in web -4. Explore the capabilities of the native browser API for working with audio -5. Explore the state of the art in web audio technology \ No newline at end of file diff --git a/_works/d-kuznetsov/03-expose.md b/_works/d-kuznetsov/03-expose.md deleted file mode 100644 index 329d33b..0000000 --- a/_works/d-kuznetsov/03-expose.md +++ /dev/null @@ -1,41 +0,0 @@ -# Exposé - -# **State-of-the-Art approach to working with sounds on the web** - -## Problem - -In the last 10-15 years, the frontend has made a big leap in development and continues to develop at a rapid pace. The modern frontend has extensive functionality that allows to create fairly complex web applications using native technologies that are supported by all major browsers. The above is also relevant for working with sound. The Web Audio API provides a powerful and versatile system for controlling audio on the Web, allowing developers to choose audio sources, add effects to audio, create audio visualizations, apply spatial effects (such as panning) and much more. At the same time, this technology is poorly covered in the technical literature, and many modern developer guides are limited to mentioning the audio tag. - -## Goals - -This master's work sets the following goals. - -- Give a brief overview of the history of working with audio on the web. -- Explore in detail capabilities of the Web Audio API and prepare an example of its use. -- Try to describe how the Web audio API will change in the future - -At the beginning, it will be explore how the working with sound in the web has changed up to the present. Topics such as the use of special tags and Flash will be mentioned. Particular attention will be paid to the disadvantages of such approaches to working with sound. - -Next, a modern approach to working with sound, which is based on the HTML5 standard, will be studied in detail. In addition, a real example of using the modern audio API will be prepared. - -At the end, an attempt will be made to find out how working with sound will change in the near future. To do this, proposals and current bugs in the Web API will be studied. - -## Time schedule - -Based on the above, the following milestones can be distinguished: - -- Collection and analysis of information about working with sound -- Studying approaches to work with sound used in the past and present -- Building a web application that demonstrates the modern capabilities of the Web Audio API -- Exploring how working with sound might change in the future -- Documentation of results -- Preparing an application code repository and deploying the application - -Duration: 16 - 24 weeks - -## Sources - -The main source of information will be the MDN site, which contains the most up-to-date data, as well as a couple of books related to technical literature, as well as corresponding github accounts. - -- Joshua D. Reiss (2022). _Working with the Web Audio API_. Focal Press -- Boris Smus (2013). _Web Audio API_. O’Reilly Media, Inc. diff --git a/_works/d-kuznetsov/04-results/README.md b/_works/d-kuznetsov/04-results/README.md deleted file mode 100644 index 7742390..0000000 --- a/_works/d-kuznetsov/04-results/README.md +++ /dev/null @@ -1,3 +0,0 @@ -# Ergebnisse - -Bitte legen Sie Ihre Ergebnisse hier ab. Achten Sie bitte auf moderate Dateigrößen. Bitte legen Sie nur geschlossene Dokument, z.B. PDF statt *.doc ab. \ No newline at end of file diff --git a/_works/f-guenthner/01-resarch-area-analysis/README.md b/_works/f-guenthner/01-resarch-area-analysis/README.md deleted file mode 100644 index 8311bbc..0000000 --- a/_works/f-guenthner/01-resarch-area-analysis/README.md +++ /dev/null @@ -1,3 +0,0 @@ -# Themenfeldanalyse - -Bitte legen Sie Ihre Concept Map zur Themenfeldanalyse hier als PDF ab. Die Datei sollte nicht größer als 2 Mbyte sein. \ No newline at end of file diff --git a/_works/f-guenthner/02-titles-and-research-questions.md b/_works/f-guenthner/02-titles-and-research-questions.md deleted file mode 100644 index 047e924..0000000 --- a/_works/f-guenthner/02-titles-and-research-questions.md +++ /dev/null @@ -1,32 +0,0 @@ -# Titel und Forschungsfrage - - -## Finaler Titel -**Augmented Reality für Flutter Web: Entwicklung eines Plugins anhand eines Praxisbeispiels** - -## Finale Forschungsfragen -**1. Was sind die Herausforderungen und Hürden bei der Entwicklung eines Augmented Reality Plugins für Flutter Web und wie können diese gelöst werden?** -**2. Was sind die spezifischen Anforderungen des identifizierten Anwendungsfalls an ein Augmented Reality-Plugin und welche Lösungsansätze eignen sich zur Erfüllung dieser Anforderungen?** - - -## Mögliche Titel -1. Praxisorientierte Plugin Entwicklung: Integration von Augmented Reality in Flutter Web mit Fallback-Lösungen -2. Augmented Reality für Flutter Web: Entwicklung eines Plugins anhand eines Praxisbeispiels -3. Augmented Reality Plugin für Flutter Web: Implementierung, Herausforderungen und Fallback-Lösungen -4. Entwicklung eines Augmented Reality Plugins für Flutter Web Anwendungen mittels WebXR-API -5. Augmented Reality für Flutter Web: Ein Plugin zur Erweiterung von Web Anwendungen -6. Erschaffen einer Augmented Reality Schnittstelle für Flutter Web: Ein Plugin basierend auf der WebXR-API -7. Anwendungsfallspezifische Entwicklung eines Augmented Reality Plugins für Flutter Web und dessen Fallback-Mechanismen -8. Anwendungsfallgestützte Augmented Reality Plugin Entwicklung für Flutter Web: Implementierung und Fallback-Strategien -9. Fokussiert auf einen Anwendungsfall: Augmented Reality in Flutter Web mit Backup-Plan -10. Umsetzung eines spezifischen Anwendungsfalls mittels eines Augmented Reality Plugins für Flutter Web: Sicherung durch Fallback-Lösungen -11. Entwicklung und Implementierung eines Fallback-sicheren Augmented Reality Plugins für Flutter Web - - -## Mögliche Forschungsfragen -1. Wie kann ein Augmented Reality Plugin in Flutter Web unter Verwendung der WebXR-API effektiv implementiert werden? -2. Was sind die Herausforderungen und Hürden bei der Entwicklung eines Augmented Reality Plugins für Flutter Web und wie können diese gelöst werden? -3. Welche spezifischen Anforderungen hat der ausgewählte Anwendungsfall an das Augmented Reality Plugin und wie können diese erfüllt werden? -4. Wie kann eine robuste und wirksame Fallback-Lösung für den Fall eines Misserfolgs bei der Implementierung des Augmented Reality Plugins entworfen und implementiert werden? -5. Wie und warum wird der Anwendungsfall für die Implementierung von Augmented Reality in einer Flutter Web App bestimmt und welche Aspekte der Augmented Reality werden hierbei besonders fokussiert? - diff --git a/_works/f-guenthner/03-expose.md b/_works/f-guenthner/03-expose.md deleted file mode 100644 index c82f2a3..0000000 --- a/_works/f-guenthner/03-expose.md +++ /dev/null @@ -1,33 +0,0 @@ -# Exposé - -## Problemfeld und Kontext -Eine bestehende Dating-App, die mit dem Framework Flutter entwickelt wurde, soll um das Feature „Virtuelle Geschenke“ erweitert werden. Dadurch können Benutzer ihren Matches virtuelle Geschenke senden. Diese Geschenke werden mithilfe von Augmented Reality (AR) im Umfeld der Benutzer dargestellt. Diese Funktionalität konnte aufgrund fehlender AR-Plugins für Flutter Web bislang nicht implementiert werden (Pub Dev, 2023). Das Ziel dieser Arbeit besteht daher darin, ein solches AR-Plugin für die Web-Plattform zu entwickeln und damit die gewünschte Funktionalität in der App zu ermöglichen. - -Augmented Reality gehört zur Gruppe der Extended Reality-Technologien, die unsere Sinne erweitern, einschließlich Virtual Reality und Mixed Reality (Microsoft, 2023). Durch AR wird die physische Welt mit der digitalen Welt verbunden und ermöglicht eine begrenzte Interaktion mit digitalen Elementen, die über eine reale Ansicht eingeblendet werden. Im Jahr 2021 wurde der Wert des mobilen Augmented-Reality-Marktes auf 12,45 Milliarden US-Dollar geschätzt. Es wird prognostiziert, dass der Wert bis 2026 auf über 36 Milliarden US-Dollar ansteigt. Der Markt umfasst digitale Güter wie In-App-Käufe in AR-Anwendungen sowie Werbeplatzierungen und Visualisierungssoftware (ARtillery Intelligence, 2023). Dies unterstreicht das Potenzial von AR und die Notwendigkeit, diese Technologie für Flutter Web zugänglich zu machen. Die Entwicklung eines solchen Plugins würde die Grenzen des Möglichen erweitern und das Potenzial von Flutter als Werkzeug für die Erstellung interaktiver, immersiver Web-Erlebnisse verbessern. - -Für IOS und Android sind kompatible Software-Entwicklungskits für AR verfügbar (Google Developers, 2023). Für die Web-Plattform gibt es die WebXR-API, die AR-Erfahrungen im Web bereitstellen soll. Diese befindet sich jedoch noch in der Entwicklung, verändert sich stetig und hat einige Einschränkungen in Bezug auf Geräte und Browser-Kompatibilität (MDN Web Docs, 2023). Zum Beispiel gibt es keine Unterstützung für IOS-Geräte (Can I Use, 2023). Zudem weist Flutter Web trotz seiner Stabilität noch einige Probleme auf, darunter Leistungsschwankungen abhängig vom verwendeten Renderer, fehlende Web-APIs und Herausforderungen bei der Plugin-Entwicklung (Günthner, 2023). Vor diesem Hintergrund stellt sich die Frage, inwiefern ein AR-Plugin entwickelt werden kann. Da das Risiko eines Misserfolgs besteht, wird in der Forschungsarbeit mit einem Fallback gearbeitet, der im Falle eines Scheiterns der Entwicklung zum Einsatz kommt. - -## Problem -Zum aktuellen Zeitpunkt (25.07.2023) existiert im Flutter-Ökosystem kein Plugin, das die Umsetzung von AR-Erfahrungen für Flutter Web ermöglicht. - -## Zielsetzung -Entwicklung und Konzeption eines AR-Plugins für das Flutter-Ökosystem, um AR-Funktionalitäten in Flutter Web zu ermöglichen. Dieses Plugin sollte in der Lage sein, einen spezifischen Anwendungsfall zu unterstützen, der auf der in der Praxis entwickelten App basiert. - -## Ergebnisse -Die Forschung zielt darauf ab, zu klären, ob die Entwicklung und Veröffentlichung eines funktionalen AR-Plugins für Flutter Web möglich ist, das gleichzeitig einen spezifischen Anwendungsfall unterstützt. - -## Forschungsfragen -1. Wie kann ein Argumented Reality Plugin in Flutter Web unter Verwendung der WebXR-API effektiv implementiert werden? -2. Was sind die Herausforderungen und Hürden bei der Entwicklung eines Argumented Reality Plugins für Flutter Web und wie können diese gelöst werden? -3. Welche spezifischen Anforderungen hat der ausgewählte Anwendungsfall an das Argumented Reality Plugin und wie können diese erfüllt werden? -4. Wie kann eine robuste und wirksame Fallback-Lösung für den Fall eines Misserfolgs bei der Implementierung des Argumented Reality Plugins entworfen und implementiert werden? -5. Wie und warum wird der Anwendungsfall für die Implementierung von Argumented Reality in einer Flutter Web App bestimmt und welche Aspekte der Argumented Reality werden hierbei besonders fokussiert? - -## Quellen -- Microsoft. (2023). Was ist Augmented Reality oder AR?. Abgerufen am 25. Juli 2023, von https://dynamics.microsoft.com/de-de/mixed-reality/guides/what-is-augmented-reality-ar/ -- ARtillery Intelligence. (2023). Mobile augmented reality (AR) market revenue worldwide from 2021 to 2026. Abgerufen am 25. Juli 2023, von https://www.statista.com/statistics/282453/mobile-augmented-reality-market-size/ -- Felix Günthner. (2023). Entwicklung einer produktionsreifen Progressive Web App mit dem Cross-Platform Framework Flutter. Abgerufen am 25. Juli 2023, von https://drive.google.com/file/d/1g0p2afaJWmL5J9aKgsMcmmHsgIOlZm_A/view?usp=sharing -- Can I Use. (2023). Can I use WebXR Device API. Abgerufen am 24. Juli 2023, von https://caniuse.com/webxr -- Google Developers. (2023). Make the world your canvas. Abgerufen am 25. Juli 2023, von https://developers.google.com/ar?hl=en -- MDN Web Docs. (2023). WebXR Device API. Abgerufen am 25. Juli 2023, von https://developer.mozilla.org/en-US/docs/Web/API/WebXR_Device_API -- Pub Dev. (2023). The official package repository for Dart and Flutter apps. Abgerufen am 25. Juli 2023, von [https://pub.dev](https://pub.dev/) \ No newline at end of file diff --git a/_works/f-guenthner/04-results/README.md b/_works/f-guenthner/04-results/README.md deleted file mode 100644 index 5b10fd3..0000000 --- a/_works/f-guenthner/04-results/README.md +++ /dev/null @@ -1,32 +0,0 @@ -# Ergebnisse - -## Kurzfassung -Im Fokus dieser Arbeit steht die Erweiterung einer existierenden Dating-App, die mit dem Cross-Plattform Framework Flutter entwickelt wurde. Die App soll um das Feature „Virtuelle Geschenke“ mittels Augmented Reality (AR) erweitert werden. Die Arbeit adressiert das Fehlen eines AR-Plugins für Flutter Web, das AR-Erlebnisse für Flutter Web ermöglicht. Das angestrebte Ziel ist die Entwicklung eines AR-Plugins, das den spezifischen Anwendungsfall „Virtuelle Geschenke“ unterstützt und die bestehende Lücke im Flutter-Ökosystem schließt. Vor dem Hintergrund einer Prognose des mobilen AR-Markts, der bis 2026 einen Wert von über 36 Milliarden US-Dollar erreichen soll, wird das Potenzial der AR-Technologie und ihre Bedeutung für das Flutter-Ökosystem verdeutlicht. - - -Um das Ziel zu erreichen, wurde eine Anforderungserhebung durchgeführt und die Entwicklung in zwei Sprints aufgeteilt. Das Ziel konnte weitgehend erreicht werden. Es erfüllt vier von fünf funktionalen und sieben von acht nicht-funktionalen Anforderungen. Die Interaktion mit AR-Objekten und die universelle Kompatibilität mit Smartphones und Webbrowsern wurden jedoch als Einschränkungen identifiziert. Das Plugin ist [hier](https://pub.dev/packages/flutter_web_xr) verfügbar. - - -Die Ergebnisse dieser Arbeit erweitern die Möglichkeiten von Flutter für die Erstellung interaktiver, immersiver Web-Erlebnisse und positionieren Flutter als wichtigen Akteur im Bereich der AR-Webanwendungen. Die Arbeit unterstreicht das Potenzial von Flutter im Web-Bereich und zeigt, dass es mit etablierten Web-Frameworks konkurrieren kann. Trotz einiger Limitationen und Herausforderungen bietet die Forschungsarbeit eine solide Grundlage für zukünftige Entwicklungen und leistet einen wertvollen Beitrag zum Flutter-Ökosystem und zur Web-Entwicklung im Allgemeinen. Das entsprechende GitHub-Repository mit dem Quellcode und weiteren Informationen finden Sie [hier](https://github.com/Felix2019/flutter-web-ar-plugin). - -Keywords: Flutter Web, Plugin, Augmented Reality, WebXR, Three.js - - -## Abstract - -The focus of this thesis is on extending an existing dating app developed with the cross-platform framework Flutter. The app is to be enhanced with the feature „Virtual Gifts“ through Augmented Reality (AR). The work addresses the lack of an AR plugin for Flutter Web that enables AR experiences for Flutter Web. The desired goal is to develop an AR plugin that supports the specific use case of „Virtual Gifts“ and fills the existing gap in the Flutter ecosystem. Against the backdrop of a forecast for the mobile AR market, which is expected to reach a value of over 36 billion US dollars by 2026, the potential of AR technology and its significance for the Flutter ecosystem are highlighted. - -To achieve the goal, a requirements gathering was conducted, and the development was divided into two sprints. The objective was largely achieved, fulfilling four out of five functional and seven out of eight non-functional requirements. However, interaction with AR objects and universal compatibility with smartphones and web browsers were identified as limitations. The plugin is available [here](https://pub.dev/packages/flutter_web_xr). - -The results of this work expand the capabilities of Flutter for creating interactive, immersive web experiences and position Flutter as a key player in the field of AR web applications. The work underscores the potential of Flutter in the web domain and demonstrates that it can compete with established web frameworks. Despite some limitations and challenges, the research provides a solid foundation for future developments and makes a valuable contribution to the Flutter ecosystem and web development in general. The corresponding GitHub repository with the source code and additional information can be found [here](https://github.com/Felix2019/flutter-web-ar-plugin). - -Keywords: Flutter Web, Plugin, Augmented Reality, WebXR, Three.js - - -## Arbeit - -[Bachelorarbeit](./bachelorarbeit_felix_guenthner.pdf) - -## Repository - -[https://github.com/Felix2019/flutter-web-ar-plugin](https://github.com/Felix2019/flutter-web-ar-plugin) \ No newline at end of file diff --git a/_works/f-guenthner/04-results/bachelorarbeit_felix_guenthner.pdf b/_works/f-guenthner/04-results/bachelorarbeit_felix_guenthner.pdf deleted file mode 100644 index cd928f8..0000000 Binary files a/_works/f-guenthner/04-results/bachelorarbeit_felix_guenthner.pdf and /dev/null differ diff --git a/_works/j-alamdar/01-resarch-area-analysis/Concept Map.pdf b/_works/j-alamdar/01-resarch-area-analysis/Concept Map.pdf deleted file mode 100644 index b79b17c..0000000 Binary files a/_works/j-alamdar/01-resarch-area-analysis/Concept Map.pdf and /dev/null differ diff --git a/_works/j-alamdar/02-titles-and-research-questions.md b/_works/j-alamdar/02-titles-and-research-questions.md deleted file mode 100644 index 54e470b..0000000 --- a/_works/j-alamdar/02-titles-and-research-questions.md +++ /dev/null @@ -1,25 +0,0 @@ -# Titel und Forschungsfrage -## Titel - -1. Entwicklung und Evaluierung einer Micro Frontend-Architektur mit Svelte.js und Tailwind CSS -2. Design und Evaluierung von Micro Frontends anhand der Konzeption und Entwicklung einer Web App using Svelte und Tailwind CSS -3. Design, Implementierung und Evaluierung einer Micro Frontend Architektur zur Verbesserung der Skalierbarkeit und Wartbarkeit von Webanwendungen -4. Design, Implementierung und Evaluation eines Micro Frontend Frameworks zur Verbesserung der Skalierbarkeit und Wartbarkeit von großen Webanwendungen -5. **Evaluierung und Vergleich von Micro Frontend-Frameworks für skalierbare und flexible Webanwendungen** -6. Verbesserung der Benutzererfahrung und Benutzeroberfläche durch die Verwendung von Micro Frontends in Webanwendungen -7. Micro Frontends: Frameworks und Technologien im Kontext -8. Bewertung und Analyse der Leistung , Skalierbarkeit und Entwicklererfahrung von Microfrontend Frameworks in großen Webanwendungen -9. Vergleich und Bewertung von JavaScript-Frameworks für die Entwicklung von Micro Frontends -10. **Untersuchung und Vergleich verschiedener Ansätze zur Implementierung von Microfrontends** - -## Forschungsfragen - -1. Wann ist sinnvoll über Microfrontend nachdenken ? -2. Welche Vor- und Nachteile hat ein Microfrontend? -3. Welche Entwicklungswerkzeuge und Frameworks sind am besten geeignet, um Microfrontends zu erstellen und zu verwalten? -4. Wie beeinflussen die verschiedenen Microfrontend Frameworks die Performance und Ladezeiten von Webanwendungen ? -5. Welche Frameworks bieten die besten Tools und Methoden, um das Testen und die Qualitätssicherung von Micro Frontends zu erleichtern? -6. Welche Herausforderungen treten typischerweise bei der Implementierung von Micro Frontends auf? -7. Wie einfach ist es, Änderungen und Updates in einem Microfrontend Framework durchzuführen, ohne Auswirkungen auf andere Module zu haben? -8. Welche verschiedenen Ansätze zur Implementierung von Microfrontends existieren, und wie unterscheiden sie sich in Bezug auf Architektur, Integration und Kommunikation? -9. Welche Erfahrungen haben Unternehmen gemacht, die bereits Microfrontends implementiert haben, und welche Empfehlungen können daraus abgeleitet werden? \ No newline at end of file diff --git a/_works/j-alamdar/03-expose.md b/_works/j-alamdar/03-expose.md deleted file mode 100644 index 1cb6da2..0000000 --- a/_works/j-alamdar/03-expose.md +++ /dev/null @@ -1,162 +0,0 @@ -# Exposé für eine Masterarbeit zum Thema: -**Untersuchung und Vergleich verschiedener Ansätze zur Implementierung von Microfrontends** - -## Vorgelegt von: -Javad Alamdar\ -Merowinger Str 192\ -40225 Düsseldorf\ -E-Mail: javad.alamdar@smail.th-koeln.de - -Matrikelnummer: 11136142\ -MA Medieninformatik\ -Datum: 11.09.2023 - -## Einleitung - -In den letzten Jahren hat sich die Landschaft der Webarchitekturen erheblich verändert. Diese Veränderungen sind auf die Einführung neuer Trends und Technologien zurückzuführen, die Art und Weise, wie Webanwendungen entwickelt und verwaltet werden, revolutioniert haben. Heutzutage müssen Webseiten hochwertig, reaktionsschnell, schnell ladend und geräteübergreifend nutzbar sein, um unterschiedliche Interaktionsmöglichkeiten für verschiedene Benutzer anzubieten. - -In diesem sich ständig ändernden Szenario hat sich die Micro Frontend Architektur ähnlich wie die Microservices Architektur im Hinblick auf das Backend-Development zu einer der führenden Technologien für die Entwicklung skalierbarer und modularer Webanwendungen entwickelt. - -Die Idee hinter Microfrontends besteht darin, die Entwicklung, Wartung und Skalierbarkeit von Frontend Anwendungen zu verbessern, indem sie in kleinere, handhabbare Teile aufgeteilt werden. Jedes Microfrontend kann von seinem eigenen Team entwickelt, getestet und bereitgestellt werden. Dadurch können Teams unabhängig voneinander arbeiten, ohne sich gegenseitig zu beeinträchtigen. - -## Problemfeld und Kontext - -In unserer digitalisierten Welt sind Webanwendungen allgegenwärtig geworden und spielen eine entscheidende Rolle in Bereichen wie E-Commerce, Unternehmensanwendungen, sozialen Medien und mehr. Moderne Webanwendungen müssen nicht nur benutzerfreundlich und funktionsreich sein, sondern auch skalierbar, wartbar und flexibel. Diese Anforderungen haben zu einer Evolution in der Art und Weise geführt, wie Frontend-Anwendungen entwickelt und bereitgestellt werden, und das Konzept der "Microfrontends" hat an Bedeutung gewonnen. - -Das Problemfeld, dem diese Untersuchung gewidmet ist, liegt in der Notwendigkeit, effiziente Strategien zur Entwicklung, Integration und Verwaltung von Microfrontends zu identifizieren und zu verstehen. Angesichts der Vielfalt der Ansätze, die derzeit auf dem Markt verfügbar sind, stehen Entwickler vor der Herausforderung, den besten Weg zu finden, um Microfrontends in bestehende oder neue Webanwendungen zu integrieren. - -Die Skalierbarkeit von Webanwendungen, insbesondere in großen Organisationen oder Projekten, kann schnell zu einem Engpass werden. Das Management verschiedener Teams, die unabhängig voneinander an unterschiedlichen Teilen der Anwendung arbeiten, kann komplex sein und zu Problemen bei der Koordination, Konsistenz und Effizienz führen. - -Zusätzlich dazu sind Webanwendungen oft gezwungen, auf verschiedenen Plattformen oder in unterschiedlichen Technologiestapeln zu arbeiten. Dies kann zu Inkonsistenzen, Performance-Problemen und mangelnder Wartbarkeit führen. - -Unsere Untersuchung beginnt mit einer grundlegenden Einführung in das Konzept der Microfrontends und erklärt, wie es sich von traditionellen monolithischen Ansätzen unterscheidet. Wir werden die zugrunde liegenden Prinzipien erkunden, die es ermöglichen, Frontend-Anwendungen in kleinere, autonome Einheiten aufzuteilen, die unabhängig voneinander entwickelt, getestet und skaliert werden können. - -Im weiteren Verlauf werden wir verschiedene Ansätze zur Implementierung von Microfrontends betrachten.Es gibt verschiedene Ansätze zur Implementierung von Microfrontends, wie z.B. komponentenbasierte Frontends, clientseitige oder serverseitige Integrationen, Web Components und Module Federation. Jedes dieser Ansätze hat seine eigenen Vor- und Nachteile, abhängig von den Anforderungen des Projekts und den technischen Präferenzen. - -Die zentrale Fragestellung, die diese Untersuchung angeht, lautet daher: Welche Ansätze zur Implementierung von Microfrontends sind verfügbar, wie unterscheiden sie sich voneinander und wie können Entwickler die am besten geeignete Methode für ihre spezifischen Anforderungen auswählen? - -Indem wir verschiedene Ansätze zur Implementierung von Microfrontends untersuchen und vergleichen, werden wir dazu beitragen, Klarheit über die Vor- und Nachteile jedes Ansatzes zu schaffen. Wir werden uns mit Fragen der Performance, Wartbarkeit, Flexibilität und Integration auseinandersetzen, um Entwicklern und Technologieentscheidern dabei zu helfen, fundierte Entscheidungen zu treffen, die auf den Bedürfnissen ihrer Projekte und Anwendungen basieren. Die Ergebnisse dieser Untersuchung werden dazu beitragen, bewährte Praktiken und Strategien für die erfolgreiche Implementierung von Microfrontends zu identifizieren und zu etablieren. - -## Zielsetzung - -Das Hauptziel dieser Masterarbeit ist es, verschiedene Ansätze zur Implementierung von Microfrontends zu analysieren und miteinander zu vergleichen, um fundierte Erkenntnisse und Empfehlungen für die Auswahl und Umsetzung von Microfrontend-Architekturen in modernen Webanwendungen zu liefern. - -## Forschungsfragen -Vor dem Hintergrund des Kontexts und der Ziele lassen sich die folgenden Unterfragen stellen, die in dieser Arbeit beantwortet werden sollen. - -1. Wann ist sinnvoll über microfrontend nachdenken ? -2. Welche Vor- und Nachteile hat ein Microfrontend? -3. Welche Entwicklungswerkzeuge und Frameworks sind am besten geeignet, um Microfrontends zu erstellen und zu verwalten? -4. Wie beeinflussen die verschiedenen Micro Frontend-Frameworks die Performance und Ladezeiten von Webanwendungen ? -5. Welche Frameworks bieten die besten Tools und Methoden, um das Testen und die Qualitätssicherung von Micro Frontends zu erleichtern? -6. Welche Herausforderungen treten typischerweise bei der Implementierung von Micro Frontends auf? -7. Wie einfach ist es, Änderungen und Updates in einem Micro Frontend-Framework durchzuführen, ohne Auswirkungen auf andere Module zu haben? -8. Welche verschiedenen Ansätze zur Implementierung von Microfrontends existieren, und wie unterscheiden sie sich in Bezug auf Architektur, Integration und Kommunikation? -9. Welche Ansätze zur Implementierung von Microfrontends sind am effektivsten? -10. Wie können diese Ansätze die Performance und Wartbarkeit verbessern? -11. Welche Erfahrungen haben Unternehmen gemacht, die bereits Microfrontends implementiert haben, und welche Empfehlungen können daraus abgeleitet werden? - -## Gliederungsentwurf -1. Einleitung - * Problemfeld und Kontext - * Zielsetzung - * Hintergrund und Motivation - * Forschungsfragen -2. Archäologie der Webentwicklung - 1. Die Ursprünge des Webs - 1. HTML - 2. CSS - 3. Javascript - 2. Dynamische Seiten, Frameworks und Bibliotheken - 3. Client Server Architekture -3. Evolution der Webarchitekturen - 1. Dreischichtige Architektur - 2. Web service Architekture - 1. REST - 2. SOAP - 3. RPC - 3. Backend Architekturen - 1. Monolithische - 2. Microservices - 3. Service Oriented (SOA) - 4. Frontend Architekturen - 1. Multi Pageanwendung (MPA) - 2. Single Pageanwendung (SPA) - 3. Model-View-ViewModel (MVVM) - 4. Model-View-Controller (MVC) - 5. Serverseitiges Rendering (SSR) - 6. Clientseitiges Rendering (CSR) -4. Microfrontend Architekture - 1. Definition und Konzept von Microfrontends - 2. Aus Monolithische Architektur zu Microfrontend Architektur - 3. Microfrontend Frameworks - 1. Piral - 2. Qiankun - 3. Luigi - 4. Podium - 5. Vergleich der Eigenschaften und Funktionen der Frameworks - 4. Technologien und Tools for Microfrontend - 1. Web Components - 2. Module Bundler - 3. Package Manager - 5. Vorteile und Herausforderungen von Microfrontends - 1. Vorteile und Einsatzszenarien - 1. Skalierbarkeit - 2. Autonomie - 3. Wiederverwendbarkeit - 4. Unabhängige Bereitstellung - 5. Technologievielfalt - 2. Herausforderungen und Einschränkungen - 1. Komplexität - 2. Performance - 3. Testen und Debuggen -5. Ansätze zur Implementierung von Microfrontends - 1. iFrames - 2. Komponentenbasiertes Frontend - 3. Clientseitige Integration - 4. Serverseitige Integration - 5. Web Components - 6. Module Federation -6. Evaluierung und Vergleich der Ansätze von Microfrontend Architektur - 1. Definition von Evaluierungskriterien - 1. Performance - 2. Skalierbarkeit und Wartbarkeit - 3. Flexibilität und Erweiterbarkeit - 4. Entwicklungsgeschwindigkeit - 5. SEO Freundlichkeit - 6. Dokumentation und Community Unterstützung - 2. Vergleich mit alternativen Architekturansätzen - 3. Analyse der Ergebnisse -7. Fallstudien und Beispiele aus verschiedenen Branchen und Anwendungsfällen - 1. NETFLIX - 2. SPOTIFY - 3. DAZN -8. Fazit und Ausblick - 1. Zusammenfassung der Ergebnisse - 2. Bewertung der erreichten Ziele - 3. Ausblick und zukünftige Entwicklungen -9. Literaturverzeichnis -10. Anhang - -## Zeitplan (noch in der Arbeit, wird nach der Gliederungsentwurf vervollständigt) - -* 18.09 - 08.10 - Recherchephase (3 Woche) -* 09.10 - 29.10 - Theoretisches Teil der Arbeit (3 Woche) -* 30.10 - 24.12 - Praktisches Teil der Arbeit (8 Woche) -* 25.12 - 21.01 - Evaluation den Ergebnissen (4 Woche) -* 22.01 - 18.02 - Zusammenfassung und Korrektur (4 Woche) - -## Ergebnis -tbd - -## Literaturverzeichnis - -* https://micro-frontends.org/ -* https://intellipaat.com/blog/what-is-client-server-Architecture/#:~:text=Client%20server%20architecture%20is%20a -* Davide Taibi and Luca Mezzalira. 2022. Micro-Frontends: Principles, Implementations, and Pitfalls. SIGSOFT Softw. Eng. Notes 47, 4 (October 2022), 25–29. https://doi.org/10.1145/3561846.3561853 -* Kroiß, Manuel. From Backend to Frontend-Case study on adopting Micro Frontends from a Single Page ERP Application monolith. Diss. Wien, 2021 -* Nishizu, Yuma, and Tetsuo Kamina. "Implementing Micro Frontends Using Signal-based Web Components." Journal of Information Processing 30 (2022): 505-512 -* Baumann, Matthias. Micro-Frontends. Diss. HSR Hochschule für Technik Rapperswil, 2019 -* Tutisani, Tengiz. "Design and Architecture." Effective Software Development for the Enterprise: Beyond Domain Driven Design, Software Architecture, and Extreme Programming. Berkeley, CA: Apress, 2023. 105-175 -* Pavlenko, A., Askarbekuly, N., Megha, S., & Mazzara, M. (2020). Micro-frontends: application of microservices to web front-ends. J. Internet Serv. Inf. Secur., 10(2), 49-66 -* Bui, S. (2021). Micro frontend: Microservice implementation on Web Development. diff --git a/_works/j-alamdar/04-results/Masterarbeit_Javad_Alamdar.pdf b/_works/j-alamdar/04-results/Masterarbeit_Javad_Alamdar.pdf deleted file mode 100644 index 7279efc..0000000 Binary files a/_works/j-alamdar/04-results/Masterarbeit_Javad_Alamdar.pdf and /dev/null differ diff --git a/_works/j-alamdar/04-results/README.md b/_works/j-alamdar/04-results/README.md deleted file mode 100644 index 7742390..0000000 --- a/_works/j-alamdar/04-results/README.md +++ /dev/null @@ -1,3 +0,0 @@ -# Ergebnisse - -Bitte legen Sie Ihre Ergebnisse hier ab. Achten Sie bitte auf moderate Dateigrößen. Bitte legen Sie nur geschlossene Dokument, z.B. PDF statt *.doc ab. \ No newline at end of file diff --git a/_works/j-koll/01-resarch-area-analysis/concept-map.pdf b/_works/j-koll/01-resarch-area-analysis/concept-map.pdf deleted file mode 100644 index b5f26c1..0000000 Binary files a/_works/j-koll/01-resarch-area-analysis/concept-map.pdf and /dev/null differ diff --git a/_works/j-koll/01-resarch-area-analysis/word-cloud.pdf b/_works/j-koll/01-resarch-area-analysis/word-cloud.pdf deleted file mode 100644 index 5cf7862..0000000 Binary files a/_works/j-koll/01-resarch-area-analysis/word-cloud.pdf and /dev/null differ diff --git a/_works/j-koll/02-titles-and-research-questions.md b/_works/j-koll/02-titles-and-research-questions.md deleted file mode 100644 index e1304c7..0000000 --- a/_works/j-koll/02-titles-and-research-questions.md +++ /dev/null @@ -1,25 +0,0 @@ -# Titel und Forschungsfrage - -## Titel -1. Energieeffizienz in Webanwendungen: Strategien und Methoden zur Reduzierung des Energieverbrauchs -2. Untersuchung der Auswirkungen von energiesparendem Code auf den Energieverbrauch von Webanwendungen -3. Effektive Programmierpraktiken und -techniken zur Reduzierung des Energieverbrauchs in Webanwendungen -4. Energieoptimierter Code: Konzepte, Umsetzung und Auswirkungen auf Webanwendungen -5. Leistungsmessung und Optimierung von Webanwendungen zur Minimierung des Energieverbrauchs -6. (Untersuchung des) Einfluss(es) von Server- oder clientseitigem Rendering auf den Energieverbrauch von Webanwendungen -7. Analyse des Einflusses von Programmiersprachen und Webtechnologien auf den Energieverbrauch von Webanwendungen -8. Energieeffizienz in Webanwendungen: Strategien und Methoden zur Reduzierung des Energieverbrauchs für Frontend und Backend - -## Forschungsfragen -1. Welche Möglichkeiten gibt es, Webanwendungen energieeffizient(er) zu gestalten? -2. Wie kann eine Anwendung im Web möglichst energieeffizient implementiert werden? -3. Wie wirkt sich der Einsatz von energiesparendem Code auf den Energieverbrauch von Webanwendungen aus? -4. Welche Programmierpraktiken und -techniken sind am effektivsten, um den Energieverbrauch von Webanwendungen zu reduzieren? -5. Welche Auswirkungen hat energieoptimierter Code auf Webanwendungen? -6. Wie können Webentwickler:innen die Leistung ihrer Anwendungen messen und optimieren, um den Energieverbrauch zu minimieren? -7. Wie beeinflussen verschiedene Browser und Plattformen den Energieverbrauch von Webanwendungen und welche Rolle spielt energiesparender Code dabei? -8. Welche Rolle spielen Webstandards und Best Practices bei der Entwicklung von energiesparendem Code für das Web? -9. Welchen Einfluss hat das Server- oder clientseitige Rendering auf den Energieverbrauch einer Webanwendung? -10. Inwiefern beeinflusst die Auswahl von Programmiersprachen und Webtechnologien den Energieverbrauch von Webanwendungen? -11. Was sind effektive Strategien und Methoden zur Förderung der Implementierung von energieeffizienten Programmierpraktiken bei Softwareentwickelnden? - diff --git a/_works/j-koll/03-expose.md b/_works/j-koll/03-expose.md deleted file mode 100644 index 1d1b7f5..0000000 --- a/_works/j-koll/03-expose.md +++ /dev/null @@ -1,18 +0,0 @@ -# Exposé - Strategien und Methoden zur Reduzierung des Energieverbrauchs in Webanwendungen - -## Einleitung -Die Zahl der Internetnutzenden weltweit wächst zunehmend [[ITU 2022]](https://www.itu.int/itu-d/reports/statistics/2022/11/24/ff22-internet-use/), woraus sich schließen lässt, dass der Bedarf an Webanwendungen und deren Energieverbrauch ebenfalls steigt. Die geplante Arbeit zielt darauf ab, Programmierpraktiken und -techniken zu erfassen, die die Energieeffizienz von Webanwendungen steigern, und Methoden zur Messung und Optimierung der Leistung von Webanwendungen zu untersuchen. - -## Forschungsfragen -- Wie können Webentwickler:innen die Leistung ihrer Anwendungen messen und optimieren, um den Energieverbrauch zu minimieren? -- Welchen Einfluss hat das Server- oder clientseitige Rendering auf den Energieverbrauch einer Webanwendung? -- Welche Programmierpraktiken und -techniken sind am effektivsten, um den Energieverbrauch von Webanwendungen zu reduzieren? -- Welche Möglichkeiten gibt es, Webanwendungen energieeffizient(er) zu gestalten? -- Wie beeinflussen verschiedene Browser und Plattformen den Energieverbrauch von Webanwendungen und welche Rolle spielt energiesparender Code dabei? -- Welche Rolle spielen Webstandards und Best Practices bei der Entwicklung von energiesparendem Code für das Web? - -## Methodik -Die Forschung wird sowohl theoretische als auch praktische Aspekte umfassen. Theoretisch werden verschiedene Strategien und Techniken zur Reduzierung des Energieverbrauchs in der Literatur identifiziert und analysiert. Praktisch werden die daraus resultierenden Ergebnisse angewandt, um Leistungsmessungen und Optimierungen an prototypischen Webanwendungen durchgeführt, um sowohl die Auswirkungen als auch die Messbarkeit dieser Strategien und Techniken zu überprüfen. Was die Energieeffizienz auf Serverseite angeht, muss aus vorangegangen Erkenntnissen evaluiert werden, inwiefern dies überprüfbar ist. - -## Ergebnis -Die Ergebnisse der Forschung werden in Form von Best Practices und Richtlinien für die Entwicklung von energieeffizientem Code für Webanwendungen präsentiert. Die Präsentation kann in Form eines Workshops und eines Cheat Sheet Plakates erfolgen. Diese können Themen wie serverseitiges und clientseitiges Rendering, den Einfluss von Browsern und Plattformen, die Verwendung von Webstandards und die Rolle von Programmierpraktiken und -techniken umfassen. \ No newline at end of file diff --git a/_works/l-doberstein/README.md b/_works/l-doberstein/README.md deleted file mode 100644 index 2aa7cc2..0000000 --- a/_works/l-doberstein/README.md +++ /dev/null @@ -1,19 +0,0 @@ -# Master Thesis - -Title: **Accessibility best practices and how they can be effectively applied when developing an application from scratch** -Author: **Linnéa Doberstein** -Email: **linnea.doberstein@smail.th-koeln.de** - -*Abstract*: -This exposé for a master thesis, challenges the current state of web accessibility in development and studies best practices during the development process as well as testing options for accessibility. The thesis aims to make parts of the web more accessible and reveal accessibility best practices for development particularly when developing from scratch. - -By leveraging the existing guidelines and practices around accessibility as well as -testing methods and development frameworks this study will bring forth comprehensive knowledge on accessibility best practices for the early stages of the delivery process. Within a practical study, literature will be reviewed, best practices will be identified, a landingpage will be migrated and the data will be analysed. That specific landingpage is a product of SoSafe, a company operating in the field of -cyber security. Their security training includes a landingpage which will in this study be migrated to a framework and therefore be the product used to evaluate accessibility best practices. - -In conclusion, this work contributes to the field of accessibility by evaluating best -practices for developers and making one part of SoSafe’s products more accessible. Aiming to make the web more inclusive, piece by piece. - - -## Content -* [Exposé](./expose.pdf) \ No newline at end of file diff --git a/_works/l-doberstein/expose.pdf b/_works/l-doberstein/expose.pdf deleted file mode 100644 index ec130c2..0000000 Binary files a/_works/l-doberstein/expose.pdf and /dev/null differ diff --git a/_works/m-baecker/01-resarch-area-analysis/README.md b/_works/m-baecker/01-resarch-area-analysis/README.md deleted file mode 100644 index 8311bbc..0000000 --- a/_works/m-baecker/01-resarch-area-analysis/README.md +++ /dev/null @@ -1,3 +0,0 @@ -# Themenfeldanalyse - -Bitte legen Sie Ihre Concept Map zur Themenfeldanalyse hier als PDF ab. Die Datei sollte nicht größer als 2 Mbyte sein. \ No newline at end of file diff --git a/_works/m-baecker/02-titles-and-research-questions.md b/_works/m-baecker/02-titles-and-research-questions.md deleted file mode 100644 index 9a47e53..0000000 --- a/_works/m-baecker/02-titles-and-research-questions.md +++ /dev/null @@ -1,3 +0,0 @@ -# Titel und Forschungsfrage - -Bitte notieren Sie mindestens 10 mögliche Titel der Arbeit und mindestens 5 mögliche Forschungsfragen/ Zielsetzungen in dieses Dokument. \ No newline at end of file diff --git a/_works/m-baecker/03-expose.md b/_works/m-baecker/03-expose.md deleted file mode 100644 index 739fa36..0000000 --- a/_works/m-baecker/03-expose.md +++ /dev/null @@ -1,115 +0,0 @@ -# Exposé für eine Bachelorarbeit zum Thema: -Vergleich der Cross-Plattform Frameworks React Native, Flutter und .NET MAUI auf Basis einer Testanwendung im Hinblick auf ihre Performance unter Android und Windows - -## Vorgelegt von: -Manuel Bäcker\ -Tecklinghauser Weg 24\ -57462 Olpe\ -E-Mail: manuel.b.97@gmx.de - -Matrikelnummer: 11117600\ -BA Allgemeine Informatik\ -Datum: 22.03.2023 - -## Einleitung und Problemstellung -Das Angebot an Cross-Plattform Frameworks zur Erstellung von Anwendungen für verschiedene Plattformen auf einer einzelnen Code-Basis hat sich in den letzten Jahren deutlich vergrößert. Neben den älteren Technologien wie Ionic, Cordova, Electron oder Xamarin sind neue Frameworks wie bspw. React Native (Meta) und Flutter (Google) hinzugekommen. Zuletzt wurde mit .NET MAUI von Microsoft am 09.08.2022 eine Weiterentwicklung von Xamarin veröffentlicht. Flutter und React Native haben sich unter Mobile- und Webentwicklern als robuste und effiziente Lösungen bewährt, und sind dadurch sehr populär geworden [6]. Diese Arbeit hat einen Vergleich der drei Technologien Flutter, React Native und MAUI zum Ziel, um zu untersuchen, ob .NET MAUI eine leistungsstarke Alternative darstellt und ob die Performance gleichwertig oder sogar besser als die von React Native und Flutter ist. Im theoretischen Teil der Arbeit wird der Hintergrund sowie der aktuelle Stand aus dem Bereich Cross-Plattform Entwicklung und die zu untersuchenden Frameworks sowie deren zugrunde liegenden Programmiersprachen, Architekturen und Funktionsweisen erläutert. Im praktischen Teil der Arbeit werden die Technologien anschließend anhand verschiedener Metriken verglichen. Hierzu wird eine Testapplikation in Form eines Tierlexikons konzipiert und in allen der zu untersuchenden Frameworks implementiert. Die Applikation fungiert als Basis für den Vergleich verschiedener Metriken aus den Bereichen Performance und Entwicklungsaufwand und wird auf den Plattformen Android und Windows für die Messung der geplanten Metriken eingesetzt. Zudem wird der Einrichtungsprozess der Frameworks auf einem Windows-PC und die grundlegenden Konzepte, auf denen die Frameworks basieren verglichen, um eine Aussage zur Einarbeitungszeit und dem Schwierigkeitsgrad der Erlernbarkeit treffen zu können. - -## Thema und Fragestellung -Die Arbeit greift die Fragestellung auf, ob das Cross-Plattform Framework .NET MAUI von Microsoft eine leistungsstarke Alternative zu etablierten Frameworks wie React Native und Flutter darstellt. Zudem soll festgestellt werden, welches der drei Frameworks nach aktuellem Stand das performanteste ist und in verschiedenen, extra für diesen Zweck angefertigten Testszenarien innerhalb einer in allen zu untersuchenden Frameworks implementierten Testanwendung, die höchste Leistungsfähigkeit aufweist. Eine weitere Fragestellung ist, welches Framework die am einfachsten zu erlernenden Konzepte mit sich bringt und daher tendenziell am leichtesten für neue Entwickler zu erlernen ist. Zuletzt soll untersucht werden, welches Framework die geringste Anzahl an Codezeilen für die Implementierung einer funktional äquivalenten Anwendung benötigt. Da .NET MAUI noch sehr neu ist und nach ersten Recherchen keine Forschungsarbeiten existieren, die gezielt die Leistung und Performance des Frameworks im Vergleich zu etablierten Lösungen untersuchen, ist dies ein interessantes Forschungsvorhaben, um die Entscheidungsfindung bei der Projektplanung von Cross-Plattform-Applikationen zu unterstützen, und eine präzisere Aussage über die Features und Leistungsdaten des Frameworks treffen zu können. Zusammenfassend lässt hieraus folgende Leitfrage als Forschungsgegenstand ableiten: Weist .NET MAUI in gleichen Anwendungsszenarien eine gleichwertige oder sogar bessere Performance als React Native und Flutter auf? - -## Leitfrage und logisches Gerüst -Die Arbeit soll primär die Fragestellung beantworten, ob .NET MAUI im Vergleich zu Flutter und React Native eine leistungsstarke Alternative bei der Entwicklung von Cross-Plattform Applikationen darstellt und ob die Performance des Frameworks gleichwertig oder besser ist als die von React Native und Flutter. Auf Basis der Literaturrecherche werden bereits vorhandene Forschungsergebnisse erfasst um erste Erkenntnisse zu diesem Themenbereich zusammenfassen und analysieren zu können. Am Ende der Arbeit kann dadurch beantwortet werden, ob sich diese Ergebnisse tendenziell bestätigen lassen oder stark abweichen. Hieraus kann ebenfalls abgeleitet werden, ob React Native und Flutter durch ihre stetige Weiterentwicklung signifikante Verbesserungen in ihrer Performance im Vergleich zu älteren Forschungsergebnissen aufweisen. Zudem wird der Einrichtungsprozess sowie die Architekturen und Konzepte, auf denen die Frameworks basieren, verglichen. Hieraus kann zusätzlich abgeleitet werden, welches der Frameworks sich am besten für weniger erfahrene Entwickler eignet, welche Konzepte leicht zu verstehen sind und welches Framework sich am schnellsten in den Entwicklungsprozess von Entwicklerteams beliebiger Größe integrieren lässt. Um dieses Vorhaben durchführen zu können, wird eine Testanwendung in allen drei Frameworks erstellt und auf Basis dieser Anwendung und wiederum auf ihr basierenden Testszenarien verschiedene Metriken wie Arbeitsspeichernutzung, Startzeit der Anwendungen und Größe der jeweiligen Installationspakete verglichen. Alle zu untersuchenden Kriterien und Metriken werden genauer im Kapitel „Vergleichskriterien und Auswertung“ beschrieben. Aus den Forschungsfragen sowie der Planung und des Vorgehens ergibt sich folgende vorläufige Gliederung als Grundgerüst für die Arbeit, welche auf der nächsten Seite dargestellt wird. - -## Vorläufige Gliederung -* Abstract/Einleitung -* Grundlagen - * Cross Plattform Entwicklung - * Vor- und Nachteile - * Aktuelle Marksituation - * React Native - * Flutter - * .NET MAUI -* Konzeption der Testapplikation - * Funktionsumfang - * Vergleichskriterien - * Views/Pages - * Serverkomponente - * Testszenarien -* Umsetzung - * React Native Implementierung - * Flutter Implementierung - * .NET MAUI Implementierung -* Framework Vergleich - * Verwendete Hardware - * Unterstützte Plattformen - * Unterstützte Hardware Features - * Vergleich der Codezeilen - * Größe des Installations-Pakets - * Größe der installierten Anwendung - * Startzeit der Anwendung - * Wiederaufnahmezeit nach Deaktivierung - * Ressourcennutzung nach Anwendungsstart - * RAM-Nutzung - * CPU-Nutzung - * Rendering Performance - * Frame Times - * Bilder pro Sekunde (FPS) - * FPS-Stabilität bei Animationen und Übergängen - * Testszenario 1 (Http Request und Listenansicht Initialisierung) - * Komplettierungszeit - * RAM-Nutzung - * CPU-Nutzung - * Testszenario 2 (Embedded Camera View öffnen und ein Bild speichern) - * Komplettierungszeit - * RAM-Nutzung - * CPU-Nutzung - * Evaluierungsmatrix -* Fazit -* Ausblick - -## Aktueller Stand der Forschung -Es existieren einige Arbeiten, welche die Frameworks Flutter und React Native in ihrer Performance vergleichen. Zu .NET MAUI wurde allerdings noch sehr wenig veröffentlicht und auf Basis erster Recherchen noch keine Forschungsarbeiten, welche die Performance des Frameworks genauer untersuchen. Mah’dar (2021) thematisiert in seiner Arbeit aktuelle Entwicklungsansätze im Bereich der mobilen Entwicklung und vergleicht .NET MAUI in Bezug auf seine Features mit seinem Vorgänger Xamarin.Forms und beschreibt die Neuerungen des Frameworks [1]. Der Einblick von Mah’dar kann durch dieses Forschungsvorhaben gerade in Bezug auf die Performance und den Vergleich mit etablierten Frameworks wie React Native und Flutter sehr gut ergänzt werden. Húdek (2022) beschäftigt sich in seiner Arbeit mit der Anfertigung von Übungsaufgaben innerhalb des Frameworks, um Studenten einen Einblick in die Anwendungsentwicklung mit .NET MAUI zu ermöglichen [2]. Kurfürst (2022) entwickelt innerhalb seiner Arbeit eine Applikation für Investments mit dem Framework .NET MAUI. Daraus geht hervor, dass obwohl MAUI sich zum damaligen Zeitpunkt noch in der Preview-Phase befunden hat, es als nützliches Framework zur Entwicklung von Cross-Plattform Anwendungen zu bewerten ist und als Resultat eine funktionale Applikation entstanden ist, die mit einigen weiteren Anpassungen und Features veröffentlicht und im produktiven Umfeld genutzt werden kann [3]. Wu (2018) hat einen Performancevergleich zwischen Flutter und React Native durchgeführt, auf den sich weitere Arbeiten in diesem Bereich stützen [4]. Hier können wichtige Ergebnisse referenziert werden, um zu untersuchen, wie sich Flutter und React Native im Vergleich zu einer aktuellen Untersuchung von ihrer Performance verhalten, und ob sich die Ergebnisse von Wu bestätigen lassen, oder diese durch die stetige Weiterentwicklung der Frameworks eine Abweichung aufweisen. Jagiello (2019) vergleicht ebenfalls die Frameworks Flutter und React Native und stellt dabei eine Abweichung zu den Ergebnissen von Wu fest, die er mit den Hintergrundaktivitäten des verwendeten Betriebssystems begründet [5]. Es ergibt sich im Bereich der Untersuchung der Leistung von .NET MAUI daher eine Forschungslücke, die mit dieser Arbeit aufgegriffen werden soll und dabei gleichzeitig Ergebnisse zum aktuellen Stand der beiden anderen Cross-Plattform Frameworks liefert. - -## Untersuchungsansatz -Um die Frameworks optimal vergleichen zu können, wird eine Testapplikation in Form eines Tierlexikons in allen der drei Frameworks implementiert und auf Basis dieser Anwendung verschiedene Testszenarien durchgeführt. Zudem wird eine kleine Serverkomponente implementiert, welche eine Rest-Schnittstelle bereitstellt, durch die Daten über verschiedene Tiere mit dem HTTP-Protokoll im JSON-Datenformat abgerufen werden können. Eine Anwendung dieser Form wird gewählt, da ihre grundlegenden Funktionalitäten wie der Abruf von Daten über eine Rest-Schnittstelle einen in vielen im produktiven Umfeld eingesetzten Apps verwendeten Anwendungsfall abbilden, und daher als möglichst repräsentativ für die Messung von Leistungsdaten zu klassifizieren ist. Zudem werden bei dieser Form von Anwendung grundlegende und häufig genutzte Komponenten für Benutzeroberflächen wie bspw. Listenansichten verwendet, um die Performance auch im Hinblick auf die Nutzerinteraktion möglichst präzise bewerten zu können. Um die Performance und weitere Metriken präzise erfassen zu können, werden diverse Profiling- und Entwicklertools, welche Bestandteil der Framework-SDKs und Entwicklungsumgebungen sind, benutzt. Außerdem ist geplant, sofern möglich bereits auf dem Betriebssystem vorhandene Tools wie Task-Manager o.ä. zur Sammlung von Leistungsdaten zu verwenden um dadurch den Overhead und damit den Einfluss von Debug-Builds bei der Messung von Werten zu minimieren. Einen weiteren Bereich der Testapplikation stellt der Zugriff auf die plattformspezifischen Hardware Schnittstellen und Funktionen dar. Hierbei werden bspw. Systeminformationen ausgelesen oder auf Hardware-Komponenten wie Kamera und Sensorik zugegriffen. Dabei werden Performance und die Verfügbarkeit für das jeweilige Framework verglichen um zu analysieren, ob jedes der Frameworks den gleichen Funktionsumfang bietet. Zudem kann hierdurch der Aufwand der Implementierung dieser Features für jedes Framework analysiert und verglichen werden. - -## Vergleichskriterien und Auswertung -Für den Vergleich der Frameworks im Hinblick auf ihre Performance werden folgende Kriterien verwendet. Alle Metriken werden auf Basis von in der Testanwendung geschaffenen Testszenarien gemessen und ausgewertet. Bisher sind zwei Szenarien geplant, zum einen die Beschaffung von Daten über die Serverkomponente via HTTP-Protokoll und die Einspeisung dieser Daten in eine Listenansicht. Zum anderen soll ein Szenario geschaffen werden, indem aus der Testanwendung heraus die native Kamera-Applikation des Betriebssystems ausgeführt und ein Foto gespeichert wird. Zunächst wird die Ressourcennutzung untersucht, hierbei werden CPU-Auslastung und Arbeitsspeicher-Nutzung über den Zeitraum der ausgeführten Testszenarien aufgezeichnet und verglichen. Des Weiteren erfolgt eine Analyse der Rendering Performance um zu vergleichen, wie flüssig bspw. Animationen dargestellt werden können und um zu analysieren, ob Differenzen bestehen und sich diese merkbar auf die Nutzererfahrung auswirken. Hierbei werden über den Zeitraum der Testszenarien die gerenderten Bilder pro Sekunde (FPS) sowie die Bildzeit analysiert. Zwei weitere essentielle Vergleichskriterien sind die Start- und Wiederaufnahmezeit der Anwendungen. Diese Zeitwerte haben großen Einfluss auf die Nutzererfahrung, da Sie diejenigen Performance-Merkmale sind, die ein Nutzer bei der Interaktion mit einer Anwendung als erstes wahrnimmt. Zudem werden quantitative Metriken wie die Größe des Installationspakets für die jeweilige Plattform, die Größe der installierten Anwendung und die jeweils unterstützen Plattformen verglichen. Die Größe der Anwendung hat ebenfalls einen Effekt auf die Nutzererfahrung und der Vergleich der unterstützten Plattformen ermöglicht es eine Aussage darüber zu treffen, wie flexibel ein Entwicklerteam bei der Veröffentlichung einer Anwendung auf verschiedenen Plattformen sein kann und ob das Framework es ermöglicht, die Anwendung auch im Browser laufen zu lassen. Außerdem soll die Anzahl an Codezeilen für alle Anwendungen verglichen werden, um eine Aussage zum Entwicklungsaufwand treffen zu können. Zuletzt wird die Unterstützung von Hardwarefeatures untersucht. Diese Analyse ist gerade auf der Android Plattform sinnvoll und gibt an, ob alle Frameworks den gleichen Funktionsumfang bei der Nutzung von nativen Features wie Kamera, Standortdiensten, Geräteinformationen und Sensorik bieten. Die Kombination aller dieser Metriken stellt einen umfangreichen Vergleich der Frameworks der sich in die Bereiche dar und abschließend sollen alle Punkte gewichtet und in eine Vergleichsmatrix eingetragen werden. So kann für jedes Framework eine abschließende Bewertungspunktzahl erstellt werden. - -## Erwartete Ergebnisse -* Da .NET MAUI noch relativ neu ist wird gerade im Bereich der Performance ein Rückstand zu den etablierten Frameworks React Native und Flutter erwartet. Interessant ist hier zu analysieren, wie groß der Unterschied im Detail ist und ob sich dieser stark auf die Nutzererfahrung auswirkt. - -* Die Einrichtung von .NET MAUI gestaltet sich gerade für unerfahrene Entwickler möglicherweise wesentlich einfacher, da alle notwendigen Tools bei der Installation von Visual Studio direkt mit installiert und konfiguriert werden. - -* Die Konzepte von .NET MAUI sind gerade für unerfahrene Entwickler und Neueinsteiger komplizierter zu erlernen im Vergleich zu Flutter und React Native. - -* Alle drei Frameworks liefern ähnliche Ergebnisse bei der Nutzung von Systemressourcen (CPU, RAM) in den angefertigten Testszenarien. - -* Alle Frameworks haben die gleiche Anzahl an Features für die Plattformintegration. Hierzu zählen bspw. Der Zugriff auf Hardwarekomponenten wie Kamera und Sensoren wie auch der Zugriff auf diverse Features des zugrunde liegenden Betriebssystems. - -* Alle Frameworks liefern ähnliche Werte bei der Anzahl von Codezeilen für die Implementierung der Testapplikation auf, sodass allgemein gesagt werden kann, dass keines der Frameworks einen signifikanten Mehraufwand bei der Erstellung von Anwendungen aufweist. - -* React und Flutter weisen im Vergleich zu vorherigen Untersuchungen aufgrund ihrer stetigen Weiterentwicklung seit Veröffentlichung eine signifikante Verbesserung der Performance auf. - -* React und Flutter sind beide ungefähr gleich schnell zu erlernen, da sie ähnliche Konzepte verwenden. - -## Zeitplan -Dauer: Neun Wochen (10.04.2023 – 11.06.2023) - -* Woche 1 (10.04 – 16.04): Literaturrecherche, Literaturauswertung und Aufbau der Gliederung -* Woche 2 (17.04 – 23.04): Konzepterarbeitung für die Testapplikation und Implementierung der Serverkomponente -* Woche 3 (24.04 – 30.04): Einrichtung von .NET MAUI und Implementierung der Testapplikation -* Woche 4 (01.05 – 07.05): Einrichtung von Flutter und Implementierung der Testapplikation -* Woche 5 (08.05 – 14.05): Einrichtung von React Native und Implementierung der Testapplikation -* Woche 6 (15.05 – 21.05): Auswahl von Profiling-Tools sowie Messung und Vergleich der geplanten Metriken -* Woche 7 (22.05 – 28.05): Anfertigung von Diagrammen und Tabellen auf Basis der erhobenen Daten -* Woche 8 (29.05 – 04.06): Anfertigung der Rohfassung der Arbeit auf Basis vorher angefertigter Fragmente -* Woche 9 (05.06 – 11.06): Finalisierung der Arbeit und Abgabe - -## Literaturverzeichnis -* [1] “Comparison of the .NET MAUI and Xamarin.Forms Frameworks” - Lukáš Mahďar, Tomas Bata University in Zlín, 2022, Von http://digilib.k.utb.cz/handle/10563/51282 -* [2] “Development of Study Materials in Maui Framework for the Course Application Frameworks“ - Radomír Húdek, Tomas Bata University in Zlín, 2022, Von http://digilib.k.utb.cz/handle/10563/51090 -* [3] “Property Management Tool for Small Investors“ - Jan Kurfürst, Tomas Bata University in Zlín, 2022, Von http://digilib.k.utb.cz/handle/10563/51841 -* [4] „React Native vs Flutter, cross-plattform mobile application frameworks” – Wenhao Wu, Metropolia University of Applied Sciences, 2018, Von https://www.theseus.fi/bitstream/handle/10024/146232/thesis.pdf?sequence=1 -* [5] “Performance Comparison between React Native and Flutter“ – Jakub Jagiello, Umeå University, 2019, Von https://www.diva-portal.org/smash/record.jsf?pid=diva2%3A1349917&dswid=3243 -* [6] “Choosing the right framework for Android development: which mobile development frameworks are chosen and why?” Seite 27 – Ashwin Banwarie, University of Amsterdam, 2022, Von https://ictinstitute.nl/wp-content/uploads/2022/08/Master_Thesis_A.Banwarie_FINAL.pdf diff --git a/_works/m-baecker/04-results/README.md b/_works/m-baecker/04-results/README.md deleted file mode 100644 index 7742390..0000000 --- a/_works/m-baecker/04-results/README.md +++ /dev/null @@ -1,3 +0,0 @@ -# Ergebnisse - -Bitte legen Sie Ihre Ergebnisse hier ab. Achten Sie bitte auf moderate Dateigrößen. Bitte legen Sie nur geschlossene Dokument, z.B. PDF statt *.doc ab. \ No newline at end of file diff --git "a/_works/m-baecker/Expos\303\251_BA_Cross_Plattform_Vergleich_Manuel_B\303\244cker_2023.pdf" "b/_works/m-baecker/Expos\303\251_BA_Cross_Plattform_Vergleich_Manuel_B\303\244cker_2023.pdf" deleted file mode 100644 index 040f71a..0000000 Binary files "a/_works/m-baecker/Expos\303\251_BA_Cross_Plattform_Vergleich_Manuel_B\303\244cker_2023.pdf" and /dev/null differ diff --git a/_works/m-dahlke/01-resarch-area-analysis/Mind-Map.pdf b/_works/m-dahlke/01-resarch-area-analysis/Mind-Map.pdf deleted file mode 100644 index 375be35..0000000 Binary files a/_works/m-dahlke/01-resarch-area-analysis/Mind-Map.pdf and /dev/null differ diff --git a/_works/m-dahlke/01-resarch-area-analysis/README.md b/_works/m-dahlke/01-resarch-area-analysis/README.md deleted file mode 100644 index 4188813..0000000 --- a/_works/m-dahlke/01-resarch-area-analysis/README.md +++ /dev/null @@ -1,4 +0,0 @@ -# Themenfeldanalyse - -- [Schlagwortwolke](./Tag-Cloud.pdf) -- [Mind-Map](./Mind-Map.pdf) (Not a Concept-Map) \ No newline at end of file diff --git a/_works/m-dahlke/01-resarch-area-analysis/Tag-Cloud.pdf b/_works/m-dahlke/01-resarch-area-analysis/Tag-Cloud.pdf deleted file mode 100644 index 53ecaca..0000000 Binary files a/_works/m-dahlke/01-resarch-area-analysis/Tag-Cloud.pdf and /dev/null differ diff --git a/_works/m-dahlke/02-titles-and-research-questions.md b/_works/m-dahlke/02-titles-and-research-questions.md deleted file mode 100644 index b1b03bf..0000000 --- a/_works/m-dahlke/02-titles-and-research-questions.md +++ /dev/null @@ -1,34 +0,0 @@ -# Titel und Forschungsfrage - -## (Mögliche) Titel der Arbeit -- Entwicklung und Untersuchung eines Konzepts zur automatisierten Inhaltsmoderation durch Sprachmodelle in sozialen Medien -- Entwicklung und Evaluation eines Konzepts zur automatisierten Inhaltsmoderation durch Sprachmodelle -- Konzeption und Entwicklung eines Entwurfs zur automatisierten Moderation von Textinhalten durch Sprachmodelle -- Konzeption und Entwicklung eines Plugins zur automatisierten Moderation von Textinhalten durch Sprachmodelle für die WoltLab Suite Community Software -- Entwicklung eines Plugins zur Inhaltsmoderation durch Sprachmodelle für die WoltLab Suite Community Software -- Entwicklung eines Prototyps zur Evaluation der textbasierten Inhaltsmoderation durch Sprachmodelle in sozialen Medien -- Konzeption, Entwicklung und Evaluation eines Plugins zur automatisierten Moderation von Textinhalten durch Sprachmodelle für die WoltLab Suite Community Software -- Implementierung eines Prototyps zur automatisierten Moderation von Textinhalten durch Sprachmodelle für die WoltLab Suite Community Software -- *Anhand eines Prototyps:* Untersuchung zur Wirksamkeit von Sprachmodellen für die automatisierte Inhaltsmoderation in sozialen Medien -- *Anhand eines Prototyps:* Evaluation von Sprachmodellen zur automatisierten Inhaltsmoderation in sozialen Medien - ---- - - -- **Konzeption und Entwicklung eines Plugins zur automatisierten Moderation von Textinhalten durch KI für die WoltLab Suite Community Software** - -## Mögliche Forschungsfragen/Zielsetzungen -- *Übergeordnetes Ziel:* Konzeption und Entwicklung eines Plugins zur automatisierten Inhaltsmoderation durch Sprachmodelle für die WoltLab Suite Community Software (bspw. Forenbeiträge) - ---- - -- Eignen sich Sprachmodelle wie GPT-3.5/GPT-4 zur automatisierten Inhaltsmoderation von nutzergenerierten Inhalten? - - *Eventuell:* Welches Sprachmodell eignet sich (aktuell) am besten? -- Welche Vor- und Nachteile (auch: Risiken) gibt es bei der automatisierten Inhaltsmoderation durch Sprachmodelle? -- Sind Sprachmodelle im Stande zur kontextsensitiven Inhaltsmoderation? -- Wie kann eine automatische Inhaltsmoderation durch Sprachmodelle implementiert werden und welche Herausforderungen ergeben sich dabei? -- Welchen Einfluss haben Anwender (Nicht-Entwickler) auf genutzte Sprachmodelle bzw. deren Ergebnisse? -- *Eventuell:* Welche Ansätze zur automatisierten Inhaltsmoderation gibt es bereits? - - Algorithmen -> Profanity Filter, Verhaltensanalyse, etc. - - AI ? Sprachmodelle ? - diff --git a/_works/m-dahlke/03-expose.md b/_works/m-dahlke/03-expose.md deleted file mode 100644 index 5c75054..0000000 --- a/_works/m-dahlke/03-expose.md +++ /dev/null @@ -1,78 +0,0 @@ -

    - TH Köln Schriftzug -

    - -# Konzeption und Entwicklung eines Plugins zur automatisierten Moderation von Textinhalten durch KI für die WoltLab Suite Community Software - -## Problemstellung und Kontext - -Die Moderation von nutzergenerierten Inhalten, bspw. zur Entfernung von rechtswidrigen oder beleidigenden Beiträgen, ist ein wichtiger Bestandteil von Online-Communitys und anderen Plattformen im Internet, bei denen nutzergenerierte Inhalte veröffentlicht werden, um die jeweilige Plattform für alle Nutzer sicher und attraktiv zu gestalten. - -Die manuelle Moderation von nutzergenerierten Inhalten bringt jedoch diverse Probleme mit sich. Das wohl größte Problem ist, dass das Moderieren von Inhalten sehr zeitintensiv sein kann und die dafür investierte Zeit nicht für andere Aufgaben zur Verfügung steht. Zeit ist ein wichtiger Faktor bei der Moderation von Inhalten, da dies sowohl die aufzuwendende und zu kompensierende Arbeitszeit, als auch die Reaktionszeit der Moderation umfasst. Die Reaktionszeit ist die Zeit, welche zwischen der Erstellung eines Inhalts und dessen Moderation vergeht. Je länger ein Inhalt auf dessen Moderation warten muss, desto mehr Nutzer können diesen sehen und darauf reagieren. Die Folgen daraus sind vielfältig und neben verärgerten oder verschreckten Nutzern, können daraus auch weitreichende Konsequenzen, wie bspw. Abstrafungen durch Suchmaschinen resultieren. Bereits bei kleinen Plattformen mit wenig Aktivität und einem kleinen Team an Moderatoren kommt es vor, dass Inhalte nicht rechtzeitig moderiert werden können, bspw. weil die Moderatoren nicht rund um die Uhr online sind. Die Schwierigkeit, jeden Inhalt zeitnah zu überprüfen wird bei ansteigender Größe der Plattform und Anzahl der Inhalte zunehmend schwieriger, was zu einer verminderten Qualität der Moderation führen kann, da Inhalte zu langsam, zu ungründlich oder gar nicht mehr moderiert werden, möglicherweise auch aus dem Grund, dass einzuhaltende Quoten zur Ermittlung der Moderationsleistung eingeführt werden. - -Anders als für die Leistung von Moderatoren, spielt Zeit oder die Größe der Plattform für die Leistung von KI nur eine untergeordnete Rolle, da dessen Einsatz in der Regel beliebig skalierbar ist. Darüber hinaus ist die manuelle Moderation von Inhalten nicht immer objektiv und transparent. Moderatoren können Inhalte unterschiedlich bewerten und unterschiedlich streng moderieren, was dazu führen kann, dass Nutzer die Moderation als ungerecht oder willkürlich empfinden. Dies kann auch passieren, wenn Sprachbarrieren die Moderation erschweren und Moderatoren Inhalte missinterpretieren, was wiederum dazu führt, dass zusätzliche Moderatoren benötigt werden, welche die Inhalte übersetzen können. Auch diese Probleme können durch den Einsatz von KI gelöst werden, da diese Inhalte immer nach denselben Kriterien und unabhängig von der Inhaltssprache bewerten kann. - -Trotzdem muss die automatisierte Moderation durch KI mit Vorsicht eingesetzt werden, da Inhalte aufgrund fehlender menschlicher Intelligenz und mangelnder Einordnung in den Gesamtkontext, sowie einfach aufgrund von möglichen Fehlern, falsch beurteilt werden können. Um die Integrität der Plattform zu wahren und eine willkürliche Zensur von Inhalten zu vermeiden, muss die Moderation durch KI daher kontinuierlich überwacht bzw. kontrolliert werden. - -## Zielsetzung - -Im Rahmen dieser Bachelorarbeit soll ein Plugin für die [WoltLab Suite Community Software][woltlab-suite] konzipiert und entwickelt werden, welches die halbautomatische Moderation von Textinhalten durch KI ermöglicht. Dabei sollen neue Inhalte wie Kommentare oder Forenbeiträge mit Hilfe der [OpenAI-API][openai-api] und dem Sprachmodell GPT-3.5 (evtl. GPT-4) auf unerwünschte Inhalte überprüft werden. Die Lösung soll nahtlos in das Framework der [WoltLab Suite][woltlab-suite] integriert werden und die bereits darin enthaltenden Moderationswerkzeuge verwenden. Dies bedeutet, Inhalte sollen bei einem möglichen Regelverstoß nicht automatisch gelöscht, sondern lediglich zur Überprüfung markiert werden. In einem dafür vorgesehenen Moderationsbereich hat ein Moderator anschließend die Möglichkeit, Änderungen am Inhalt vorzunehmen und zu entscheiden, ob der Inhalt gelöscht oder freigegeben werden soll. - -## Aufgabenstellung und Forschungsfragen - -Um nachvollziehen zu können, wie Sprachmodelle funktionieren, bedarf es eingangs einer kurzen Recherche zu diesem Thema. Dabei wird auch geprüft, inwiefern Sprachmodelle zur automatisierten Moderation von Textinhalten verwendet werden können und welche Vor- und Nachteile dies mit sich bringt. - -Bevor im Anschluss mit der Entwicklung des Plugins begonnen werden kann, müssen zunächst die Anforderungen an das Plugin identifiziert und priorisiert werden. Darüber hinaus muss ermittelt werden, wie die [OpenAI-API][openai-api] für diesen Einsatzzweck in das Framework der [WoltLab Suite][woltlab-suite] integriert werden kann. Erst anhand der Spezifikation der genutzten API, sowie den ermittelten Anforderungen kann das Plugin konzipiert werden. Nach Fertigstellung der Konzeption kann anschließend mit der Implementierung des Plugins begonnen werden. - -Nach Abschluss der Entwicklung des Plugins muss dieses getestet und auf Anforderungserfüllung überprüft werden. Während der Evaluation sollen die erzielten Ergebnisse kritisch hinterfragt und das Plugin, sowie die Inhaltsmoderation durch Sprachmodelle, entsprechend bewertet werden. - -Während der Bearbeitung dieser Arbeit sollen folgende Fragen beantwortet werden: - -1. Wie kann die [OpenAI-API][openai-api] in die [WoltLab Suite][woltlab-suite] integriert werden? -2. Wie kann eine automatisierte Inhaltsmoderation durch Sprachmodelle implementiert werden und welche Herausforderungen ergeben sich dabei? -3. Eignen sich Sprachmodelle wie GPT zur automatisierten Moderation von nutzergenerierten Inhalten? -4. Welche Vor- und Nachteile (auch: Risiken) ergeben sich durch die Verwendung von KI zur automatisierten Moderation von nutzergenerierten Inhalten? -5. Können Sprachmodelle zur kontextsensitiven Moderation von nutzergenerierten Inhalten verwendet werden? -6. Welchen Einfluss können Anwender (Nicht-Entwickler) auf die Sprachmodelle bzw. deren Ergebnisse nehmen? -7. Kann KI die Moderation von nutzergenerierten Inhalten auf längere Sicht vollständig übernehmen und erprobte Maßnahmen und Algorithmen ersetzen? - - -## Zeitplan und Meilensteine - -**Bearbeitungsdauer:** ~9 Wochen - -**Woche 1-2** -* Beginn der Ausarbeitung -* Recherche zu den Themen Sprachmodelle, Inhaltsmoderation und WoltLab Suite -* *(Meilenstein 1)* Konzeption des Plugins und Spezifikation der Anforderungen - -**Woche 3-4** -* Fortführung der Ausarbeitung -* *(Meilenstein 2)* Entwicklung des Plugins - -**Woche 5-6** -* Fortführung der Ausarbeitung -* Testing und Fehlerbehebung -* Fertigstellung des Plugins -* Dokumentation des Plugins - -**Woche 7-8** -* Fortführung der Ausarbeitung -* Zusammenfassen der Arbeitsergebnisse -* *(Meilenstein 3)* Evaluation des Plugins - -**Woche 9** -* Fertigstellung der Ausarbeitung -* Abgabe der Bachelorarbeit - -## Ausblick - -Nach Abschluss der Entwicklung des Plugins ist es denkbar, dieses zur Optimierung der Ergebnisse stetig weiterzuentwickeln und um neue Funktionen, wie beispielsweise der Moderation von weiteren Textinhalten innerhalb der WoltLab Suite, zu erweitern. Potenziell könnten sogar zusätzliche KI-Systeme integriert werden, welche die automatisierte Moderation auch auf andere Inhaltstypen wie Bildinhalte ausweiten können. Außerdem könnte geprüft werden, ob die Ergebnisse zuverlässig genug sind, um die Inhaltsmoderation vollständig zu automatisieren und keine Prüfung durch die Moderation mehr zu erfordern. - -Die Ergebnisse dieser Arbeit können auch als Grundlage für weitere Forschungsarbeiten dienen, um die Inhaltsmoderation durch Sprachmodelle weiter zu erforschen. Im Rahmen einer detaillierteren Evaluation des Plugins oder dessen Funktionsweise unter nachgestellten Bedingungen, können nicht nur weitere Verbesserungen des Plugins identifiziert werden, sondern auch die Ergebnisse dieser Arbeit noch einmal kritisch hinterfragt und bewertet werden. Denkbar wäre auch eine Gegenüberstellung der Ergebnisse verschiedener Sprachmodelle bzw. KI-Systeme, um diese miteinander zu vergleichen. - -Bietet das Plugin genug Potenzial, die Moderation von zumindest textbasierten Inhalten zufriedenstellend zu automatisieren, könnten auch vergleichbare Lösungen für weitere Plattformen umgesetzt werden. - - -[woltlab-suite]: https://www.woltlab.com/ -[openai-api]: https://openai.com/blog/openai-api/ \ No newline at end of file diff --git a/_works/m-dahlke/TH_Koeln_Logo.png b/_works/m-dahlke/TH_Koeln_Logo.png deleted file mode 100644 index 52feb19..0000000 Binary files a/_works/m-dahlke/TH_Koeln_Logo.png and /dev/null differ diff --git a/_works/n-mehlem/02-titles-and-research-questions.md b/_works/n-mehlem/02-titles-and-research-questions.md deleted file mode 100644 index fc9268b..0000000 --- a/_works/n-mehlem/02-titles-and-research-questions.md +++ /dev/null @@ -1,35 +0,0 @@ -# Titel und Forschungsfrage - -Bitte notieren Sie mindestens 10 mögliche Titel der Arbeit und mindestens 5 mögliche Forschungsfragen/ Zielsetzungen in dieses Dokument. - -# Mögliche Titel: -- Vergleich von Gesichtserkennungsmodellen in Bezug auf Werke von Cranach - -- Analyse der Eignung von Gesichterserkennungsmodellen für das Cranach Archiv - -- Bewertung von Gesichterserkennungsmodellen für das Cranach Archiv - -- Bewertung der Effizienz von Gesichtserkennungsmodellen unter der Verwendung von Werken Cranachs - -- Test und Vergleich von Gesichtserkennungsmodellen für die Verwendung mit Werken von Cranach - -- Vergleich von Gesichtserkennungsmodellen für Kunstwerke: Eine Analyse am Beispiel des Cranach-Archivs - -- Gesichtserkennung in historischen Gemälden: Evaluierung von Modellen für das Cranach-Archiv - -- Vergleich von Gesichterkennusnmodellen: Eine Benchmark-Studie zur Gesichtserkennung in alten Kunstwerken des Cranach Archivs - -- Machine Learning für Kunstwerke: Evaluierung von Gesichtserkennungsmodellen auf historischen Portraits des Cranach Archivs - -- Gesichtserkennung für Gemälden der Renaissance: Eine Analyse von Gesichtserkennung für historische Gemälde des Cranach Archivs - -# Mögliche Forschungsfragen / Zielsetzungen: -- Wie gut eignen sich aktuelle freizugängliche Gesichtserkennungsmodelle für die Erkennung von Gesichtern in historischen Gemälden von Cranach? - -- Welche Gesichtserkennungsmodelle liefern die höchste Erkennungsrate für die Kunstwerke des Cranach-Archivs? - -- Wie unterscheiden sich aktuelle Methoden für Gesichtserkennung in Bezug auf Genauigkeit und Effizienz, in Bezug auf Werke von Cranach? - -- Welches Modell oder Kombination von Methoden eignet sich am besten für das Cranach-Archiv ? - -- Eine umfassende Evaluierung verschiedener Gesichtserkennungsmodelle auf Bildern aus dem Cranach-Archiv durchführen. \ No newline at end of file diff --git a/_works/n-mehlem/Frame 1.png b/_works/n-mehlem/Frame 1.png deleted file mode 100644 index f523161..0000000 Binary files a/_works/n-mehlem/Frame 1.png and /dev/null differ diff --git a/_works/n-mehlem/Frame 2.png b/_works/n-mehlem/Frame 2.png deleted file mode 100644 index a50801f..0000000 Binary files a/_works/n-mehlem/Frame 2.png and /dev/null differ diff --git a/_works/n-mehlem/Frame 3.png b/_works/n-mehlem/Frame 3.png deleted file mode 100644 index d5e7cbe..0000000 Binary files a/_works/n-mehlem/Frame 3.png and /dev/null differ diff --git "a/_works/n-pola-can-i-cai-entwicklung-einer-webapp-zur-\303\274berpr\303\274fung-von-ver\303\266ffentlichungsprozessen-auf-kompatibilit\303\244t-mit-aufkommenden-standards-der-content-authenticity-initiative-zur-auszeichnung-von-authentischen-medien-im-web-july-23-2024-12-00-am.md" "b/_works/n-pola-can-i-cai-entwicklung-einer-webapp-zur-\303\274berpr\303\274fung-von-ver\303\266ffentlichungsprozessen-auf-kompatibilit\303\244t-mit-aufkommenden-standards-der-content-authenticity-initiative-zur-auszeichnung-von-authentischen-medien-im-web-july-23-2024-12-00-am.md" deleted file mode 100644 index eb77ab6..0000000 --- "a/_works/n-pola-can-i-cai-entwicklung-einer-webapp-zur-\303\274berpr\303\274fung-von-ver\303\266ffentlichungsprozessen-auf-kompatibilit\303\244t-mit-aufkommenden-standards-der-content-authenticity-initiative-zur-auszeichnung-von-authentischen-medien-im-web-july-23-2024-12-00-am.md" +++ /dev/null @@ -1,31 +0,0 @@ ---- -related-folder: n-pola -title: Can I CAI? Entwicklung einer Webapp zur Überprüfung von - Veröffentlichungsprozessen auf Kompatibilität mit aufkommenden Standards der - Content Authenticity Initiative zur Auszeichnung von authentischen Medien im - Web. -date: 2024-07-23 -result-pdf: - - uploads/polarek-nils-ba-ss24-rev.pdf -result-repo: https://github.com/n-pola/can-i-cai -final-video: true -layout: work-result -author: Nils Polarek -result-website: https://www.can-i-cai.de -slideshow: true -final-presentation: QXwDuePHw5U -type: Bachelorarbeit -visibility: published -status: finished -keywords: Content Authenticity Initiative (CAI), Generative künstliche - Intelligenz, Authentizität -thumbnail: /assets/uploads/polarek-nils-ba-ss24-bilddokumentation-13-s.webp -avatar: /assets/uploads/nils-xxl-1800x.jpg ---- -Durch rapide Fortschritte im Bereich der generativen künstlichen Intelligenz wird es zunehmend schwerer für Nutzer:innen echte Inhalte von solchen zu unterscheiden, die generiert oder manipuliert wurden. Dies kann zur bewussten oder unabsichtlichen Verbreitung von Falschinformationen führen, welche Nutzer in ihrer Wahrnehmung der Realität beeinflussen können. Aus diesem Grund wurde die Content Authenticity Initiative (CAI) gegründet, welche in Zusammenarbeit mit der Coalition for Content Provenance and Authenticity (C2PA) an Open-Source-Standards und Werkzeugen zur Auszeichnung und Überprüfung von beweisbar authentischen Inhalten im Web arbeitet. Diese Standards und deren Problemfeld gewinnen zunehmend an Bedeutung, sodass sie von Kameraherstellern wie Leica und Sony, Softwareherstellern wie Adobe und Social-Media-Plattformen wie TikTok bereits integriert werden. Damit es mehr authentische Inhalte im Web geben kann, müssen diese Standards von Medienschaffenden adaptiert werden. Dies gestaltet sich zum aktuellen Zeitpunkt allerdings noch als herausfordernd, da die Verbreitung der Standards zwar zunimmt, aber noch in einer frühen Phase ist, sodass nur wenige Geräte und Programme kompatibel sind und Informationen zur Kompatibilität von Hard- und Software nicht zentral verfügbar sind. - -Diese Arbeit beschäftigt sich mit der Gestaltung und Umsetzung einer Open-Source-Webapp, welche es Medienschaffenden ermöglicht, ihren individuellen Veröffentlichungsprozess hinsichtlich der Kompatibilität mit den Standards der CAI zu überprüfen. In dieser Webapp kann ein solcher Prozess interaktiv aus verschiedenen Bestandteilen zusammengestellt werden und es wird aufgezeigt, welche Bestandteile kompatibel sind und welche die Kette von aufeinander aufbauenden Metadaten unterbrechen würden. - -Hierbei liegt neben der Gestaltung und Umsetzung der Anwendung ein besonderer Fokus auf der Erstellung eines Systems zur Pflege der benötigten Datenbasis im Kontext einer Open-Source-Anwendung, sodass andere Beteiligte diese erweitern und bearbeiten können, der Erstellung eines interaktiven Prozess-Editors und der Adaption dieses in eine mobile Version mit Integration von Touchinteraktionen und -gesten. - -Das Ergebnis dieser Arbeit ist eine für Desktop- und Mobilgeräte optimierte Webapp, welche unter https://www.can-i-cai.de erreichbar ist. diff --git a/_works/n-pola/01-resarch-area-analysis/README.md b/_works/n-pola/01-resarch-area-analysis/README.md deleted file mode 100644 index 8311bbc..0000000 --- a/_works/n-pola/01-resarch-area-analysis/README.md +++ /dev/null @@ -1,3 +0,0 @@ -# Themenfeldanalyse - -Bitte legen Sie Ihre Concept Map zur Themenfeldanalyse hier als PDF ab. Die Datei sollte nicht größer als 2 Mbyte sein. \ No newline at end of file diff --git a/_works/n-pola/01-resarch-area-analysis/Themenfeldanalyse.pdf b/_works/n-pola/01-resarch-area-analysis/Themenfeldanalyse.pdf deleted file mode 100644 index 61464e1..0000000 Binary files a/_works/n-pola/01-resarch-area-analysis/Themenfeldanalyse.pdf and /dev/null differ diff --git a/_works/n-pola/01-resarch-area-analysis/Wordcloud.pdf b/_works/n-pola/01-resarch-area-analysis/Wordcloud.pdf deleted file mode 100644 index 73a6dc7..0000000 Binary files a/_works/n-pola/01-resarch-area-analysis/Wordcloud.pdf and /dev/null differ diff --git a/_works/n-pola/02-titles-and-research-questions.md b/_works/n-pola/02-titles-and-research-questions.md deleted file mode 100644 index 96e48a7..0000000 --- a/_works/n-pola/02-titles-and-research-questions.md +++ /dev/null @@ -1,42 +0,0 @@ -# Titel und Forschungsfrage - -Bitte notieren Sie mindestens 10 mögliche Titel der Arbeit und mindestens 5 mögliche Forschungsfragen/ Zielsetzungen in dieses Dokument. - -## Forschungsfragen -- Welche technische Möglichkeit ist am besten zum schnellen Assoziieren eines Boulders mit seiner Repräsentation in der Applikation geeignet? -- Wie lässt sich ein Boulder/eine Route schnell und intuitiv per App identifizieren, ohne dabei auf von einer Kletterhalle angebrachte Hilfsmittel zu bestehen? -- Lässt sich ein Boulder oder eine Kletterroute nur anhand der Startgriffe erkennen? -- Welche Kombination von Methoden zur Lokalisierung eines Boulders oder einer Route eignet sich am besten, um sowohl Erkennung ohne Zutun einer Kletterhalle zu unterstützen, als auch präziseres Erkennen in Kletterhallen, welche das Vorhaben aktiv unterstützen wollen? -- Wie lässt sich eine umgebungsabhängige Applikation außerhalb dieser Umgebung geeignet Testen? -- Besteht eine Bereitschaft zu Nutzung von mobilen Endgeräten während des Boulderns/Kletterns? -- Welche Eigenheiten müssen bei der Gestaltung eines Systems zur Nutzung während des Kletterns beachtet werden? - -### Überarbeitete Forschungsfragen -- Wie lässt sich ein Boulder oder eine Kletterroute schnell und unabhängig von zusätzlichen Hilfsmitteln per App identifizieren? -- Welche Kombination von Methoden zur Identifikation eines Boulders oder einer Route eignet sich am besten, um Erkennung ohne Zutun einer Kletterhalle zu unterstützen. -- Wie lässt sich eine umgebungsabhängige Applikation außerhalb dieser Umgebung geeignet Testen? - -## Zielsetzungen -- Evaluation von unterschiedlichen Systemen zur digitalen Identifizierung von Bouldern in einer Kletterhalle -- Entwicklung eines geeigneten Systems zur Bestimmung und Identifizierung eines Boulders in einer Kletterhalle mit Hilfe von Smartphones -- Evaluation der besten Methode zum Identifizieren/Einchecken von Bouldern ohne Hilfsmittel von Kletterhallen -- Entwicklung einer prototypischen Applikation zum Testen des Systems -- Testen des Systems unter realen Bedingungen in einer Kletterhalle - -## Titel -* "Indoor GPS" - Evaluation und Implementierung von geeigneten Methoden zur Lokalisierung von Bouldern in einer Kletterhalle -* Digitalisierung des Klettersports - Entwicklung eines modernen und intuitiven Systems zur Lokalisierung von Bouldern und Kletterrouten in einer Kletterhalle -* Konzeption von geeigneten Methoden zur intuitiven Lokalisierung von Bouldern und Kletterrouten in einer Kletterhalle -* Konzeption eines geeigneten Systems zum präzisen Lokalisieren von Objekten in geschlossenen Räumen im Kontext des Indoorkletterns -* Lokalisierung von Objekten in geschlossenen Räumen - prototypische Umsetzung im Kontext des Indoor-Klettersports -* Objektlokalisierung an Kletterwänden - Evaluation und Implementierung geeigneter Methoden -* Digitalisierung des Klettersports - Grundlagenforschung zum intuitiven Lokalisieren von Bouldern oder Kletterrouten in einer Kletterhalle mithilfe eines Smartphones -* Prototypischen Entwicklung eines Systems zur Lokalisierung von Objekten in geschlossenen Räumlichkeiten im Kontext des Indoor-Klettersports -* Lokalisierung von Bouldern und Kletterrouten in Kletterhallen - Evaluation und Implementierung von geeigneten Systemen -* Konzeption und Implementierung geeigneter Methoden zum Assoziieren eines Boulders mit seiner Repräsentation in einer Applikation - -### Überarbeitete Titel -* Entwicklung und prototpyische Implementierung eines Systems zur Identifikation von Bouldern und Kletterrouten in einer Kletterhalle -* Konzeption und prototypische Implementierung von geeigneten Methoden zur Identifikation von Bouldern und Kletterrouten in einer Kletterhalle mit Hilfe von Smartphones -* Konzeption und prototypische Implementierung eines geeigneten Systems zum präzisen Identifizieren von Objekten in geschlossenen Räumen im Kontext des Indoorkletterns -* Prototypischen Entwicklung eines Systems zur Identifikation von Bouldern und Kletterrouten in geschlossenen Räumlichkeiten mit Hilfe von Smartphones diff --git a/_works/n-pola/03-expose.md b/_works/n-pola/03-expose.md deleted file mode 100644 index 404aa95..0000000 --- a/_works/n-pola/03-expose.md +++ /dev/null @@ -1,101 +0,0 @@ -# Prototypischen Entwicklung eines Systems zur Identifikation von Bouldern und Kletterrouten in geschlossenen Räumlichkeiten mit Hilfe von Smartphones - -## Problemfeld und Kontext -Bei den Sportarten Bouldern und (Sport-)klettern ist es das Ziel, eine vordefinierte Route, also eine Sammlung von festgelegten Griffen, Tritten und anderen Elementen, mit möglichst wenig Versuchen zu erklimmen. Bouldern findet ohne Seil und in vergleichsweise geringen und ungefährlichen Höhen statt. Der Boden in einer Halle besteht aus einem weichen Material, sodass Stürze gedämpft werden und man die Sportart alleine ausführen kann. Für das Sportklettern hingegen braucht man einen Partner, da es in deutlich größere Höhen geht und man permanent mit einem Seil gesichert werden muss. - -Um die Schwierigkeit einer Route zu definieren, welche sich aus der Art der Griffe, der Art der Bewegungen, dem Überhang der Wand und vielen weiteren Faktoren ergibt, werden diese von Personen, die diese Route bestiegen haben, oder dem Personal, welche die Route in einer Kletterhalle erstellt haben, bewertet. Anhand dieser Bewertungen können die Sportler Routen auswählen, Ihren Fortschritt feststellen und sich mit anderen vergleichen. Diese Bewertungen sind jedoch sehr subjektiv und können von der von einem Großteil der Sportler wahrgenommenen Schwierigkeit abweichen. - -Grundsätzlich gibt es in diesem Kontext bereits Applikationen, welche versuchen das Klettererlebnis zu digitalisieren, aber keine bietet Features, welche die Schwierigkeit eines Boulders oder einer Kletterroute dynamisch, also anhand von Faktoren wie der Anzahl der erfolgreichen oder fehlgeschlagenen Versuche eines Sportlers und dessen, anhand von Erfolgen und Misserfolgen bestimmten, Können, bestimmen kann. -Zudem setzten die meisten Applikationen voraus, dass eine Kletterhalle sich dort anmeldet und ihre Boulder und Routen pflegt. Somit wäre eine Applikation, welche durch die Community von Sportlern betrieben werden kann und die in der Lage ist, dynamisch den Schwierigkeitsgrad anzupassen ein interessantes Vorhaben. - -Zentrale Funktion solcher Applikationen und ein Aspekt, der deutlich verbessert werden kann, ist das "Einchecken" beziehungsweise Erkennen und Finden einer gewünschten Route oder eines Boulders. Dies geschieht momentan lediglich per Namen der Route, Schwierigkeitsgrad und Namen der Wand, an der sich eine Route oder Boulder befindet. Der Nutzer muss all diese Aspekte kennen und eingeben, um das gewünschte Objekt in einer Applikation zu finden. Dies kann teilweise lange dauern, bietet kein gutes Nutzererlebnis und kann bei fehlenden Informationen zu keinem Ergebnis führen. Erst nachdem das gewünschte Objekt in der Applikation gefunden wurde, können die eigentlichen Funktionen der Applikation in Anspruch genommen werden. - -## Ziel -Das Ziel dieses Praxisprojekts ist, diverse Methode zur Lokalisierung eines Boulders oder einer Kletterroute zu erarbeiten, diese anhand von festgelegten Kriterien zu evaluieren und dann prototypisch die besten zwei Methoden zu implementieren. Idealerweise sollten diese Prototypen dann in einer realen Kletterhalle verprobt werden. - -## Aufgabenstellung -Anhand des Kontextes und der Ziele lässt sich folgende zentrale Forschungsfrage bilden: - -**"Welche technische Möglichkeit ist am besten zum schnellen Assoziieren eines Boulders mit seiner Repräsentation in der Applikation geeignet?"** - -Konkret lassen sich nun aus den Zielen und der Forschungsfrage verschiedene Unterfragen ableiten, welche im Rahmen dieses Projektes beantwortet werden sollen: -* Anhand von welchen Kriterien lassen die gewählten Methoden evaluieren? -* Welche Möglichkeit eignet sich am besten für eine Plattform, welche nicht das Zutun einer Kletterhalle voraussetzt? -* Wie lässt sich ein umgebungsabhängiger Prototyp außerhalb dieser Umgebung geeignet Testen? -* Wie lässt sich ein Boulder oder eine Kletterroute ohne physikalische zusätzliche Hilfsmittel in einer Applikation erkennen? - - - -## Lösungansätze und Ressourcen -Im Folgenden ist eine Reihe von ersten möglichen Methoden zur Lokalisierung zu finden. Diese Methoden basieren alle auf dem Vorhaben, eine Route/einen Boulder mit Hilfe eines Smartphones ohne zusätzliche Sesoren an dem Geräte eines Nutzers, zu erkennen. -Die Methoden ließen sich in der Theorie miteinander kombinieren, um präzisere Ergebnisse zu erhalten. Ebenso ließen sie sich mit weiteren internen Sensoren eines Smartphones kombinieren, wie zum Beispiel dem Kompass, welcher nützlich sein könnte, um zu bestimmen, auf welche Wand ein Nutzer gerade schaut. -### QR Codes -Eine einfach und rudimentäre Möglichkeit zum Identifizieren der gewünschten Objekte wäre das Anbringen von QR Codes an den Startgriffen der entsprechenden Route oder des entsprechenden Boulders. Dieser ließe sich problemlos mit einem Smartphone einscannen und mir der Repräsentation in einer App verbinden. Jedoch setzt diese Methode das Mitmachen der Kletterhallen voraus, sowohl beim Anbringen der QR Codes, als auch beim Pflegen der Routen/Boulder. - -### NFC Tags -Ähnlich simpel wäre eine Lösung mittels NFC Tags, welche an den Startgriffen angebracht sind. Diese könnten aufgrund ihrer geringen Größe in bereits bestehende Schilder, welche den Schwierigkeitsgrad angeben, integriert werden. Ebenso wie bei einer Lösung mittels QR Codes ist hier eine gewisse Form von Mitarbeit seitens der Kletterhallen erforderlich. Zudem erfordert diese Technologie, dass die Sportler unmittelbar an der Route oder dem Boulder sein müssen, was in größeren Gruppen teilweise störend sein könnte. - -### Indoor Position System - "Indoor GPS" -Eine Technologie, welche es ermöglicht die Position von Smartphones, und damit die Ihrer Nutzer, innerhalb geschlossener Räume ausreichend genau zu bestimmen, sodass dem Nutzer die Routen und Boulder angezeigt werden können, welche sich in seiner Nähe befinden. Zudem ließe sich auch eine Art von Navigation umsetzten, welche es den Nutzer ermöglich würde, Boulder und Routen einfacher in einer Halle zu finden, welche Ihnen zum Beispiel durch ein Recommendation Sytem empfohlen wurden. Diese Lösungen sollten auf in Smartphones bereits vorhandenen Sensoren basieren. - -#### BLE Beacons -BLE (Bluetooth low energy) Beacons sind Geräte, welche auf Basis des BLE Funkstandards permanent ein Signal ausgeben, welches einen eindeutigen Identifier enthält, um die Beacons voneinander zu unterscheiden. Anhand der Signalstärke der unterschiedlichen Beacons kann ein Smartphone nun seine eigene Position feststellen und die Boulder/Routen, welche sich zum Beispiel in einem frei definierbaren Radius befinden, anzeigen. Voraussetzung dafür ist, dass die Position der Beacons bekannt und fest definiert ist und die Position eines Boulders oder einer Route im System definiert ist. Diese Methode erfordert einen initialen Aufwand einer Kletterhalle, welche die Beacons anbringen müsste und grob den Grundriss der Kletterwände angeben müsste. Danach könnten Objekte durch Mitarbeiter, aber auch durch Sportler gepflegt werden. - -#### WLAN -Ein ähnliches Prinzip ließe sich mittels WLAN umsetzten. Hier könnte man eventuell auf bereits vorhandene Infrastruktur setzen, jedoch ist es fraglich, ob man mittels WLAN eine ausreichend hohe Präzision erreichen kann. Wenn dies nicht der Fall ist oder wenn keine Infrastruktur vorhanden ist, fallen zudem deutlich höhere Kosten im Vergleich zu BLE Beacons an. - -#### Auditive Positionierung -Eine auditive Positionierung lässt sich theoretisch durch das Wiedergeben verschiedener, für Menschen nicht hörbarer, Frequenzen realisieren. Dazu werden in einem Raum Geräte verteilt, welche je eine eindeutige Frequenz ausgeben, welche dann von dem Mikrofon eines Smartphones aufgenommen werden können und anhand der unterschiedlichen Amplituden der Signale kann dann versucht werden, eine Position im Raum zu bestimmen. - -### Object Detction / AR -Im Folgenden sind eine Reihe von Ansätzen, welche auf einem Livevideo der Smartphonekamera und Computer Vision basieren, aufgelistet. -#### Route/Boulder Recognition auf Raster -Kletterwände sind in der Regel mit vorgefertigten Bohrungen versehen, welche in regelmäßigen vertikalen und horizontalen Abständen zu finden sind. Diese könnten dazu genutzt werden, ein Raster auf einer Wand zu bestimmen und so die Position der Griffe an der Wand anhand des Rasters zu erfassen. Eine Erfassung der Griffe durch Farbe und Kontrast zu der Wand könnte die Präzision erhöhen. So könnte der Nutzer die Wand mit seinem Smartphone im "Scanmodus" filmen und es könnten die boulder/Routen an der Wand markiert werden, welche zuvor von einem anderen Nutzer eingetragen wurden, sodass der Nutzer nun das gewünschte Objekt auswählen kann. -Diese Lösung würde kein Zutun einer Kletterhalle erfordern und somit eine communitydriven App ermöglichen. - -#### Fingerprinting von Startgriffen -Eine Route oder ein Boulder startet immer an ein bis zwei fest definiert den Startgriffen, an welchen sich zum Beginn die Hände des Sportlers befinden müssen. In Wettkampfumgebung können es auch vier Startmarkierungen sein, wobei zum Start jede Markierung mit einer Hand oder einem Fuß berührt werden muss. -Nun ist die Überlegung, ob die visuellen Eigenschaften der Startgriffe, also zum Beispiel die Farbe, Winkel der Griffe, Form der Griffe und Features der Umgebung, also markante Punkte, ausreichen könnten, um eine Route/einen Boulder eindeutig zu identifizieren. Diese Lösung würde auf einem initialen Einscannen der Griffe basieren und könnte unabhängig vom Zutun einer Kletterhalle eingesetzt werden. -In der Anwendung würde der Nutzer dann im "Scanmodus" die Griffe filmen und sobald ein passender Treffer gefunden wurde, wird dieser geöffnet. -Dieser Ansatz ist besonders für Kletterrouten interessant, da es unmöglich ist, die ganze Route mit einer Smartphonekamera zu erfassen. - -#### Infrarot -An den äußersten Ecken der Kletterwände oder eines Abschnitts einer Kletterwand könnten kleine Infrarot LEDs angebracht werden, welche für das menschliche Augen nicht sichtbar sind, aber von Smartphonekameras erkannt werden können. Eine der LEDs könnte in binärer Form in gewissen Intervallen einen eindeutigen Identifier übergeben. -Diese LEDs würden die Abgrenzungen der Wand bestimmen und so die Möglichkeit bieten, diese in einer AR-Implementation zu erkennen und Objekte auf der Wand zu markieren. -Hier würde ein initialer Aufwand bei den Kletterhallen entstehen, aber danach könnte ein Betrieb ohne Zutun der Kletterhallen ermöglicht werden. Jedoch könnte sich das Erkennen des eindeutigen Identifiers aufgrund von Eigenschaften von Smartphonekameras, wie Wiederholrate und Verschlusszeit, als kompliziert herausstellen. - -## Chancen und Risiken -Das Projekt bietet die Chance, eine Grundlage für eine neue und moderne Applikation im Kontext des Klettersports zu legen, welche im Bachelor weiterentwickelt werden könnte, und dabei neue Techniken und Methoden zu erforschen und diese mit bereits Gelerntem zu kombinieren. Zudem könnte das Projekt unter der Voraussetzung, dass es der Open Source Community zur Verfügung gestellt wird, die Chance bieten, ein Standard für Kletterapplikationen aller Art zu werden. - -Der Erfolg dieses Vorhabens ist, je nach Ausgang der Analyse maßgeblich von dem Interesse und der Annahme des Produktes von Mitarbeitern, Hallen und Sportlern abhängig. Es besteht das Risiko, dass die Hallen keinen Mehrwert in dem System sehen und es somit nicht einführen oder unterstützen, die Sportler keine Smartphones während des Kletterns benutzen wollen oder können oder das schlichtweg kein Interesse an den Funktionen des Produktes existiert und die Sportler dieses nicht nutzen. - -Auf der anderen Seite ist die Hürde zur Entwicklung eines Systems, welches ohne Zutun einer Kletterhalle auskommt, nach meiner aktuellen Ansicht und Kenntnisstand relativ hoch und könnten dazu führen, dass am Ende kein tatsächlich funktionierender Prototyp erstellt werden kann. - -## Motivation -Die Motivation zu diesem Projekt stammt aus eigenen Erfahrungen, dem eigenen Wunsch nach einem solchen System und dem Streben einen sinnvollen Beitrag zu einer Community leisten zu können, der diese womöglich verbessert und das Erlebnis Klettern erweitern könnte. Ich selber gehe seit 2018 regelmäßig Bouldern und während dieser Zeit ist mir noch kein etabliertes oder weit verbreitetes System untergekommen und nun habe ich es mir zum Ziel gesetzt, dieses Gebiet und Ideen zur Lösung der diversen Probleme tiefer zu erforschen und erste Konzepte zu einem tatsächlichen Produkt auszuarbeiten. - -## Durchführungskontext und zeitliche Planung - -### Setup -Dieses Projekt soll im Rahmen der TH Köln ohne einen direkten Auftraggeber, welcher einen Einfluss und direktes Interesse an dem Projekt hat, stattfinden. Dennoch soll eine lokale Kletterhalle, die Kletterwelt Sauerland in Lüdenscheid, in das Projekt als Kooperationspartner integriert werden, welche dann Ihre Bedenken und Anregungen einbringen kann, Konzepte evaluieren kann und zu einem späteren Zeitpunkt eventuell als Pilot Hallen erste Versionen testen könnte. - -### Abhängigkeiten -Die Durchführung dieses Projektes ist völlig unabhängig von externen Einflüssen und Gegebenheiten. Es sind keine externen Teilhaber vorhanden und das Projekt ist auch nicht abhängig von externen Daten oder Zugängen. Lediglich die Weiterführung des Projektes im Rahmen einer Bachelorarbeit hängt von den Ergebnissen dieses Projektes ab. -Ein Test erstellter Prototypen kann unter dem Umstand, dass kein Kooperationspartner gefunden werden konnte, auch in einem simulierten Kontext stattfinden. - -### Meilensteine und Zeitrahmen -Unter Berücksichtigung von Ressourcen, Risiken, Unterfragen und Aufgaben lassen sich folgende mögliche Meilensteine definieren: -* Gewinnung von möglichem Kooperationspartner für das Projekt -* Recherche und Ausarbeitung verschiedener Lösungen -* Ausarbeitung einer geeigneten Evaluationsmethode -* Evaluation der Methoden unter zuvor erarbeiteten Aspekten -* Evaluation von Implementationsmöglichkeiten zum Erstellen der Prototypen -* Prototypische Implementation der zwei besten Methoden -* Testdurchlauf der Methoden in einer Kletterhalle oder simulierter Umgebung -* Auswertung der Testdurchläufe - - -Aufgrund von Verpflichtungen und Aufgaben außerhalb des Hochschulkontextes und aufgrund des Bestrebens, eine umfassende und gut ausgearbeitete Arbeit abgeben zu können, wird sich der zeitliche Rahmen dieses Projekt auf schätzungsweise vier(4) bis fünf(5) Monaten belaufen. - -## Arbeitsergebnis -Das Ergebnis dieses Praxisprojektes soll eine Evaluierung verschiedener Methoden zum Erkennen und Finden von Bouldern oder Kletterrouten mithilfe eins Smartphones und eine prototypische Implementierung der zwei besten Methoden in einer App sein. Diese Prototypen sollen daraufhin idealerweise in einer realen Kletterhalle getestet werden, um erste Schwachstellen und Probleme identifizieren zu können. diff --git a/_works/n-pola/04-results/README.md b/_works/n-pola/04-results/README.md deleted file mode 100644 index 7742390..0000000 --- a/_works/n-pola/04-results/README.md +++ /dev/null @@ -1,3 +0,0 @@ -# Ergebnisse - -Bitte legen Sie Ihre Ergebnisse hier ab. Achten Sie bitte auf moderate Dateigrößen. Bitte legen Sie nur geschlossene Dokument, z.B. PDF statt *.doc ab. \ No newline at end of file diff --git a/_works/n-pola/04-results/images/metadata.json b/_works/n-pola/04-results/images/metadata.json deleted file mode 100644 index 8d299ef..0000000 --- a/_works/n-pola/04-results/images/metadata.json +++ /dev/null @@ -1,200 +0,0 @@ -[ - { - "src": "images/polarek-nils-ba-ss24-bilddokumentation-01-s.webp", - "metadata": { - "Title": "Interviewpartner 1", - "Description": "Interview mit einem freischaffenden Fotoredakteur", - "Rights": "NILS POLAREK", - "ImageWidth": 1067, - "ImageHeight": 1600, - "Orientation": "portrait" - } - }, - { - "src": "images/polarek-nils-ba-ss24-bilddokumentation-02-s.webp", - "metadata": { - "Title": "Interviewpartner 2", - "Description": "Interview mit einem wissenschaftlichen Mitarbeiter im Bereich der Öffentlichkeitsarbeit", - "Rights": "© Nils Polarek", - "ImageWidth": 1600, - "ImageHeight": 940, - "Orientation": "landscape" - } - }, - { - "src": "images/polarek-nils-ba-ss24-bilddokumentation-03-s.webp", - "metadata": { - "Title": "Scribbles", - "Description": "Erste Scribbles zur Systemgestaltung in einer frühern Phase der Arbeit.", - "Rights": "NILS POLAREK", - "ImageWidth": 1600, - "ImageHeight": 1067, - "Orientation": "landscape" - } - }, - { - "src": "images/polarek-nils-ba-ss24-bilddokumentation-04-s.webp", - "metadata": { - "Title": "Aufbau der Daten", - "Description": "Arbeit am Proof of Concept zur Pfelge benötigter Daten im Repository und an ersten TypeScript Types für zukünftige Systemkomponenten.", - "Rights": "NILS POLAREK", - "ImageWidth": 1067, - "ImageHeight": 1600, - "Orientation": "portrait" - } - }, - { - "src": "images/polarek-nils-ba-ss24-bilddokumentation-05-s.webp", - "metadata": { - "Title": "Interviewpartner 3", - "Description": "Interview mit einem professionellen Fotografen zur Kontextanalyse.", - "Rights": "NILS POLAREK", - "ImageWidth": 1600, - "ImageHeight": 1067, - "Orientation": "landscape" - } - }, - { - "src": "images/polarek-nils-ba-ss24-bilddokumentation-06-s.webp", - "metadata": { - "Title": "Validation Pipeline", - "Description": "Ergebnisse einer Validation Pipeline zum Überprüfen der im Repository gepflegten Daten", - "Rights": "© Nils Polarek", - "ImageWidth": 1600, - "ImageHeight": 1116, - "Orientation": "landscape" - } - }, - { - "src": "images/polarek-nils-ba-ss24-bilddokumentation-07-s.webp", - "metadata": { - "Title": "PoC Prozessdarstellung", - "Description": "Erstes PoC zur Darstellung von Prozessen und Bestandteilen mithilfe des foreignObject Elements", - "Rights": "© Nils Polarek", - "ImageWidth": 1600, - "ImageHeight": 744, - "Orientation": "landscape" - } - }, - { - "src": "images/polarek-nils-ba-ss24-bilddokumentation-08-s.webp", - "metadata": { - "Title": "Proof of Concept Darstellung", - "Description": "Ein erstes Proof of Concept der Darstellung eines Prozesses und der Interaktion mit diesem.", - "Rights": "NILS POLAREK", - "ImageWidth": 1600, - "ImageHeight": 1067, - "Orientation": "landscape" - } - }, - { - "src": "images/polarek-nils-ba-ss24-bilddokumentation-09-s.webp", - "metadata": { - "Title": "Die Webapp wird funktionsfähig", - "Description": "Erfolgreiche Verbindung zum Backend, Aufbau und Arbeit mit einem Prozess als Graph, Bestimmung dynamischer Positionen im SVG-Koordinatenraum und Erstellung eigener Modals auf Basis des nativen -Elements erlauben eine erste nutzbare Version der Webapp.", - "Rights": "NILS POLAREK", - "ImageWidth": 1600, - "ImageHeight": 1067, - "Orientation": "landscape" - } - }, - { - "src": "images/polarek-nils-ba-ss24-bilddokumentation-10-s.webp", - "metadata": { - "Title": "Deployment Pipeline", - "Description": "Zur automatisierten Veröffentlichung von neuen Versionen der Applikation wurde eine Deployment-Pipeline in GitHub geschaffen.", - "Rights": "NILS POLAREK", - "ImageWidth": 1600, - "ImageHeight": 1067, - "Orientation": "landscape" - } - }, - { - "src": "images/polarek-nils-ba-ss24-bilddokumentation-11-s.webp", - "metadata": { - "Title": "Cross Browser Probleme bei der Darstellung von Bestandteilen", - "Description": "Nach der Erstellung der interaktiven Visualisierung stellte sich heraus, dass Broswer Elemente mit einer „Grid“-Positionierung und einem darin enthaltenen Element mit der Eigenschaft „aspect-ratio: 1“ unterschiedlich darstellen. Es musste eine geeignete Lösung gefunden werden, sodass die Webapp auch in anderen Browsern außer Chrome nutzbar ist.", - "Rights": "© Nils Polarek", - "ImageWidth": 1225, - "ImageHeight": 1600, - "Orientation": "portrait" - } - }, - { - "src": "images/polarek-nils-ba-ss24-bilddokumentation-12-s.webp", - "metadata": { - "Title": "Mobile Version der Weabpp", - "Description": "Aufgrund der Tatsache, dass mehr als die Hälfte des Internettraffics auf mobile Geräte zurückzuführen ist, wurde eine für Mobilgeräte optimierte Version der Anwendung erstellt.", - "Rights": "NILS POLAREK", - "ImageWidth": 1067, - "ImageHeight": 1600, - "Orientation": "portrait" - } - }, - { - "src": "images/polarek-nils-ba-ss24-bilddokumentation-13-s.webp", - "metadata": { - "Title": "Mobiles Debugging", - "Description": "Um vorher nicht identifizierbare Fehler lösen zu können, wurde die Webapp mithilfe der Safari-Debugging-Tools untersucht.", - "Rights": "NILS POLAREK", - "ImageWidth": 1600, - "ImageHeight": 1067, - "Orientation": "landscape" - } - }, - { - "src": "images/polarek-nils-ba-ss24-bilddokumentation-14-s.webp", - "metadata": { - "Title": "Schriftliche Arbeit", - "Description": "Arbeit an der Illustration im Kapitle über die mobile Version der Webapp", - "Rights": "NILS POLAREK", - "ImageWidth": 1600, - "ImageHeight": 1067, - "Orientation": "landscape" - } - }, - { - "src": "images/polarek-nils-ba-ss24-bilddokumentation-15-s.webp", - "metadata": { - "Title": "Das Werk", - "Description": "Die finale Version der Webapp, live auf www.can-i-cai.de", - "Rights": "NILS POLAREK", - "ImageWidth": 1600, - "ImageHeight": 1067, - "Orientation": "landscape" - } - }, - { - "src": "images/polarek-nils-ba-ss24-bilddokumentation-16-s.webp", - "metadata": { - "Title": "\"Professioneller\" Videodreh", - "Description": "Improvisiertes Setup zum Dreh des Abschlussvideos", - "Rights": "© Nils Polarek", - "ImageWidth": 1600, - "ImageHeight": 1200, - "Orientation": "landscape" - } - }, - { - "src": "images/polarek-nils-ba-ss24-bilddokumentation-17-s.webp", - "metadata": { - "Title": "Die letzten Züge", - "Description": "Schnitt und Organisation der Inhalte des Abschlussvideos", - "Rights": "NILS POLAREK", - "ImageWidth": 1600, - "ImageHeight": 1067, - "Orientation": "landscape" - } - }, - { - "src": "images/polarek-nils-ba-ss24-bilddokumentation-18-s.webp", - "metadata": { - "Title": "Die Arbeit", - "Description": "Das finale gedruckte Exemplar der Bachelorarbeit", - "Rights": "NILS POLAREK", - "ImageWidth": 1067, - "ImageHeight": 1600, - "Orientation": "portrait" - } - } -] \ No newline at end of file diff --git a/_works/n-pola/04-results/images/polarek-nils-ba-ss24-bilddokumentation-01-s.webp b/_works/n-pola/04-results/images/polarek-nils-ba-ss24-bilddokumentation-01-s.webp deleted file mode 100644 index 771b788..0000000 Binary files a/_works/n-pola/04-results/images/polarek-nils-ba-ss24-bilddokumentation-01-s.webp and /dev/null differ diff --git a/_works/n-pola/04-results/images/polarek-nils-ba-ss24-bilddokumentation-02-s.webp b/_works/n-pola/04-results/images/polarek-nils-ba-ss24-bilddokumentation-02-s.webp deleted file mode 100644 index 98068a6..0000000 Binary files a/_works/n-pola/04-results/images/polarek-nils-ba-ss24-bilddokumentation-02-s.webp and /dev/null differ diff --git a/_works/n-pola/04-results/images/polarek-nils-ba-ss24-bilddokumentation-03-s.webp b/_works/n-pola/04-results/images/polarek-nils-ba-ss24-bilddokumentation-03-s.webp deleted file mode 100644 index 1b6d075..0000000 Binary files a/_works/n-pola/04-results/images/polarek-nils-ba-ss24-bilddokumentation-03-s.webp and /dev/null differ diff --git a/_works/n-pola/04-results/images/polarek-nils-ba-ss24-bilddokumentation-04-s.webp b/_works/n-pola/04-results/images/polarek-nils-ba-ss24-bilddokumentation-04-s.webp deleted file mode 100644 index a51924f..0000000 Binary files a/_works/n-pola/04-results/images/polarek-nils-ba-ss24-bilddokumentation-04-s.webp and /dev/null differ diff --git a/_works/n-pola/04-results/images/polarek-nils-ba-ss24-bilddokumentation-05-s.webp b/_works/n-pola/04-results/images/polarek-nils-ba-ss24-bilddokumentation-05-s.webp deleted file mode 100644 index a83b3b4..0000000 Binary files a/_works/n-pola/04-results/images/polarek-nils-ba-ss24-bilddokumentation-05-s.webp and /dev/null differ diff --git a/_works/n-pola/04-results/images/polarek-nils-ba-ss24-bilddokumentation-06-s.webp b/_works/n-pola/04-results/images/polarek-nils-ba-ss24-bilddokumentation-06-s.webp deleted file mode 100644 index 7b55970..0000000 Binary files a/_works/n-pola/04-results/images/polarek-nils-ba-ss24-bilddokumentation-06-s.webp and /dev/null differ diff --git a/_works/n-pola/04-results/images/polarek-nils-ba-ss24-bilddokumentation-07-s.webp b/_works/n-pola/04-results/images/polarek-nils-ba-ss24-bilddokumentation-07-s.webp deleted file mode 100644 index 6db3bf6..0000000 Binary files a/_works/n-pola/04-results/images/polarek-nils-ba-ss24-bilddokumentation-07-s.webp and /dev/null differ diff --git a/_works/n-pola/04-results/images/polarek-nils-ba-ss24-bilddokumentation-08-s.webp b/_works/n-pola/04-results/images/polarek-nils-ba-ss24-bilddokumentation-08-s.webp deleted file mode 100644 index f640044..0000000 Binary files a/_works/n-pola/04-results/images/polarek-nils-ba-ss24-bilddokumentation-08-s.webp and /dev/null differ diff --git a/_works/n-pola/04-results/images/polarek-nils-ba-ss24-bilddokumentation-09-s.webp b/_works/n-pola/04-results/images/polarek-nils-ba-ss24-bilddokumentation-09-s.webp deleted file mode 100644 index 3d81443..0000000 Binary files a/_works/n-pola/04-results/images/polarek-nils-ba-ss24-bilddokumentation-09-s.webp and /dev/null differ diff --git a/_works/n-pola/04-results/images/polarek-nils-ba-ss24-bilddokumentation-10-s.webp b/_works/n-pola/04-results/images/polarek-nils-ba-ss24-bilddokumentation-10-s.webp deleted file mode 100644 index f014553..0000000 Binary files a/_works/n-pola/04-results/images/polarek-nils-ba-ss24-bilddokumentation-10-s.webp and /dev/null differ diff --git a/_works/n-pola/04-results/images/polarek-nils-ba-ss24-bilddokumentation-11-s.webp b/_works/n-pola/04-results/images/polarek-nils-ba-ss24-bilddokumentation-11-s.webp deleted file mode 100644 index ea3d52d..0000000 Binary files a/_works/n-pola/04-results/images/polarek-nils-ba-ss24-bilddokumentation-11-s.webp and /dev/null differ diff --git a/_works/n-pola/04-results/images/polarek-nils-ba-ss24-bilddokumentation-12-s.webp b/_works/n-pola/04-results/images/polarek-nils-ba-ss24-bilddokumentation-12-s.webp deleted file mode 100644 index ef7b4ab..0000000 Binary files a/_works/n-pola/04-results/images/polarek-nils-ba-ss24-bilddokumentation-12-s.webp and /dev/null differ diff --git a/_works/n-pola/04-results/images/polarek-nils-ba-ss24-bilddokumentation-13-s.webp b/_works/n-pola/04-results/images/polarek-nils-ba-ss24-bilddokumentation-13-s.webp deleted file mode 100644 index 0b41cf9..0000000 Binary files a/_works/n-pola/04-results/images/polarek-nils-ba-ss24-bilddokumentation-13-s.webp and /dev/null differ diff --git a/_works/n-pola/04-results/images/polarek-nils-ba-ss24-bilddokumentation-14-s.webp b/_works/n-pola/04-results/images/polarek-nils-ba-ss24-bilddokumentation-14-s.webp deleted file mode 100644 index 380e0cd..0000000 Binary files a/_works/n-pola/04-results/images/polarek-nils-ba-ss24-bilddokumentation-14-s.webp and /dev/null differ diff --git a/_works/n-pola/04-results/images/polarek-nils-ba-ss24-bilddokumentation-15-s.webp b/_works/n-pola/04-results/images/polarek-nils-ba-ss24-bilddokumentation-15-s.webp deleted file mode 100644 index 5781edf..0000000 Binary files a/_works/n-pola/04-results/images/polarek-nils-ba-ss24-bilddokumentation-15-s.webp and /dev/null differ diff --git a/_works/n-pola/04-results/images/polarek-nils-ba-ss24-bilddokumentation-16-s.webp b/_works/n-pola/04-results/images/polarek-nils-ba-ss24-bilddokumentation-16-s.webp deleted file mode 100644 index fabc239..0000000 Binary files a/_works/n-pola/04-results/images/polarek-nils-ba-ss24-bilddokumentation-16-s.webp and /dev/null differ diff --git a/_works/n-pola/04-results/images/polarek-nils-ba-ss24-bilddokumentation-17-s.webp b/_works/n-pola/04-results/images/polarek-nils-ba-ss24-bilddokumentation-17-s.webp deleted file mode 100644 index 9063ab1..0000000 Binary files a/_works/n-pola/04-results/images/polarek-nils-ba-ss24-bilddokumentation-17-s.webp and /dev/null differ diff --git a/_works/n-pola/04-results/images/polarek-nils-ba-ss24-bilddokumentation-18-s.webp b/_works/n-pola/04-results/images/polarek-nils-ba-ss24-bilddokumentation-18-s.webp deleted file mode 100644 index 1187463..0000000 Binary files a/_works/n-pola/04-results/images/polarek-nils-ba-ss24-bilddokumentation-18-s.webp and /dev/null differ diff --git a/_works/p-schorde-design-und-konzeption-von-interaktiven-visualisierungen-des-produktlebenszyklus-zur-vermittlung-von-nachhaltigkeit-17-08-2023.md b/_works/p-schorde-design-und-konzeption-von-interaktiven-visualisierungen-des-produktlebenszyklus-zur-vermittlung-von-nachhaltigkeit-17-08-2023.md deleted file mode 100644 index 0d828b3..0000000 --- a/_works/p-schorde-design-und-konzeption-von-interaktiven-visualisierungen-des-produktlebenszyklus-zur-vermittlung-von-nachhaltigkeit-17-08-2023.md +++ /dev/null @@ -1,15 +0,0 @@ ---- -layout: work-result -author: Pascal Schorde -related-folder: p-schorde -title: " Design und Konzeption von interaktiven Visualisierungen des - Produktlebenszyklus zur Vermittlung von Nachhaltigkeit" -date: 2023-08-17 -type: Masterarbeit -visibility: published -status: finished -keywords: Nachhaltiger Konsum, Agenda 2030, Lebenszyklusanalyse, Visualisierung von Nachhaltigkeitsdimensionen -partner: Anna Matilda Nowak-Meitinger, Technische Universität Berlin -partner-url: https://www.tu.berlin/qw/ueber-uns/team ---- -Die Auseinandersetzung mit einem nachhaltigen Lebensstil umfasst die Beschäf- tigung mit dem individuellen Konsumverhalten. Im Kontext der Agenda 2030 der Vereinten Nation zur Erreichung der 17 Nachhaltigkeitsziele widmet sich das 12. Ziel mit nachhaltigen Produktions- und Konsummuster. Produktion und Konsum sind eng miteinander verbunden und durch globale Wertschöpfungsketten für einen Großteil des Ressourcenverbrauchs verantwortlich. Für einen nachhaltigen Konsum müssen Informationsasymmetrien zwischen Hersteller und Konsumenten überwunden werden. Die vorliegende Thesis beleuchtet diesen Themenkomplex. Mit der Design Science Research Methode werden die Themen Nachhaltigkeit, nachhaltige Entwicklung und nachhaltiger Konsum sowie der Lebenszyklus von Produkten mit den Bilanzierungs- methoden Ökobilanz und Sozialbilanz analysiert, um die vorhandenen Probleme aufzuzeigen. Ein Lösungsaspekt betrifft die Frage nach geeigneten Visualisierungen, die den komplexen Lebenszyklus mit seinen ökonomischen, ökologischen und sozialen Implikationen für Konsumenten zugänglich macht. Als Ergebnis wird eine Hierarchie des Lebenszyklus in Verbindung der Nachhaltigkeitsdimensionen und den zugrunde- liegenden Ausprägungen vorgestellt. Zu den einzelnen Ebenen werden Designmuster entworfen, die Teilaspekte des allgemeinen Lebenszyklus repräsentieren. diff --git a/_works/p-schorde/dsr-framework.png b/_works/p-schorde/dsr-framework.png deleted file mode 100644 index bd2bd9e..0000000 Binary files a/_works/p-schorde/dsr-framework.png and /dev/null differ diff --git a/_works/p-schorde/dsrm-process-model.png b/_works/p-schorde/dsrm-process-model.png deleted file mode 100644 index 6c2341d..0000000 Binary files a/_works/p-schorde/dsrm-process-model.png and /dev/null differ diff --git a/_works/p-schorde/index.md b/_works/p-schorde/index.md deleted file mode 100644 index 6e8f030..0000000 --- a/_works/p-schorde/index.md +++ /dev/null @@ -1,280 +0,0 @@ -# Design und Konzeption interaktiver Visualisierungen des Produktlebenszyklus zur Vermittlung von Nachhaltigkeit - -* Alternativ: Design und Konzeption interaktiver Visualisierungen des Produktlebenszyklus zur Vermittlung von Nachhaltigkeit in der Bildung -* Alternativ: Design und Konzeption interaktiver Visualisierungen des Produktlebenszyklus für eine Bildungs- bzw. Informationsplattform über Nachhaltigkeit - ---- - -> Schlagworte: _interaktive Visualisierung, Nachhaltigkeit, Produktlebenszyklus, Design, Bildung für nachhaltige Entwicklung, Kommunikation_ - ---- - -
    - Zusammenfassung der Sprechstunden (chronologisch) - -### Meeting 18.1. - -> Der Terminus _Visualisierung_ kann beibehalten werden, sollte aber erweitert werden, um die Verbraucher/Nutzer einzubeziehen. Das heißt, dass die Kommunikation der Visualisierung berücksichtig werden muss. Außerdem wurde hinterfragt, ob die Nennung der UN Nachhaltigkeitsziele Bestandteil des Titels werden soll. -> -> Ein weiterer Hinweis betrifft die Rolle der Daten in diesem Thema. Stehen diese bereits fest? Wie sollen die Daten eingesetzt werden? In welcher Form sollen diese vorliegen? Muss eine Änderbarkeit bedacht werden? Gibt es Standards? -> -> Außerdem muss sich die Frage gestellt werden, wie Nachhaltigkeit visualisiert werden kann. Sollten Visualisierungen im Prozess der Thesis entstehen, sind spätestens zur Evaluation Nutzer notwendig, um u.a. die Usability zu testen. -> -> In die Betrachtung ist die Entwicklung einer Plattform sehr interessant, da viele Gestaltungsmöglichkeiten bereits frühzeitig im Prozess berücksichtig werden können. -> -> Auf Basis der gemachten Anmerkungen wurde das Thema auf die Entwicklung und Evaluation von interaktiven Visualisierungen mit Webtechnologien eingegrenzt. Die Nennung der UN-Nachhaltigkeitsziele wurde aus dem Titel entfernt, könnte in der Ausarbeitung aufgegriffen werden. - - -### Meeting 24.1. - -> Herr Noss weist darauf hin, dass der Produktlebenszyklus schließlich den Konsumenten kommuniziert werden muss. Dies sollte in der Arbeit betrachtet werden. Bzgl. des Titels wird empfohlen _Design und Konzeption_ zu nehmen, um Gestaltungsfreiheit in der weiteren Ausarbeitung offen zu halten. -> -> Weiterhin bleibt der Begriff der _Evaluation_ fraglich. Auf der einen Seite stellt dies ein wichtigen Schritt zur Überprüfung/Verprobung der Lösungsansätze dar, könnte auf der anderen Seite aber den Umfang für eine Thesis überschreiten und gleichzeitig das Risiko bergen, keine Nutzer in ausreichendem Maße bekommen zu können. Dies sollte mit Frau Nowak-Meitinger besprochen werden. -> -> Der Begriff _Plattform_ sollte nicht in den Titel aufgenommen werden, sondern erst im Verlauf der Arbeit entschieden werden, um das Ganze handhabbarer zu halten. Auch sollte der Begriff _Webtechnologien_ aus dem Titel entfernt werden, da dies Mittel zum Zweck ist. -> -> Auf die Fragen, ob auf die Betrachtung von vorhandenen Nachhaltigkeitssiegel Bezug genommen werden soll, wird dies bejaht. Wie ausführlich kann während der Arbeit begründet werden. Außerdem können hieraus Informationen bzgl. der Darstellung der Siegel bzw. der eingesetzten Daten erlangt werden. -> -> Abschließend wurde von Herrn Heiko Riffeler (gjuce Köln) gesprochen, der an einem ähnlichen Projekt arbeitet. Hier besteht die Option einer Kontaktaufnahme für ein Interview. - -### Meeting 3.2. - -> Im Gespräch mit Frau Nowak-Meitinger wurde bzgl. des Titels angeregt, die Visualisierung weniger konkret auf ein allgemeines, internationales Nachhaltigkeitssiegels aufzuhängen. Dies begründet sich aus der Fülle an bereits vorhandenen Siegeln und scheint nicht zielführend für die Ausarbeitung zu sein. Letztlich stellt aber die Frage nach der Visualisierung von Nachhaltigkeit ein relevantes Thema insb. im Kontext der Bildung und Sensibilisierung von Nutzenden/Konsumenten dar. Dies sollte in den Titel aufgenommen werden. -> -> Der Begriff _Nachhaltigkeit_ ist nicht eindeutig definiert und weist je nach Betrachtung verschiedene Dimensionen auf. Zu den bekanntesten zählen u.a. die Triple Bottom Line (https://online.hbs.edu/blog/post/what-is-the-triple-bottom-line). Hier sollte für die Arbeit eine Einführung in die möglichen Definitionen gegeben werden (siehe dazu u.a. Sustainability Manifest). -> -> Spannend wird die Identifikation und Extraktion der zu visualisierenden Nachhaltigkeitsdaten. Diese können aus dem Produktlebenszyklus, den Lieferketten, der verbrauchten Energie etc. gewonnen werden. Allerdings ist unsicher, welche bzw. ob Hersteller über alle im Produktlebenszyklus beschriebenen Phasen erfasst werden. Dies gilt es zu beachten und zu evaluieren, inwieweit mit dieser Unsicherheit umzugehen ist. -> -> Bezüglich einer interaktiven Visualisierung kam die Idee generativer Lösungen in den Sinn. Statt einzelne Produkte dem Lebenszyklus zu unterziehen und aus den so gewonnen Daten Visualisierungen umzusetzen, könnte aus einer generalistischen Sicht interaktive Visualisierungen generiert werden. Hierzu sind Recherchen über den Stand der Wissenschaft durchzuführen. -> -> Bzgl. der Fragestellung sind die Fragen F1, F6, F7, (F9) zielführend. F5 sowie F8 sind ggf. als Anwendungsfall als gesetzt zu betrachten. -> -> Für die Einleitung/Motivation ist es sinnvoll Beispiele von _(interaktiven) Visualisierungen von Nachhaltigkeit_ aufzuführen (z.B. Darstellung in den SDG-Reports oder CSR-Reports von Unternehmen). Hierfür kann es trotzdem sinnvoll sein, bei vorhandenen Nachhaltigkeitslabels zu untersuchen, wie diese mit der Darstellung der Informationen umgehen. -> -> Ein geeignetes wissenschaftliches Vorgehen ist zu recherchieren und auszuwählen. Für Gestaltungsartefakte etabliert sich das Design Science Research Paradigma. Alternativ gibt es das ASSERT Framework [nach Bill Ferster](https://www.researchgate.net/profile/Bill-Ferster). -> -> Wichtig für den nächsten Schritt ist eine vertiefende Recherche zu den Themen und eine Neuformulierung der einzelnen Abschnitte des Exposés. - -
    - ---- - -## Problemstellung und Motivation - -Mit Blick auf die Eindämmung der Klimakrise werden die bestehenden Systeme in Wissenschaft, Gesellschaft und Ökonomie in Frage gestellt. Tragen bspw. die bestehenden Formen des Wirtschaftens, der Mobilität, der Energieversorgung oder des Konsums zum Klimawandel bei? Können diese im Sinne einer _nachhaltigeren Entwicklung_ verändert werden? Wenn ja, wie würde eine Umgestaltung aussehen oder bedarf es gänzlich neuer Formen, um _nachhaltiger_ zu sein? Mit diesen Fragen beschäftigen sich die Wissenschaftsdisziplinen wie Wirtschafts-, Natur- und Sozialwissenschaften. [PM11] - -Auch auf internationaler Ebene - bspw. die Vereinten Nationen - werden Beiträge zur Nachhaltigkeitsentwicklung formuliert. Das seit 2015 existierende Programm _Agenda 2030 für nachhaltige Entwicklung_ stellt das gemeinsame Konzept für Frieden und Wohlstand dar. Im Kern befinden sich die _17 Sustainable Development Goals (SDGs)_. [PM2] - -Hauptverursacher des Klimawandels sind die Menschen [PM12]. Damit eine nachhaltige Transformation gelingen kann, ist eine Beteiligung insbesondere von Kindern und Jugendlichen in dem Gestaltungsprozess notwendig. Hierfür werden geeignete Angebote für die Vermittlung des Handels und dessen Auswirkungen benötigt. [PM14] - -Ein konkreter Handlungsbereich betrifft das Konsumverhalten. Oft wissen Verbraucher nicht, wie Produkte hergestellt werden, wo die Rohstoffe bezogen werden, unter welchen Herstellungsbedingungen produziert wird, welcher Ressourcenverbrauch zugrunde liegt oder was mit dem Produkt am Ende passiert. Wenngleich die Hersteller mit einer Vielzahl von Produktlabels [NA3, NA4, NA7, NA8, NA9, NA10] versuchen Transparenz zu schaffen, fehlt für Verbraucher der Zugang zu weiteren Informationen. Eine mündige Entscheidung zu treffen, ob das Produkt die eigenen Anforderungen an _Nachhaltigkeit_ erfüllt, ist demnach schwierig. Die Industrie versucht eigene Labels [NA5] im Handel zu etablieren, die auf das Verbot der EU-Kommission zum Verbot des _Greenwashings_ reagieren. [PM1] - -Im Zuge eines Forschungsvorhabens zur Entwicklung eines Informationssystems für die Vermittlung von Nachhaltigkeit von Produkten bzw. Produkttypen, stellen sich eine Vielzahl von Fragestellungen. Eine richtet sich nach geeigneten interaktiven Lösungen zur Darstellung der Informationen. Dabei soll auf Grundlage des Produktlebenszyklus alle Phasen eines Produkts oder Produkttyps veranschaulicht und als Grundlage für Bildungsmaßen in Schulen, Hochschulen, erwachsenen Bildung, Führungskräfteentwicklung oder sonstigen Interessenten eingesetzt werden. Das Ziel soll ein breiter Zugang zu den Informationen für die Bevölkerung und somit eine Sensibilisierung für das Thema _Nachhaltiger Konsum_ zu schaffen. - -Aufgrund der Menge an Information (Phasen des Produktlebenszyklus, 17 Nachhaltigkeitsziele mit über 100 Unterzielen und verschiedenen Produkttypen) sowie dem Anspruch an einer allgemeinen Zugänglichkeit (breite Zielgruppe) dieser Informationen, stellt die Darstellung eine Herausforderung dar. - - -**Referenzen** - -* [PM1] [Kreislaufwirtschaft: Kommission schlägt neue Verbraucherrechte vor und will Greenwashing verbieten](https://ec.europa.eu/commission/presscorner/detail/de/IP_22_2098) -* [PM2] [The 17 Goals - United Nations - Sustainable Development](https://sdgs.un.org/goals) -* [PM3] [7 Ökologische Nachhaltigkeitssiegel - Spiegel](https://www.spiegel.de/gutscheine/magazin/nachhaltigkeitssiegel) -* [PM4] [31 Nachhaltigkeitssiegel - ISPO.com](https://www.ispo.com/know-how/31-nachhaltigkeitssiegel-die-du-kennen-musst) -* [PM5] [Nachhaltigkeitslabel für den Handel - Eco Score und Planet Score unter der Lupe](https://www.oekolandbau.de/handel/unternehmensfuehrung/nachhaltig-wirtschaften/nachhaltigkeitslabel-fuer-den-handel-eco-score-und-planet-score-unter-der-lupe/) -* [PM7] [Öko-Institut e.V.](https://www.oeko.de/) -* [PM8] [Rat für Nachhaltige Entwicklung (RNE)](https://www.nachhaltiger-warenkorb.de/siegel/) -* [PM9] [EU List of existing EU and International Eco-Labels - PDF](https://ec.europa.eu/environment/gpp/pdf/ecolabels.pdf) -* [PM10] [Kompass Nachhaltigkeit](https://www.kompass-nachhaltigkeit.de/) -* [PM11] [Liste vorhandener Nachhaltigkeitsthemen](https://en.wikipedia.org/wiki/Index_of_sustainability_articles) -* [PM12] [Bundesministerium für Umwelt, Naturschutz, nukleare Sicherheit und Verbraucherschutz BMUV](https://www.bmuv.de/kids/artikel/details/es-ist-der-mensch) -* [PM13] [Bildung für nachhaltige Entwicklung](https://www.bne-portal.de/bne/de/einstieg/bildungsbereiche/bildungsbereiche_node.html) -* [PM14] [Umweltbildung und Bildung für nachhaltige Entwicklung - 118/2020 Umwelt Bundesamt](https://www.umweltbundesamt.de/sites/default/files/medien/1410/publikationen/2020-06-29_texte_118-2020_umweltbildung-bne.pdf) - -## Stand der Forschung - -Um einen ersten Eindruck des Forschungsstands im Kontext der Thesis zu ermitteln, wurden auf Suchmaske der [TH Bibliothek](https://thb-koeln.digibib.net/search/katalog) auf deutscher und englischer Sprache recherchiert. Dabei wurden die folgenden Begriffskombinationen ausgewählt: - -| Suchkombinationen | | TH Bib (Aufsätze) | | -|---------------------------------------------- |------------------------------------------------------------ |----------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| deutsch | englisch | deutsch | englisch | -| "interaktiv* visual*" nachhaltig* | "interactive visual*" sustain* | [96](https://thb-koeln.digibib.net/search/eds/list?start=1&count=20&defaults=on&q-al=%22interaktiv*+visual*%22+nachhaltig*&q-ti=&q-au=&q-yr=&q-ky=&q-ib=&q-is=) | [8.190](https://thb-koeln.digibib.net/search/eds/list?start=1&count=20&defaults=on&q-al=%22interactive+visual*%22+sustain*&q-ti=&q-au=&q-yr=&q-ky=&q-ib=&q-is=) | -| interaktiv* visual* nachhaltig* | interactive visualization sustainability | [3.142](https://thb-koeln.digibib.net/search/eds/list?q-al=interaktiv*+visual*+nachhaltig*&q-ti=&q-tf=&q-au=&q-yr=&q-ky=&q-co=&q-pb=&q-ib=&q-is=&q-cn=&defaults=on&start=1) | [34.387](https://thb-koeln.digibib.net/search/eds/list?start=1&count=20&defaults=on&q-al=interactive+visualization+sustainability&q-ti=&q-au=&q-yr=&q-ky=&q-ib=&q-is=) | -| infografik* nachhaltig* | infographic sustainability | [343](https://thb-koeln.digibib.net/search/eds/list?start=1&count=20&defaults=on&q-al=infografik*+nachhaltig*&q-ti=&q-au=&q-yr=&q-ky=&q-ib=&q-is=) | [8.807](https://thb-koeln.digibib.net/search/eds/list?start=1&count=20&defaults=on&q-al=infographic+sustainability&q-ti=&q-au=&q-yr=&q-ky=&q-ib=&q-is=) | -| "interaktive Visualisierung" lebenszyklus* | "interactive* visual*" ("life cycle" \| "lifecycle") | [12](https://thb-koeln.digibib.net/search/eds/list?start=1&count=20&defaults=on&q-al=%22interaktive+Visualisierung%22+lebenszyklus*&q-ti=&q-au=&q-yr=&q-ky=&q-ib=&q-is=) | [3.432](https://thb-koeln.digibib.net/search/eds/list?start=1&count=20&defaults=on&q-al=%22interactive*+visual*%22+%28%22life+cycle%22+%7C+%22lifecycle%22%29&q-ti=&q-au=&q-yr=&q-ky=&q-ib=&q-is=) | -| interaktiv* visual* lebenszyklus* | interactive* visual* ("life cycle" \| "lifecycle") | [683](https://thb-koeln.digibib.net/search/eds/list?start=1&count=20&defaults=on&q-al=interaktiv*+visual*+lebenszyklus*&q-ti=&q-au=&q-yr=&q-ky=&q-ib=&q-is=) | [57.136](https://thb-koeln.digibib.net/search/eds/list?start=1&count=20&defaults=on&q-al=interactive*+visual*+%22life+cycle%22&q-ti=&q-au=&q-yr=&q-ky=&q-ib=&q-is=) | -| infografik* lebenszyklus* | infographic* ("life cycle" \| "lifecycle") | [30](https://thb-koeln.digibib.net/search/eds/list?start=1&count=20&defaults=on&q-al=infografik*+lebenszyklus*&q-ti=&q-au=&q-yr=&q-ky=&q-ib=&q-is=) | [4.929](https://thb-koeln.digibib.net/search/eds/list?start=1&count=20&defaults=on&q-al=infographic*+%28%22life+cycle%22+%7C+%22lifecycle%22%29&q-ti=&q-au=&q-yr=&q-ky=&q-ib=&q-is=) | -| visualisierung* nachhaltigkeit lebenszyklus* | visualization sustainability ("life cycle" \| "lifecycle") | [358](https://thb-koeln.digibib.net/search/eds/list?start=1&count=20&defaults=on&q-al=visualisierung*+nachhaltigkeit+lebenszyklus*&q-ti=&q-au=&q-yr=&q-ky=&q-ib=&q-is=) | [31.131](https://thb-koeln.digibib.net/search/eds/list?start=1&count=20&defaults=on&q-al=visualization+sustainability+%28%22life+cycle%22+%7C+%22lifecycle%22%29&q-ti=&q-au=&q-yr=&q-ky=&q-ib=&q-is=) | - - -Die Suchkombinationen ergaben - insbesondere im Englischen - umfangreiche Ergebnisse aus verschiedenen Wissenschaftsdisziplinen. Für die Thesis werden weitere Eingrenzungen benötigt. - -### zu Nachhaltigkeit - -Der Begriff _Nachhaltigkeit_ ist nicht eindeutig definiert und weist je nach Betrachtung verschiedene Dimensionen auf. [NA1] Zu den bekanntesten zählen u.a. die Triple Bottom Line [NA3]. - -**Referenzen** - -* [NA1] [Nachhaltigkeit - Wikipedia](https://en.wikipedia.org/wiki/Sustainability) -* [NA2] [Sustainability Topic - MDPI Open Access Journal](https://www.mdpi.com/journal/sustainability) -* [NA3] [What is the Triple Bottom Line](https://online.hbs.edu/blog/post/what-is-the-triple-bottom-line) - -### zu interaktiven Visualisierungen - -Visualisierung ist eine Technik zur Erstellung von Bildern, Diagrammen oder Animationen, um eine Botschaft zu vermitteln. Die Visualisierung durch visuelle Bilder ist seit den Anfängen der Menschheit ein wirksames Mittel, um sowohl abstrakte als auch konkrete Ideen zu vermitteln. Beispiele aus der Geschichte sind Höhlenmalereien, ägyptische Hieroglyphen, griechische Geometrie und Leonardo da Vincis revolutionäre Methoden des technischen Zeichnens für technische und wissenschaftliche Zwecke. Heutzutage findet die Visualisierung immer breitere Anwendung in Wissenschaft, Bildung, Technik (z. B. Produktvisualisierung), interaktiven Multimedia-Anwendungen, Medizin usw. Ein typisches Beispiel für eine Visualisierungsanwendung ist der Bereich der Computergrafik. Die Erfindung der Computergrafik (und der 3D-Computergrafik) ist vielleicht die wichtigste Entwicklung im Bereich der Visualisierung seit der Erfindung der Zentralperspektive in der Renaissancezeit. Auch die Entwicklung der Animation hat die Visualisierung vorangebracht. [DV1] - -Interaktive Visualisierung ist ein Zweig der grafischen Visualisierung in der Informatik, der untersucht, wie Menschen mit Computern interagieren, um grafische Darstellungen von Informationen zu erstellen, und wie dieser Prozess effizienter gestaltet werden kann. [DV1] Die _Human-Computer Interaction_ als eigener Bereich der Computerwissenschaften, beschäftigt sich ebenfalls mit Interaktivität. [siehe DV11] - -Die Entwicklung interaktiver Visualisierungen stellt eine zunehmend umfangreiche Herausforderung dar. In [DV2] werden die verschiedenen Dimensionen und Herausforderungen von interaktiven Visualisierungen aufgezeigt. Dabei werden neben den fundamentalen Prinzipien interaktiver Visualisierungen (die Menge an Daten, die Möglichkeiten von verschiedenen Technologien, der Wichtigkeit von Interaktivität von Nutzern, der Untersicherheit welche Eigenschaften in der jeweiligen Domain relevant sind) auf die Herausforderungen des Datamappings, des Designs und der Evaluation sowie der Gestaltung geeigneter User Interfaces eingegangen. In Kapitel 8 von [DV2] wird zudem ein menschen-zentrierter Designansatz für interaktive Visualisierungen beschrieben. Dieser könnte als Grundlage für die Thesis umgesetzt werden. Hier stellt sich die Frage, wie man an Nutzer kommt und ob dieses Vorgehen ggf. den Aufwand für eine Thesis sprengt? Außerdem stellt dies ein Risiko dar. - -In [DV3] wird die Perspektive hinsichtlich des Designs von nachhaltiger User Experience eingenommen. Dabei werden verschiedene Design Ansätze (u.a. Natural Capitalism, Biomimicry, Total Beauty und Cradle-to-Cradle) beschrieben, wie man sich einer nachhaltigen User Experience annähern kann. Mit Blick auf die Thesis widmen die Autoren ein gesamtes Kapitel (3.) dem Thema des _Product Life Cycle And Sustainable User Experience_. Der Produktlebenszyklus wird hier als Designansatz betrachtet und könnte ein alternatives Vorgehen für die Ausarbeitung darstellen. - -Beispiele von interaktiven Visualisierungen im Kontext von Nachhaltigkeit finden sich u.a. [DV4, DV5, DV6]. - -**Referenzen** - -* [DV1] [Visualization (graphics) - Wikipedia](https://en.wikipedia.org/wiki/Visualization_(graphics)) -* [DV2] [Trends in interactive Visualization - State-of-the-Art Survey - 2009](https://link.springer.com/book/10.1007/978-1-84800-269-2) -* [DV3] [User Experience in the Age of Sustainability - 2012](https://www.sciencedirect.com/book/9780123877956/user-experience-in-the-age-of-sustainability) -* [DV4] [Cause and Effect - Visualizing Sustainability - 2012](https://gestalten.com/products/cause-effect-visualizing-sustainability) -* [DV5] [Open Urban Data and the Sustainable Development Goals, Christine Meschede, 2019](https://dl.acm.org/doi/10.1145/3325112.3325269) -* [DV6] [Eco-visualization: combining art and technology to reduce energy consumption, Tiffany Grace Holmes, 2007](https://dl.acm.org/doi/10.1145/1254960.1254982) -* [DV7] [Narrative algorithm visualization, Marina Blumenkrants, 2006](https://dl.acm.org/doi/10.1145/1148493.1148496) -* [DV8] [Top Scientific Conferences and Journals in InfoVis 2016](https://sites.umiacs.umd.edu/elm/2016/01/21/infovis-venues/) -* [DV9] [Journal Rankings Scimago Institutions Rankings](https://www.scimagojr.com/journalrank.php?category=1707) -* [DV10] [Übersicht Suchergebnis zu: information* UND visualisierung* - TH Bib](https://thb-koeln.digibib.net/search/katalog/list?start=1&count=20&defaults=on&q-al=information*+UND+visualisierung*&q-ti=&q-tf=&q-au=&q-yr=&q-ky=&q-co=&q-pb=&q-ib=&q-is=&q-cn=) -* [DV11] [INTERACT - IFIP Conference on Human-Computer](https://link.springer.com/conference/interact) -* [DV12] [CDVE - International Conference on Cooperative Design, Visualization and Engineering](https://link.springer.com/conference/cdve) -* [DV13] [Data and informationen visualization - Wikipedia](https://en.wikipedia.org/wiki/Data_and_information_visualization) -* [DV14] [Estimating the environmental impacts of 57,000 food products](https://doi.org/10.1073/pnas.2120584119) - - -### zu Produktlebenszyklus - -_Welche Form ist geeignet?_ - -**Referenzen** - -* [PLC1] [Science Direct Topic: Product Life Cycle](https://www.sciencedirect.com/topics/engineering/product-life-cycle) -* [PLC2] [Product Lifecycle - Wikipedia](https://en.wikipedia.org/wiki/Product_lifecycle) -* [PLC3] [Life-cycle assessment - Wikipedia](https://en.wikipedia.org/wiki/Life-cycle_assessment) - - -## Abgeleitete Forschungsfragen - -**Wie kann Nachhaltigkeit von Produkten bzw. Produkttypen mithilfe eines Produktlebenszyklus für Konsumenten interaktiv visualisiert werden?** - -- F1: Wie werden Informationen zu Produkten hinsichtlich ihrer Nachhaltigkeit dargestellt? Existieren Lösungen? Wie gestalten bspw. Nachhaltigkeitssiegel die Informationen über Produkte? -- F6: Wie müssen interaktive Visualisierungen für verschiedene Zielgruppen (Schüler, Hochschüler, Erwachsene) gestaltet sein? -- F7: Welche Darstellungsformen sind unter Berücksichtigung der Zielgruppen geeignet? -- F9: Welche Daten sind in den Phasen des Produktlebenszyklus relevant? Existieren bereits offene Datenschnittstellen zu bspw. Klimadaten? Können diese sinnvoll in den Phasen verknüpft werden? -- F10: Wie können Visualisierungen aus den Phasen des Produktlebenszyklus generativ erzeugt werden? -- F15: Wie sollte eine Systemarchitektur für ein Informationssystem gestaltet werden? - -Ergänzende Frage: - -- F2: Wie wird Nachhaltigkeit, Design, interaktive Visualisierung und Produktlebenszyklus definiert? -- F3: Welche Eigenschaften/Kriterien weisen diese auf? -- F4: Wie ist eine (interaktive) Visualisierungs-Pipeline in diesem Kontext zu entwerfen? -- F5: Welche Zielgruppen (Stakeholer) sind relevant? -- F8: In welchen Nutzungskontexten bewegen sich die Stakeholder? - -## Vorgehen - -Das Ziel der Thesis sollen das Design und die Konzeption interaktive Visualisierungen im Kontext des Produktlebenszyklus sein. Hierfür eignet sich das Forschungsparadigma des Design Science Research (DSR) nach Hevner et al. [DSR2] Ursprünglich für die Ingenieurwissenschaften entwickelt, stellt DSR ein Paradigma zum Problemlösen dar. Der Designprozess kann so mit wissenschaftlichen Methoden unterstützt werden. Der Prozess wird nachvollziehbar, dokumentierbar, wissenschaftlich reproduzierbar und die in diesem Prozess entstehenden visuellen Artefakt überprüfbar. Außerdem wird neben dem Design Artefakt auch Erkenntnisse über das Design erzeugt. - -![DSR Framework nach Hevner](dsr-framework.png) - -![DSRM Process Model nach Peffers](dsrm-process-model.png) - -1. Definition des Forschungsproblems: Untersuchen der Gestaltung von interaktiven Visualisierungen des Produktlebenszyklus -2. Überprüfung des vorhandenen Wissens: Analyse des aktuellen Standes der Technik, um eine umfassende Literaturrecherche durchzuführen -3. Definition der Ziele: Festlegen der Ziele, die die interaktiven Visualisierungen erreichen sollen -4. Gestaltung des Konzepts: Erarbeitung eines Konzepts, das die Ziele erreichen und die Rahmenbedingungen berücksichtigen soll -5. Erstellen des Prototyps: Erarbeitung eines Prototyps, der die Funktionalität und Usability der interaktiven Visualisierungen demonstrieren soll -6. Evaluierung des Prototyps: Durchführung einer Evaluierung des Prototyps, um die Ziele zu erreichen -7. Reflektion und Synthese: Reflektion der Ergebnisse und Synthese der Erkenntnisse - -**Referenzen** - -* [DSR1] [Design Science Research](https://design-science-research.de/) -* [DSR2] [Alan Hevner, Samir Chatterjee - Design Research in Information Systems - Theory and Practice - Book - 2010](https://doi.org/10.1007/978-1-4419-5653-8) -* [DSR3] [Jan vom Brocke, Alan Hevner, Alexander Maedche - Introduction to Design Science Research - Chapter - 2020](https://doi.org/10.1007/978-3-030-46781-4_1) -* [DSR4] [DESRIST - The Transdisciplinary Reach of Design Science Research - Conference proceedings](https://link.springer.com/conference/desrist) - -## Grobes Inhaltsverzeichnis - -
    - Anzeigen - -1. Ausgangslage - 1. Problemstellung - 2. Motivation - 3. Abgeleitete Fragestellung -2. Design Science Research nach Hevner et al. - 1. Framwork - 2. Prozessmodel - 3. [Double Diamond Prozess](https://en.wikipedia.org/wiki/Double_Diamond_(design_process_model)) - 3. Ausgestaltung .... -3. Grundlagen - 1. Design? - 1. - 2. Interaction Design - 3. User Experience - 4. Beispiele - 2. Visualisierung - 1. Anwendungsgebiete - 2. Interaktivität - 3. Kommunikation - 3. Nachhaltigkeit - 1. Definitionen - 2. Nachhaltigkeitssiegel - 3. Nachhaltigkeitsreports - 4. 17 Nachhaltigkeitsziele der Vereinten Nationen - 4. Produktlebenszyklus - 1. Modelle - 2. Phasen - 3. ... - 5. Stand der Technik - 6. Zielgruppen und Nutzungskontexte -4. Design und Entwicklung -5. Evaluation -6. Fazit und Ausblick - -
    - -## Zeitplan und Arbeitspakete - -
    - Anzeigen - -_ToDo: Weitere Arbeitspakete wird mit geeignetem Vorgehen ergänzt_ - -Ein grober Projektplan auf Basis der vorgeschriebenen 24 Wochen Bearbeitungszeit: - -| Arbeitspakete | W1 | W2 | W3 | W4 | W5 | W6 | W7 | W8 | W9 | W10 | W11 | W12 | W13 | W14 | W15 | W16 | W17 | W18 | W19 | W20 | W21 | W22 | W23 | W24 | -|--------------|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:-----:|:-----:|:-----:|:-----:|:-----:|:-----:|:-----:|:-----:|:-----:|:-----:|:-----:|:-----:|:-----:|:-----:|:-----:| -|**1. Recherche zu** |**x**|**x**|**x**|**x**|**x**|**x**||||||||||||||||||| -|1.1 Nachhaltigkeit Definition und Eigenschaften |**x**|||||||||||||||||||||||| -|1.2 Produktlebenszyklus sowie Nachhaltigskeitziele ||**x**||||||||||||||||||||||| -|1.3 Möglichkeiten der Informationsvisualisierung |||**x**|||||||||||||||||||||| -|1.4 Stand der Technik ||||**x**||||||||||||||||||||| -|**2. Fokussierung des Problems**|||||||**x**|**x**|**x**|**x**|**x**|**x**||||||||||||| -|**3. Design und Konzeption von Lösungen**|||||||||||||**x**|**x**|**x**|**x**|**x**|**x**||||||| -|**4. Evaluation**||||||||||||||||||**x**|**x**|**x**|**x**|**x**|**x**|| -|**5. Dokumenation**|**x**|**x**|**x**|**x**|**x**|**x**|**x**|**x**|**x**|**x**|**x**|**x**|**x**|**x**|**x**|**x**|**x**|**x**|**x**|**x**|**x**|**x**||| -|**6. Lektorat, Bindung, Abgabe**|||||||||||||||||||||||**x**|**x**| - -
    - -## Prüfungsleitung - -1. Herr [Prof. Christian Noss](https://christiannoss.de/) -2. Frau [Anna Matilda Nowak-Meitinger, M. Sc.](https://www.tu.berlin/qw/ueber-uns/team/anna-m-nowak-meitinger) (extern) - -### externer Kooperationspartner - -Durch das Forschungsvorhaben besteht die Möglichkeit einer externen Betreuung durch die TU Berlin. Frau Nowak-Meitinger hat hierzu bereits ihre Unterstützung angeboten. - -## Referenzen - -* [Miroboard zur Thesis](https://miro.com/app/board/uXjVPZYWUqQ=/?share_link_id=671789850381) diff --git a/_works/r-hoeser/01-resarch-area-analysis/README.md b/_works/r-hoeser/01-resarch-area-analysis/README.md deleted file mode 100644 index 8311bbc..0000000 --- a/_works/r-hoeser/01-resarch-area-analysis/README.md +++ /dev/null @@ -1,3 +0,0 @@ -# Themenfeldanalyse - -Bitte legen Sie Ihre Concept Map zur Themenfeldanalyse hier als PDF ab. Die Datei sollte nicht größer als 2 Mbyte sein. \ No newline at end of file diff --git a/_works/r-hoeser/01-resarch-area-analysis/Themenfeldcluster.pdf b/_works/r-hoeser/01-resarch-area-analysis/Themenfeldcluster.pdf deleted file mode 100644 index 6eb5a98..0000000 Binary files a/_works/r-hoeser/01-resarch-area-analysis/Themenfeldcluster.pdf and /dev/null differ diff --git a/_works/r-hoeser/01-resarch-area-analysis/Wordcloud.pdf b/_works/r-hoeser/01-resarch-area-analysis/Wordcloud.pdf deleted file mode 100644 index b0ddcb0..0000000 Binary files a/_works/r-hoeser/01-resarch-area-analysis/Wordcloud.pdf and /dev/null differ diff --git a/_works/r-hoeser/02-titles-and-research-questions.md b/_works/r-hoeser/02-titles-and-research-questions.md deleted file mode 100644 index e416b3e..0000000 --- a/_works/r-hoeser/02-titles-and-research-questions.md +++ /dev/null @@ -1,30 +0,0 @@ -# Titel und Forschungsfrage - -Bitte notieren Sie mindestens 10 mögliche Titel der Arbeit und mindestens 5 mögliche Forschungsfragen/ Zielsetzungen in dieses Dokument. - -## Titelvorschläge - -1. Featureentwicklung in Web Browsern - eine Analyse aktueller Browser im Bezug auf die Umsetzungsvorgehen der Web Spezifikationen -2. Browser-Standardkonformität - Analyse der Featureentwicklung in Web Browsern -3. Neue Features, alte Plattform - Analyse wie neue Webfeatures in Browsern umgesetzt werden - - -3. Treiber und Nachläufer - Featureentwicklungsanalyse in Webbrowsern -4. Modernisierung des Web - Analyse der Standard- und Browserentwicklung -5. Entwicklung der Webplattform - Historische Betrachtung der Featureentwicklung in Standards und Browsern -6. Neue Features, alte Plattform - Analyse wie neue Webfeatures in Browsern umgesetzt werden -7. Webfeatureprozesse - Wie neue Webfeatures standardisiert und umgesetzt werden -8. "Safe to use" - Wie stabil und verbreitet sind neue Features in Browsern -9. Von HTML5 bis Fugu - Analyse von Treibern und Lenkern neuer Webstandards -10. PWA und Fugu - Welchen Einfluss neue Webfeatures auf die Interkompatibilität des Webs haben - -## Forschungsfragen - -1. welcher Browser ist am "standardkonformsten"? - 2. wie schnell während/nach der Standardisierung eines Features werden diese von einem/allen Browser(n) umgesetzt? - 3. wie stabil sind Vorabumsetzungen von Standards? -4. welche Möglichkeiten für "Breaking Changes" werden bereitgehalten / wie werden Änderungen in der Spezifikation umgesetzt? -5. Wie funktioniert der Standardisierungsprozess eines Features? - 6. Ist es möglich von "außen" Einfluss auf neu standardisierte Features zu nehmen? -7. gibt es Abweichungen in den obigen Fragen je nach "Bereich" eines Features? -8. (Sind neue Features (und Proposals) kritischer bezüglich der gesamt Interkompatibilität als frühere?) diff --git a/_works/r-hoeser/03-expose.md b/_works/r-hoeser/03-expose.md deleted file mode 100644 index 0341f5d..0000000 --- a/_works/r-hoeser/03-expose.md +++ /dev/null @@ -1,93 +0,0 @@ -# Featureentwicklung in Webbrowsern - eine Analyse aktueller Browser in Bezug auf die Umsetzungsvorgehen der Webspezifikationen - -## Problemfeld und Kontext - -Webentwicklung ist ein sehr schnelllebiges und dynamisches Entwicklungsfeld (einzelne Werkzeuge und Bibliotheken können im Zeitraum von nur einem Jahr im zweistelligen Prozentbereich Nutzer gewinnen und verlieren [jamstack-1-year-change]), dass sich gerade in den letzten Jahren durch neue Features wie die sogenannten "Fugu"-APIs (Schnittstellen, die Fähigkeiten nativer Apps ins Web bringen sollen ([Fugu Projekt][fugu-project])) oder die Einführung von Progressive-Web-Apps (PWAs) stark gewandelt hat, wie sich auch in der Übersicht der [zuletzt abgeschlossenen Proposals im ECMAScript Standard][ecmascript-finished-proposals] und der Nutzung von [WebAssembly][wasm-chromestats] (einem Feature, dass erst vor fünf Jahren eingeführt wurde und heute bereits bei ca. zwei Prozent der Seitenaufrufe genutzt wird) oder [Web-Components][wc-chromestats] (die ebenfalls in den letzten fünf Jahren eingeführt wurden und aktuell bei etwa 18% der Seitenaufrufe im Chrome genutzt werden) zeigt. - -Die Unterstützung der Features in gerade den großen Browser-Engines Blink, WebKit und Gecko ist weder einheitlich noch vollständig ([caniuse-major-browser-support]) und selbst eingeführte oder getestete Features finden unter Umständen keine weite Verbreitung oder langfristigen Support ([custom-elements-v0], [jpegxl]). - -Problematisch für WebentwicklerInnen ist hier, dass nicht alle standardisierten Features nutzbar sind ([caniuse-major-browser-support]). -Sollte man mit neuen Technologien explorativ arbeiten wollen, so ist es interessant welche Browser bestimmte Features tendenziell zuerst unterstützen und bei welchen der Support neuer (möglicherweise noch nicht endgültig spezifizierter) Features am besten ist ("besten" kann hier unter mehreren Gesichtspunkten bewertet werden, wie zum Beispiel Stabilität, Umsetzungsgeschwindigkeit, Performance, ...). - -## Ziel - -Das Ziel dieser Arbeit soll sein analytisch die Umsetzung neuer Features in den drei großen Browser-Engines Blink, Gecko und WebKit basierend auf historischen Daten zu betrachten und hierbei herauszuarbeiten, ob es basierend auf der Art der Features Auffälligkeiten gibt und welche Herangehensweise die Hersteller bei der Umsetzung neuer Spezifikationen verfolgen. - -## Aufgabenstellung - -Anhand des Kontexts, der Problemstellung und der Zielsetzung steht die Arbeit unter folgenden Kernfragen: - -1. Welcher Browser ist allgemein am nächsten an einer vollständigen, korrekten Umsetzung des Standards? -2. Gibt es bei Frage 1. Abweichung je nach "Gruppe" eines Features (die "Gruppe(n)" eines Features zu bestimmen ist Teil der Arbeit und in Frage 8 ausgelagert)? - -Um diese Fragen beantworten zu können, sind folgende Zusatzfragen ebenfalls zu betrachten: - -3. Wie schnell nach Standardisierung werden Features in einem/allen Browser(n) umgesetzt? -4. Wie stabil sind Vorabumsetzungen von Standards in einem/allen Browser(n)? -5. Welche Möglichkeiten werden von den Herstellern ergriffen, um auf inkompatible Standardänderungen während des Standardisierungsprozesses zu reagieren? -6. Wie funktionieren die Standardisierungsprozesse? -7. Ist es möglich als Außenstehender die Standardisierung eines Features zu beeinflussen? -8. Wie lassen sich Features sinnvoll in "Gruppen" unterteilen und gibt es solche Unterteilungen bereits? - -## Lösungsansätze und Ressourcen - -Um die in der Aufgabenstellung beschriebenen Fragen zu beantworten ist es nötig eine Reihe an Datenquellen heranzuziehen. - -Es existieren bereits einige sehr umfassende Datenquellen mit historischem Browsersupport für jedes Feature wie [wpt.fyi], [caniuse] oder [mdn-browser-compat-data]. Diese Quellen können herangezogen und verglichen werden, um eine gegenseitige Validierung zu erreichen und potenzielle Lücken zu füllen. - -Gleichzeitig ist es möglich die Veröffentlichungen der Standards mit zum Beispiel GitHub Repositories heranzuziehen, um nachzuvollziehen, wann Features standardisiert wurden und wie sie sich entwickelt haben. - -Gerade anhand der Browsersupport Daten sollte es möglich sein, diese in eine Datenbank (z.B. SQLite) zu überführen, auf welcher man Abfragen ausführen kann, um die Fragen aus der Aufgabenstellung zu beantworten. - -## Chancen und Risiken - -Wie zuvor erwähnt halten die mehreren, unabhängigen Quellen die Chance bereit, die Quellen gegeneinander zu validieren, dies birgt jedoch auch das Risiko die Daten in ein einheitliches Format bringen zu müssen. -Zudem können gerade die Daten aus den Standardrepositories schwer verarbeitbar sein, da diese noch nicht für eine solche Aufarbeitung gedacht sind. Hier besteht jedoch nach Titel und Kern der Arbeit die Möglichkeit, diese Frage in den Hintergrund zu rücken. - -## Motivation - -Der Autor hat als Webentwickler eine intrinsische Motivation den hier aufgeführten Forschungsfragen nachzugehen, da er selbst regelmäßig in der Entwicklung auf Features stößt, die entweder trotz Standardisierung nicht in allen Browsern unterstützt werden, oder noch während des Standardisierungsprozess ausprobiert werden sollen. -Zudem haben auch alle Browserhersteller eine Problematik der Interoperabilität erkannt und haben seit einigen Jahren das [Interop] Projekt ins Leben gerufen. Diese Arbeit kann dazu beitragen, hier ebenfalls einen tieferen Einblick zu erhalten. - -## Durchführungskontext und zeitliche Planung - -### Setup - -Die Arbeit soll ohne eine Beteiligung von außerhalb der TH Köln durchgeführt werden. - -### Abhängigkeiten - -Das Projekt ist lediglich von den in "Lösungsansätze und Ressourcen" genannten Quellen als Datenbasis abhängig. - -### Meilensteine und Zeitrahmen - -Basierend auf den voranstehenden Kapiteln lassen sich folgende Meilensteine benennen: - -* Sammlung von Datenquellen zur Browserkompatibilität -* Definition von Featurebereichen -* Erstellung eines Datenmodells für Kompatibilitätsdaten -* Normalisierung der Datenquellen und Einpflegen der Daten in eine Datenbank nach Datenmodell -* Ausarbeitung von möglichen Abfragen zur Beantwortung der Forschungsfragen -* Vergleichende Analyse der Abfrageergebnisse nach Featurebereich und Browser-Engine -* Begleitende Recherche zu Standardisierungsprozessen und Browservorgehen abschließen -* Ergebnisse dokumentieren - -Basierend auf Umfang und möglicher Zeitaufwendung sollte das Projekt in 7-9 Wochen umsetzbar sein. - -## Arbeitsergebnis - -Das angestrebte Arbeitsergebnis ist vor allem die abgegebene Arbeit, in der die oben aufgeführte Zielsetzung erreicht wird und die gestellten Forschungsfragen beantwortet werden. Zudem sollen die Prozesse beschrieben werden, wie die Forschungsfragen bearbeitet wurden. -Zudem gehören zum Arbeitsergebnis der Arbeit alle möglicherweise erstellte Software inklusive ihrer Dokumentation als Git Repository und eine Kopie der Datenbank, welche zur Analyse genutzt wurde. - -[ecmascript-finished-proposals]: https://github.com/tc39/proposals/blob/main/finished-proposals.md -[caniuse-major-browser-support]: https://caniuse.com/?compare=chrome+109,edge+109,safari+16.3,firefox+109,and_chr+109,ios_saf+16.3&compareCats=all -[custom-elements-v0]: https://caniuse.com/?search=Custom%20Elements%20V0 -[jpegxl]: https://caniuse.com/jpegxl -[wpt.fyi]: https://wpt.fyi -[caniuse]: https://caniuse.com -[mdn-browser-compat-data]: https://github.com/mdn/browser-compat-data -[Interop]: https://wpt.fyi/interop-2023 -[jamstack-1-year-change]: https://jamstack.org/survey/2022/#frameworks-by-1-year-change-in-usage-and-satisfaction -[fugu-project]: https://www.chromium.org/teams/web-capabilities-fugu/ -[wasm-chromestats]: https://chromestatus.com/metrics/feature/timeline/popularity/2237 -[wc-chromestats]: https://chromestatus.com/metrics/feature/timeline/popularity/1689 diff --git a/_works/r-hoeser/04-results/Bachelorarbeit_Raphael_Hoeser.pdf b/_works/r-hoeser/04-results/Bachelorarbeit_Raphael_Hoeser.pdf deleted file mode 100644 index 9ae91d7..0000000 Binary files a/_works/r-hoeser/04-results/Bachelorarbeit_Raphael_Hoeser.pdf and /dev/null differ diff --git a/_works/r-hoeser/04-results/README.md b/_works/r-hoeser/04-results/README.md deleted file mode 100644 index cb69f3e..0000000 --- a/_works/r-hoeser/04-results/README.md +++ /dev/null @@ -1,44 +0,0 @@ -# Ergebnisse - -## Kurzfassung - -Webentwicklung ist ein sich laufend weiterentwickelndes Feld mit einer Vielzahl an -Stakeholder*innen wie Browserhersteller*innen, Standardisierungsorganisationen, Ent- -wickler*innen und Nutzer*innen. Diese Weiterentwicklung l¨auft gerade in Browsern -oftmals nicht synchron ab und so ist die tats¨achlich Unterst¨utzung besonders f¨ur -neue Features in unterschiedlichen Browsern f¨ur Entwickler*innen oft schwierig ein- -zusch¨atzen. Diese Ensch¨atzung ist jedoch f¨ur Entwickler*innen relevant, da sie die -Nutzung neuer Features in ihren Projekten abw¨agen m¨ussen. Diese Arbeit zeigt auf, -wie die Standardisierung und Umsetzung neuer Features funktioniert und wie Google -Chrome eine f¨uhrende Rolle einnimmt und Apples Safari sich in den letzten Jahren -ge¨andert hat. Dies wird unter anderem durch eine Analyse historischer Kompatibi- -lit¨atsdaten aus unterschiedlichen Quellen wie CanIUse erreicht. Des weiteren zeigt -diese Arbeit, welche Ans¨atze zur Unterst¨utzung neuer Features in allen Browsern ge- -nutzt werden und dass Safari nicht wie teilweise behauptet der neue Internet Explorer -ist und gerade seit 2022 deutlich in der Featureunterst¨utzung auf Google Chrome und -Mozilla Firefox aufholt. - -## Abstract - -Web development is a constantly moving field with many stakeholders like browser -developers, standardisation bodies, developers and users. This movement often does -not happen in all browsers at the same pace and henceforth it’s often difficult for -developers to assess the support of new features in different browsers. This assessment -is important to developers, since they have to decide wether they can use a feature in -their projects. This work shows how the standardisation and implementation of new -features works and how Google Chrome takes a leading role and how Apple’s Safari has -changed in the last years. This is achieved by analysing historical compatibility data -from different sources like CanIUse. Furthermore this work shows which approaches are -used to support new features in all browsers and that Safari is not the new Internet -Explorer as some people claim and that it’s catching up with Google Chrome and -Mozilla Firefox in feature support since 2022. - -## Arbeit - -[Bachelorarbeit](./Bachelorarbeit_Raphael_Hoeser.pdf) - -## Begleitrepo - -[https://github.com/Snapstromegon/bachelor-tools](https://github.com/Snapstromegon/bachelor-tools) - -In diesem Repository finden sich alle nötigen Skripte und Anleitungen um die Auswertungen und Datenverarbeitungen der Arbeit zu reproduzieren. diff --git "a/_works/t-loges-konzeption-und-entwicklung-einer-automatisierten-l\303\266sung-zur-generierung-von-beschreibungstexten-f\303\274r-wein-im-e-commerce-bereich-auf-basis-strukturierter-produktdaten-06-10-2023.md" "b/_works/t-loges-konzeption-und-entwicklung-einer-automatisierten-l\303\266sung-zur-generierung-von-beschreibungstexten-f\303\274r-wein-im-e-commerce-bereich-auf-basis-strukturierter-produktdaten-06-10-2023.md" deleted file mode 100644 index 3cc8dfa..0000000 --- "a/_works/t-loges-konzeption-und-entwicklung-einer-automatisierten-l\303\266sung-zur-generierung-von-beschreibungstexten-f\303\274r-wein-im-e-commerce-bereich-auf-basis-strukturierter-produktdaten-06-10-2023.md" +++ /dev/null @@ -1,20 +0,0 @@ ---- -layout: work-result -author: Tim Loges -related-folder: t-loges -title: Konzeption und Entwicklung einer automatisierten Lösung zur Generierung - von Beschreibungstexten für Wein im E-Commerce Bereich auf Basis - strukturierter Produktdaten -date: 2023-10-06 -type: Masterarbeit -visibility: published -status: finished -keywords: Automatisierte Textgenerierung, Large Language Modelle, E-Commerce Beschreibungstexte, Shopware Plugin -partner: Heiko Riffeler, gjuce GmbH -partner-url: https://www.gjuce.com ---- -Die Masterarbeit befasst sich mit der Konzeption und Entwicklung einer automatisierten Lösung zur Generierung von Beschreibungstexten im E-Commerce Bereich. Die Grundlage hierfür sind strukturierte Produktdaten über Wein. Diese Arbeit zielt darauf ab, die folgenden Fragen zu beantworten: Welches Large Language Modell eignet sich am besten für die Generierung von Beschreibungstexten? Wie lassen sich automatisch generierte Beschreibungstexte bewerten? Und wie muss ein Userinterface gestaltet sein, das eine automatische Generierung ermöglicht? - -Für das Beantworten der Forschungsfragen wurden aktuell verfügbare Large Language Modelle verglichen und eine intensive Recherche in der Thematik des Prompt Engineering durchgeführt. Des Weiteren ist ein Plugin für das Shopsystem Shopware konzipiert und implementiert worden, welches es ermöglicht, Beschreibungstexte anhand von strukturierten Produktdaten zu erstellen. - -Die Analyse der Modelle hat ergeben, dass sich zum Zeitpunkt dieser Arbeit die Large Language Modelle von OpenAI am besten für die automatische Generierung von Beschreibungstexten eignen. Diese können sich von der Konkurrenz abgrenzen, da sie mit einer geringen Menge an strukturierten Daten konsistente und den Anforderungen entsprechende Ergebnisse liefern. Der Kurzlebigkeit der Modelle geschuldet wird das aktuellste Modell (GPT-4) für die Generierung herangezogen. Das objektive Bewerten von generierten Beschreibungstexten hat sich als herausfordernd herausgestellt. Es hat sich herausgestellt, dass für diesen Anwendungsfall keine allgemeingültigen Bewertungskriterien aufgestellt werden können. Es wurden Ansätze geschaffen, die eine Grundlage für zukünftige Untersuchungen ermöglichen. diff --git a/_works/t-loges/01-resarch-area-analysis/Themenfeldanalyse.pdf b/_works/t-loges/01-resarch-area-analysis/Themenfeldanalyse.pdf deleted file mode 100644 index 56c7f77..0000000 Binary files a/_works/t-loges/01-resarch-area-analysis/Themenfeldanalyse.pdf and /dev/null differ diff --git a/_works/t-loges/01-resarch-area-analysis/WordCloud.pdf b/_works/t-loges/01-resarch-area-analysis/WordCloud.pdf deleted file mode 100644 index fc62d20..0000000 Binary files a/_works/t-loges/01-resarch-area-analysis/WordCloud.pdf and /dev/null differ diff --git a/_works/t-loges/02-titles-and-research-questions.md b/_works/t-loges/02-titles-and-research-questions.md deleted file mode 100644 index 1fdd750..0000000 --- a/_works/t-loges/02-titles-and-research-questions.md +++ /dev/null @@ -1,29 +0,0 @@ -# Titel und Forschungsfrage - -## Titel - -1. Entwicklung eines Vorgehens zur automatisierten Generierung von Beschreibungstexten für Online-Shops auf Basis strukturierter Produkteigenschaften, als Plugin zur Integration in Shopsystemen und Verprobung am Beispiel der Produktkategorie "Wein". - > Titel 1 ist zusammen mit Heiko bei unserem Kick-Off entstanden -2. Entwicklung eines Plugins zur Nutzung von Sprachmodellen für die automatische Generierung von Beschreibungstexten im E-Commerce Bereich. -3. Entwicklung eines Plugins für die automatische Generierung von Beschreibungstexten im E-Commerce Bereich, mithilfe von vortrainierten Sprachmodellen (anhand strukturierter Produktdaten). -4. Entwicklung eines Plugins zur automatisierten Generierung von Beschreibungstexten in Online-Shops, auf Basis von strukturierten Produktdaten aus der Produktkategorie "Wein". -5. KI gestützte Beschreibungstexte aus strukturierten Daten als Plugin zur Integration in Shopsystemen. -6. Beschreibungstexte aus strukturierten Daten anhand eines (Shopware) Plugins für den E-Commerce Bereich. -7. Automatisierte Generierung von Beschreibungstexten durch Sprachmodelle: Entwicklung eines Plugins auf Basis strukturierter Produktdaten. -8. **Entwicklung einer automatisierten Lösung zur Generierung von Beschreibungstexten für Wein im E-Commerce Bereich auf Basis strukturierter Produktdaten.** -9. Aufstellen eines Vorgehens zur Qualitätskontrolle/Evaluierung von automatisch generierten Beschreibungstexten aus dem E-Commerce Bereich. -10. Vergleich von Sprachmodellen für die automatische Generierung von Beschreibungstexten aus strukturierten Daten anhand der Produktkategorie Wein. - -- Muss dargelegt werden, dass es sich um ein Shopware Plugin handelt? -- Formulierung: - - E-Commerce oder Online-Shop? - - Sprachmodell oder (Large-)Language model -- Bei Formulierungen wie _Qualitätskontrolle/Evaluierung_ passen meiner Meinung nach beide Begriffe, es muss sich nur für eine Formulierung Entschieden werden. - -## Forschungsfragen/Zielsetzungen - -1. Welches Sprachmodell eignet sich für die automatische Generierung aus strukturierten Produktmerkmalen von Beschreibungstexten? -2. Welche Kriterien werden benötigt, um automatisch generierte Beschreibungstexte zu Bewerten? - 1. Gibt es Unterschiede bei den Kriterien, wenn sich die Zielgruppe ändert? -3. Wie muss UX/UI gestaltet sein, um eine automatische Generierung und Evaluierung der Beschreibungstexte durch einen Redakteur im Shop-Backend effizient durchführen zu können? -4. Wie kann die Generierung und Evaluierung von Beschreibungstexten bei einer Anzahl von mehreren Hundert Produkten effizient durchgeführt werden? diff --git a/_works/t-loges/03-expose.md b/_works/t-loges/03-expose.md deleted file mode 100644 index 6e27531..0000000 --- a/_works/t-loges/03-expose.md +++ /dev/null @@ -1,103 +0,0 @@ -# Exposé "Konzeption und Entwicklung einer automatisierten Lösung zur Generierung von Beschreibungstexten für Wein im E-Commerce Bereich auf Basis strukturierter Produktdaten" - -## Kontext - -Diese Arbeit entsteht zusammen mit dem externen Partner Gjuce. Gjuce ist eine Webagentur aus Köln, welche sich auf E-Commerce Lösungen mit Shopware spezialisiert hat. Unter anderem betreiben sie Online-Shops im Bereich des Weinhandels und können daher mit Expertise diese Arbeit unterstützen. - -## Thema - -Durch die Verlagerung des Point-of-Sale (POS) vom stationären Handel hin zum Online-Handel und das damit verbundene Wegfallen der persönlichen Beratung sind für die Informationssuche Beschreibungstexte äußerst relevant. Infolgedessen sind diese ein wichtiger Bestandteil der Kaufentscheidung im E-Commerce Bereich. Hier gilt es, potenzielle Kunden über ein Produkt und ihre Merkmale aufzuklären, um einen Kaufwunsch einzuleiten [^kaufverhalten].
    -Je nach Produktklasse werden Beschreibungstexte i.d.R. durch den Shop Betreiber erstellt oder direkt vom Produzenten übernommen. Die Rahmenbedingungen dieser Arbeit ist der Weinhandel, hier gibt es eine weitere Eigenheit: Für das Erstellen von Beschreibungstexten muss ein umfassendes Wissen über die Produkte vorhanden sein, da gewisse Nuancen wie Aroma, Geschmack etc. oftmals nicht trivial sind. Daher wird häufig auf die Texte der Großhändler zurückgegriffen, was wiederum das Problem mit sich bringt, dass viele Oonline-Shops die gleichen oder ähnliche Beschreibungstexte enthalten. - -Thema dieser Arbeit ist das automatische Generieren von Beschreibungstexten für Wein im E-Commerce Bereich. Hierfür soll ein vortrainiertes Sprachmodell genutzt werden, welches auf Basis der strukturierten Produktdaten Beschreibungstexte voll-automatisch erstellt. Dementsprechend sollen aktuell verfügbare Sprachmodelle verglichen werden, um ein Geeignetes zu identifizieren.
    -Die strukturierten Produktdaten werden durch den Großhandel bereitgestellt. Sie bestehen i.d.R. aus einer Beschreibung, einer Analyse sowie gastronomischen Empfehlungen. Die Beschreibung umfasst dann wiederum generelle Informationen über Jahrgang, Region, Rebsorte und Charakteristiken. Innerhalb der Analyse findet man Lagerfähigkeit, Alkoholgehalt, Säuregehalt und Ähnliches. Die gastronomischen Empfehlungen legen dann passende Speisen dar, zu welchem der Wein genossen werden kann [^daten]. - -Ebenfalls gilt es, durch Experten aus dem Bereich des Weinhandels zu Evaluieren, inwiefern sich die generierten Texte eignen, um Weine zu Beschreiben. Hierfür stellt der externe Partner dieser Arbeit Experten aus der Branche, welche durch Interviews die Texte bewerten sollen. Es besteht die Möglichkeit, Blind-Interviews durchzuführen, um sicherzustellen, dass die Interviews unvoreingenommen durchgeführt werden. - -Der Autor geht davon aus, dass verschiedene Nutzergruppen Interesse an einer automatischen Lösung zur Generierung von Beschreibungstexten haben. Hierunter fallen beispielsweise die Shop Betreiber, Entwickler oder Copywriter, also alle Nutzergruppen, welche den Online-Shop initial mit Informationen anreichern müssen. Ebenfalls gehören Marketing Personal und Ähnliche dazu, welche im Laufe der Nutzungsdauer Produkte sowie Texte pflegen. Diese Nutzergruppen werden hier als "Redakteure" zusammengefasst. -Um die Nutzung für ebendiese Redakteure zu ermöglichen, soll ein Plugin für Shopware 6 entstehen. Hier sind zwei Punkte interessant: Wie muss das User Interface gestaltet sein, damit Redakteure effizient Texte Evaluieren, Bewerten und Tunen können? Und wie kann die Generierung für eine Menge von mehreren Hundert Produkten erfolgen? - -[^kaufverhalten]: F. Deges, „Kaufprozess und Kaufverhalten im E-Commerce“, in Grundlagen des E-Commerce: Strategien, Modelle, Instrumente, F. Deges, Hrsg., Wiesbaden: Springer Fachmedien, 2020. doi: 10.1007/978-3-658-26320-1_4. -[^daten]: [Beispieldaten zum Comte de Sénéjac](https://www.weinkontor-freund.de/wein/frankreich/chateau.senejac/4033240) - -## Forschungsfragen/Zielsetzungen - -1. Welches Sprachmodell eignet sich am besten für die automatische Generierung von Beschreibungstexten aus strukturierten Produktmerkmalen? -2. Auf Basis welcher Kriterien lassen sich automatisch generierte Beschreibungstexte Bewerten und gibt es Unterschiede, wenn sich die Zielgruppe ändert? -3. Wie muss UX/UI gestaltet sein, um eine automatische Generierung und Evaluierung der Beschreibungstexte durch einen Redakteur im Shop-Backend effizient durchführen zu können? -4. Wie kann die Generierung und Evaluierung von Beschreibungstexten bei einer Anzahl von mehreren Hundert Produkten effizient durchgeführt werden? - -## Gliederung - -- Einleitung - - Kontext - - Problemstellung - - Motivation - - Forschungsfragen - - Zielsetzung -- Weinhandel im E-Commerce - - Varianten des Weinhandels - - E-Commerce Allgemein / Überblick - - Bedeutung von Beschreibungstexten im E-Commerce - - Redaktionsprozess bei Beschreibungstexten (oder: Redaktionsprozess bei der Integration von Produkten) - - Zielgruppen / Stakeholder Identifizieren -- Sprachmodelle und ihre Anwendung (in der Textgenerierung) - - Aufbau und Funktionsweise von Sprachmodellen - - Auswahl passender Sprachmodelle - - Vergleich der Sprachmodelle - - Prompt Engineering / Tuning -- Implementierung einer automatischen Lösung - - Shopware und Plugin Ecosystem - - Vorgehen (oder Prozess, oder Workflow) Aufstellen - - Onboarding-Prozess - - Generierungungs-Prozess - - Bewertungs- / Evaluierungs-Prozess - - Einpflegen in Produktiv Umgebung - - Implementierung -- Evaluation und Validierung - - Kriterien für die Bewertung der Beschreibungstexte aufstellen - - Bewertung der Textqualität durch Experten - - Bewertung der UX/UI durch Redakteure - - Internationalisierung und Lokalisierung -- Beschreibung der automatisierten Lösung -- Fazit - - Implikationen - - _(Abstraktion in andere Branchen (zu Ambitioniert?))_ - - Ausblick - -## Forschungsstand - -Durch den aktuellen Fokus auf KI-gestütze Produktergänzungen gibt es eine Reihe an Unternehmen, welche an eigenen Sprachmodellen (Large Language Models - LLM) arbeiten. Die [Themenfeldanalyse](./01-resarch-area-analysis/Themenfeldanalyse.pdf) gibt hier einen Überblick von einigen Sprachmodellen die bei einer ersten Recherche aufgetreten sind. Die Aktuell am meisten genannten sind sicherlich OpenAI mit ChatGPT (v3.5 & v4) sowie Google mit Bert. - -**Referenzen:** - -- [OpenaAi - ChatGPT](https://openai.com/blog/chatgpt) -- [OpenAi - GPT4](https://openai.com/product/gpt-4) -- [Google - BERT](https://ai.googleblog.com/2018/11/open-sourcing-bert-state-of-art-pre.html) -- [Google - Flan-T5-XXL](https://huggingface.co/google/flan-t5-xxl) -- [Stanford - How Large Language Models Will Transform Science, Society, and AI](https://hai.stanford.edu/news/how-large-language-models-will-transform-science-society-and-ai) -- [Christopher D. Manning - Human Language Understanding & Reasoning](https://www.amacad.org/publication/human-language-understanding-reasoning) -- [Current Approaches and Applications in Natural Language Processing](https://www.mdpi.com/books/book/5892) - -Der Themenbereich Sprachmodelle bzw. Large Language Models gibt innerhalb der [DigiBib](https://thb-koeln.digibib.net/search/eds/list?start=1&be-eds-expander=fulltext&parent_request_id=002pdinqolclk6o2vleg&parent_request_id_hmac=ea48c26539de621a6e235820151356e977b66b70&q-al=large+language+models&be-eds-sort=relevance) sowie Google-Scholar Suche mehrere Millionen Treffer. Hier gilt es dementsprechend stark Einzugrenzen. - -**Genutze Suchbegriffe:** - -- Large Language Models -- Language Models -- Sprachmodelle -- pre-trained language model - -Im Bereich der Produktbeschreibung bzw. Beschreibungstexten ist in der ersten Orientierung aufgefallen, dass hier viel im Kontext der Search Engine Optimization (SEO) angesiedelt ist. Da das Thema SEO kein Fokus dieser Arbeit sein soll, muss davon ausgegangen werden, dass es deutlich aufwendiger wird, geeignete Referenzen zu finden. - -## Deutsche Wein-Shops mit hochwertigen Weinbeschreibungen - -- [Wein Plus](https://www.wein.plus/de) -- [Gute Weine](https://www.gute-weine.de/) -- [Wein am Limit](https://shop.weinamlimit.de/) -- [Baum Selection](https://baumselection.com/) -- [Tesdorpf](https://www.tesdorpf.de/) - -## Zeitplan - -tbd diff --git a/_works/t-loges/04-results/Masterarbeit-Tim_Loges.pdf b/_works/t-loges/04-results/Masterarbeit-Tim_Loges.pdf deleted file mode 100644 index 1723910..0000000 Binary files a/_works/t-loges/04-results/Masterarbeit-Tim_Loges.pdf and /dev/null differ diff --git a/_works/t-loges/04-results/Readme.md b/_works/t-loges/04-results/Readme.md deleted file mode 100644 index 14a5be7..0000000 --- a/_works/t-loges/04-results/Readme.md +++ /dev/null @@ -1,9 +0,0 @@ -# Ergebnisse - -## Arbeit - -Die Masterarbeit ist hier abgelegt: [Masterarbeit Tim Loges](./Masterarbeit-Tim_Loges.pdf) - -## Begleitrepository - -Das Begleitrepository ist hier zu finden: [Begleitrepository](https://github.com/WasMachenSachen/master-thesis-tim-loges.git) diff --git a/_works/t-rutsch/04-results/BA-TobiasRutsch-Abgabe.pdf b/_works/t-rutsch/04-results/BA-TobiasRutsch-Abgabe.pdf deleted file mode 100644 index 697c3ea..0000000 Binary files a/_works/t-rutsch/04-results/BA-TobiasRutsch-Abgabe.pdf and /dev/null differ diff --git a/_works/t-rutsch/04-results/README.md b/_works/t-rutsch/04-results/README.md deleted file mode 100644 index 0119564..0000000 --- a/_works/t-rutsch/04-results/README.md +++ /dev/null @@ -1,57 +0,0 @@ -# Ergebnisse - -## Kurzfassung - -Durch den technischen Fortschritt im Bereich k¨unstliche Intelligenz, werden immer -mehr Tools entworfen, die durch Einsatz einer AI unterschiedliche Aufgaben erf¨ullen. -So nimmt auch die Zahl der AI-Tools zur automatisierten Grafikerstellung und - -erg¨anzung zu. Diese k¨onnen verwendet werden, um herk¨ommliche Prozesse der Gra- -fikproduktion effizienter zu gestalten. Auch im Online-Marketing werden Grafiken ein- -gesetzt, um verschiedene Zwecke zu erf¨ullen. Das Ziel der vorliegenden Arbeit ist es -herauszustellen, in welchen F¨allen die Verwendung eines AI-Tools zur automatisier- -ten Grafikerstellung und -erg¨anzung im Kontext des Online Marketings sinnvoll sein -kann. Daf¨ur werden die Einsatzgebiete von Grafiken im Online-Marketing recherchiert -und herausgestellt welche Bearbeitungsschritte dabei vorkommen. Anschließend wer- -den anhand dessen Anwendungsszenarien definiert, die unter Verwendung unterschied- -licher AI-Tools zur automatisierten Grafikerstellung und -erg¨anzung praktisch umge- -setzt werden. Der Vorgang wird dabei dokumentiert und anschließend ausgewertet. -Dabei erweisen sich die AI-Tools in vielen Bereichen durchaus als geeignet oder zu- -mindest hilfreich. Im direkten Vergleich der untersuchten Tools konnten die Tools von -Adobe (Generative AI und Firefly) am besten abschließen. Diese konnten die meisten -Anwendungsszenarien zufriedenstellend und effizient umsetzen und empfehlen sich da- -durch am meisten f¨ur die Verwendung im Kontext der Grafikerstellung und -erg¨anzung -im Online-Marketing. -Aufgrund vieler Limitierungen der Untersuchung dient diese Untersuchung lediglich als -oberfl¨achliche oder stichprobenartige Einsch¨atzung der Situation. Weiterf¨uhrende For- -schungen mit weiteren unterschiedlichen Anwendungsszenarien, die Ber¨ucksichtigung -weiterer Tools und weiteren Nutzern, die die Umsetzung der Anwendungsszenarien -durchf¨uhren, k¨onnte weitaus detaillierte Ergebnisse liefern. - -## Abstract - -Due to the technological advancements in the field of artificial intelligence, an increa- -sing number of tools are being designed to perform various tasks using AI. Consequent- -ly, the number of AI tools for automated graphic creation and enhancement is also on -the rise. These tools can be employed to make traditional graphic production processes -more efficient. Graphics are also utilized in online marketing for various purposes. The -objective of this study is to highlight the cases in which the use of AI tools for automa- -ted graphic creation and enhancement can be meaningful within the context of online -marketing. To achieve this, the areas graphics are used for in online marketing will be -researched and the editing steps involved will be identified. Subsequently, application -scenarios will be defined in which various AI tools for automated graphic creation and -enhancement are practically implemented. The process will be documented and then -evaluated. -In many areas, AI tools prove to be suitable or at least helpful. In a direct comparison -of the examined tools, Adobe’s tools (Generative AI and Firefly) performed the best. -They were able to satisfactorily and efficiently execute the majority of application sce- -narios, making them the most recommended for use in the context of graphic creation -and enhancement in online marketing. -Due to various limitations of the study, it should be noted that this investigation serves -as a superficial or sample-based assessment of the situation. Further research with a -broader range of diverse application scenarios, consideration of additional tools, and -involvement of additional users in executing these application scenarios could provide -much more detailed results. - -## Arbeit - -[Bachelorarbeit](./BA-TobiasRutsch-Abgabe.pdf) \ No newline at end of file diff --git a/_works/t-rutsch/expose.md b/_works/t-rutsch/expose.md deleted file mode 100644 index 254e08e..0000000 --- a/_works/t-rutsch/expose.md +++ /dev/null @@ -1,102 +0,0 @@ -# Exposé "Vergleich von AI-Tools zur automatisierten Grafikerstellung und -ergänzung und deren Einsatz im Online-Marketing" - - -## Problemraum - -Durch den technologischen Fortschritt im Bereich künstliche Intelligenz eröffnen sich immer wieder neue Möglichkeiten etablierte Marketingstrategien effizienter zu gestalten. Dies betrifft auch den Einsatz von Grafiken im Marketing. Durch AI-unterstütze Tools zur Erstellung neuer oder Ergänzung bereits vorhandener Grafiken, lassen sich Marketingstrategien optimieren, die mit der Verwendung von Grafiken einhergehen (vgl. [wienerzeitung.at](https://www.wienerzeitung.at/nachrichten/wissen/technologie/2174353-Ist-der-KI-Geist-aus-der-Flasche.html)). -So lassen sich mittels AI-unterstützer Tools beispielsweise automatisiert Grafiken erstellen, die der Bildwelt des Unternehmens oder des beworbenen Produkts entsprechen, sodass zum Beispiel auf aufwendige Fotoshootings verzichtet werden kann. Darüber hinaus lassen sich Grafiken mit Hilfe AI-unterstützer Tools automatisiert ergänzen, wodurch sich eine aufwendige Bildbearbeitung ersparen lässt. Auch der kreative Designprozess lässt sich mit AI unterstützen. Indem AI-unterstütze Tools automatisiert verschiedene Designansätze umsetzen, können schnell und einfach greifbare Visualisierungen erstellt werden, die als Bewertungs- und Entscheidungsgrundlage für den weiteren Designprozess dienen können (vgl. [influencermarketinghub.com](https://influencermarketinghub.com/de/ai-grafikdesign-tools/)). -Darüber hinaus können AI-basierte Tools zur Bilderkennung dabei helfen zu untersuchen, welche Wirkung bestimmte Grafiken auf den Adressaten haben könnten (vgl. [atozofai.withgoogle.com](https://atozofai.withgoogle.com/intl/de/image-recognition/)). Auch in der Suchmaschinenoptimierung spielt die AI-basierte Bilderkennung eine Rolle. AI-basierte Tools zur Bilderkennung können Werbetreibenden dabei helfen einzuschätzen, wie Grafiken von Bilderkennungssoftware analysiert werden. Auf Basis dieser Ergebnisse können Strategien entwickelt werden, um verwendete Grafiken in Hinsicht auf die Algorithmen der Suchmaschinen zu optimieren. - -### Beispiele für durch AI generierte/ergänzte Grafiken: - -Verschiedene Versionen vollständig generierter Grafiken von DALL-E 2 (https://openai.com/dall-e-2) für den Input "An astronaut riding a horse in photorealistic style." -![DALL-E generated Image Version 1](https://images.openai.com/blob/8a2b0833-55f2-44d6-bf4f-85f9471078f5/Anastronautridingahorseinaphotorealisticstyle6.jpg?trim=0,0,0,0&width=2000) -![DALL-E generated Image Version 2](https://images.openai.com/blob/65f7e2f3-cbd1-43c9-b2c5-7d8a3ebb9e3c/Anastronautridingahorseinaphotorealisticstyle0.jpg?trim=0,0,0,0&width=2000) -![DALL-E generated Image Version 3](https://images.openai.com/blob/8a2b0833-55f2-44d6-bf4f-85f9471078f5/Anastronautridingahorseinaphotorealisticstyle2.jpg?trim=0,0,0,0&width=2000) -(nach https://openai.com/dall-e-2) - -Vollständig generierte Grafiken von Midjourney (https://www.midjourney.com/home/)
    -Input: “A majestic mountain landscape, soaring peaks covered in snow, lush green valleys, and a pristine alpine lake reflecting the sky. Capture the grandeur of nature, with dramatic lighting and rich, vivid colors. Include diverse flora and fauna to add depth and interest. Otus 85mm f/1.4 ZF.2 Lens, ISO 200, f/4, 1/250s, — ar 16:9 — q 2 — v 5” -![Midjourney generated Image 1](https://miro.medium.com/v2/resize:fit:720/format:webp/0*Qi_yt_MsNDLXhP_D.png)
    -Input: “Serene seascape, tranquil azure waves lapping the shore, golden sands, and distant rocky cliffs. Capture the scene at sunset, with warm, soft lighting and a sky painted in hues of orange and pink. Include seashells, seaweed, and driftwood for added interest. Use a long exposure for a dreamy, blurred effect on the water. Canon EF 16–35mm f/2.8L III USM lens at 20mm, ISO 100, f/11, 6s — ar 3:2 — q 1 — v 5” -![Midjourney generated Image 2](https://miro.medium.com/v2/resize:fit:720/format:webp/0*c8BggDqFY48RFOjt.png)
    -Input: “An exotic wildlife safari scene, featuring a pride of lions lounging on the sun-drenched savannah, their golden fur blending with the warm, tawny hues of the grasses. Use a telephoto lens to bring the viewer up close to the majestic creatures, while still maintaining a safe distance. Include an array of African wildlife in the background, such as giraffes, zebras, and elephants, to emphasize the diversity and richness of the safari experience. Nikon AF-S NIKKOR 200–500mm f/5.6E ED VR Lens, ISO 400, f/8, 1/500s — v 5” -![Midjourney generated Image 3](https://miro.medium.com/v2/resize:fit:720/format:webp/0*dchJZcX8xGWtrFMd.png)
    -(nach https://bootcamp.uxdesign.cc/midjourney-prompts-custom-made-examples-to-elevate-your-creative-journey-part-1-101fb2d78847) - -Grafiken erweitern mit DALL-E 2: -Input: -![DALL-E edited Image 1 Input](https://images.openai.com/blob/5af3c7a0-4db9-4acd-bdc2-8496a7943ae7/girl_with_pearl_earring.jpg?trim=0,0,0,0&width=2000) -Output: -![DALL-E edited Image 1 Output](https://images.openai.com/blob/4ac9a574-3713-43ac-9423-ce39eaafa783/dall-e-introducing-outpainting.jpeg?trim=0,98,0,95&width=2000) -Input: "Add a flamingo beside the pool." -![DALL-E edited Image 2 Input](https://images.openai.com/blob/aeadc340-f1f0-4250-8c99-1b5ba954b03b/original.jpg?trim=0,0,0,0&width=2000) -Output: -![DALL-E edited Image 2 Output](https://images.openai.com/blob/aeadc340-f1f0-4250-8c99-1b5ba954b03b/0.jpg?trim=0,0,0,0&width=2000) -(nach https://openai.com/dall-e-2) - -Grafiken erweitern mit Photoshop Generative Fill: -Objekte hinzufügen: -![Photoshop Generative Fill edited Image 1](https://helpx.adobe.com/content/dam/help/en/photoshop/using/generative-fill/generate-objects-gen-ai-ps.png.img.png) -Hintergründe verändern: -![Photoshop Generative Fill edited Image 2](https://helpx.adobe.com/content/dam/help/en/photoshop/using/generative-fill/generate-backgrounds-gen-ai-ps.png.img.png) -Grafiken erweitern/ergänzen über den Rand hinaus: -![Photoshop Generative Fill edited Image 3](https://helpx.adobe.com/content/dam/help/en/photoshop/using/generative-fill/extend-images-gen-ai-ps.png.img.png) -Objekte entfernen und Lücken schließen: -![Photoshop Generative Fill edited Image 4](https://helpx.adobe.com/content/dam/help/en/photoshop/using/generative-fill/remove-objects-gen-ai-ps.png.img.png) -(nach https://helpx.adobe.com/photoshop/using/generative-fill.html) - - -## Forschungsfragen/Zielsetzungen - -1. Vergleich von AI-Tools zur automatisierten Grafikerstellung und -ergänzung und deren Einsatz im Online-Marketing -2. Wofür und wie werden Grafiken im Online Marketing eingesetzt? -3. Welche Funktionen bieten AI-Tools zur automatisierten Grafikerstellung und -ergänzung, welche Voraussetzungen müssen dafür erfüllt sein und welche Risken können dabei auftreten? -4. Wie lassen sich AI-Tools zur automatisierten Grafikerstellung und -ergänzung einsetzen, um Prozesse im Online Marketing zu optimieren? -5. Welche neuen Prozesse im Online Marketing lassen sich durch die Verwendung von AI-Tools zur automatisierten Grafikerstellung und -ergänzung realisieren? -6. (Wie könnten Prozesse im Online Marketing durch die Weiterentwicklung von AI-Tools zur automatisierten Grafikerstellung und -ergänzung in Zukunft weiter optimiert werden?) - -Ziel der Untersuchung ist es verschiedene AI-Tools zur automatisierten Grafikerstellung und -ergänzung zu untersuchen und dabei herauszustellen wie diese im Online-Marketing eingesetzt werden können. Dabei soll untersucht werden, welche Funktionen diese Tools jeweils unterstützen, inwiefern sich dadurch neue Marketingstrategien umsetzen, oder bereits etablierte Marketingmethoden optimieren lassen, welche Voraussetzungen dafür erfüllt sein müssen und welche Risiken dabei auftreten können. Dabei sollen verschiedene Einsatzgebiete von Grafiken im Marketing berücksichtigt werden. Schließlich soll anhand der Ergebnisse ein Ausblick in Zukunft geworfen werden, in dem mögliche Potentiale identifiziert werden, die durch die Weiterentwicklung von AI-basierten Tools zur automatisierten Grafikerstellung und -ergänzung in Zukunft umsetzbar oder optimiert werden könnten. - - -## Bezug zur Medieninformatik - -Der Bezug zur Medieninformatik besteht aus verschiedenen Perspektiven. Zum einen besteht ein Bezug zwischen dem Online-Marketing und der Medieninformatik generell, da die Medieninformatik die Wirkung und Kommunikation zwischen Mensch und technischen Systemen untersucht, wozu sich das Online-Marketing eindeutig zuordnen lässt. Auch befasst sich die Medieninformatik damit, Arbeitsschritte mithilfe technischer Systeme und Tools zu erleichtern oder gar zu automatisieren, um dem Menschen besonders immer wiederkehrende Aufgaben zu erleichtern oder abzunehmen. Darüber hinaus befasst sich die Medieninformatik zum Teil auch mit dem Thema künstliche Intelligenz. - -## Persönliche Motivation - -Meine persönliche Motivation zu dem Thema resultiert aus verschiedenen Interessen, die das Thema verbindet. Zum einen habe ich großes Interesse an der Erstellung und Bearbeitung von grafischen sowie audiovisuellen Inhalten. Darüber hinaus spielt meine berufliche Erfahrung im Online Marketing eine große Rolle. Seit knapp fünf Jahren bin ich in der Suchmaschinenoptimierung einer Online-Apotheke tätig. Dabei liegt einer meiner Schwerpunkte auf den Einsatz von Grafiken und Illustrationen, welche ich nicht nur selbst erstelle, sondern auch auf ihre Relevanz in der Suchmaschinenoptimierung untersuche. Zuletzt habe ich großes Interesse daran zu untersuchen, wie sich Arbeitsschritte mit Hilfe technischer Systeme vereinfachen oder im Idealfall vollständig automatisieren lassen. Aufgrund der jüngsten Entwicklung im Bereich künstliche Intelligenz und der Vielzahl neuer Funktionen und Tools, ist dieses Thema zur Zeit besonders spannend. - -## Vorgehensweise der Untersuchung - -Um untersuchen zu können welche möglichen Einsatzgebiete für AI-Tools zur automatisierten Grafikerstellung und -ergänzung im Online-Marketing in Frage kommen, wird zunächst via Literaturrecherche untersucht wie Grafiken im Online-Marketing verwendet werden. Dabei wird herausgestellt zu welchem Zweck Grafiken verwendet werden, welche Erwartung diese erfüllen sollen, welche Regeln und Faktoren dabei zu beachten sind und welche Anforderungen dafür gelten. Grundsätzlich soll auf typische (generische) Anwendungsfälle im Online-Marketing eingegangen werden. Dabei sollen die Regeln und Faktoren sowie Anforderungen dieser sich jeweils lediglich auf die Erfüllung des Anwendungsfalls beziehen. Im Zuge dessen soll ebenfalls untersucht werden, welche Möglichkeiten Werbetreibende zur Grafikerstellung ohne AI-Tools zur automatisierten Grafikerstellung und -ergänzung im Online-Marketing haben. Im nächsten Schritt werden unterschiedliche AI-Tools untersucht, die anhand ihrer Funktionalität differenziert werden. Dazu zählen unter Anderem Tools zum vollständigen Generieren von Grafiken anhand von Texteingaben, Tools zum vollständigen Generieren von Grafiken nach einem Baukastensystem, Tools zum Erweitern/Bearbeiten bereits vorhandener Grafiken mittels AI, sowie AI-Tools zur Bilderkennung. Dabei soll wenn möglich auch ein praktischer Anwendungsfall simuliert werden, um auch die praktische Umsetzbarkeit der Funktionen zu untersuchen. Im Anschluss sollen die untersuchten AI-Tools hinsichtlich ihrer Funktionalität im Zusammenhang mit dem im Vorfeld identifizierten Einsatzgebieten von Grafiken im Online-Marketing evaluiert werden, um festzustellen welche Prozesse bei der Grafikerstellung und -ergänzung für den Einsatz im Online-Marketing durch die Verwendung von AI-Tools optimiert werden können. Dabei werden die untersuchten Tools mit Blick auf Zeitaufwand, Wirtschaftlichkeit, Gestaltungsmöglichkeiten und Wissensvermittlung mit den im Vorfeld indentifizierten, herkömmlichen/etablierten Methoden verglichen. Schließlich soll der Einsatz von AI-Tools kritisch eingeordnet werden. Dazu gehört das Identifizieren von möglichen Risiken, sowie möglicherweise bisher ungenutzten Potentialen, wie sich weitere Arbeitsschritte mit der Weiterentwicklung von AI-Tools zur automatisierten Grafikerstellung und -ergänzung im Online-Marketing in Zukunft weiter optimieren lassen. - -## Tools, die für die Untersuchung in Frage kommen - -Hier eine Auswahl von AI-Tools, die für die Untersuchung in Frage kommen. Diese dienen erstmal als Beispiel und stellen nicht zwangsweise die letztendlich untersuchten Tools dar. - -* Canva: Canva ist eine populäre Designplattform, die AI nutzt, um Benutzern bei der Erstellung von ansprechenden Grafiken, Präsentationen und Marketingmaterialien zu helfen. Es bietet Funktionen wie Vorlagen, Drag-and-Drop-Editor und automatische Layouts. -* Piktochart: Piktochart ist ein Online-Tool zur Erstellung von Infografiken und Präsentationen. Es verwendet AI, um Benutzern bei der Erstellung ansprechender Designs und der Automatisierung von bestimmten Aufgaben wie dem Layout und der Farbauswahl zu unterstützen. -* Designhill: Designhill ist eine Plattform, auf der Unternehmen Designprojekte ausschreiben können. Das Tool verwendet AI, um automatisierte Designvorschläge von Designern aus der ganzen Welt zu generieren. -* DeepArt: DeepArt ist ein AI-Tool, das die Technik des Deep Learning nutzt, um Bilder in verschiedenen Kunststilen umzuwandeln. Es könnte interessant sein, den Einsatz von solchen Stiltransfer-Algorithmen im Marketingkontext zu untersuchen. -* Google Cloud Vision API: Dies ist eine API von Google, die Machine-Learning-Modelle für die Bilderkennung und -analyse bereitstellt. Es kann in verschiedenen Marketinganwendungen eingesetzt werden, um Bilder automatisch zu klassifizieren, Text zu erkennen oder Objekte zu identifizieren. -* Adobe Sensei: Sensei ist die KI- und ML-Technologie von Adobe, die in verschiedenen Anwendungen wie Photoshop, Illustrator und InDesign eingesetzt wird, um Aufgaben wie Bilderkennung, Automatisierung von Arbeitsabläufen und kreative Empfehlungen zu unterstützen. -* DALL·E: DALL·E ist ein AI-Modell von OpenAI, das es ermöglicht, neue Bilder aus Textbeschreibungen zu generieren. Es kann Bilder basierend auf bestimmten Konzepten oder Kombinationen von Konzepten erstellen. -* Runway ML: Runway ML ist eine Plattform für kreative Anwendungen von AI und ermöglicht Benutzern, mit verschiedenen AI-Modellen zu arbeiten, um Bilder zu generieren, zu bearbeiten und zu manipulieren. - -Für die Untersuchung soll ein breites Spektrum an Tools mit unterschiedlichen Funktionen zusammengestellt werden. Dabei spielen jedoch Faktoren wie Zugänglichkeit zum Tool an sich, aber auch zu weiterführenden Informationen wie Dokumentationen eine Rolle. Eine Liste mit unterschiedlichen AI-Tools findet man z.B. unter https://www.campixx.de/tools/ki-ai-tools/ - -## Forschungsergebnisse oder Voruntersuchungen -Bei der Untersuchung wird an keine expliziete Forschungsergebnisse oder Voruntersuchung angesetzt. Allerdings kann besonders bei der Untersuchung von Einsatzgebieten von Grafiken im Online-Marketing auf Forschungsergebnisse von anderen Untersuchungen aufgebaut werden. Möglicherweise können sich auch Forschungsergebnisse zur Untersuchung von AI besonders in Hinsicht auf Grafikerstellung und -ergänzung als hilfreich erweisen. - -## Literatur -Mögliche Literatur wäre unter Anderem: -* SAMMER, Petra und Ulrike HEPPEL, 2015. Visual Storytelling: Visuelles Erzählen in PR und Marketing. Heidelberg: O’Reilly Verlag. ISBN 9783960100065 -* KOLLMANN, Tobias, 2020. Digital Marketing: Grundlagen der Absatzpolitik in der Digitalen Wirtschaft. 3., erweiterte und aktualisierte Auflage. Stuttgart: Verlag W. Kohlhammer. ISBN 978-3-17-037002-9 -* HAHN, Martin, 2020. Webdesign: das Handbuch zur Webgestaltung. 3., aktualisierte und überarbeitete Auflage. Bonn: Rheinwerk Verlag. ISBN 3-8362-7216-4 -* JACOBSEN, Jens und Lorena MEYER, 2022. Praxisbuch Usability und UX: was alle wissen sollten, die Websites und Apps entwickeln. 3., aktualisierte und erweiterte Auflage. Bonn: Rheinwerk Verlag. ISBN 3-8362-8840-0 -* KOHRING, Silvia, 2022. 30 Minuten Suchmaschinenoptimierung. 1. Auflage. OffenbachamMain: GABAL. ISBN 9783967401851 -* ERLHOFER, Sebastian, 2018. Suchmaschinen-Optimierung: das umfassende Handbuch. 9., aktualisierte und erweiterte Auflage. Bonn: Rheinwerk Computing. ISBN 3-8362-6250-9 -* FRAGUELA, Rosita, 2020. Bildbearbeitung \& Design für Social Media: Visuelle Inhalte erstellen und optimieren. Heidelberg: O’Reilly Verlag. ISBN 9783960102670 - - diff --git a/_works/uploads/ba-thesis-anton-zaitsev-2024-09-18.pdf b/_works/uploads/ba-thesis-anton-zaitsev-2024-09-18.pdf deleted file mode 100644 index 1d48821..0000000 Binary files a/_works/uploads/ba-thesis-anton-zaitsev-2024-09-18.pdf and /dev/null differ diff --git a/_works/uploads/bass-typografie-prinzipien-im-web-2025-vassilij-misenko.pdf b/_works/uploads/bass-typografie-prinzipien-im-web-2025-vassilij-misenko.pdf deleted file mode 100644 index b80b1a8..0000000 Binary files a/_works/uploads/bass-typografie-prinzipien-im-web-2025-vassilij-misenko.pdf and /dev/null differ diff --git a/_works/uploads/ma-sebastian-brock.pdf b/_works/uploads/ma-sebastian-brock.pdf deleted file mode 100644 index 0b48419..0000000 Binary files a/_works/uploads/ma-sebastian-brock.pdf and /dev/null differ diff --git a/_works/uploads/polarek-nils-ba-ss24-rev.pdf b/_works/uploads/polarek-nils-ba-ss24-rev.pdf deleted file mode 100644 index 647318d..0000000 Binary files a/_works/uploads/polarek-nils-ba-ss24-rev.pdf and /dev/null differ diff --git a/_works/uploads/praxisprojekt_arbeit__typografie_im_web__2024_25.pdf b/_works/uploads/praxisprojekt_arbeit__typografie_im_web__2024_25.pdf deleted file mode 100644 index d630c45..0000000 Binary files a/_works/uploads/praxisprojekt_arbeit__typografie_im_web__2024_25.pdf and /dev/null differ diff --git a/_works/uploads/webbasierte-musikvisualisierung-in-vr-moglichkeiten-und-grenzen-2025-ba-aaron.pdf b/_works/uploads/webbasierte-musikvisualisierung-in-vr-moglichkeiten-und-grenzen-2025-ba-aaron.pdf deleted file mode 100644 index ca946a6..0000000 Binary files a/_works/uploads/webbasierte-musikvisualisierung-in-vr-moglichkeiten-und-grenzen-2025-ba-aaron.pdf and /dev/null differ diff --git a/abschlussvideo.html b/abschlussvideo.html deleted file mode 100644 index 1c513ad..0000000 --- a/abschlussvideo.html +++ /dev/null @@ -1,94 +0,0 @@ ---- -layout: simple -title: Abschlussvideo ---- - -**Das Abschlussvideo ist ein Clip, welcher das Werk und die wichtigsten Ergebnisse der Arbeit einer fachlichen Öffentlichkeit vorstellt. Das Video wird nach Abschluss der Arbeit veröffentlicht und sollte informativ, professionell, prägnant und ansprechend sein. Halten Sie sich an die vorgegebene maximale Länge des Videos und planen Sie Ihre Inhalte entsprechend.** - -### Was sollte beachtet werden? - -#### Inhaltliche Aspekte - -- Beginnen Sie mit einer kurzen Einführung in das Thema Ihrer Abschlussarbeit, sowie den Kontext und die Ziele. -- Präsentieren Sie die wichtigsten Aspekte Ihrer Arbeit, einschließlich Methodik, Prozess und Ergebnisse. Fokussieren Sie sich auf die bedeutendsten Erkenntnisse und deren Relevanz. -- Nutzen Sie Grafiken, Diagramme, Animationen und andere visuelle Hilfsmittel, um Ihre Ergebnisse klar und verständlich darzustellen. -- Schließen Sie mit den wichtigsten Schlussfolgerungen und Ergebnissen Ihrer Arbeit sowie einem Ausblick auf mögliche zukünftige Forschungen oder Anwendungen ab. - -#### Technische Umsetzung - -- Verwenden Sie eine möglichst gute Kamera und ein externes Mikrofon, um eine gute Video- und Tonqualität zu gewährleisten. Achten Sie auf ausreichende Beleuchtung und eine ruhige Umgebung. -- Integrieren Sie unterstützende visuelle Elemente wie Präsentationsfolien, Infografiken und Bildschirmaufnahmen. Achten Sie darauf, dass diese professionell und klar gestaltet sind. -- Bearbeiten Sie das Video sorgfältig. Schneiden Sie unnötige Teile heraus, fügen Sie Übergänge und Effekte hinzu, und sorgen Sie für eine gleichmäßige Tonqualität. - -#### Rahmen, Authentizität und Individualität - -- Bleiben Sie authentisch. Sprechen Sie frei und vermeiden Sie abgelesene Texte. -- Vermeiden Sie fertige Tools, Templates und KI-Voiceovers. Gestalten Sie das Video individuell und kreativ. -- Stellen Sie sicher, dass alle Inhalte des Videos veröffentlichungsfähig und keine urheberrechtlich geschützten Materialien oder vertraulichen Informationen enthalten sind. - -``` -video-presentation-NAME-DATUM.DATEIENDUNG -``` - -z.B. - -``` -video-presentation-max-mustermann-2022-01-01.mp4 -``` - - -### Niveaustufen - -Bewertung des Abschlussvideos - -Ein gelungenes Abschlussvideo vermittelt das Forschungsergebnis klar und verständlich und stellt die wichtigsten Erkenntnisse ansprechend dar. Wichtige Kriterien sind: - -Inhalt & Struktur: Klare Botschaft, logischer Aufbau, verständliche Darstellung der Kernaussagen. -Präsentation & Verständlichkeit: Gute sprachliche und visuelle Aufbereitung, ansprechende und verständliche Erklärung. -Kreativität & Engagement: Einfallsreiche Gestaltung, die das Interesse des Publikums weckt und motiviert, sich weiter mit dem Thema zu beschäftigen. -Technische Qualität: Saubere Aufnahme, guter Ton, klare Bildgestaltung, sinnvolle Nutzung visueller Mittel. -Relevanz & Zielgruppenorientierung: Die Präsentation ist ansprechend für die relevante Zielgruppe (Fachpublikum, Öffentlichkeit etc.). -1. Bestes Abschlussvideo -👉 (exzellent – informativ, ansprechend, professionell umgesetzt) - -✅ Inhalt & Struktur: Klare, prägnante Darstellung der Forschungsergebnisse mit logischem und spannenden Aufbau. -✅ Präsentation & Verständlichkeit: Verständliche, gut strukturierte Erklärungen, professionell wirkende Darstellung. -✅ Kreativität & Engagement: Einfallsreiche Gestaltung, die das Thema lebendig macht und neugierig auf mehr macht. -✅ Technische Qualität: Hochwertige Aufnahme, exzellenter Ton, professioneller Schnitt und visuelle Gestaltung. -✅ Relevanz & Zielgruppenorientierung: Perfekte Anpassung an die Zielgruppe, wissenschaftlich fundiert und dennoch verständlich. - -2. Gutes Abschlussvideo -👉 (solide, klar verständlich, gut umgesetzt, aber mit kleineren Schwächen) - -✅ Inhalt & Struktur: Gute Vermittlung der Kernaussagen, leicht verständlich, aber nicht immer perfekt strukturiert. -✅ Präsentation & Verständlichkeit: Klare Erklärung, gut vorbereitet, aber nicht durchgehend fesselnd oder spannend. -✅ Kreativität & Engagement: Gelungene Gestaltung, aber ohne besondere Originalität oder visuelle Highlights. -✅ Technische Qualität: Saubere Aufnahme, verständlicher Ton, aber kleine Mängel in Schnitt oder Bildqualität. -✅ Relevanz & Zielgruppenorientierung: Gut angepasst an die Zielgruppe, aber nicht immer optimal ausbalanciert. - -3. Passables Abschlussvideo -👉 (ausreichend verständlich, aber mit deutlichen Verbesserungspotenzialen) - -✅ Inhalt & Struktur: Das Thema wird behandelt, aber nicht immer klar oder gut strukturiert. -✅ Präsentation & Verständlichkeit: Erklärungen verständlich, aber teilweise stockend oder unsicher. -✅ Kreativität & Engagement: Standard-Präsentation ohne besondere visuelle oder kreative Ansätze. -✅ Technische Qualität: Verständlicher Ton und brauchbares Bild, aber Schwächen in Qualität, Schnitt oder Licht. -✅ Relevanz & Zielgruppenorientierung: Thema relevant, aber nicht optimal auf die Zielgruppe zugeschnitten. - -4. Akzeptables Abschlussvideo -👉 (schwach strukturiert, schwer verständlich, technisch oder inhaltlich mangelhaft) - -✅ Inhalt & Struktur: Thema wird nur oberflächlich behandelt, rote Faden fehlt, wichtige Punkte unklar. -✅ Präsentation & Verständlichkeit: Unsichere oder unstrukturierte Erklärung, schwer verständlich. -✅ Kreativität & Engagement: Keine erkennbare kreative Gestaltung oder visuelle Unterstützung. -✅ Technische Qualität: Schlechte Bild- oder Tonqualität, unruhige Kameraführung oder problematischer Schnitt. -✅ Relevanz & Zielgruppenorientierung: Zielgruppe wird nicht wirklich erreicht, Video bleibt uninteressant oder unverständlich. - -5. Schlechtes Abschlussvideo -👉 (mangelhaft – unverständlich, unstrukturiert, technisch unbrauchbar) - -✅ Inhalt & Struktur: Keine klare Aussage oder Struktur, unzusammenhängende oder verwirrende Präsentation. -✅ Präsentation & Verständlichkeit: Vortrag schlecht vorbereitet, unverständlich oder fehlerhaft. -✅ Kreativität & Engagement: Keine erkennbare Mühe in der Gestaltung, langweilig oder unpassend. -✅ Technische Qualität: Sehr schlechte Bild- und Tonqualität, unprofessionell geschnitten oder unbearbeitet. -✅ Relevanz & Zielgruppenorientierung: Kein erkennbarer Bezug zur Zielgruppe, Video verfehlt seinen Zweck. \ No newline at end of file diff --git a/admin/config.yml b/admin/config.yml deleted file mode 100644 index 0bf6c5a..0000000 --- a/admin/config.yml +++ /dev/null @@ -1,97 +0,0 @@ -# config.yml -local_backend: true - -backend: - name: git-gateway - repo: cnoss/thesis - branch: main # Branch to update (optional; defaults to master) - -media_folder: 'assets/uploads' - -collections: - - name: 'research-questions' - label: 'Proposals' - folder: '_research-questions' - create: true - slug: "{{year}}-{{month}}-{{day}}-{{slug}}" - editor: - preview: false - fields: - - { label: 'Layout', name: 'layout', widget: 'hidden', default: 'work' } - - { label: 'Title', name: 'title', widget: 'string' } - - { label: 'Datum', name: 'datum', widget: 'string' } - - { label: 'Body', name: 'body', widget: 'markdown' } - - label: "Status" - name: "status" - widget: "select" - options: ["proposal", "in-progress", "finished", "unpublished"] - - label: "Keywords" - name: "keywords" - widget: "string" - - name: 'works' - label: 'Arbeiten' - folder: '_works' - create: true - sortable_fields: ['date', 'title', 'type', 'author'] - slug: "{{date}}-{{author}}" - summary: "{{date}} // {{author}} // {{type}} // {{status}}" - editor: - preview: false - fields: - - { label: 'Layout', name: 'layout', widget: 'hidden', default: 'work-result' } - - { label: 'Autor*in', name: 'author', widget: 'string' } - - { label: 'Zugehöriger Ordner', name: 'related-folder', widget: 'string', required: false } - - { label: 'Title', name: 'title', widget: 'string', required: true } - - label: 'Datum' - name: date - widget: "datetime" - default: "" - date_format: "YYYY-MM-DD" # e.g. 24.12.2021 - format: "YYYY-MM-DD" - picker_utc: true - required: true - - { label: 'Body', name: 'body', widget: 'markdown' } - - label: "Ergebnis als PDF" - name: "result-pdf" - widget: "file" - required: false - media_folder: 'uploads' - media_library: - config: - multiple: true - - { label: 'URL zur Website', name: 'result-website', widget: 'string', required: false } - - { label: 'URL zum Repo', name: 'result-repo', widget: 'string', required: false } - - { label: 'Slideshow', name: 'slideshow', widget: 'boolean', default: false, required: false } - - { label: 'YouTube ID vom Abschlussvideo', name: 'final-presentation', widget: 'string', required: false } - - { label: 'Research Diary', name: 'research-diary', widget: 'boolean', default: false, required: false } - - label: "Typ" - name: "type" - widget: "select" - options: ["Praxisprojekt", "Bachelorarbeit", "Masterarbeit"] - - label: "Status" - name: "status" - widget: "select" - options: ["in-preparation", "in-progress", "in-evaluation", "finished"] - default: "in-preparation" - - label: "Sichtbarkeit" - name: "visibility" - widget: "select" - options: ["published", "unpublished"] - default: "unpublished" - - label: "Keywords" - name: "keywords" - widget: "string" - - {label: "Erstprüfer", name: "main-examiner", widget: "boolean", default: true} - - label: "Featured Image" - name: "thumbnail" - widget: "image" - required: false - choose_url: true - - label: "Avatar Image" - name: "avatar" - widget: "image" - required: false - choose_url: true - - { label: 'Kooperationspartner', name: 'partner', widget: 'string', required: false } - - { label: 'Kooperationspartner Website', name: 'partner-url', widget: 'string',required: false } - diff --git a/admin/index.html b/admin/index.html deleted file mode 100644 index fd89b7e..0000000 --- a/admin/index.html +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - Content Manager - - - - - - \ No newline at end of file diff --git a/artefacts.html b/artefacts.html deleted file mode 100755 index 44043cd..0000000 --- a/artefacts.html +++ /dev/null @@ -1,40 +0,0 @@ ---- - -layout: simple -title: Artefakte - ---- - -Hier finden Sie eine Übersicht der Artefakte, die im Rahmen der Arbeit erstellt werden müssen. - - -### Werk - -Das Werk ist das zentrale Artefakt, welches im Rahmen der Arbeit entsteht. Es kann sich um eine Software, eine Website, ein Video, ein Buch, eine Ausstellung, eine Installation oder ein anderes Artefakt handeln. Das Werk sollte in einem öffentlichen Repository verfügbar sein, welches in der Ausarbeitung verlinkt wird. Zusätzlich muss eine Kurzbeschreibung als Readme-Datei im Repository hinterlegt werden. - -[mehr zum Werk](./werk.html) - -### Schriftliche Ausarbeitung - -Die Ausarbeitung soll den Prozess, den methodischen Rahmen, die wichtigsten Ergebnisse, Implikationen und mögliche Richtungen für zukünftige Arbeiten dokumentieren. Die Ausarbeitung kann in deutsch oder englisch verfasst werden. - -[mehr zur Ausarbeitung](./ausarbeitung.html) - - -### Research Diary - -Das Research Diary ist ein Kurzvideo von maximal 5 Minuten Länge, welches in einem definierten Intervall den aktellen Stand der Arbeit dokumentiert. Die Diary Videos werden im Sciebo hochgeladen. Den Upload Link erhalten Sie von mir. Das Material muss veröffentlichungsfähig sein. Nutzen sie keine fertigen Tools/ Templates und KI Voiceovers. Das Research Diary ist ein persönliches Dokument und sollte so authentisch wie möglich sein. - -[mehr zum Research Diary](./research-diary.html) - -### Abschlussvideo - -Das Abschlussvideo ist ein Clip, welcher das Werk und die wichtigsten Ergebnisse der Arbeit einer fachlichen Öffentlichkeit vorstellt. Das Video wird nach Abschluss der Arbeit veröffentlicht. Hier gilt das Gleiche wie für das Research Diary. - -[mehr zum Abschlussvideo](./abschlussvideo.html) - -### Bilddokumentation - -Die Bilddokumentation umfasst Bilder, Grafiken und Animationen, die das Werk und den Prozess dokumentieren. Die Bilder werden im Sciebo hochgeladen. Den Upload Link erhalten Sie von mir. Die Bilder müssen veröffentlichungsfähig sein. Zu jedem Bild sind Bildunterschriften zu verfassen, die den Inhalt beschreiben und ihn in den Kontext der Arbeit einordnen. Diese sind im IPTC-Format in den jeweiligen Bilddaten zu speichern. - -[mehr zur Bilddokumentation](./bilddoku.html) diff --git a/assets/fonts/Barlow/Barlow-Black.ttf b/assets/fonts/Barlow/Barlow-Black.ttf deleted file mode 100755 index 4d9bb93..0000000 Binary files a/assets/fonts/Barlow/Barlow-Black.ttf and /dev/null differ diff --git a/assets/fonts/Barlow/Barlow-BlackItalic.ttf b/assets/fonts/Barlow/Barlow-BlackItalic.ttf deleted file mode 100755 index 1947969..0000000 Binary files a/assets/fonts/Barlow/Barlow-BlackItalic.ttf and /dev/null differ diff --git a/assets/fonts/Barlow/Barlow-Bold.ttf b/assets/fonts/Barlow/Barlow-Bold.ttf deleted file mode 100755 index 86f237c..0000000 Binary files a/assets/fonts/Barlow/Barlow-Bold.ttf and /dev/null differ diff --git a/assets/fonts/Barlow/Barlow-BoldItalic.ttf b/assets/fonts/Barlow/Barlow-BoldItalic.ttf deleted file mode 100755 index bc59eaf..0000000 Binary files a/assets/fonts/Barlow/Barlow-BoldItalic.ttf and /dev/null differ diff --git a/assets/fonts/Barlow/Barlow-ExtraBold.ttf b/assets/fonts/Barlow/Barlow-ExtraBold.ttf deleted file mode 100755 index 0da0383..0000000 Binary files a/assets/fonts/Barlow/Barlow-ExtraBold.ttf and /dev/null differ diff --git a/assets/fonts/Barlow/Barlow-ExtraBoldItalic.ttf b/assets/fonts/Barlow/Barlow-ExtraBoldItalic.ttf deleted file mode 100755 index a1f1612..0000000 Binary files a/assets/fonts/Barlow/Barlow-ExtraBoldItalic.ttf and /dev/null differ diff --git a/assets/fonts/Barlow/Barlow-ExtraLight.ttf b/assets/fonts/Barlow/Barlow-ExtraLight.ttf deleted file mode 100755 index b70214d..0000000 Binary files a/assets/fonts/Barlow/Barlow-ExtraLight.ttf and /dev/null differ diff --git a/assets/fonts/Barlow/Barlow-ExtraLightItalic.ttf b/assets/fonts/Barlow/Barlow-ExtraLightItalic.ttf deleted file mode 100755 index a5f9351..0000000 Binary files a/assets/fonts/Barlow/Barlow-ExtraLightItalic.ttf and /dev/null differ diff --git a/assets/fonts/Barlow/Barlow-Italic.ttf b/assets/fonts/Barlow/Barlow-Italic.ttf deleted file mode 100755 index 987594e..0000000 Binary files a/assets/fonts/Barlow/Barlow-Italic.ttf and /dev/null differ diff --git a/assets/fonts/Barlow/Barlow-Light.ttf b/assets/fonts/Barlow/Barlow-Light.ttf deleted file mode 100755 index a6f71f2..0000000 Binary files a/assets/fonts/Barlow/Barlow-Light.ttf and /dev/null differ diff --git a/assets/fonts/Barlow/Barlow-LightItalic.ttf b/assets/fonts/Barlow/Barlow-LightItalic.ttf deleted file mode 100755 index 28b8a38..0000000 Binary files a/assets/fonts/Barlow/Barlow-LightItalic.ttf and /dev/null differ diff --git a/assets/fonts/Barlow/Barlow-Medium.ttf b/assets/fonts/Barlow/Barlow-Medium.ttf deleted file mode 100755 index 1806783..0000000 Binary files a/assets/fonts/Barlow/Barlow-Medium.ttf and /dev/null differ diff --git a/assets/fonts/Barlow/Barlow-MediumItalic.ttf b/assets/fonts/Barlow/Barlow-MediumItalic.ttf deleted file mode 100755 index 46e2a76..0000000 Binary files a/assets/fonts/Barlow/Barlow-MediumItalic.ttf and /dev/null differ diff --git a/assets/fonts/Barlow/Barlow-Regular.ttf b/assets/fonts/Barlow/Barlow-Regular.ttf deleted file mode 100755 index 340f1c6..0000000 Binary files a/assets/fonts/Barlow/Barlow-Regular.ttf and /dev/null differ diff --git a/assets/fonts/Barlow/Barlow-SemiBold.ttf b/assets/fonts/Barlow/Barlow-SemiBold.ttf deleted file mode 100755 index e95527e..0000000 Binary files a/assets/fonts/Barlow/Barlow-SemiBold.ttf and /dev/null differ diff --git a/assets/fonts/Barlow/Barlow-SemiBoldItalic.ttf b/assets/fonts/Barlow/Barlow-SemiBoldItalic.ttf deleted file mode 100755 index ba4f521..0000000 Binary files a/assets/fonts/Barlow/Barlow-SemiBoldItalic.ttf and /dev/null differ diff --git a/assets/fonts/Barlow/Barlow-Thin.ttf b/assets/fonts/Barlow/Barlow-Thin.ttf deleted file mode 100755 index d8882fe..0000000 Binary files a/assets/fonts/Barlow/Barlow-Thin.ttf and /dev/null differ diff --git a/assets/fonts/Barlow/Barlow-ThinItalic.ttf b/assets/fonts/Barlow/Barlow-ThinItalic.ttf deleted file mode 100755 index 869f1a3..0000000 Binary files a/assets/fonts/Barlow/Barlow-ThinItalic.ttf and /dev/null differ diff --git a/assets/fonts/Barlow/OFL.txt b/assets/fonts/Barlow/OFL.txt deleted file mode 100755 index 264ffc5..0000000 --- a/assets/fonts/Barlow/OFL.txt +++ /dev/null @@ -1,93 +0,0 @@ -Copyright 2017 The Barlow Project Authors (https://github.com/jpt/barlow) - -This Font Software is licensed under the SIL Open Font License, Version 1.1. -This license is copied below, and is also available with a FAQ at: -http://scripts.sil.org/OFL - - ------------------------------------------------------------ -SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 ------------------------------------------------------------ - -PREAMBLE -The goals of the Open Font License (OFL) are to stimulate worldwide -development of collaborative font projects, to support the font creation -efforts of academic and linguistic communities, and to provide a free and -open framework in which fonts may be shared and improved in partnership -with others. - -The OFL allows the licensed fonts to be used, studied, modified and -redistributed freely as long as they are not sold by themselves. The -fonts, including any derivative works, can be bundled, embedded, -redistributed and/or sold with any software provided that any reserved -names are not used by derivative works. The fonts and derivatives, -however, cannot be released under any other type of license. The -requirement for fonts to remain under this license does not apply -to any document created using the fonts or their derivatives. - -DEFINITIONS -"Font Software" refers to the set of files released by the Copyright -Holder(s) under this license and clearly marked as such. This may -include source files, build scripts and documentation. - -"Reserved Font Name" refers to any names specified as such after the -copyright statement(s). - -"Original Version" refers to the collection of Font Software components as -distributed by the Copyright Holder(s). - -"Modified Version" refers to any derivative made by adding to, deleting, -or substituting -- in part or in whole -- any of the components of the -Original Version, by changing formats or by porting the Font Software to a -new environment. - -"Author" refers to any designer, engineer, programmer, technical -writer or other person who contributed to the Font Software. - -PERMISSION & CONDITIONS -Permission is hereby granted, free of charge, to any person obtaining -a copy of the Font Software, to use, study, copy, merge, embed, modify, -redistribute, and sell modified and unmodified copies of the Font -Software, subject to the following conditions: - -1) Neither the Font Software nor any of its individual components, -in Original or Modified Versions, may be sold by itself. - -2) Original or Modified Versions of the Font Software may be bundled, -redistributed and/or sold with any software, provided that each copy -contains the above copyright notice and this license. These can be -included either as stand-alone text files, human-readable headers or -in the appropriate machine-readable metadata fields within text or -binary files as long as those fields can be easily viewed by the user. - -3) No Modified Version of the Font Software may use the Reserved Font -Name(s) unless explicit written permission is granted by the corresponding -Copyright Holder. This restriction only applies to the primary font name as -presented to the users. - -4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font -Software shall not be used to promote, endorse or advertise any -Modified Version, except to acknowledge the contribution(s) of the -Copyright Holder(s) and the Author(s) or with their explicit written -permission. - -5) The Font Software, modified or unmodified, in part or in whole, -must be distributed entirely under this license, and must not be -distributed under any other license. The requirement for fonts to -remain under this license does not apply to any document created -using the Font Software. - -TERMINATION -This license becomes null and void if any of the above conditions are -not met. - -DISCLAIMER -THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT -OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE -COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL -DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM -OTHER DEALINGS IN THE FONT SOFTWARE. diff --git a/assets/fonts/Icofont/icofont.eot b/assets/fonts/Icofont/icofont.eot deleted file mode 100755 index 56e15db..0000000 Binary files a/assets/fonts/Icofont/icofont.eot and /dev/null differ diff --git a/assets/fonts/Icofont/icofont.svg b/assets/fonts/Icofont/icofont.svg deleted file mode 100755 index 8535ec6..0000000 --- a/assets/fonts/Icofont/icofont.svg +++ /dev/null @@ -1,2105 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/assets/fonts/Icofont/icofont.ttf b/assets/fonts/Icofont/icofont.ttf deleted file mode 100755 index ba6d235..0000000 Binary files a/assets/fonts/Icofont/icofont.ttf and /dev/null differ diff --git a/assets/fonts/Icofont/icofont.woff b/assets/fonts/Icofont/icofont.woff deleted file mode 100755 index 48002ce..0000000 Binary files a/assets/fonts/Icofont/icofont.woff and /dev/null differ diff --git a/assets/fonts/Icofont/icofont.woff2 b/assets/fonts/Icofont/icofont.woff2 deleted file mode 100755 index 75f03d7..0000000 Binary files a/assets/fonts/Icofont/icofont.woff2 and /dev/null differ diff --git a/assets/fonts/MaterialIcons/MaterialIcons-Regular.eot b/assets/fonts/MaterialIcons/MaterialIcons-Regular.eot deleted file mode 100755 index 70508eb..0000000 Binary files a/assets/fonts/MaterialIcons/MaterialIcons-Regular.eot and /dev/null differ diff --git a/assets/fonts/MaterialIcons/MaterialIcons-Regular.ijmap b/assets/fonts/MaterialIcons/MaterialIcons-Regular.ijmap deleted file mode 100755 index d9f1d25..0000000 --- a/assets/fonts/MaterialIcons/MaterialIcons-Regular.ijmap +++ /dev/null @@ -1 +0,0 @@ -{"icons":{"e84d":{"name":"3d Rotation"},"eb3b":{"name":"Ac Unit"},"e190":{"name":"Access Alarm"},"e191":{"name":"Access Alarms"},"e192":{"name":"Access Time"},"e84e":{"name":"Accessibility"},"e914":{"name":"Accessible"},"e84f":{"name":"Account Balance"},"e850":{"name":"Account Balance Wallet"},"e851":{"name":"Account Box"},"e853":{"name":"Account Circle"},"e60e":{"name":"Adb"},"e145":{"name":"Add"},"e439":{"name":"Add A Photo"},"e193":{"name":"Add Alarm"},"e003":{"name":"Add Alert"},"e146":{"name":"Add Box"},"e147":{"name":"Add Circle"},"e148":{"name":"Add Circle Outline"},"e567":{"name":"Add Location"},"e854":{"name":"Add Shopping Cart"},"e39d":{"name":"Add To Photos"},"e05c":{"name":"Add To Queue"},"e39e":{"name":"Adjust"},"e630":{"name":"Airline Seat Flat"},"e631":{"name":"Airline Seat Flat Angled"},"e632":{"name":"Airline Seat Individual Suite"},"e633":{"name":"Airline Seat Legroom Extra"},"e634":{"name":"Airline Seat Legroom Normal"},"e635":{"name":"Airline Seat Legroom Reduced"},"e636":{"name":"Airline Seat Recline Extra"},"e637":{"name":"Airline Seat Recline Normal"},"e195":{"name":"Airplanemode Active"},"e194":{"name":"Airplanemode Inactive"},"e055":{"name":"Airplay"},"eb3c":{"name":"Airport Shuttle"},"e855":{"name":"Alarm"},"e856":{"name":"Alarm Add"},"e857":{"name":"Alarm Off"},"e858":{"name":"Alarm On"},"e019":{"name":"Album"},"eb3d":{"name":"All Inclusive"},"e90b":{"name":"All Out"},"e859":{"name":"Android"},"e85a":{"name":"Announcement"},"e5c3":{"name":"Apps"},"e149":{"name":"Archive"},"e5c4":{"name":"Arrow Back"},"e5db":{"name":"Arrow Downward"},"e5c5":{"name":"Arrow Drop Down"},"e5c6":{"name":"Arrow Drop Down Circle"},"e5c7":{"name":"Arrow Drop Up"},"e5c8":{"name":"Arrow Forward"},"e5d8":{"name":"Arrow Upward"},"e060":{"name":"Art Track"},"e85b":{"name":"Aspect Ratio"},"e85c":{"name":"Assessment"},"e85d":{"name":"Assignment"},"e85e":{"name":"Assignment Ind"},"e85f":{"name":"Assignment Late"},"e860":{"name":"Assignment Return"},"e861":{"name":"Assignment Returned"},"e862":{"name":"Assignment Turned In"},"e39f":{"name":"Assistant"},"e3a0":{"name":"Assistant Photo"},"e226":{"name":"Attach File"},"e227":{"name":"Attach Money"},"e2bc":{"name":"Attachment"},"e3a1":{"name":"Audiotrack"},"e863":{"name":"Autorenew"},"e01b":{"name":"Av Timer"},"e14a":{"name":"Backspace"},"e864":{"name":"Backup"},"e19c":{"name":"Battery Alert"},"e1a3":{"name":"Battery Charging Full"},"e1a4":{"name":"Battery Full"},"e1a5":{"name":"Battery Std"},"e1a6":{"name":"Battery Unknown"},"eb3e":{"name":"Beach Access"},"e52d":{"name":"Beenhere"},"e14b":{"name":"Block"},"e1a7":{"name":"Bluetooth"},"e60f":{"name":"Bluetooth Audio"},"e1a8":{"name":"Bluetooth Connected"},"e1a9":{"name":"Bluetooth Disabled"},"e1aa":{"name":"Bluetooth Searching"},"e3a2":{"name":"Blur Circular"},"e3a3":{"name":"Blur Linear"},"e3a4":{"name":"Blur Off"},"e3a5":{"name":"Blur On"},"e865":{"name":"Book"},"e866":{"name":"Bookmark"},"e867":{"name":"Bookmark Border"},"e228":{"name":"Border All"},"e229":{"name":"Border Bottom"},"e22a":{"name":"Border Clear"},"e22b":{"name":"Border Color"},"e22c":{"name":"Border Horizontal"},"e22d":{"name":"Border Inner"},"e22e":{"name":"Border Left"},"e22f":{"name":"Border Outer"},"e230":{"name":"Border Right"},"e231":{"name":"Border Style"},"e232":{"name":"Border Top"},"e233":{"name":"Border Vertical"},"e06b":{"name":"Branding Watermark"},"e3a6":{"name":"Brightness 1"},"e3a7":{"name":"Brightness 2"},"e3a8":{"name":"Brightness 3"},"e3a9":{"name":"Brightness 4"},"e3aa":{"name":"Brightness 5"},"e3ab":{"name":"Brightness 6"},"e3ac":{"name":"Brightness 7"},"e1ab":{"name":"Brightness Auto"},"e1ac":{"name":"Brightness High"},"e1ad":{"name":"Brightness Low"},"e1ae":{"name":"Brightness Medium"},"e3ad":{"name":"Broken Image"},"e3ae":{"name":"Brush"},"e6dd":{"name":"Bubble Chart"},"e868":{"name":"Bug Report"},"e869":{"name":"Build"},"e43c":{"name":"Burst Mode"},"e0af":{"name":"Business"},"eb3f":{"name":"Business Center"},"e86a":{"name":"Cached"},"e7e9":{"name":"Cake"},"e0b0":{"name":"Call"},"e0b1":{"name":"Call End"},"e0b2":{"name":"Call Made"},"e0b3":{"name":"Call Merge"},"e0b4":{"name":"Call Missed"},"e0e4":{"name":"Call Missed Outgoing"},"e0b5":{"name":"Call Received"},"e0b6":{"name":"Call Split"},"e06c":{"name":"Call To Action"},"e3af":{"name":"Camera"},"e3b0":{"name":"Camera Alt"},"e8fc":{"name":"Camera Enhance"},"e3b1":{"name":"Camera Front"},"e3b2":{"name":"Camera Rear"},"e3b3":{"name":"Camera Roll"},"e5c9":{"name":"Cancel"},"e8f6":{"name":"Card Giftcard"},"e8f7":{"name":"Card Membership"},"e8f8":{"name":"Card Travel"},"eb40":{"name":"Casino"},"e307":{"name":"Cast"},"e308":{"name":"Cast Connected"},"e3b4":{"name":"Center Focus Strong"},"e3b5":{"name":"Center Focus Weak"},"e86b":{"name":"Change History"},"e0b7":{"name":"Chat"},"e0ca":{"name":"Chat Bubble"},"e0cb":{"name":"Chat Bubble Outline"},"e5ca":{"name":"Check"},"e834":{"name":"Check Box"},"e835":{"name":"Check Box Outline Blank"},"e86c":{"name":"Check Circle"},"e5cb":{"name":"Chevron Left"},"e5cc":{"name":"Chevron Right"},"eb41":{"name":"Child Care"},"eb42":{"name":"Child Friendly"},"e86d":{"name":"Chrome Reader Mode"},"e86e":{"name":"Class"},"e14c":{"name":"Clear"},"e0b8":{"name":"Clear All"},"e5cd":{"name":"Close"},"e01c":{"name":"Closed Caption"},"e2bd":{"name":"Cloud"},"e2be":{"name":"Cloud Circle"},"e2bf":{"name":"Cloud Done"},"e2c0":{"name":"Cloud Download"},"e2c1":{"name":"Cloud Off"},"e2c2":{"name":"Cloud Queue"},"e2c3":{"name":"Cloud Upload"},"e86f":{"name":"Code"},"e3b6":{"name":"Collections"},"e431":{"name":"Collections Bookmark"},"e3b7":{"name":"Color Lens"},"e3b8":{"name":"Colorize"},"e0b9":{"name":"Comment"},"e3b9":{"name":"Compare"},"e915":{"name":"Compare Arrows"},"e30a":{"name":"Computer"},"e638":{"name":"Confirmation Number"},"e0d0":{"name":"Contact Mail"},"e0cf":{"name":"Contact Phone"},"e0ba":{"name":"Contacts"},"e14d":{"name":"Content Copy"},"e14e":{"name":"Content Cut"},"e14f":{"name":"Content Paste"},"e3ba":{"name":"Control Point"},"e3bb":{"name":"Control Point Duplicate"},"e90c":{"name":"Copyright"},"e150":{"name":"Create"},"e2cc":{"name":"Create New Folder"},"e870":{"name":"Credit Card"},"e3be":{"name":"Crop"},"e3bc":{"name":"Crop 16 9"},"e3bd":{"name":"Crop 3 2"},"e3bf":{"name":"Crop 5 4"},"e3c0":{"name":"Crop 7 5"},"e3c1":{"name":"Crop Din"},"e3c2":{"name":"Crop Free"},"e3c3":{"name":"Crop Landscape"},"e3c4":{"name":"Crop Original"},"e3c5":{"name":"Crop Portrait"},"e437":{"name":"Crop Rotate"},"e3c6":{"name":"Crop Square"},"e871":{"name":"Dashboard"},"e1af":{"name":"Data Usage"},"e916":{"name":"Date Range"},"e3c7":{"name":"Dehaze"},"e872":{"name":"Delete"},"e92b":{"name":"Delete Forever"},"e16c":{"name":"Delete Sweep"},"e873":{"name":"Description"},"e30b":{"name":"Desktop Mac"},"e30c":{"name":"Desktop Windows"},"e3c8":{"name":"Details"},"e30d":{"name":"Developer Board"},"e1b0":{"name":"Developer Mode"},"e335":{"name":"Device Hub"},"e1b1":{"name":"Devices"},"e337":{"name":"Devices Other"},"e0bb":{"name":"Dialer Sip"},"e0bc":{"name":"Dialpad"},"e52e":{"name":"Directions"},"e52f":{"name":"Directions Bike"},"e532":{"name":"Directions Boat"},"e530":{"name":"Directions Bus"},"e531":{"name":"Directions Car"},"e534":{"name":"Directions Railway"},"e566":{"name":"Directions Run"},"e533":{"name":"Directions Subway"},"e535":{"name":"Directions Transit"},"e536":{"name":"Directions Walk"},"e610":{"name":"Disc Full"},"e875":{"name":"Dns"},"e612":{"name":"Do Not Disturb"},"e611":{"name":"Do Not Disturb Alt"},"e643":{"name":"Do Not Disturb Off"},"e644":{"name":"Do Not Disturb On"},"e30e":{"name":"Dock"},"e7ee":{"name":"Domain"},"e876":{"name":"Done"},"e877":{"name":"Done All"},"e917":{"name":"Donut Large"},"e918":{"name":"Donut Small"},"e151":{"name":"Drafts"},"e25d":{"name":"Drag Handle"},"e613":{"name":"Drive Eta"},"e1b2":{"name":"Dvr"},"e3c9":{"name":"Edit"},"e568":{"name":"Edit Location"},"e8fb":{"name":"Eject"},"e0be":{"name":"Email"},"e63f":{"name":"Enhanced Encryption"},"e01d":{"name":"Equalizer"},"e000":{"name":"Error"},"e001":{"name":"Error Outline"},"e926":{"name":"Euro Symbol"},"e56d":{"name":"Ev Station"},"e878":{"name":"Event"},"e614":{"name":"Event Available"},"e615":{"name":"Event Busy"},"e616":{"name":"Event Note"},"e903":{"name":"Event Seat"},"e879":{"name":"Exit To App"},"e5ce":{"name":"Expand Less"},"e5cf":{"name":"Expand More"},"e01e":{"name":"Explicit"},"e87a":{"name":"Explore"},"e3ca":{"name":"Exposure"},"e3cb":{"name":"Exposure Neg 1"},"e3cc":{"name":"Exposure Neg 2"},"e3cd":{"name":"Exposure Plus 1"},"e3ce":{"name":"Exposure Plus 2"},"e3cf":{"name":"Exposure Zero"},"e87b":{"name":"Extension"},"e87c":{"name":"Face"},"e01f":{"name":"Fast Forward"},"e020":{"name":"Fast Rewind"},"e87d":{"name":"Favorite"},"e87e":{"name":"Favorite Border"},"e06d":{"name":"Featured Play List"},"e06e":{"name":"Featured Video"},"e87f":{"name":"Feedback"},"e05d":{"name":"Fiber Dvr"},"e061":{"name":"Fiber Manual Record"},"e05e":{"name":"Fiber New"},"e06a":{"name":"Fiber Pin"},"e062":{"name":"Fiber Smart Record"},"e2c4":{"name":"File Download"},"e2c6":{"name":"File Upload"},"e3d3":{"name":"Filter"},"e3d0":{"name":"Filter 1"},"e3d1":{"name":"Filter 2"},"e3d2":{"name":"Filter 3"},"e3d4":{"name":"Filter 4"},"e3d5":{"name":"Filter 5"},"e3d6":{"name":"Filter 6"},"e3d7":{"name":"Filter 7"},"e3d8":{"name":"Filter 8"},"e3d9":{"name":"Filter 9"},"e3da":{"name":"Filter 9 Plus"},"e3db":{"name":"Filter B And W"},"e3dc":{"name":"Filter Center Focus"},"e3dd":{"name":"Filter Drama"},"e3de":{"name":"Filter Frames"},"e3df":{"name":"Filter Hdr"},"e152":{"name":"Filter List"},"e3e0":{"name":"Filter None"},"e3e2":{"name":"Filter Tilt Shift"},"e3e3":{"name":"Filter Vintage"},"e880":{"name":"Find In Page"},"e881":{"name":"Find Replace"},"e90d":{"name":"Fingerprint"},"e5dc":{"name":"First Page"},"eb43":{"name":"Fitness Center"},"e153":{"name":"Flag"},"e3e4":{"name":"Flare"},"e3e5":{"name":"Flash Auto"},"e3e6":{"name":"Flash Off"},"e3e7":{"name":"Flash On"},"e539":{"name":"Flight"},"e904":{"name":"Flight Land"},"e905":{"name":"Flight Takeoff"},"e3e8":{"name":"Flip"},"e882":{"name":"Flip To Back"},"e883":{"name":"Flip To Front"},"e2c7":{"name":"Folder"},"e2c8":{"name":"Folder Open"},"e2c9":{"name":"Folder Shared"},"e617":{"name":"Folder Special"},"e167":{"name":"Font Download"},"e234":{"name":"Format Align Center"},"e235":{"name":"Format Align Justify"},"e236":{"name":"Format Align Left"},"e237":{"name":"Format Align Right"},"e238":{"name":"Format Bold"},"e239":{"name":"Format Clear"},"e23a":{"name":"Format Color Fill"},"e23b":{"name":"Format Color Reset"},"e23c":{"name":"Format Color Text"},"e23d":{"name":"Format Indent Decrease"},"e23e":{"name":"Format Indent Increase"},"e23f":{"name":"Format Italic"},"e240":{"name":"Format Line Spacing"},"e241":{"name":"Format List Bulleted"},"e242":{"name":"Format List Numbered"},"e243":{"name":"Format Paint"},"e244":{"name":"Format Quote"},"e25e":{"name":"Format Shapes"},"e245":{"name":"Format Size"},"e246":{"name":"Format Strikethrough"},"e247":{"name":"Format Textdirection L To R"},"e248":{"name":"Format Textdirection R To L"},"e249":{"name":"Format Underlined"},"e0bf":{"name":"Forum"},"e154":{"name":"Forward"},"e056":{"name":"Forward 10"},"e057":{"name":"Forward 30"},"e058":{"name":"Forward 5"},"eb44":{"name":"Free Breakfast"},"e5d0":{"name":"Fullscreen"},"e5d1":{"name":"Fullscreen Exit"},"e24a":{"name":"Functions"},"e927":{"name":"G Translate"},"e30f":{"name":"Gamepad"},"e021":{"name":"Games"},"e90e":{"name":"Gavel"},"e155":{"name":"Gesture"},"e884":{"name":"Get App"},"e908":{"name":"Gif"},"eb45":{"name":"Golf Course"},"e1b3":{"name":"Gps Fixed"},"e1b4":{"name":"Gps Not Fixed"},"e1b5":{"name":"Gps Off"},"e885":{"name":"Grade"},"e3e9":{"name":"Gradient"},"e3ea":{"name":"Grain"},"e1b8":{"name":"Graphic Eq"},"e3eb":{"name":"Grid Off"},"e3ec":{"name":"Grid On"},"e7ef":{"name":"Group"},"e7f0":{"name":"Group Add"},"e886":{"name":"Group Work"},"e052":{"name":"Hd"},"e3ed":{"name":"Hdr Off"},"e3ee":{"name":"Hdr On"},"e3f1":{"name":"Hdr Strong"},"e3f2":{"name":"Hdr Weak"},"e310":{"name":"Headset"},"e311":{"name":"Headset Mic"},"e3f3":{"name":"Healing"},"e023":{"name":"Hearing"},"e887":{"name":"Help"},"e8fd":{"name":"Help Outline"},"e024":{"name":"High Quality"},"e25f":{"name":"Highlight"},"e888":{"name":"Highlight Off"},"e889":{"name":"History"},"e88a":{"name":"Home"},"eb46":{"name":"Hot Tub"},"e53a":{"name":"Hotel"},"e88b":{"name":"Hourglass Empty"},"e88c":{"name":"Hourglass Full"},"e902":{"name":"Http"},"e88d":{"name":"Https"},"e3f4":{"name":"Image"},"e3f5":{"name":"Image Aspect Ratio"},"e0e0":{"name":"Import Contacts"},"e0c3":{"name":"Import Export"},"e912":{"name":"Important Devices"},"e156":{"name":"Inbox"},"e909":{"name":"Indeterminate Check Box"},"e88e":{"name":"Info"},"e88f":{"name":"Info Outline"},"e890":{"name":"Input"},"e24b":{"name":"Insert Chart"},"e24c":{"name":"Insert Comment"},"e24d":{"name":"Insert Drive File"},"e24e":{"name":"Insert Emoticon"},"e24f":{"name":"Insert Invitation"},"e250":{"name":"Insert Link"},"e251":{"name":"Insert Photo"},"e891":{"name":"Invert Colors"},"e0c4":{"name":"Invert Colors Off"},"e3f6":{"name":"Iso"},"e312":{"name":"Keyboard"},"e313":{"name":"Keyboard Arrow Down"},"e314":{"name":"Keyboard Arrow Left"},"e315":{"name":"Keyboard Arrow Right"},"e316":{"name":"Keyboard Arrow Up"},"e317":{"name":"Keyboard Backspace"},"e318":{"name":"Keyboard Capslock"},"e31a":{"name":"Keyboard Hide"},"e31b":{"name":"Keyboard Return"},"e31c":{"name":"Keyboard Tab"},"e31d":{"name":"Keyboard Voice"},"eb47":{"name":"Kitchen"},"e892":{"name":"Label"},"e893":{"name":"Label Outline"},"e3f7":{"name":"Landscape"},"e894":{"name":"Language"},"e31e":{"name":"Laptop"},"e31f":{"name":"Laptop Chromebook"},"e320":{"name":"Laptop Mac"},"e321":{"name":"Laptop Windows"},"e5dd":{"name":"Last Page"},"e895":{"name":"Launch"},"e53b":{"name":"Layers"},"e53c":{"name":"Layers Clear"},"e3f8":{"name":"Leak Add"},"e3f9":{"name":"Leak Remove"},"e3fa":{"name":"Lens"},"e02e":{"name":"Library Add"},"e02f":{"name":"Library Books"},"e030":{"name":"Library Music"},"e90f":{"name":"Lightbulb Outline"},"e919":{"name":"Line Style"},"e91a":{"name":"Line Weight"},"e260":{"name":"Linear Scale"},"e157":{"name":"Link"},"e438":{"name":"Linked Camera"},"e896":{"name":"List"},"e0c6":{"name":"Live Help"},"e639":{"name":"Live Tv"},"e53f":{"name":"Local Activity"},"e53d":{"name":"Local Airport"},"e53e":{"name":"Local Atm"},"e540":{"name":"Local Bar"},"e541":{"name":"Local Cafe"},"e542":{"name":"Local Car Wash"},"e543":{"name":"Local Convenience Store"},"e556":{"name":"Local Dining"},"e544":{"name":"Local Drink"},"e545":{"name":"Local Florist"},"e546":{"name":"Local Gas Station"},"e547":{"name":"Local Grocery Store"},"e548":{"name":"Local Hospital"},"e549":{"name":"Local Hotel"},"e54a":{"name":"Local Laundry Service"},"e54b":{"name":"Local Library"},"e54c":{"name":"Local Mall"},"e54d":{"name":"Local Movies"},"e54e":{"name":"Local Offer"},"e54f":{"name":"Local Parking"},"e550":{"name":"Local Pharmacy"},"e551":{"name":"Local Phone"},"e552":{"name":"Local Pizza"},"e553":{"name":"Local Play"},"e554":{"name":"Local Post Office"},"e555":{"name":"Local Printshop"},"e557":{"name":"Local See"},"e558":{"name":"Local Shipping"},"e559":{"name":"Local Taxi"},"e7f1":{"name":"Location City"},"e1b6":{"name":"Location Disabled"},"e0c7":{"name":"Location Off"},"e0c8":{"name":"Location On"},"e1b7":{"name":"Location Searching"},"e897":{"name":"Lock"},"e898":{"name":"Lock Open"},"e899":{"name":"Lock Outline"},"e3fc":{"name":"Looks"},"e3fb":{"name":"Looks 3"},"e3fd":{"name":"Looks 4"},"e3fe":{"name":"Looks 5"},"e3ff":{"name":"Looks 6"},"e400":{"name":"Looks One"},"e401":{"name":"Looks Two"},"e028":{"name":"Loop"},"e402":{"name":"Loupe"},"e16d":{"name":"Low Priority"},"e89a":{"name":"Loyalty"},"e158":{"name":"Mail"},"e0e1":{"name":"Mail Outline"},"e55b":{"name":"Map"},"e159":{"name":"Markunread"},"e89b":{"name":"Markunread Mailbox"},"e322":{"name":"Memory"},"e5d2":{"name":"Menu"},"e252":{"name":"Merge Type"},"e0c9":{"name":"Message"},"e029":{"name":"Mic"},"e02a":{"name":"Mic None"},"e02b":{"name":"Mic Off"},"e618":{"name":"Mms"},"e253":{"name":"Mode Comment"},"e254":{"name":"Mode Edit"},"e263":{"name":"Monetization On"},"e25c":{"name":"Money Off"},"e403":{"name":"Monochrome Photos"},"e7f2":{"name":"Mood"},"e7f3":{"name":"Mood Bad"},"e619":{"name":"More"},"e5d3":{"name":"More Horiz"},"e5d4":{"name":"More Vert"},"e91b":{"name":"Motorcycle"},"e323":{"name":"Mouse"},"e168":{"name":"Move To Inbox"},"e02c":{"name":"Movie"},"e404":{"name":"Movie Creation"},"e43a":{"name":"Movie Filter"},"e6df":{"name":"Multiline Chart"},"e405":{"name":"Music Note"},"e063":{"name":"Music Video"},"e55c":{"name":"My Location"},"e406":{"name":"Nature"},"e407":{"name":"Nature People"},"e408":{"name":"Navigate Before"},"e409":{"name":"Navigate Next"},"e55d":{"name":"Navigation"},"e569":{"name":"Near Me"},"e1b9":{"name":"Network Cell"},"e640":{"name":"Network Check"},"e61a":{"name":"Network Locked"},"e1ba":{"name":"Network Wifi"},"e031":{"name":"New Releases"},"e16a":{"name":"Next Week"},"e1bb":{"name":"Nfc"},"e641":{"name":"No Encryption"},"e0cc":{"name":"No Sim"},"e033":{"name":"Not Interested"},"e06f":{"name":"Note"},"e89c":{"name":"Note Add"},"e7f4":{"name":"Notifications"},"e7f7":{"name":"Notifications Active"},"e7f5":{"name":"Notifications None"},"e7f6":{"name":"Notifications Off"},"e7f8":{"name":"Notifications Paused"},"e90a":{"name":"Offline Pin"},"e63a":{"name":"Ondemand Video"},"e91c":{"name":"Opacity"},"e89d":{"name":"Open In Browser"},"e89e":{"name":"Open In New"},"e89f":{"name":"Open With"},"e7f9":{"name":"Pages"},"e8a0":{"name":"Pageview"},"e40a":{"name":"Palette"},"e925":{"name":"Pan Tool"},"e40b":{"name":"Panorama"},"e40c":{"name":"Panorama Fish Eye"},"e40d":{"name":"Panorama Horizontal"},"e40e":{"name":"Panorama Vertical"},"e40f":{"name":"Panorama Wide Angle"},"e7fa":{"name":"Party Mode"},"e034":{"name":"Pause"},"e035":{"name":"Pause Circle Filled"},"e036":{"name":"Pause Circle Outline"},"e8a1":{"name":"Payment"},"e7fb":{"name":"People"},"e7fc":{"name":"People Outline"},"e8a2":{"name":"Perm Camera Mic"},"e8a3":{"name":"Perm Contact Calendar"},"e8a4":{"name":"Perm Data Setting"},"e8a5":{"name":"Perm Device Information"},"e8a6":{"name":"Perm Identity"},"e8a7":{"name":"Perm Media"},"e8a8":{"name":"Perm Phone Msg"},"e8a9":{"name":"Perm Scan Wifi"},"e7fd":{"name":"Person"},"e7fe":{"name":"Person Add"},"e7ff":{"name":"Person Outline"},"e55a":{"name":"Person Pin"},"e56a":{"name":"Person Pin Circle"},"e63b":{"name":"Personal Video"},"e91d":{"name":"Pets"},"e0cd":{"name":"Phone"},"e324":{"name":"Phone Android"},"e61b":{"name":"Phone Bluetooth Speaker"},"e61c":{"name":"Phone Forwarded"},"e61d":{"name":"Phone In Talk"},"e325":{"name":"Phone Iphone"},"e61e":{"name":"Phone Locked"},"e61f":{"name":"Phone Missed"},"e620":{"name":"Phone Paused"},"e326":{"name":"Phonelink"},"e0db":{"name":"Phonelink Erase"},"e0dc":{"name":"Phonelink Lock"},"e327":{"name":"Phonelink Off"},"e0dd":{"name":"Phonelink Ring"},"e0de":{"name":"Phonelink Setup"},"e410":{"name":"Photo"},"e411":{"name":"Photo Album"},"e412":{"name":"Photo Camera"},"e43b":{"name":"Photo Filter"},"e413":{"name":"Photo Library"},"e432":{"name":"Photo Size Select Actual"},"e433":{"name":"Photo Size Select Large"},"e434":{"name":"Photo Size Select Small"},"e415":{"name":"Picture As Pdf"},"e8aa":{"name":"Picture In Picture"},"e911":{"name":"Picture In Picture Alt"},"e6c4":{"name":"Pie Chart"},"e6c5":{"name":"Pie Chart Outlined"},"e55e":{"name":"Pin Drop"},"e55f":{"name":"Place"},"e037":{"name":"Play Arrow"},"e038":{"name":"Play Circle Filled"},"e039":{"name":"Play Circle Outline"},"e906":{"name":"Play For Work"},"e03b":{"name":"Playlist Add"},"e065":{"name":"Playlist Add Check"},"e05f":{"name":"Playlist Play"},"e800":{"name":"Plus One"},"e801":{"name":"Poll"},"e8ab":{"name":"Polymer"},"eb48":{"name":"Pool"},"e0ce":{"name":"Portable Wifi Off"},"e416":{"name":"Portrait"},"e63c":{"name":"Power"},"e336":{"name":"Power Input"},"e8ac":{"name":"Power Settings New"},"e91e":{"name":"Pregnant Woman"},"e0df":{"name":"Present To All"},"e8ad":{"name":"Print"},"e645":{"name":"Priority High"},"e80b":{"name":"Public"},"e255":{"name":"Publish"},"e8ae":{"name":"Query Builder"},"e8af":{"name":"Question Answer"},"e03c":{"name":"Queue"},"e03d":{"name":"Queue Music"},"e066":{"name":"Queue Play Next"},"e03e":{"name":"Radio"},"e837":{"name":"Radio Button Checked"},"e836":{"name":"Radio Button Unchecked"},"e560":{"name":"Rate Review"},"e8b0":{"name":"Receipt"},"e03f":{"name":"Recent Actors"},"e91f":{"name":"Record Voice Over"},"e8b1":{"name":"Redeem"},"e15a":{"name":"Redo"},"e5d5":{"name":"Refresh"},"e15b":{"name":"Remove"},"e15c":{"name":"Remove Circle"},"e15d":{"name":"Remove Circle Outline"},"e067":{"name":"Remove From Queue"},"e417":{"name":"Remove Red Eye"},"e928":{"name":"Remove Shopping Cart"},"e8fe":{"name":"Reorder"},"e040":{"name":"Repeat"},"e041":{"name":"Repeat One"},"e042":{"name":"Replay"},"e059":{"name":"Replay 10"},"e05a":{"name":"Replay 30"},"e05b":{"name":"Replay 5"},"e15e":{"name":"Reply"},"e15f":{"name":"Reply All"},"e160":{"name":"Report"},"e8b2":{"name":"Report Problem"},"e56c":{"name":"Restaurant"},"e561":{"name":"Restaurant Menu"},"e8b3":{"name":"Restore"},"e929":{"name":"Restore Page"},"e0d1":{"name":"Ring Volume"},"e8b4":{"name":"Room"},"eb49":{"name":"Room Service"},"e418":{"name":"Rotate 90 Degrees Ccw"},"e419":{"name":"Rotate Left"},"e41a":{"name":"Rotate Right"},"e920":{"name":"Rounded Corner"},"e328":{"name":"Router"},"e921":{"name":"Rowing"},"e0e5":{"name":"Rss Feed"},"e642":{"name":"Rv Hookup"},"e562":{"name":"Satellite"},"e161":{"name":"Save"},"e329":{"name":"Scanner"},"e8b5":{"name":"Schedule"},"e80c":{"name":"School"},"e1be":{"name":"Screen Lock Landscape"},"e1bf":{"name":"Screen Lock Portrait"},"e1c0":{"name":"Screen Lock Rotation"},"e1c1":{"name":"Screen Rotation"},"e0e2":{"name":"Screen Share"},"e623":{"name":"Sd Card"},"e1c2":{"name":"Sd Storage"},"e8b6":{"name":"Search"},"e32a":{"name":"Security"},"e162":{"name":"Select All"},"e163":{"name":"Send"},"e811":{"name":"Sentiment Dissatisfied"},"e812":{"name":"Sentiment Neutral"},"e813":{"name":"Sentiment Satisfied"},"e814":{"name":"Sentiment Very Dissatisfied"},"e815":{"name":"Sentiment Very Satisfied"},"e8b8":{"name":"Settings"},"e8b9":{"name":"Settings Applications"},"e8ba":{"name":"Settings Backup Restore"},"e8bb":{"name":"Settings Bluetooth"},"e8bd":{"name":"Settings Brightness"},"e8bc":{"name":"Settings Cell"},"e8be":{"name":"Settings Ethernet"},"e8bf":{"name":"Settings Input Antenna"},"e8c0":{"name":"Settings Input Component"},"e8c1":{"name":"Settings Input Composite"},"e8c2":{"name":"Settings Input Hdmi"},"e8c3":{"name":"Settings Input Svideo"},"e8c4":{"name":"Settings Overscan"},"e8c5":{"name":"Settings Phone"},"e8c6":{"name":"Settings Power"},"e8c7":{"name":"Settings Remote"},"e1c3":{"name":"Settings System Daydream"},"e8c8":{"name":"Settings Voice"},"e80d":{"name":"Share"},"e8c9":{"name":"Shop"},"e8ca":{"name":"Shop Two"},"e8cb":{"name":"Shopping Basket"},"e8cc":{"name":"Shopping Cart"},"e261":{"name":"Short Text"},"e6e1":{"name":"Show Chart"},"e043":{"name":"Shuffle"},"e1c8":{"name":"Signal Cellular 4 Bar"},"e1cd":{"name":"Signal Cellular Connected No Internet 4 Bar"},"e1ce":{"name":"Signal Cellular No Sim"},"e1cf":{"name":"Signal Cellular Null"},"e1d0":{"name":"Signal Cellular Off"},"e1d8":{"name":"Signal Wifi 4 Bar"},"e1d9":{"name":"Signal Wifi 4 Bar Lock"},"e1da":{"name":"Signal Wifi Off"},"e32b":{"name":"Sim Card"},"e624":{"name":"Sim Card Alert"},"e044":{"name":"Skip Next"},"e045":{"name":"Skip Previous"},"e41b":{"name":"Slideshow"},"e068":{"name":"Slow Motion Video"},"e32c":{"name":"Smartphone"},"eb4a":{"name":"Smoke Free"},"eb4b":{"name":"Smoking Rooms"},"e625":{"name":"Sms"},"e626":{"name":"Sms Failed"},"e046":{"name":"Snooze"},"e164":{"name":"Sort"},"e053":{"name":"Sort By Alpha"},"eb4c":{"name":"Spa"},"e256":{"name":"Space Bar"},"e32d":{"name":"Speaker"},"e32e":{"name":"Speaker Group"},"e8cd":{"name":"Speaker Notes"},"e92a":{"name":"Speaker Notes Off"},"e0d2":{"name":"Speaker Phone"},"e8ce":{"name":"Spellcheck"},"e838":{"name":"Star"},"e83a":{"name":"Star Border"},"e839":{"name":"Star Half"},"e8d0":{"name":"Stars"},"e0d3":{"name":"Stay Current Landscape"},"e0d4":{"name":"Stay Current Portrait"},"e0d5":{"name":"Stay Primary Landscape"},"e0d6":{"name":"Stay Primary Portrait"},"e047":{"name":"Stop"},"e0e3":{"name":"Stop Screen Share"},"e1db":{"name":"Storage"},"e8d1":{"name":"Store"},"e563":{"name":"Store Mall Directory"},"e41c":{"name":"Straighten"},"e56e":{"name":"Streetview"},"e257":{"name":"Strikethrough S"},"e41d":{"name":"Style"},"e5d9":{"name":"Subdirectory Arrow Left"},"e5da":{"name":"Subdirectory Arrow Right"},"e8d2":{"name":"Subject"},"e064":{"name":"Subscriptions"},"e048":{"name":"Subtitles"},"e56f":{"name":"Subway"},"e8d3":{"name":"Supervisor Account"},"e049":{"name":"Surround Sound"},"e0d7":{"name":"Swap Calls"},"e8d4":{"name":"Swap Horiz"},"e8d5":{"name":"Swap Vert"},"e8d6":{"name":"Swap Vertical Circle"},"e41e":{"name":"Switch Camera"},"e41f":{"name":"Switch Video"},"e627":{"name":"Sync"},"e628":{"name":"Sync Disabled"},"e629":{"name":"Sync Problem"},"e62a":{"name":"System Update"},"e8d7":{"name":"System Update Alt"},"e8d8":{"name":"Tab"},"e8d9":{"name":"Tab Unselected"},"e32f":{"name":"Tablet"},"e330":{"name":"Tablet Android"},"e331":{"name":"Tablet Mac"},"e420":{"name":"Tag Faces"},"e62b":{"name":"Tap And Play"},"e564":{"name":"Terrain"},"e262":{"name":"Text Fields"},"e165":{"name":"Text Format"},"e0d8":{"name":"Textsms"},"e421":{"name":"Texture"},"e8da":{"name":"Theaters"},"e8db":{"name":"Thumb Down"},"e8dc":{"name":"Thumb Up"},"e8dd":{"name":"Thumbs Up Down"},"e62c":{"name":"Time To Leave"},"e422":{"name":"Timelapse"},"e922":{"name":"Timeline"},"e425":{"name":"Timer"},"e423":{"name":"Timer 10"},"e424":{"name":"Timer 3"},"e426":{"name":"Timer Off"},"e264":{"name":"Title"},"e8de":{"name":"Toc"},"e8df":{"name":"Today"},"e8e0":{"name":"Toll"},"e427":{"name":"Tonality"},"e913":{"name":"Touch App"},"e332":{"name":"Toys"},"e8e1":{"name":"Track Changes"},"e565":{"name":"Traffic"},"e570":{"name":"Train"},"e571":{"name":"Tram"},"e572":{"name":"Transfer Within A Station"},"e428":{"name":"Transform"},"e8e2":{"name":"Translate"},"e8e3":{"name":"Trending Down"},"e8e4":{"name":"Trending Flat"},"e8e5":{"name":"Trending Up"},"e429":{"name":"Tune"},"e8e6":{"name":"Turned In"},"e8e7":{"name":"Turned In Not"},"e333":{"name":"Tv"},"e169":{"name":"Unarchive"},"e166":{"name":"Undo"},"e5d6":{"name":"Unfold Less"},"e5d7":{"name":"Unfold More"},"e923":{"name":"Update"},"e1e0":{"name":"Usb"},"e8e8":{"name":"Verified User"},"e258":{"name":"Vertical Align Bottom"},"e259":{"name":"Vertical Align Center"},"e25a":{"name":"Vertical Align Top"},"e62d":{"name":"Vibration"},"e070":{"name":"Video Call"},"e071":{"name":"Video Label"},"e04a":{"name":"Video Library"},"e04b":{"name":"Videocam"},"e04c":{"name":"Videocam Off"},"e338":{"name":"Videogame Asset"},"e8e9":{"name":"View Agenda"},"e8ea":{"name":"View Array"},"e8eb":{"name":"View Carousel"},"e8ec":{"name":"View Column"},"e42a":{"name":"View Comfy"},"e42b":{"name":"View Compact"},"e8ed":{"name":"View Day"},"e8ee":{"name":"View Headline"},"e8ef":{"name":"View List"},"e8f0":{"name":"View Module"},"e8f1":{"name":"View Quilt"},"e8f2":{"name":"View Stream"},"e8f3":{"name":"View Week"},"e435":{"name":"Vignette"},"e8f4":{"name":"Visibility"},"e8f5":{"name":"Visibility Off"},"e62e":{"name":"Voice Chat"},"e0d9":{"name":"Voicemail"},"e04d":{"name":"Volume Down"},"e04e":{"name":"Volume Mute"},"e04f":{"name":"Volume Off"},"e050":{"name":"Volume Up"},"e0da":{"name":"Vpn Key"},"e62f":{"name":"Vpn Lock"},"e1bc":{"name":"Wallpaper"},"e002":{"name":"Warning"},"e334":{"name":"Watch"},"e924":{"name":"Watch Later"},"e42c":{"name":"Wb Auto"},"e42d":{"name":"Wb Cloudy"},"e42e":{"name":"Wb Incandescent"},"e436":{"name":"Wb Iridescent"},"e430":{"name":"Wb Sunny"},"e63d":{"name":"Wc"},"e051":{"name":"Web"},"e069":{"name":"Web Asset"},"e16b":{"name":"Weekend"},"e80e":{"name":"Whatshot"},"e1bd":{"name":"Widgets"},"e63e":{"name":"Wifi"},"e1e1":{"name":"Wifi Lock"},"e1e2":{"name":"Wifi Tethering"},"e8f9":{"name":"Work"},"e25b":{"name":"Wrap Text"},"e8fa":{"name":"Youtube Searched For"},"e8ff":{"name":"Zoom In"},"e900":{"name":"Zoom Out"},"e56b":{"name":"Zoom Out Map"}}} \ No newline at end of file diff --git a/assets/fonts/MaterialIcons/MaterialIcons-Regular.svg b/assets/fonts/MaterialIcons/MaterialIcons-Regular.svg deleted file mode 100755 index a449327..0000000 --- a/assets/fonts/MaterialIcons/MaterialIcons-Regular.svg +++ /dev/null @@ -1,2373 +0,0 @@ - - - - - -Created by FontForge 20151118 at Mon Feb 8 11:58:02 2016 - By shyndman -Copyright 2015 Google, Inc. All Rights Reserved. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/assets/fonts/MaterialIcons/MaterialIcons-Regular.ttf b/assets/fonts/MaterialIcons/MaterialIcons-Regular.ttf deleted file mode 100755 index 7015564..0000000 Binary files a/assets/fonts/MaterialIcons/MaterialIcons-Regular.ttf and /dev/null differ diff --git a/assets/fonts/MaterialIcons/MaterialIcons-Regular.woff b/assets/fonts/MaterialIcons/MaterialIcons-Regular.woff deleted file mode 100755 index b648a3e..0000000 Binary files a/assets/fonts/MaterialIcons/MaterialIcons-Regular.woff and /dev/null differ diff --git a/assets/fonts/MaterialIcons/MaterialIcons-Regular.woff2 b/assets/fonts/MaterialIcons/MaterialIcons-Regular.woff2 deleted file mode 100755 index 9fa2112..0000000 Binary files a/assets/fonts/MaterialIcons/MaterialIcons-Regular.woff2 and /dev/null differ diff --git a/assets/fonts/MaterialIcons/codepoints b/assets/fonts/MaterialIcons/codepoints deleted file mode 100755 index 3c8b075..0000000 --- a/assets/fonts/MaterialIcons/codepoints +++ /dev/null @@ -1,932 +0,0 @@ -3d_rotation e84d -ac_unit eb3b -access_alarm e190 -access_alarms e191 -access_time e192 -accessibility e84e -accessible e914 -account_balance e84f -account_balance_wallet e850 -account_box e851 -account_circle e853 -adb e60e -add e145 -add_a_photo e439 -add_alarm e193 -add_alert e003 -add_box e146 -add_circle e147 -add_circle_outline e148 -add_location e567 -add_shopping_cart e854 -add_to_photos e39d -add_to_queue e05c -adjust e39e -airline_seat_flat e630 -airline_seat_flat_angled e631 -airline_seat_individual_suite e632 -airline_seat_legroom_extra e633 -airline_seat_legroom_normal e634 -airline_seat_legroom_reduced e635 -airline_seat_recline_extra e636 -airline_seat_recline_normal e637 -airplanemode_active e195 -airplanemode_inactive e194 -airplay e055 -airport_shuttle eb3c -alarm e855 -alarm_add e856 -alarm_off e857 -alarm_on e858 -album e019 -all_inclusive eb3d -all_out e90b -android e859 -announcement e85a -apps e5c3 -archive e149 -arrow_back e5c4 -arrow_downward e5db -arrow_drop_down e5c5 -arrow_drop_down_circle e5c6 -arrow_drop_up e5c7 -arrow_forward e5c8 -arrow_upward e5d8 -art_track e060 -aspect_ratio e85b -assessment e85c -assignment e85d -assignment_ind e85e -assignment_late e85f -assignment_return e860 -assignment_returned e861 -assignment_turned_in e862 -assistant e39f -assistant_photo e3a0 -attach_file e226 -attach_money e227 -attachment e2bc -audiotrack e3a1 -autorenew e863 -av_timer e01b -backspace e14a -backup e864 -battery_alert e19c -battery_charging_full e1a3 -battery_full e1a4 -battery_std e1a5 -battery_unknown e1a6 -beach_access eb3e -beenhere e52d -block e14b -bluetooth e1a7 -bluetooth_audio e60f -bluetooth_connected e1a8 -bluetooth_disabled e1a9 -bluetooth_searching e1aa -blur_circular e3a2 -blur_linear e3a3 -blur_off e3a4 -blur_on e3a5 -book e865 -bookmark e866 -bookmark_border e867 -border_all e228 -border_bottom e229 -border_clear e22a -border_color e22b -border_horizontal e22c -border_inner e22d -border_left e22e -border_outer e22f -border_right e230 -border_style e231 -border_top e232 -border_vertical e233 -branding_watermark e06b -brightness_1 e3a6 -brightness_2 e3a7 -brightness_3 e3a8 -brightness_4 e3a9 -brightness_5 e3aa -brightness_6 e3ab -brightness_7 e3ac -brightness_auto e1ab -brightness_high e1ac -brightness_low e1ad -brightness_medium e1ae -broken_image e3ad -brush e3ae -bubble_chart e6dd -bug_report e868 -build e869 -burst_mode e43c -business e0af -business_center eb3f -cached e86a -cake e7e9 -call e0b0 -call_end e0b1 -call_made e0b2 -call_merge e0b3 -call_missed e0b4 -call_missed_outgoing e0e4 -call_received e0b5 -call_split e0b6 -call_to_action e06c -camera e3af -camera_alt e3b0 -camera_enhance e8fc -camera_front e3b1 -camera_rear e3b2 -camera_roll e3b3 -cancel e5c9 -card_giftcard e8f6 -card_membership e8f7 -card_travel e8f8 -casino eb40 -cast e307 -cast_connected e308 -center_focus_strong e3b4 -center_focus_weak e3b5 -change_history e86b -chat e0b7 -chat_bubble e0ca -chat_bubble_outline e0cb -check e5ca -check_box e834 -check_box_outline_blank e835 -check_circle e86c -chevron_left e5cb -chevron_right e5cc -child_care eb41 -child_friendly eb42 -chrome_reader_mode e86d -class e86e -clear e14c -clear_all e0b8 -close e5cd -closed_caption e01c -cloud e2bd -cloud_circle e2be -cloud_done e2bf -cloud_download e2c0 -cloud_off e2c1 -cloud_queue e2c2 -cloud_upload e2c3 -code e86f -collections e3b6 -collections_bookmark e431 -color_lens e3b7 -colorize e3b8 -comment e0b9 -compare e3b9 -compare_arrows e915 -computer e30a -confirmation_number e638 -contact_mail e0d0 -contact_phone e0cf -contacts e0ba -content_copy e14d -content_cut e14e -content_paste e14f -control_point e3ba -control_point_duplicate e3bb -copyright e90c -create e150 -create_new_folder e2cc -credit_card e870 -crop e3be -crop_16_9 e3bc -crop_3_2 e3bd -crop_5_4 e3bf -crop_7_5 e3c0 -crop_din e3c1 -crop_free e3c2 -crop_landscape e3c3 -crop_original e3c4 -crop_portrait e3c5 -crop_rotate e437 -crop_square e3c6 -dashboard e871 -data_usage e1af -date_range e916 -dehaze e3c7 -delete e872 -delete_forever e92b -delete_sweep e16c -description e873 -desktop_mac e30b -desktop_windows e30c -details e3c8 -developer_board e30d -developer_mode e1b0 -device_hub e335 -devices e1b1 -devices_other e337 -dialer_sip e0bb -dialpad e0bc -directions e52e -directions_bike e52f -directions_boat e532 -directions_bus e530 -directions_car e531 -directions_railway e534 -directions_run e566 -directions_subway e533 -directions_transit e535 -directions_walk e536 -disc_full e610 -dns e875 -do_not_disturb e612 -do_not_disturb_alt e611 -do_not_disturb_off e643 -do_not_disturb_on e644 -dock e30e -domain e7ee -done e876 -done_all e877 -donut_large e917 -donut_small e918 -drafts e151 -drag_handle e25d -drive_eta e613 -dvr e1b2 -edit e3c9 -edit_location e568 -eject e8fb -email e0be -enhanced_encryption e63f -equalizer e01d -error e000 -error_outline e001 -euro_symbol e926 -ev_station e56d -event e878 -event_available e614 -event_busy e615 -event_note e616 -event_seat e903 -exit_to_app e879 -expand_less e5ce -expand_more e5cf -explicit e01e -explore e87a -exposure e3ca -exposure_neg_1 e3cb -exposure_neg_2 e3cc -exposure_plus_1 e3cd -exposure_plus_2 e3ce -exposure_zero e3cf -extension e87b -face e87c -fast_forward e01f -fast_rewind e020 -favorite e87d -favorite_border e87e -featured_play_list e06d -featured_video e06e -feedback e87f -fiber_dvr e05d -fiber_manual_record e061 -fiber_new e05e -fiber_pin e06a -fiber_smart_record e062 -file_download e2c4 -file_upload e2c6 -filter e3d3 -filter_1 e3d0 -filter_2 e3d1 -filter_3 e3d2 -filter_4 e3d4 -filter_5 e3d5 -filter_6 e3d6 -filter_7 e3d7 -filter_8 e3d8 -filter_9 e3d9 -filter_9_plus e3da -filter_b_and_w e3db -filter_center_focus e3dc -filter_drama e3dd -filter_frames e3de -filter_hdr e3df -filter_list e152 -filter_none e3e0 -filter_tilt_shift e3e2 -filter_vintage e3e3 -find_in_page e880 -find_replace e881 -fingerprint e90d -first_page e5dc -fitness_center eb43 -flag e153 -flare e3e4 -flash_auto e3e5 -flash_off e3e6 -flash_on e3e7 -flight e539 -flight_land e904 -flight_takeoff e905 -flip e3e8 -flip_to_back e882 -flip_to_front e883 -folder e2c7 -folder_open e2c8 -folder_shared e2c9 -folder_special e617 -font_download e167 -format_align_center e234 -format_align_justify e235 -format_align_left e236 -format_align_right e237 -format_bold e238 -format_clear e239 -format_color_fill e23a -format_color_reset e23b -format_color_text e23c -format_indent_decrease e23d -format_indent_increase e23e -format_italic e23f -format_line_spacing e240 -format_list_bulleted e241 -format_list_numbered e242 -format_paint e243 -format_quote e244 -format_shapes e25e -format_size e245 -format_strikethrough e246 -format_textdirection_l_to_r e247 -format_textdirection_r_to_l e248 -format_underlined e249 -forum e0bf -forward e154 -forward_10 e056 -forward_30 e057 -forward_5 e058 -free_breakfast eb44 -fullscreen e5d0 -fullscreen_exit e5d1 -functions e24a -g_translate e927 -gamepad e30f -games e021 -gavel e90e -gesture e155 -get_app e884 -gif e908 -golf_course eb45 -gps_fixed e1b3 -gps_not_fixed e1b4 -gps_off e1b5 -grade e885 -gradient e3e9 -grain e3ea -graphic_eq e1b8 -grid_off e3eb -grid_on e3ec -group e7ef -group_add e7f0 -group_work e886 -hd e052 -hdr_off e3ed -hdr_on e3ee -hdr_strong e3f1 -hdr_weak e3f2 -headset e310 -headset_mic e311 -healing e3f3 -hearing e023 -help e887 -help_outline e8fd -high_quality e024 -highlight e25f -highlight_off e888 -history e889 -home e88a -hot_tub eb46 -hotel e53a -hourglass_empty e88b -hourglass_full e88c -http e902 -https e88d -image e3f4 -image_aspect_ratio e3f5 -import_contacts e0e0 -import_export e0c3 -important_devices e912 -inbox e156 -indeterminate_check_box e909 -info e88e -info_outline e88f -input e890 -insert_chart e24b -insert_comment e24c -insert_drive_file e24d -insert_emoticon e24e -insert_invitation e24f -insert_link e250 -insert_photo e251 -invert_colors e891 -invert_colors_off e0c4 -iso e3f6 -keyboard e312 -keyboard_arrow_down e313 -keyboard_arrow_left e314 -keyboard_arrow_right e315 -keyboard_arrow_up e316 -keyboard_backspace e317 -keyboard_capslock e318 -keyboard_hide e31a -keyboard_return e31b -keyboard_tab e31c -keyboard_voice e31d -kitchen eb47 -label e892 -label_outline e893 -landscape e3f7 -language e894 -laptop e31e -laptop_chromebook e31f -laptop_mac e320 -laptop_windows e321 -last_page e5dd -launch e895 -layers e53b -layers_clear e53c -leak_add e3f8 -leak_remove e3f9 -lens e3fa -library_add e02e -library_books e02f -library_music e030 -lightbulb_outline e90f -line_style e919 -line_weight e91a -linear_scale e260 -link e157 -linked_camera e438 -list e896 -live_help e0c6 -live_tv e639 -local_activity e53f -local_airport e53d -local_atm e53e -local_bar e540 -local_cafe e541 -local_car_wash e542 -local_convenience_store e543 -local_dining e556 -local_drink e544 -local_florist e545 -local_gas_station e546 -local_grocery_store e547 -local_hospital e548 -local_hotel e549 -local_laundry_service e54a -local_library e54b -local_mall e54c -local_movies e54d -local_offer e54e -local_parking e54f -local_pharmacy e550 -local_phone e551 -local_pizza e552 -local_play e553 -local_post_office e554 -local_printshop e555 -local_see e557 -local_shipping e558 -local_taxi e559 -location_city e7f1 -location_disabled e1b6 -location_off e0c7 -location_on e0c8 -location_searching e1b7 -lock e897 -lock_open e898 -lock_outline e899 -looks e3fc -looks_3 e3fb -looks_4 e3fd -looks_5 e3fe -looks_6 e3ff -looks_one e400 -looks_two e401 -loop e028 -loupe e402 -low_priority e16d -loyalty e89a -mail e158 -mail_outline e0e1 -map e55b -markunread e159 -markunread_mailbox e89b -memory e322 -menu e5d2 -merge_type e252 -message e0c9 -mic e029 -mic_none e02a -mic_off e02b -mms e618 -mode_comment e253 -mode_edit e254 -monetization_on e263 -money_off e25c -monochrome_photos e403 -mood e7f2 -mood_bad e7f3 -more e619 -more_horiz e5d3 -more_vert e5d4 -motorcycle e91b -mouse e323 -move_to_inbox e168 -movie e02c -movie_creation e404 -movie_filter e43a -multiline_chart e6df -music_note e405 -music_video e063 -my_location e55c -nature e406 -nature_people e407 -navigate_before e408 -navigate_next e409 -navigation e55d -near_me e569 -network_cell e1b9 -network_check e640 -network_locked e61a -network_wifi e1ba -new_releases e031 -next_week e16a -nfc e1bb -no_encryption e641 -no_sim e0cc -not_interested e033 -note e06f -note_add e89c -notifications e7f4 -notifications_active e7f7 -notifications_none e7f5 -notifications_off e7f6 -notifications_paused e7f8 -offline_pin e90a -ondemand_video e63a -opacity e91c -open_in_browser e89d -open_in_new e89e -open_with e89f -pages e7f9 -pageview e8a0 -palette e40a -pan_tool e925 -panorama e40b -panorama_fish_eye e40c -panorama_horizontal e40d -panorama_vertical e40e -panorama_wide_angle e40f -party_mode e7fa -pause e034 -pause_circle_filled e035 -pause_circle_outline e036 -payment e8a1 -people e7fb -people_outline e7fc -perm_camera_mic e8a2 -perm_contact_calendar e8a3 -perm_data_setting e8a4 -perm_device_information e8a5 -perm_identity e8a6 -perm_media e8a7 -perm_phone_msg e8a8 -perm_scan_wifi e8a9 -person e7fd -person_add e7fe -person_outline e7ff -person_pin e55a -person_pin_circle e56a -personal_video e63b -pets e91d -phone e0cd -phone_android e324 -phone_bluetooth_speaker e61b -phone_forwarded e61c -phone_in_talk e61d -phone_iphone e325 -phone_locked e61e -phone_missed e61f -phone_paused e620 -phonelink e326 -phonelink_erase e0db -phonelink_lock e0dc -phonelink_off e327 -phonelink_ring e0dd -phonelink_setup e0de -photo e410 -photo_album e411 -photo_camera e412 -photo_filter e43b -photo_library e413 -photo_size_select_actual e432 -photo_size_select_large e433 -photo_size_select_small e434 -picture_as_pdf e415 -picture_in_picture e8aa -picture_in_picture_alt e911 -pie_chart e6c4 -pie_chart_outlined e6c5 -pin_drop e55e -place e55f -play_arrow e037 -play_circle_filled e038 -play_circle_outline e039 -play_for_work e906 -playlist_add e03b -playlist_add_check e065 -playlist_play e05f -plus_one e800 -poll e801 -polymer e8ab -pool eb48 -portable_wifi_off e0ce -portrait e416 -power e63c -power_input e336 -power_settings_new e8ac -pregnant_woman e91e -present_to_all e0df -print e8ad -priority_high e645 -public e80b -publish e255 -query_builder e8ae -question_answer e8af -queue e03c -queue_music e03d -queue_play_next e066 -radio e03e -radio_button_checked e837 -radio_button_unchecked e836 -rate_review e560 -receipt e8b0 -recent_actors e03f -record_voice_over e91f -redeem e8b1 -redo e15a -refresh e5d5 -remove e15b -remove_circle e15c -remove_circle_outline e15d -remove_from_queue e067 -remove_red_eye e417 -remove_shopping_cart e928 -reorder e8fe -repeat e040 -repeat_one e041 -replay e042 -replay_10 e059 -replay_30 e05a -replay_5 e05b -reply e15e -reply_all e15f -report e160 -report_problem e8b2 -restaurant e56c -restaurant_menu e561 -restore e8b3 -restore_page e929 -ring_volume e0d1 -room e8b4 -room_service eb49 -rotate_90_degrees_ccw e418 -rotate_left e419 -rotate_right e41a -rounded_corner e920 -router e328 -rowing e921 -rss_feed e0e5 -rv_hookup e642 -satellite e562 -save e161 -scanner e329 -schedule e8b5 -school e80c -screen_lock_landscape e1be -screen_lock_portrait e1bf -screen_lock_rotation e1c0 -screen_rotation e1c1 -screen_share e0e2 -sd_card e623 -sd_storage e1c2 -search e8b6 -security e32a -select_all e162 -send e163 -sentiment_dissatisfied e811 -sentiment_neutral e812 -sentiment_satisfied e813 -sentiment_very_dissatisfied e814 -sentiment_very_satisfied e815 -settings e8b8 -settings_applications e8b9 -settings_backup_restore e8ba -settings_bluetooth e8bb -settings_brightness e8bd -settings_cell e8bc -settings_ethernet e8be -settings_input_antenna e8bf -settings_input_component e8c0 -settings_input_composite e8c1 -settings_input_hdmi e8c2 -settings_input_svideo e8c3 -settings_overscan e8c4 -settings_phone e8c5 -settings_power e8c6 -settings_remote e8c7 -settings_system_daydream e1c3 -settings_voice e8c8 -share e80d -shop e8c9 -shop_two e8ca -shopping_basket e8cb -shopping_cart e8cc -short_text e261 -show_chart e6e1 -shuffle e043 -signal_cellular_4_bar e1c8 -signal_cellular_connected_no_internet_4_bar e1cd -signal_cellular_no_sim e1ce -signal_cellular_null e1cf -signal_cellular_off e1d0 -signal_wifi_4_bar e1d8 -signal_wifi_4_bar_lock e1d9 -signal_wifi_off e1da -sim_card e32b -sim_card_alert e624 -skip_next e044 -skip_previous e045 -slideshow e41b -slow_motion_video e068 -smartphone e32c -smoke_free eb4a -smoking_rooms eb4b -sms e625 -sms_failed e626 -snooze e046 -sort e164 -sort_by_alpha e053 -spa eb4c -space_bar e256 -speaker e32d -speaker_group e32e -speaker_notes e8cd -speaker_notes_off e92a -speaker_phone e0d2 -spellcheck e8ce -star e838 -star_border e83a -star_half e839 -stars e8d0 -stay_current_landscape e0d3 -stay_current_portrait e0d4 -stay_primary_landscape e0d5 -stay_primary_portrait e0d6 -stop e047 -stop_screen_share e0e3 -storage e1db -store e8d1 -store_mall_directory e563 -straighten e41c -streetview e56e -strikethrough_s e257 -style e41d -subdirectory_arrow_left e5d9 -subdirectory_arrow_right e5da -subject e8d2 -subscriptions e064 -subtitles e048 -subway e56f -supervisor_account e8d3 -surround_sound e049 -swap_calls e0d7 -swap_horiz e8d4 -swap_vert e8d5 -swap_vertical_circle e8d6 -switch_camera e41e -switch_video e41f -sync e627 -sync_disabled e628 -sync_problem e629 -system_update e62a -system_update_alt e8d7 -tab e8d8 -tab_unselected e8d9 -tablet e32f -tablet_android e330 -tablet_mac e331 -tag_faces e420 -tap_and_play e62b -terrain e564 -text_fields e262 -text_format e165 -textsms e0d8 -texture e421 -theaters e8da -thumb_down e8db -thumb_up e8dc -thumbs_up_down e8dd -time_to_leave e62c -timelapse e422 -timeline e922 -timer e425 -timer_10 e423 -timer_3 e424 -timer_off e426 -title e264 -toc e8de -today e8df -toll e8e0 -tonality e427 -touch_app e913 -toys e332 -track_changes e8e1 -traffic e565 -train e570 -tram e571 -transfer_within_a_station e572 -transform e428 -translate e8e2 -trending_down e8e3 -trending_flat e8e4 -trending_up e8e5 -tune e429 -turned_in e8e6 -turned_in_not e8e7 -tv e333 -unarchive e169 -undo e166 -unfold_less e5d6 -unfold_more e5d7 -update e923 -usb e1e0 -verified_user e8e8 -vertical_align_bottom e258 -vertical_align_center e259 -vertical_align_top e25a -vibration e62d -video_call e070 -video_label e071 -video_library e04a -videocam e04b -videocam_off e04c -videogame_asset e338 -view_agenda e8e9 -view_array e8ea -view_carousel e8eb -view_column e8ec -view_comfy e42a -view_compact e42b -view_day e8ed -view_headline e8ee -view_list e8ef -view_module e8f0 -view_quilt e8f1 -view_stream e8f2 -view_week e8f3 -vignette e435 -visibility e8f4 -visibility_off e8f5 -voice_chat e62e -voicemail e0d9 -volume_down e04d -volume_mute e04e -volume_off e04f -volume_up e050 -vpn_key e0da -vpn_lock e62f -wallpaper e1bc -warning e002 -watch e334 -watch_later e924 -wb_auto e42c -wb_cloudy e42d -wb_incandescent e42e -wb_iridescent e436 -wb_sunny e430 -wc e63d -web e051 -web_asset e069 -weekend e16b -whatshot e80e -widgets e1bd -wifi e63e -wifi_lock e1e1 -wifi_tethering e1e2 -work e8f9 -wrap_text e25b -youtube_searched_for e8fa -zoom_in e8ff -zoom_out e900 -zoom_out_map e56b diff --git a/assets/img/cab-sw-normal-1x1.jpg b/assets/img/cab-sw-normal-1x1.jpg deleted file mode 100755 index f4ec102..0000000 Binary files a/assets/img/cab-sw-normal-1x1.jpg and /dev/null differ diff --git a/assets/img/cab-sw-normal.jpg b/assets/img/cab-sw-normal.jpg deleted file mode 100755 index 9ff30e6..0000000 Binary files a/assets/img/cab-sw-normal.jpg and /dev/null differ diff --git a/assets/img/favicon.ico b/assets/img/favicon.ico deleted file mode 100755 index f92cf79..0000000 Binary files a/assets/img/favicon.ico and /dev/null differ diff --git a/assets/img/numbers/SVG_five.svg b/assets/img/numbers/SVG_five.svg deleted file mode 100755 index b7f5c6a..0000000 --- a/assets/img/numbers/SVG_five.svg +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - - - - - - - - - - - - - - diff --git a/assets/img/numbers/SVG_four.svg b/assets/img/numbers/SVG_four.svg deleted file mode 100755 index d175523..0000000 --- a/assets/img/numbers/SVG_four.svg +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - - - - - - - - - - diff --git a/assets/img/numbers/SVG_nine.svg b/assets/img/numbers/SVG_nine.svg deleted file mode 100755 index 2287572..0000000 --- a/assets/img/numbers/SVG_nine.svg +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - - - - - - - - - - diff --git a/assets/img/numbers/SVG_one.svg b/assets/img/numbers/SVG_one.svg deleted file mode 100755 index fc3c74b..0000000 --- a/assets/img/numbers/SVG_one.svg +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - - - - - - - - - - diff --git a/assets/img/numbers/SVG_right.svg b/assets/img/numbers/SVG_right.svg deleted file mode 100755 index 07d8335..0000000 --- a/assets/img/numbers/SVG_right.svg +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - - - - - - - - - - - - - diff --git a/assets/img/numbers/SVG_seven.svg b/assets/img/numbers/SVG_seven.svg deleted file mode 100755 index c292875..0000000 --- a/assets/img/numbers/SVG_seven.svg +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - - diff --git a/assets/img/numbers/SVG_six.svg b/assets/img/numbers/SVG_six.svg deleted file mode 100755 index 2a90652..0000000 --- a/assets/img/numbers/SVG_six.svg +++ /dev/null @@ -1,22 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - diff --git a/assets/img/numbers/SVG_three.svg b/assets/img/numbers/SVG_three.svg deleted file mode 100755 index ec250ca..0000000 --- a/assets/img/numbers/SVG_three.svg +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - - - - - - diff --git a/assets/img/numbers/SVG_two.svg b/assets/img/numbers/SVG_two.svg deleted file mode 100755 index ebdb3e1..0000000 --- a/assets/img/numbers/SVG_two.svg +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - - - - - - - - - diff --git a/assets/img/numbers/SVG_zero.svg b/assets/img/numbers/SVG_zero.svg deleted file mode 100755 index e58c7fd..0000000 --- a/assets/img/numbers/SVG_zero.svg +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - - - - - - - - - - diff --git a/assets/js/main.js b/assets/js/main.js deleted file mode 100755 index 5f0c05e..0000000 --- a/assets/js/main.js +++ /dev/null @@ -1,13 +0,0 @@ -import { finishedWorks, showAdditionalWorks } from './modules/finished-works.js'; -import { stateOfWorkIndicator } from './modules/state-of-works-indicator.js'; -import { slideshow } from './modules/slideshow.js'; - -/* Main -############################################################################ */ - -document.addEventListener('DOMContentLoaded', function() { - hljs.highlightAll(); - finishedWorks(); - stateOfWorkIndicator(); - slideshow(); -}); \ No newline at end of file diff --git a/assets/js/modules/finished-works.js b/assets/js/modules/finished-works.js deleted file mode 100644 index c13d2fa..0000000 --- a/assets/js/modules/finished-works.js +++ /dev/null @@ -1,100 +0,0 @@ -const worksDataUrl = "works.json"; -const displayMax = 5; - -const formatDateForSafari = (dateString, locale = 'de-DE') => { - - const dateRegex = /^(....)-(.*?)-(.*?) /; - const match = dateString.match(dateRegex); - - if (!match) { - return "Ungültiges Datumsformat"; - } - - const [_, year, month, day] = match; - - // Mapping von englischen Monatsnamen zu deutschen - const monthMapping = { - "01": "Januar", - "02": "Februar", - "03": "März", - "04": "April", - "05": "Mai", - "06": "Juni", - "07": "Juli", - "08": "August", - "09": "September", - "10": "Oktober", - "11": "November", - "12": "Dezember" - }; - - // Umwandlung in das Format "11 Dezember 2024" - const germanMonth = monthMapping[month] || month; - return `${germanMonth} ${year}`; -}; - - - -const finishedWorks = () => { - - const targetContainer = document.querySelector("[data-js-finished-works]"); - if(!targetContainer) return; - - fetch(worksDataUrl) - .then(response => response.json()) - .then(data => { - const sortedData = data.sort((a, b) => { - return a.order - b.order; - }); - const items = sortedData.reverse().map((work, index) => { - - const formattedDateInGerman = formatDateForSafari(work.date, 'de-DE'); - const imageHtml = !work.image.match(/[a-z]/) - ? '' - : `${work.title}`; - - const visibilityClass = index < displayMax ? 'is-visible' : 'is-hidden'; - return ` -
  • - -
    - ${imageHtml} -
    -

    ${work.title}

    -

    ${work.author}, ${work.type}, ${formattedDateInGerman}

    -
    -
    -
    -
  • - `; - }); - targetContainer.innerHTML = items.join(""); - showAdditionalWorks(); - }); - - -}; - -const showAdditionalWorks = () => { - const areThereMoreWorks = document.querySelectorAll(".work-item").length > displayMax; - if(!areThereMoreWorks) return; - - const targetContainer = document.querySelector("[data-js-finished-works]"); - if(!targetContainer) return; - - targetContainer.insertAdjacentHTML("afterend", ``); - - const showMoreButton = document.querySelector("[data-js-show-more-works]"); - if(!showMoreButton) return; - - showMoreButton.addEventListener("click", () => { - const hiddenItems = document.querySelectorAll(".work-item.is-hidden"); - hiddenItems.forEach(item => { - item.classList.remove("is-hidden"); - item.classList.add("is-visible"); - }); - showMoreButton.style.display = "none"; - }); -}; - -export { finishedWorks, showAdditionalWorks }; \ No newline at end of file diff --git a/assets/js/modules/slideshow.js b/assets/js/modules/slideshow.js deleted file mode 100644 index d3d37f4..0000000 --- a/assets/js/modules/slideshow.js +++ /dev/null @@ -1,69 +0,0 @@ -const supportsPopover = () => { - return HTMLElement.prototype.hasOwnProperty("popover"); -} - -const slideshow = () => { - - const targetContainer = document.querySelector("[data-js-slideshow-json]"); - if(!targetContainer) return; - - const dataUrl = targetContainer.getAttribute("data-js-slideshow-json"); - const folderUrl = targetContainer.getAttribute("data-js-slideshow-folder"); - - - fetch(dataUrl) - .then(response => response.json()) - .then(data => { - const previewImages = data.map((item, index) => { - return `
  • `; - }).join(""); - - targetContainer.innerHTML = previewImages; - - const slideshowImages = data.map((item, index) => { - - const currentId = `large-image-${index}`; - const next = index === data.length - 1 ? 0 : index + 1; - const prev = index === 0 ? data.length - 1 : index - 1; - - const nextButton = ``; - const prevButton = ``; - - return ` -
    - - ${nextButton} - ${prevButton} - - ${item.metadata.Description} -
    - `; - }).join(""); - - targetContainer.insertAdjacentHTML("afterend", slideshowImages); - - const buttons = document.querySelectorAll("[data-js-close-current-popover]"); - buttons.forEach(button => { - button.addEventListener("click", () => { - const currentId = button.getAttribute("data-js-close-current-popover"); - const currentPopover = document.getElementById(currentId); - - const popoverSupported = supportsPopover(); - - if (popoverSupported) { - currentPopover.hidePopover(); - } else { - currentPopover.style.display = "none"; - } - - }); - }); - }); - - -}; - - -export { slideshow }; diff --git a/assets/js/modules/state-of-works-indicator.js b/assets/js/modules/state-of-works-indicator.js deleted file mode 100644 index a238db6..0000000 --- a/assets/js/modules/state-of-works-indicator.js +++ /dev/null @@ -1,102 +0,0 @@ -const worksDataUrl = "state-of-works.json"; - -const factorsByType = { - "Praxisprojekt": 1, - "Bachelorarbeit": 1, - "Masterarbeit": 1 -}; - -const maxWorksByType = { - "Praxisprojekt": 10, - "Bachelorarbeit": 6, - "Masterarbeit": 2 -}; - -const shotcuts = { - "Praxisprojekt": "pp", - "Bachelorarbeit": "ba", - "Masterarbeit": "ma" -} - -const calculateWorks = (clusterWorks) => { - const types = Object.keys(clusterWorks); - const sumUpTypes = {}; - const calcOverall = {}; - - types.map(type => { - - sumUpTypes[type] = {}; - sumUpTypes[type]["in-preparation"] = isNaN(clusterWorks[type]["in-preparation"]) ? 0 : clusterWorks[type]["in-preparation"] * factorsByType[type]; - sumUpTypes[type]["in-progress"] = isNaN(clusterWorks[type]["in-progress"]) ? 0 : clusterWorks[type]["in-progress"] * factorsByType[type]; - sumUpTypes[type]["in-evaluation"] = isNaN(clusterWorks[type]["in-evaluation"]) ? 0 : clusterWorks[type]["in-evaluation"] * factorsByType[type]; - - calcOverall[type] = Math.round(sumUpTypes[type]["in-preparation"] + sumUpTypes[type]["in-progress"] + sumUpTypes[type]["in-evaluation"]); - - const states = Object.keys(sumUpTypes[type]); - states.map(state => { - const shotcut = shotcuts[type]; - const selector = `data-js-${state}-${shotcut}`; - const target = document.querySelector(`[${selector}]`); - - if(!target) return; - target.innerHTML = clusterWorks[type][state] !== undefined ? clusterWorks[type][state] : "-"; - }); - - - }); - - return calcOverall; -}; - -const showCapacity = (calcOverall) => { - - const types = Object.keys(calcOverall); - - types.map(type => { - - - const maxWorks = maxWorksByType[type]; - - const works = calcOverall[type]; - const shotcut = shotcuts[type]; - const targets = document.querySelectorAll(`[data-js-capacity-${shotcut}]`); - - targets.forEach(target => { - if(!target) return; - target.innerHTML = `${maxWorks - works}`; - }); - }); -} - -const stateOfWorkIndicator = () => { - - const clusterWorks = {}; - - fetch(worksDataUrl) - .then(response => response.json()) - .then(works => { - - const filteredWorks = works.filter(work => work.status !== ""); - - filteredWorks.map(work => { - const { type } = work; - const { status } = work; - - if (!clusterWorks[type]) { - clusterWorks[type] = {}; - } - if (!clusterWorks[type][status]) { - clusterWorks[type][status] = 0; - } - clusterWorks[type][status]++; - - }); - - const calcOverall = calculateWorks(clusterWorks); - showCapacity(calcOverall); - }); - -}; - - -export { stateOfWorkIndicator }; \ No newline at end of file diff --git a/assets/styles/_combined-styles.css b/assets/styles/_combined-styles.css deleted file mode 100644 index 54b0562..0000000 --- a/assets/styles/_combined-styles.css +++ /dev/null @@ -1,38 +0,0 @@ -@import url("reset.css"); -@import url("fonts.css"); -@import url("icons.css"); -@import url("icofont.css"); -@import url("variables.css"); -@import url("base.css"); -@import url("composition.css"); - -/* Compontents -############################################################################ */ -@import url("components/artefact-list.css"); -@import url("components/avatar.css"); -@import url("components/footer.css"); -@import url("components/header.css"); -@import url("components/herotext.css"); -@import url("components/buttons.css"); -@import url("components/keywords.css"); -@import url("components/metadata.css"); -@import url("components/taglist.css"); -@import url("components/toc.css"); -@import url("components/topic-overview.css"); -@import url("components/work-overview.css"); -@import url("components/details.css"); -@import url("components/slideshow.css"); -@import url("components/video.css"); -@import url("components/form.css"); -@import url("components/state-of-work.css"); - -/* Layouts -############################################################################ */ -@import url("layouts/simple.css"); -@import url("layouts/work.css"); -@import url("layouts/work-results.css"); - - -/* Utilities -############################################################################ */ -@import url("utilities.css"); \ No newline at end of file diff --git a/assets/styles/base.css b/assets/styles/base.css deleted file mode 100755 index a41680b..0000000 --- a/assets/styles/base.css +++ /dev/null @@ -1,213 +0,0 @@ -/* stylelint-disable CssSyntaxError */ -/* stylelint-disable no-descending-specificity */ -* { - box-sizing: border-box; -} - -html, body { - color: var(--text-color); - font-family: var(--font-family-sans); - font-size: var(--base-font-size); - font-weight: var(--fw-light); - hyphens: auto; - line-height: var(--lh-default); - scroll-behavior: smooth; -} - -body { - display: flex; - min-height: 100vh; - flex-direction: column; - align-items: stretch; - background-color: var(--background-color); -} - -blockquote { - padding: var(--size-m); - border-left: solid var(--border-width) var(--color-yellow); - background-color: var(--color-darken-light); -} - -h1, h2, h3, h4 { - color: var(--headline-color); - font-weight: var(--fw-medium); - hyphens: none; - line-height: var(--lh-tight); -} - -h1, h2, h3, h4, p, blockquote { - margin-bottom: var(--size-m); -} - -h1 { - font-size: var(--size-l); - font-weight: var(--fw-bold); - - @media only screen and (width >= 40rem) { - font-size: var(--size-xl); - font-weight: var(--fw-normal); - } -} - -h2 { - color: var(--color-darker); - font-size: calc(var(--size-m) * 1.2); - - @media only screen and (width >= 40rem) { - font-size: var(--size-l); - } -} - -h3 { - font-size: calc(var(--size-m) * 1.2); -} - -h2 + h3 { - margin-top: var(--size-l); -} - -h3 i[class^="icofont-"] { - margin-bottom: calc(1em * -0.2) !important; -} - -h3:has(i[class^="icofont-"]) { - margin-top: var(--size-xl); -} - - -.highlighter-rouge + h3{ - margin-top: var(--size-l); -} - -h4{ - color: var(--color-darkest); -} - -ul + p, -ul + h3, -ul + h4{ - margin-top: var(--size-l); -} - -p { - margin-bottom: var(--size-xs); -} - -p + h2 { - margin-top: var(--size-l); -} - - -p + h3 { - margin-top: var(--size-l); -} - - -p + h4 { - margin-top: var(--size-m); -} - -img { - width: 100%; -} - -em { - font-weight: var(--fw-normal); -} - -ul:not([class]) { - padding: 0; -} - -ul:not([class]) li { - display: block; - margin-bottom: var(--size-xxs); - margin-left: var(--size-m); -} - -ul:not([class]) li::before { - padding-right: var(--size-s); - margin-left: calc(var(--size-m) * -1); - color: var(--icon-color); - content: "»"; - font-weight: var(--fw-bold); -} - -dl { - margin-bottom: var(--size-l); -} - -dl dt { - display: block; - margin-right: var(--size-xs); - float: left; - font-weight: var(--fw-medium); -} - -dl dt::after { - content: ":"; -} - -dl dd { - display: block; - margin-bottom: var(--size-xs); -} - -.title { - font-weight: var(--fw-bold); - - @media only screen and (width >= 40rem) { - font-weight: var(--fw-normal); - } -} - -.subtitle { - margin-top: calc(var(--size-s) * -1); - font-weight: var(--fw-medium); - line-height: var(--lh-default); - - @media only screen and (width >= 40rem) { - font-weight: var(--fw-normal); - } -} - -strong { - font-weight: var(--fw-medium); -} - -a { - color: var(--interaction-color); - text-decoration: none; -} - -a:not(.wrap) { - border-bottom: solid 2px var(--decoration-color); - font-weight: var(--fw-medium); - text-decoration: none; - transition: all 0.3s; -} - -a:not(.wrap).extern::before { - color: var(--interaction-color); - content: "open_in_new"; -} - -a:not(.wrap):hover { - background-color: var(--decoration-color); - color: var(--color-lightest) !important; -} - - -/* .layout-wrap { - display: grid; - grid-template-columns: 0 1fr; - transition: all 0.3s; - - @media only screen and (width >= 90rem) { - grid-template-columns: 200px 1fr; - } - - @media only screen and (width >= 120rem) { - grid-template-columns: 400px 1fr; - } -} */ diff --git a/assets/styles/components/artefact-list.css b/assets/styles/components/artefact-list.css deleted file mode 100644 index 18f2a8d..0000000 --- a/assets/styles/components/artefact-list.css +++ /dev/null @@ -1,53 +0,0 @@ -/* Artefact list -############################################################################ */ -.artefact-list { - display: grid; - margin-top: 1em; - margin-bottom: 1em; - gap: 1em; - grid-template-columns: repeat(auto-fill, minmax(12em, 1fr)); - - li { - overflow: hidden; - font-weight: var(--fw-medium); - text-align: center; - transition: all var(--tr-fast); - vertical-align: middle; - - /* stylelint-disable-next-line no-descending-specificity */ - a { - display: flex; - height: 100%; - flex-direction: column; - align-items: center; - justify-content: center; - padding: 2em; - border: none; - border: solid 1px var(--color-darken); - border-radius: var(--radius-s); - aspect-ratio: 3/2; - background-color: rgb(0 0 0 / 3%); - hyphens: auto; - line-height: var(--lh-tight); - text-decoration: none; - - &:hover { - background-color: var(--interaction-color); - color: var(--color-lightest); - - i { - color: var(--color-lightest); - } - } - } - - /* stylelint-disable-next-line no-descending-specificity */ - i { - display: block; - margin-top: 1ch !important; - margin-bottom: 0.5ch !important; - color: var(--color-pink); - text-align: center; - } - } -} diff --git a/assets/styles/components/avatar.css b/assets/styles/components/avatar.css deleted file mode 100644 index e9de1c5..0000000 --- a/assets/styles/components/avatar.css +++ /dev/null @@ -1,7 +0,0 @@ -/* Avatar -############################################################################ */ -.avatar { - width: 100%; - max-width: 300px; - border-radius: 50%; -} \ No newline at end of file diff --git a/assets/styles/components/buttons.css b/assets/styles/components/buttons.css deleted file mode 100644 index 8ec4356..0000000 --- a/assets/styles/components/buttons.css +++ /dev/null @@ -1,36 +0,0 @@ -/* Home Button -############################################################################ */ -.home-button { - margin-top: var(--size-xl); - margin-bottom: var(--size-l); - - & > a { - border: none; - text-decoration: none; - transition: transform var(--tr-medium); - - &:hover { - background-color: transparent; - transform: rotate(60deg); - } - } -} - -/* More Button -############################################################################ */ - -.simple-button{ - padding: var(--size-s) var(--size-m); - border-radius: var(--radius-xs); - background-color: var(--interaction-color); - color: var(--color-lightest); - font-size: var(--size-m); - transition: all var(--tr-fast); - - &:hover{ - background-color: var(--color-darkblue); - box-shadow: var(--box-shadow); - cursor: pointer; - - } -} \ No newline at end of file diff --git a/assets/styles/components/details.css b/assets/styles/components/details.css deleted file mode 100644 index a42b33a..0000000 --- a/assets/styles/components/details.css +++ /dev/null @@ -1,77 +0,0 @@ -details{ - margin-left: calc(var(--size-m) * -0.5); - transition: padding var(--tr-slow),margin var(--tr-slow),opacity var(--tr-medium); - transition: grid-template-rows 0.5s ease-out; - - summary { - display: flex; - list-style: none; - - &::-webkit-details-marker { - display: none; - } - - h3{ - color: var(--color-darkest); - font-size: calc(var(--size-l) * 0.7); - } - - &::before { - display: inline-block; - width: var(--size-l); - height: var(--size-l); - padding-right: var(--size-xxs); - color: var(--interaction-color); - content: "chevron_right"; - direction: ltr; - font-family: var(--font-icons); - font-feature-settings: "liga"; - font-size: var(--size-l); - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; - font-style: normal; - font-variation-settings: "FILL" 0,"wght" 200,"GRAD" -25,"opsz" 48; - font-weight: var(--fw-bold); - letter-spacing: normal; - line-height: 80%; - text-rendering: optimizelegibility; - text-transform: none; - transition: transform .2s ease-in-out; - white-space: nowrap; - word-wrap: normal; - } - - &:hover { - cursor: pointer; - } - } - - .details-content{ - display: grid; - margin-left: var(--size-l); - grid-template-rows: 0fr; - overflow-y: hidden; - transition: grid-template-rows 0.5s ease-out; - - div{ - overflow: hidden; - } - } - - &[open] { - padding-bottom: var(--size-l); - border-bottom: solid var(--border-width-l)var(--dark); - margin-bottom: var(--size-l); - grid-template-rows: 1fr; - opacity: 1 !important; - - .details-content{ - grid-template-rows: 1fr; - } - - summary::before{ - transform: rotate(90deg) !important; - } - } - -} diff --git a/assets/styles/components/footer.css b/assets/styles/components/footer.css deleted file mode 100644 index 43b1986..0000000 --- a/assets/styles/components/footer.css +++ /dev/null @@ -1,13 +0,0 @@ -/* Footer -############################################################################ */ -.footer { - padding-top: var(--size-m); - padding-bottom: var(--size-xl); - background-color: var(--color-darkest); - color: var(--color-lightest); - - /* stylelint-disable-next-line no-descending-specificity */ - a { - color: var(--color-lightest); - } -} \ No newline at end of file diff --git a/assets/styles/components/form.css b/assets/styles/components/form.css deleted file mode 100644 index 7669fce..0000000 --- a/assets/styles/components/form.css +++ /dev/null @@ -1,65 +0,0 @@ -/* stylelint-disable no-descending-specificity */ - - -/* Form -############################################################################ */ -.form{ - input, - textarea { - color: var(--color-lighten); - font-family: var(--ff-primary); - } - - label { - position: relative; - z-index: 10; - display: inline-block; - color: var(--color-darkest); - font-size: var(--s); - transform: translateY(calc(var(--size-m) * -1.75)); - transition: all var(--tr-fast) ease; - } - - .form-row { - position: relative; - } - - input[type="text"], - input[type="tel"], - input[type="email"], - textarea { - position: relative; - z-index: 20; - display: inline-block; - width: 100%; - padding: var(--size-s) var(--size-s) var(--size-s) 0; - border: none; - border-bottom: solid 1px var(--decoration-color); - background-color: transparent; - font-size: var(--size-m); - outline: none; - } - - input[type="text"]:focus, - input[type="fon"]:focus, - input[type="email"]:focus, - textarea:focus{ - padding: var(--size-s); - border-bottom-color: var(--darker); - background-color: var(--color-lighten); - } - - input[type="text"]:focus~label, - input[type="tel"]:focus~label, - input[type="email"]:focus~label, - textarea:focus~label, - input.filled + label { - font-size: var(--size-s); - transform: translateY(calc(var(--size-m) * -0.1)); - } - - button[type="submit"] { - margin-top: var(--size-l); - } - -} \ No newline at end of file diff --git a/assets/styles/components/header.css b/assets/styles/components/header.css deleted file mode 100644 index 01cac76..0000000 --- a/assets/styles/components/header.css +++ /dev/null @@ -1,33 +0,0 @@ -/* Header -############################################################################ */ -.header { - padding-bottom: var(--size-xl); - text-align: center; - - @media only screen and (width >= 40rem) { - text-align: left; - } - - .title { - margin-bottom: var(--size-m); - color: var(--decoration-color); - font-size: var(--size-l); - font-weight: var(--fw-medium); - } - - .subtitle, - .subtitle a { - color: var(--color-dark); - font-size: var(--size-m); - } - - @media only screen and (width >= 40rem) { - .title { - font-size: var(--size-xl); - } - - .subtitle, .subtitle a { - font-size: var(--size-l); - } - } -} \ No newline at end of file diff --git a/assets/styles/components/herotext.css b/assets/styles/components/herotext.css deleted file mode 100644 index f27e8b4..0000000 --- a/assets/styles/components/herotext.css +++ /dev/null @@ -1,22 +0,0 @@ -/* Herotext -############################################################################ */ -.herotext { - margin-bottom: var(--size-xxl ); - font-size: var(--size-m); - font-weight: var(--fw-normal); - line-height: var(--lh-default); - - @media only screen and (width >= 40rem) { - font-size: var(--size-l); - font-weight: var(--fw-normal); - } -} - -/* Mini Hero -############################################################################ */ - -.mini-hero{ - max-width: calc(var(--max-width-content) * 0.66) !important; - padding-top: var(--size-l); - padding-bottom: var(--size-xl); -} \ No newline at end of file diff --git a/assets/styles/components/keywords.css b/assets/styles/components/keywords.css deleted file mode 100644 index 1144242..0000000 --- a/assets/styles/components/keywords.css +++ /dev/null @@ -1,11 +0,0 @@ -/* Keywords -############################################################################ */ -.keywords { - li { - display: inline; - } - - li + li::before { - content: ","; - } -} \ No newline at end of file diff --git a/assets/styles/components/metadata.css b/assets/styles/components/metadata.css deleted file mode 100644 index 712f6e3..0000000 --- a/assets/styles/components/metadata.css +++ /dev/null @@ -1,8 +0,0 @@ -/* Metadata -############################################################################ */ -.metadata { - dt, dd { - padding-top: var(--size-xs); - border-top: solid var(--border-width) var(--color-green); - } -} \ No newline at end of file diff --git a/assets/styles/components/slideshow.css b/assets/styles/components/slideshow.css deleted file mode 100644 index 5ed84d0..0000000 --- a/assets/styles/components/slideshow.css +++ /dev/null @@ -1,129 +0,0 @@ -/* Slideshow -############################################################################ */ - -.slideshow { - display: grid; - gap: 1; - grid-template-columns: repeat(auto-fill, var(--size-image-thumbnail)); - - @media screen and (width <= 40rem) { - grid-template-columns: 1fr; - - } - - li{ - width: 100%; - height: 100%; - aspect-ratio: 1/1; - background-color: var(--color-darken-light); - - &:hover{ - cursor: pointer; - } - - button{ - width: 100%; - height: 100%; - aspect-ratio: 1/1; - } - - img{ - display: block; - width: 100%; - height: 100%; - mix-blend-mode: darken ; - object-fit: cover; - } - } -} - -/* Image Popover -############################################################################ */ - -.image-popover{ - width: 100vw; - height: 100vh; - background-color: transparent; - - .image-popover-content{ - display: block; - width: 90%; - height: 90%; - object-fit: contain; - } - - .next-btn, - .prev-btn, - .close-btn{ - position: absolute; - border: none; - color: var(--color-lightest); - line-height: 0; - transition: all var(--tr-fast); - - span{ - border: none; - color: var(--interaction-color); - font-size: var(--size-l); - - &:hover{ - color: var(--color-lightest); - cursor: pointer; - transform: translateX(15%); - } - } - } - - button.close-btn{ - top: var(--size-m); - right: var(--size-m); - - span{ - font-size: var(--size-xl); - - &:hover{ - transform: rotate(90deg); - } - } - } - - button.next-btn{ - top: 50%; - right: var(--size-m); - transform: translateY(-50%); - } - - button.prev-btn{ - top: 50%; - left: var(--size-m); - transform: translateY(-50%); - - span{ - &:hover{ - transform: translateX(-15%); - } - } - } - - &::backdrop { - background: rgb(0 0 0 / 95%); - } - - &:popover-open { - display: flex; - align-items: center; - justify-content: center; - opacity: 1; - transition: all var(--tr-medium); - - @starting-style { - opacity: 0; - } - - .close-btn{ - transform: rotate(90deg); - } - } - - -} \ No newline at end of file diff --git a/assets/styles/components/state-of-work.css b/assets/styles/components/state-of-work.css deleted file mode 100644 index 9324c82..0000000 --- a/assets/styles/components/state-of-work.css +++ /dev/null @@ -1,66 +0,0 @@ -/* State of Work -############################################################################ */ -.state-of-work { - margin-top: var(--size-xxl); - margin-bottom: var(--size-xxl); - - - @media screen and (width <= 768px){ - .hide-on-mobile{ - display: none; - } - } - - .capacity-item{ - display: inline-flex; - width: 2.5em; - height: 2.5em; - align-items: center; - justify-content: center; - border-radius: 50%; /* Macht es rund */ - aspect-ratio: 1/1; - background-color: var(--color-light); - text-align: center; - } - - .table-container{ - width: 100%; - overflow-x: auto; - } - - table{ - width: 100%; - max-width: var(--max-width-content); - border-collapse: collapse; - border-spacing: 0; - - thead{ - th{ - min-width: 12ch; - padding: 1rem; - } - } - - tbody{ - th{ - min-width: 12ch; - text-align: left; - } - - td{ - font-weight: var(--fw-bold); - text-align: center; - } - - tr{ - *{ - padding: 1rem; - border-top: dotted var(--border-width)var(--border-color); - } - } - } - - - } - -} \ No newline at end of file diff --git a/assets/styles/components/taglist.css b/assets/styles/components/taglist.css deleted file mode 100644 index a991b37..0000000 --- a/assets/styles/components/taglist.css +++ /dev/null @@ -1,14 +0,0 @@ -/* Taglist -############################################################################ */ -.taglist { - &--linear li { - display: inline-block; - } - - &__item { - &::before { - color: var(--decoration-color); - content: '#'; - } - } -} \ No newline at end of file diff --git a/assets/styles/components/toc.css b/assets/styles/components/toc.css deleted file mode 100644 index d059f44..0000000 --- a/assets/styles/components/toc.css +++ /dev/null @@ -1,10 +0,0 @@ -/* Toc -############################################################################ */ -.toc { - &__item { - max-width: var(--vp-medium); - padding-top: var(--size-xs); - padding-bottom: var(--size-xs); - border-top: solid 1px var(--seperator-color); - } -} \ No newline at end of file diff --git a/assets/styles/components/topic-overview.css b/assets/styles/components/topic-overview.css deleted file mode 100644 index dd642b5..0000000 --- a/assets/styles/components/topic-overview.css +++ /dev/null @@ -1,54 +0,0 @@ -/* Topic Overview -############################################################################ */ -.topic-overview { - display: grid; - margin-top: var(--size-xl); - gap: var(--size-s); - grid-template-columns: repeat(auto-fill, minmax(16em, 1fr)); - - .topic-item { - display: flex; - height: 100%; - flex-direction: column; - padding-bottom: var(--size-m); - border-bottom: solid 3px var(--color-pink); - margin-left: 0; - background-color: var(--color-lighten); - justify-items: center; - transition: transform var(--tr-fast); - - & > * { - padding-right: 2em; - color: var(--color-darkblue); - } - - &::before { - content: none; - } - - h3 { - padding-top: var(--size-m); - margin-bottom: var(--size-s); - color: var(--color-darkest); - } - - p { - line-height: var(--lh-tight); - } - - &:hover{ - z-index: 1000; - transform: rotate(2deg); - } - - &.with-light-background{ - padding: var(--size-s); - padding-bottom: var(--size-m); - background-color: var(--color-lighten-strong); - - h3{ - padding-top: var(--size-xs); - } - } - } -} \ No newline at end of file diff --git a/assets/styles/components/video.css b/assets/styles/components/video.css deleted file mode 100644 index d3e4f2a..0000000 --- a/assets/styles/components/video.css +++ /dev/null @@ -1,15 +0,0 @@ -/* Video Container for YT Videos -############################################################################ */ -.video-container{ - position: relative; - max-width: calc(var(--size-image-thumbnail) * 3) !important; - aspect-ratio: 16/9; - - iframe { - position: absolute; - top: 0; - left: 0; - width: 100%; - height: 100%; - } -} diff --git a/assets/styles/components/work-overview.css b/assets/styles/components/work-overview.css deleted file mode 100644 index bcb98e8..0000000 --- a/assets/styles/components/work-overview.css +++ /dev/null @@ -1,95 +0,0 @@ -/* Work Overview -############################################################################ */ -.work-overview { - display: grid; - margin-top: var(--size-xl); - margin-bottom: var(--size-l); - gap: var(--size-s); - grid-template-columns: repeat(auto-fill, minmax(32rem, 1fr)); - - @media screen and (width < 32rem) { - grid-template-columns: 1fr; - - } - - .work-item { - border-bottom: solid 3px var(--color-pink); - background-color: var(--color-lighten); - transition: all var(--tr-fast); - - .wrap{ - display: block; - width: 100%; - height: 100%; - } - - &.is-hidden{ - display: none; - } - - figure{ - display: flex; - gap: var(--size-s); - - @media screen and (width < 32rem) { - flex-direction: column; - } - - h3 { - padding-top: 0; - margin-bottom: var(--size-s); - hyphens: auto; - text-wrap: balance; - } - - img{ - width: 6em; - height: 5em; - object-fit: cover; - - @media screen and (width < 32rem) { - width: 100%; - height: auto; - } - } - - .meta{ - flex-grow: 2; - margin-bottom: var(--size-m); - } - - p { - line-height: var(--lh-tight); - } - - } - - - &::before { - content: none; - } - - &.with-light-background{ - padding: var(--size-s); - background-color: var(--color-lighten-strong); - } - - &:has(a):hover{ - z-index: 1000; - box-shadow: var(--box-shadow); - transform: scale(1.02); - - &.with-light-background{ - background-color: var(--color-lightest); - } - } - } - - .more-button{ - display: flex; - width: 100%; - height: 100%; - align-items: center; - justify-content: center; - } -} \ No newline at end of file diff --git a/assets/styles/composition.css b/assets/styles/composition.css deleted file mode 100644 index 89a1aa6..0000000 --- a/assets/styles/composition.css +++ /dev/null @@ -1,80 +0,0 @@ -@media only screen and (width <= 40rem) { - .header, - .page, - .footer { - padding: var(--size-m); - } -} - -@media only screen and (width > 40rem) { - .header, - .page { - flex: 0 1 auto; - margin-left: var(--size-xl); - - & > * { - padding-right: var(--size-xl); - } - - & > * > *:not(.is-full-width) { - max-width: var(--max-width-content); - } - } - - .footer { - padding-left: var(--size-xl); - } -} - - - -/* Page -############################################################################ */ -.page { - flex: 1 1 auto; -} - -/* Section -############################################################################ */ -.section { - &.has-seperator { - padding-top: var(--size-l); - border-top: dotted var(--border-width) var(--border-color); - margin-top: var(--size-xl); - } - - &.with-bg-gray, - &.with-bg-dark{ - padding-top: var(--size-xl); - padding-bottom: var(--size-xxl); - margin-top: var(--size-xl); - background-color: var(--color-light); - - @media only screen and (width <= 40rem) { - padding: var(--size-xl) var(--size-m); - margin: calc(var(--size-m) * -1); - margin-top: var(--size-xl) ; - } - - @media only screen and (width > 40rem) { - padding-left: var(--size-xl); - margin-left: calc(var(--size-xl) * -1); - } - } - - &.with-bg-dark{ - background-color: var(--color-dark); - * { color: var(--color-lightest) } - } - - - -} - -.section.with-bg-gray + .section.with-bg-dark{ - margin-top: 0; -} - -section + section{ - margin-top: var(--size-xl); -} diff --git a/assets/styles/fonts.css b/assets/styles/fonts.css deleted file mode 100755 index 82ee4d3..0000000 --- a/assets/styles/fonts.css +++ /dev/null @@ -1,40 +0,0 @@ -@font-face { - font-family: Barlow; - font-style: normal; - font-weight: 300; - src: url("../fonts/Barlow/Barlow-Light.ttf"); -} - -@font-face { - font-family: Barlow; - font-style: normal; - font-weight: 400; - src: url("../fonts/Barlow/Barlow-Regular.ttf"); -} - -@font-face { - font-family: Barlow; - font-style: normal; - font-weight: 500; - src: url("../fonts/Barlow/Barlow-Medium.ttf"); -} - -@font-face { - font-family: Barlow; - font-style: normal; - font-weight: 600; - src: url("../fonts/Barlow/Barlow-Bold.ttf"); -} - - -@font-face { - font-family: 'Material Icons'; - font-style: normal; - font-weight: 400; - src: url('../fonts/MaterialIcons/MaterialIcons-Regular.eot'); /* For IE6-8 */ - src: local('Material Icons'), - local('MaterialIcons-Regular'), - url('../fonts/MaterialIcons/MaterialIcons-Regular.woff2') format('woff2'), - url('../fonts/MaterialIcons/MaterialIcons-Regular.woff') format('woff'), - url('../fonts/MaterialIcons/MaterialIcons-Regular.ttf') format('truetype'); -} \ No newline at end of file diff --git a/assets/styles/icofont.css b/assets/styles/icofont.css deleted file mode 100644 index 121dfc2..0000000 --- a/assets/styles/icofont.css +++ /dev/null @@ -1,8620 +0,0 @@ -/*! -* @package IcoFont -* @version 1.0.1 -* @author IcoFont https://icofont.com -* @copyright Copyright (c) 2015 - 2018 IcoFont -* @license - https://icofont.com/license/ -*/ - -/* stylelint-disable */ -@font-face { - font-family: IcoFont; - font-style: "Regular"; - font-weight: normal; - src: url("../fonts/Icofont/icofont.woff2") format("woff2"), - url("../fonts/Icofont/icofont.woff") format("woff"); -} - -[class^="icofont-"], -[class*=" icofont-"] { - direction: ltr; - font-family: IcoFont !important; - - /* Better Font Rendering =========== */ - font-feature-settings: "liga"; - -webkit-font-smoothing: antialiased; - font-style: normal; - font-variant: normal; - font-weight: normal; - line-height: 1; - text-transform: none; - white-space: nowrap; - word-wrap: normal; -} - - -.icofont-angry-monster::before { - content: "\e800"; -} - -.icofont-bathtub::before { - content: "\e801"; -} - -.icofont-bird-wings::before { - content: "\e802"; -} - -.icofont-bow::before { - content: "\e803"; -} - -.icofont-castle::before { - content: "\e804"; -} - -.icofont-circuit::before { - content: "\e805"; -} - -.icofont-crown-king::before { - content: "\e806"; -} - -.icofont-crown-queen::before { - content: "\e807"; -} - -.icofont-dart::before { - content: "\e808"; -} - -.icofont-disability-race::before { - content: "\e809"; -} - -.icofont-diving-goggle::before { - content: "\e80a"; -} - -.icofont-eye-open::before { - content: "\e80b"; -} - -.icofont-flora-flower::before { - content: "\e80c"; -} - -.icofont-flora::before { - content: "\e80d"; -} - -.icofont-gift-box::before { - content: "\e80e"; -} - -.icofont-halloween-pumpkin::before { - content: "\e80f"; -} - -.icofont-hand-power::before { - content: "\e810"; -} - -.icofont-hand-thunder::before { - content: "\e811"; -} - -.icofont-king-monster::before { - content: "\e812"; -} - -.icofont-love::before { - content: "\e813"; -} - -.icofont-magician-hat::before { - content: "\e814"; -} - -.icofont-native-american::before { - content: "\e815"; -} - -.icofont-owl-look::before { - content: "\e816"; -} - -.icofont-phoenix::before { - content: "\e817"; -} - -.icofont-robot-face::before { - content: "\e818"; -} - -.icofont-sand-clock::before { - content: "\e819"; -} - -.icofont-shield-alt::before { - content: "\e81a"; -} - -.icofont-ship-wheel::before { - content: "\e81b"; -} - -.icofont-skull-danger::before { - content: "\e81c"; -} - -.icofont-skull-face::before { - content: "\e81d"; -} - -.icofont-snowmobile::before { - content: "\e81e"; -} - -.icofont-space-shuttle::before { - content: "\e81f"; -} - -.icofont-star-shape::before { - content: "\e820"; -} - -.icofont-swirl::before { - content: "\e821"; -} - -.icofont-tattoo-wing::before { - content: "\e822"; -} - -.icofont-throne::before { - content: "\e823"; -} - -.icofont-tree-alt::before { - content: "\e824"; -} - -.icofont-triangle::before { - content: "\e825"; -} - -.icofont-unity-hand::before { - content: "\e826"; -} - -.icofont-weed::before { - content: "\e827"; -} - -.icofont-woman-bird::before { - content: "\e828"; -} - -.icofont-bat::before { - content: "\e829"; -} - -.icofont-bear-face::before { - content: "\e82a"; -} - -.icofont-bear-tracks::before { - content: "\e82b"; -} - -.icofont-bear::before { - content: "\e82c"; -} - -.icofont-bird-alt::before { - content: "\e82d"; -} - -.icofont-bird-flying::before { - content: "\e82e"; -} - -.icofont-bird::before { - content: "\e82f"; -} - -.icofont-birds::before { - content: "\e830"; -} - -.icofont-bone::before { - content: "\e831"; -} - -.icofont-bull::before { - content: "\e832"; -} - -.icofont-butterfly-alt::before { - content: "\e833"; -} - -.icofont-butterfly::before { - content: "\e834"; -} - -.icofont-camel-alt::before { - content: "\e835"; -} - -.icofont-camel-head::before { - content: "\e836"; -} - -.icofont-camel::before { - content: "\e837"; -} - -.icofont-cat-alt-1::before { - content: "\e838"; -} - -.icofont-cat-alt-2::before { - content: "\e839"; -} - -.icofont-cat-alt-3::before { - content: "\e83a"; -} - -.icofont-cat-dog::before { - content: "\e83b"; -} - -.icofont-cat-face::before { - content: "\e83c"; -} - -.icofont-cat::before { - content: "\e83d"; -} - -.icofont-cow-head::before { - content: "\e83e"; -} - -.icofont-cow::before { - content: "\e83f"; -} - -.icofont-crab::before { - content: "\e840"; -} - -.icofont-crocodile::before { - content: "\e841"; -} - -.icofont-deer-head::before { - content: "\e842"; -} - -.icofont-dog-alt::before { - content: "\e843"; -} - -.icofont-dog-barking::before { - content: "\e844"; -} - -.icofont-dog::before { - content: "\e845"; -} - -.icofont-dolphin::before { - content: "\e846"; -} - -.icofont-duck-tracks::before { - content: "\e847"; -} - -.icofont-eagle-head::before { - content: "\e848"; -} - -.icofont-eaten-fish::before { - content: "\e849"; -} - -.icofont-elephant-alt::before { - content: "\e84a"; -} - -.icofont-elephant-head-alt::before { - content: "\e84b"; -} - -.icofont-elephant-head::before { - content: "\e84c"; -} - -.icofont-elephant::before { - content: "\e84d"; -} - -.icofont-elk::before { - content: "\e84e"; -} - -.icofont-fish-1::before { - content: "\e84f"; -} - -.icofont-fish-2::before { - content: "\e850"; -} - -.icofont-fish-3::before { - content: "\e851"; -} - -.icofont-fish-4::before { - content: "\e852"; -} - -.icofont-fish-5::before { - content: "\e853"; -} - -.icofont-fish::before { - content: "\e854"; -} - -.icofont-fox-alt::before { - content: "\e855"; -} - -.icofont-fox::before { - content: "\e856"; -} - -.icofont-frog-tracks::before { - content: "\e857"; -} - -.icofont-frog::before { - content: "\e858"; -} - -.icofont-froggy::before { - content: "\e859"; -} - -.icofont-giraffe-head-1::before { - content: "\e85a"; -} - -.icofont-giraffe-head-2::before { - content: "\e85b"; -} - -.icofont-giraffe-head::before { - content: "\e85c"; -} - -.icofont-giraffe::before { - content: "\e85d"; -} - -.icofont-goat-head::before { - content: "\e85e"; -} - -.icofont-gorilla::before { - content: "\e85f"; -} - -.icofont-hen-tracks::before { - content: "\e860"; -} - -.icofont-horse-head-1::before { - content: "\e861"; -} - -.icofont-horse-head-2::before { - content: "\e862"; -} - -.icofont-horse-head::before { - content: "\e863"; -} - -.icofont-horse-tracks::before { - content: "\e864"; -} - -.icofont-jellyfish::before { - content: "\e865"; -} - -.icofont-kangaroo::before { - content: "\e866"; -} - -.icofont-lemur::before { - content: "\e867"; -} - -.icofont-lion-head-1::before { - content: "\e868"; -} - -.icofont-lion-head-2::before { - content: "\e869"; -} - -.icofont-lion-head::before { - content: "\e86a"; -} - -.icofont-lion::before { - content: "\e86b"; -} - -.icofont-monkey-2::before { - content: "\e86c"; -} - -.icofont-monkey-3::before { - content: "\e86d"; -} - -.icofont-monkey-face::before { - content: "\e86e"; -} - -.icofont-monkey::before { - content: "\e86f"; -} - -.icofont-octopus-alt::before { - content: "\e870"; -} - -.icofont-octopus::before { - content: "\e871"; -} - -.icofont-owl::before { - content: "\e872"; -} - -.icofont-panda-face::before { - content: "\e873"; -} - -.icofont-panda::before { - content: "\e874"; -} - -.icofont-panther::before { - content: "\e875"; -} - -.icofont-parrot-lip::before { - content: "\e876"; -} - -.icofont-parrot::before { - content: "\e877"; -} - -.icofont-paw::before { - content: "\e878"; -} - -.icofont-pelican::before { - content: "\e879"; -} - -.icofont-penguin::before { - content: "\e87a"; -} - -.icofont-pig-face::before { - content: "\e87b"; -} - -.icofont-pig::before { - content: "\e87c"; -} - -.icofont-pigeon-1::before { - content: "\e87d"; -} - -.icofont-pigeon-2::before { - content: "\e87e"; -} - -.icofont-pigeon::before { - content: "\e87f"; -} - -.icofont-rabbit::before { - content: "\e880"; -} - -.icofont-rat::before { - content: "\e881"; -} - -.icofont-rhino-head::before { - content: "\e882"; -} - -.icofont-rhino::before { - content: "\e883"; -} - -.icofont-rooster::before { - content: "\e884"; -} - -.icofont-seahorse::before { - content: "\e885"; -} - -.icofont-seal::before { - content: "\e886"; -} - -.icofont-shrimp-alt::before { - content: "\e887"; -} - -.icofont-shrimp::before { - content: "\e888"; -} - -.icofont-snail-1::before { - content: "\e889"; -} - -.icofont-snail-2::before { - content: "\e88a"; -} - -.icofont-snail-3::before { - content: "\e88b"; -} - -.icofont-snail::before { - content: "\e88c"; -} - -.icofont-snake::before { - content: "\e88d"; -} - -.icofont-squid::before { - content: "\e88e"; -} - -.icofont-squirrel::before { - content: "\e88f"; -} - -.icofont-tiger-face::before { - content: "\e890"; -} - -.icofont-tiger::before { - content: "\e891"; -} - -.icofont-turtle::before { - content: "\e892"; -} - -.icofont-whale::before { - content: "\e893"; -} - -.icofont-woodpecker::before { - content: "\e894"; -} - -.icofont-zebra::before { - content: "\e895"; -} - -.icofont-brand-acer::before { - content: "\e896"; -} - -.icofont-brand-adidas::before { - content: "\e897"; -} - -.icofont-brand-adobe::before { - content: "\e898"; -} - -.icofont-brand-air-new-zealand::before { - content: "\e899"; -} - -.icofont-brand-airbnb::before { - content: "\e89a"; -} - -.icofont-brand-aircell::before { - content: "\e89b"; -} - -.icofont-brand-airtel::before { - content: "\e89c"; -} - -.icofont-brand-alcatel::before { - content: "\e89d"; -} - -.icofont-brand-alibaba::before { - content: "\e89e"; -} - -.icofont-brand-aliexpress::before { - content: "\e89f"; -} - -.icofont-brand-alipay::before { - content: "\e8a0"; -} - -.icofont-brand-amazon::before { - content: "\e8a1"; -} - -.icofont-brand-amd::before { - content: "\e8a2"; -} - -.icofont-brand-american-airlines::before { - content: "\e8a3"; -} - -.icofont-brand-android-robot::before { - content: "\e8a4"; -} - -.icofont-brand-android::before { - content: "\e8a5"; -} - -.icofont-brand-aol::before { - content: "\e8a6"; -} - -.icofont-brand-apple::before { - content: "\e8a7"; -} - -.icofont-brand-appstore::before { - content: "\e8a8"; -} - -.icofont-brand-asus::before { - content: "\e8a9"; -} - -.icofont-brand-ati::before { - content: "\e8aa"; -} - -.icofont-brand-att::before { - content: "\e8ab"; -} - -.icofont-brand-audi::before { - content: "\e8ac"; -} - -.icofont-brand-axiata::before { - content: "\e8ad"; -} - -.icofont-brand-bada::before { - content: "\e8ae"; -} - -.icofont-brand-bbc::before { - content: "\e8af"; -} - -.icofont-brand-bing::before { - content: "\e8b0"; -} - -.icofont-brand-blackberry::before { - content: "\e8b1"; -} - -.icofont-brand-bmw::before { - content: "\e8b2"; -} - -.icofont-brand-box::before { - content: "\e8b3"; -} - -.icofont-brand-burger-king::before { - content: "\e8b4"; -} - -.icofont-brand-business-insider::before { - content: "\e8b5"; -} - -.icofont-brand-buzzfeed::before { - content: "\e8b6"; -} - -.icofont-brand-cannon::before { - content: "\e8b7"; -} - -.icofont-brand-casio::before { - content: "\e8b8"; -} - -.icofont-brand-china-mobile::before { - content: "\e8b9"; -} - -.icofont-brand-china-telecom::before { - content: "\e8ba"; -} - -.icofont-brand-china-unicom::before { - content: "\e8bb"; -} - -.icofont-brand-cisco::before { - content: "\e8bc"; -} - -.icofont-brand-citibank::before { - content: "\e8bd"; -} - -.icofont-brand-cnet::before { - content: "\e8be"; -} - -.icofont-brand-cnn::before { - content: "\e8bf"; -} - -.icofont-brand-cocal-cola::before { - content: "\e8c0"; -} - -.icofont-brand-compaq::before { - content: "\e8c1"; -} - -.icofont-brand-debian::before { - content: "\e8c2"; -} - -.icofont-brand-delicious::before { - content: "\e8c3"; -} - -.icofont-brand-dell::before { - content: "\e8c4"; -} - -.icofont-brand-designbump::before { - content: "\e8c5"; -} - -.icofont-brand-designfloat::before { - content: "\e8c6"; -} - -.icofont-brand-disney::before { - content: "\e8c7"; -} - -.icofont-brand-dodge::before { - content: "\e8c8"; -} - -.icofont-brand-dove::before { - content: "\e8c9"; -} - -.icofont-brand-drupal::before { - content: "\e8ca"; -} - -.icofont-brand-ebay::before { - content: "\e8cb"; -} - -.icofont-brand-eleven::before { - content: "\e8cc"; -} - -.icofont-brand-emirates::before { - content: "\e8cd"; -} - -.icofont-brand-espn::before { - content: "\e8ce"; -} - -.icofont-brand-etihad-airways::before { - content: "\e8cf"; -} - -.icofont-brand-etisalat::before { - content: "\e8d0"; -} - -.icofont-brand-etsy::before { - content: "\e8d1"; -} - -.icofont-brand-fastrack::before { - content: "\e8d2"; -} - -.icofont-brand-fedex::before { - content: "\e8d3"; -} - -.icofont-brand-ferrari::before { - content: "\e8d4"; -} - -.icofont-brand-fitbit::before { - content: "\e8d5"; -} - -.icofont-brand-flikr::before { - content: "\e8d6"; -} - -.icofont-brand-forbes::before { - content: "\e8d7"; -} - -.icofont-brand-foursquare::before { - content: "\e8d8"; -} - -.icofont-brand-foxconn::before { - content: "\e8d9"; -} - -.icofont-brand-fujitsu::before { - content: "\e8da"; -} - -.icofont-brand-general-electric::before { - content: "\e8db"; -} - -.icofont-brand-gillette::before { - content: "\e8dc"; -} - -.icofont-brand-gizmodo::before { - content: "\e8dd"; -} - -.icofont-brand-gnome::before { - content: "\e8de"; -} - -.icofont-brand-google::before { - content: "\e8df"; -} - -.icofont-brand-gopro::before { - content: "\e8e0"; -} - -.icofont-brand-gucci::before { - content: "\e8e1"; -} - -.icofont-brand-hallmark::before { - content: "\e8e2"; -} - -.icofont-brand-hi5::before { - content: "\e8e3"; -} - -.icofont-brand-honda::before { - content: "\e8e4"; -} - -.icofont-brand-hp::before { - content: "\e8e5"; -} - -.icofont-brand-hsbc::before { - content: "\e8e6"; -} - -.icofont-brand-htc::before { - content: "\e8e7"; -} - -.icofont-brand-huawei::before { - content: "\e8e8"; -} - -.icofont-brand-hulu::before { - content: "\e8e9"; -} - -.icofont-brand-hyundai::before { - content: "\e8ea"; -} - -.icofont-brand-ibm::before { - content: "\e8eb"; -} - -.icofont-brand-icofont::before { - content: "\e8ec"; -} - -.icofont-brand-icq::before { - content: "\e8ed"; -} - -.icofont-brand-ikea::before { - content: "\e8ee"; -} - -.icofont-brand-imdb::before { - content: "\e8ef"; -} - -.icofont-brand-indiegogo::before { - content: "\e8f0"; -} - -.icofont-brand-intel::before { - content: "\e8f1"; -} - -.icofont-brand-ipair::before { - content: "\e8f2"; -} - -.icofont-brand-jaguar::before { - content: "\e8f3"; -} - -.icofont-brand-java::before { - content: "\e8f4"; -} - -.icofont-brand-joomla::before { - content: "\e8f5"; -} - -.icofont-brand-kickstarter::before { - content: "\e8f6"; -} - -.icofont-brand-kik::before { - content: "\e8f7"; -} - -.icofont-brand-lastfm::before { - content: "\e8f8"; -} - -.icofont-brand-lego::before { - content: "\e8f9"; -} - -.icofont-brand-lenovo::before { - content: "\e8fa"; -} - -.icofont-brand-levis::before { - content: "\e8fb"; -} - -.icofont-brand-lexus::before { - content: "\e8fc"; -} - -.icofont-brand-lg::before { - content: "\e8fd"; -} - -.icofont-brand-life-hacker::before { - content: "\e8fe"; -} - -.icofont-brand-linux-mint::before { - content: "\e8ff"; -} - -.icofont-brand-linux::before { - content: "\e900"; -} - -.icofont-brand-lionix::before { - content: "\e901"; -} - -.icofont-brand-loreal::before { - content: "\e902"; -} - -.icofont-brand-louis-vuitton::before { - content: "\e903"; -} - -.icofont-brand-mac-os::before { - content: "\e904"; -} - -.icofont-brand-marvel-app::before { - content: "\e905"; -} - -.icofont-brand-mashable::before { - content: "\e906"; -} - -.icofont-brand-mazda::before { - content: "\e907"; -} - -.icofont-brand-mcdonals::before { - content: "\e908"; -} - -.icofont-brand-mercedes::before { - content: "\e909"; -} - -.icofont-brand-micromax::before { - content: "\e90a"; -} - -.icofont-brand-microsoft::before { - content: "\e90b"; -} - -.icofont-brand-mobileme::before { - content: "\e90c"; -} - -.icofont-brand-mobily::before { - content: "\e90d"; -} - -.icofont-brand-motorola::before { - content: "\e90e"; -} - -.icofont-brand-msi::before { - content: "\e90f"; -} - -.icofont-brand-mts::before { - content: "\e910"; -} - -.icofont-brand-myspace::before { - content: "\e911"; -} - -.icofont-brand-mytv::before { - content: "\e912"; -} - -.icofont-brand-nasa::before { - content: "\e913"; -} - -.icofont-brand-natgeo::before { - content: "\e914"; -} - -.icofont-brand-nbc::before { - content: "\e915"; -} - -.icofont-brand-nescafe::before { - content: "\e916"; -} - -.icofont-brand-nestle::before { - content: "\e917"; -} - -.icofont-brand-netflix::before { - content: "\e918"; -} - -.icofont-brand-nexus::before { - content: "\e919"; -} - -.icofont-brand-nike::before { - content: "\e91a"; -} - -.icofont-brand-nokia::before { - content: "\e91b"; -} - -.icofont-brand-nvidia::before { - content: "\e91c"; -} - -.icofont-brand-omega::before { - content: "\e91d"; -} - -.icofont-brand-opensuse::before { - content: "\e91e"; -} - -.icofont-brand-oracle::before { - content: "\e91f"; -} - -.icofont-brand-panasonic::before { - content: "\e920"; -} - -.icofont-brand-paypal::before { - content: "\e921"; -} - -.icofont-brand-pepsi::before { - content: "\e922"; -} - -.icofont-brand-philips::before { - content: "\e923"; -} - -.icofont-brand-pizza-hut::before { - content: "\e924"; -} - -.icofont-brand-playstation::before { - content: "\e925"; -} - -.icofont-brand-puma::before { - content: "\e926"; -} - -.icofont-brand-qatar-air::before { - content: "\e927"; -} - -.icofont-brand-qvc::before { - content: "\e928"; -} - -.icofont-brand-readernaut::before { - content: "\e929"; -} - -.icofont-brand-redbull::before { - content: "\e92a"; -} - -.icofont-brand-reebok::before { - content: "\e92b"; -} - -.icofont-brand-reuters::before { - content: "\e92c"; -} - -.icofont-brand-samsung::before { - content: "\e92d"; -} - -.icofont-brand-sap::before { - content: "\e92e"; -} - -.icofont-brand-saudia-airlines::before { - content: "\e92f"; -} - -.icofont-brand-scribd::before { - content: "\e930"; -} - -.icofont-brand-shell::before { - content: "\e931"; -} - -.icofont-brand-siemens::before { - content: "\e932"; -} - -.icofont-brand-sk-telecom::before { - content: "\e933"; -} - -.icofont-brand-slideshare::before { - content: "\e934"; -} - -.icofont-brand-smashing-magazine::before { - content: "\e935"; -} - -.icofont-brand-snapchat::before { - content: "\e936"; -} - -.icofont-brand-sony-ericsson::before { - content: "\e937"; -} - -.icofont-brand-sony::before { - content: "\e938"; -} - -.icofont-brand-soundcloud::before { - content: "\e939"; -} - -.icofont-brand-sprint::before { - content: "\e93a"; -} - -.icofont-brand-squidoo::before { - content: "\e93b"; -} - -.icofont-brand-starbucks::before { - content: "\e93c"; -} - -.icofont-brand-stc::before { - content: "\e93d"; -} - -.icofont-brand-steam::before { - content: "\e93e"; -} - -.icofont-brand-suzuki::before { - content: "\e93f"; -} - -.icofont-brand-symbian::before { - content: "\e940"; -} - -.icofont-brand-t-mobile::before { - content: "\e941"; -} - -.icofont-brand-tango::before { - content: "\e942"; -} - -.icofont-brand-target::before { - content: "\e943"; -} - -.icofont-brand-tata-indicom::before { - content: "\e944"; -} - -.icofont-brand-techcrunch::before { - content: "\e945"; -} - -.icofont-brand-telenor::before { - content: "\e946"; -} - -.icofont-brand-teliasonera::before { - content: "\e947"; -} - -.icofont-brand-tesla::before { - content: "\e948"; -} - -.icofont-brand-the-verge::before { - content: "\e949"; -} - -.icofont-brand-thenextweb::before { - content: "\e94a"; -} - -.icofont-brand-toshiba::before { - content: "\e94b"; -} - -.icofont-brand-toyota::before { - content: "\e94c"; -} - -.icofont-brand-tribenet::before { - content: "\e94d"; -} - -.icofont-brand-ubuntu::before { - content: "\e94e"; -} - -.icofont-brand-unilever::before { - content: "\e94f"; -} - -.icofont-brand-vaio::before { - content: "\e950"; -} - -.icofont-brand-verizon::before { - content: "\e951"; -} - -.icofont-brand-viber::before { - content: "\e952"; -} - -.icofont-brand-vodafone::before { - content: "\e953"; -} - -.icofont-brand-volkswagen::before { - content: "\e954"; -} - -.icofont-brand-walmart::before { - content: "\e955"; -} - -.icofont-brand-warnerbros::before { - content: "\e956"; -} - -.icofont-brand-whatsapp::before { - content: "\e957"; -} - -.icofont-brand-wikipedia::before { - content: "\e958"; -} - -.icofont-brand-windows::before { - content: "\e959"; -} - -.icofont-brand-wire::before { - content: "\e95a"; -} - -.icofont-brand-wordpress::before { - content: "\e95b"; -} - -.icofont-brand-xiaomi::before { - content: "\e95c"; -} - -.icofont-brand-yahoobuzz::before { - content: "\e95d"; -} - -.icofont-brand-yamaha::before { - content: "\e95e"; -} - -.icofont-brand-youtube::before { - content: "\e95f"; -} - -.icofont-brand-zain::before { - content: "\e960"; -} - -.icofont-bank-alt::before { - content: "\e961"; -} - -.icofont-bank::before { - content: "\e962"; -} - -.icofont-barcode::before { - content: "\e963"; -} - -.icofont-bill-alt::before { - content: "\e964"; -} - -.icofont-billboard::before { - content: "\e965"; -} - -.icofont-briefcase-1::before { - content: "\e966"; -} - -.icofont-briefcase-2::before { - content: "\e967"; -} - -.icofont-businessman::before { - content: "\e968"; -} - -.icofont-businesswoman::before { - content: "\e969"; -} - -.icofont-chair::before { - content: "\e96a"; -} - -.icofont-coins::before { - content: "\e96b"; -} - -.icofont-company::before { - content: "\e96c"; -} - -.icofont-contact-add::before { - content: "\e96d"; -} - -.icofont-files-stack::before { - content: "\e96e"; -} - -.icofont-handshake-deal::before { - content: "\e96f"; -} - -.icofont-id-card::before { - content: "\e970"; -} - -.icofont-meeting-add::before { - content: "\e971"; -} - -.icofont-money-bag::before { - content: "\e972"; -} - -.icofont-pie-chart::before { - content: "\e973"; -} - -.icofont-presentation-alt::before { - content: "\e974"; -} - -.icofont-presentation::before { - content: "\e975"; -} - -.icofont-stamp::before { - content: "\e976"; -} - -.icofont-stock-mobile::before { - content: "\e977"; -} - -.icofont-chart-arrows-axis::before { - content: "\e978"; -} - -.icofont-chart-bar-graph::before { - content: "\e979"; -} - -.icofont-chart-flow-1::before { - content: "\e97a"; -} - -.icofont-chart-flow-2::before { - content: "\e97b"; -} - -.icofont-chart-flow::before { - content: "\e97c"; -} - -.icofont-chart-growth::before { - content: "\e97d"; -} - -.icofont-chart-histogram-alt::before { - content: "\e97e"; -} - -.icofont-chart-histogram::before { - content: "\e97f"; -} - -.icofont-chart-line-alt::before { - content: "\e980"; -} - -.icofont-chart-line::before { - content: "\e981"; -} - -.icofont-chart-pie-alt::before { - content: "\e982"; -} - -.icofont-chart-pie::before { - content: "\e983"; -} - -.icofont-chart-radar-graph::before { - content: "\e984"; -} - -.icofont-architecture-alt::before { - content: "\e985"; -} - -.icofont-architecture::before { - content: "\e986"; -} - -.icofont-barricade::before { - content: "\e987"; -} - -.icofont-bolt::before { - content: "\e988"; -} - -.icofont-bricks::before { - content: "\e989"; -} - -.icofont-building-alt::before { - content: "\e98a"; -} - -.icofont-bull-dozer::before { - content: "\e98b"; -} - -.icofont-calculations::before { - content: "\e98c"; -} - -.icofont-cement-mix::before { - content: "\e98d"; -} - -.icofont-cement-mixer::before { - content: "\e98e"; -} - -.icofont-concrete-mixer::before { - content: "\e98f"; -} - -.icofont-danger-zone::before { - content: "\e990"; -} - -.icofont-drill::before { - content: "\e991"; -} - -.icofont-eco-energy::before { - content: "\e992"; -} - -.icofont-eco-environmen::before { - content: "\e993"; -} - -.icofont-energy-air::before { - content: "\e994"; -} - -.icofont-energy-oil::before { - content: "\e995"; -} - -.icofont-energy-savings::before { - content: "\e996"; -} - -.icofont-energy-solar::before { - content: "\e997"; -} - -.icofont-energy-water::before { - content: "\e998"; -} - -.icofont-engineer::before { - content: "\e999"; -} - -.icofont-fire-extinguisher-alt::before { - content: "\e99a"; -} - -.icofont-fire-extinguisher::before { - content: "\e99b"; -} - -.icofont-fix-tools::before { - content: "\e99c"; -} - -.icofont-fork-lift::before { - content: "\e99d"; -} - -.icofont-glue-oil::before { - content: "\e99e"; -} - -.icofont-hammer-alt::before { - content: "\e99f"; -} - -.icofont-hammer::before { - content: "\e9a0"; -} - -.icofont-help-robot::before { - content: "\e9a1"; -} - -.icofont-industries-1::before { - content: "\e9a2"; -} - -.icofont-industries-2::before { - content: "\e9a3"; -} - -.icofont-industries-3::before { - content: "\e9a4"; -} - -.icofont-industries-4::before { - content: "\e9a5"; -} - -.icofont-industries-5::before { - content: "\e9a6"; -} - -.icofont-industries::before { - content: "\e9a7"; -} - -.icofont-labour::before { - content: "\e9a8"; -} - -.icofont-mining::before { - content: "\e9a9"; -} - -.icofont-paint-brush::before { - content: "\e9aa"; -} - -.icofont-pollution::before { - content: "\e9ab"; -} - -.icofont-power-zone::before { - content: "\e9ac"; -} - -.icofont-radio-active::before { - content: "\e9ad"; -} - -.icofont-recycle-alt::before { - content: "\e9ae"; -} - -.icofont-recycling-man::before { - content: "\e9af"; -} - -.icofont-safety-hat-light::before { - content: "\e9b0"; -} - -.icofont-safety-hat::before { - content: "\e9b1"; -} - -.icofont-saw::before { - content: "\e9b2"; -} - -.icofont-screw-driver::before { - content: "\e9b3"; -} - -.icofont-tools-1::before { - content: "\e9b4"; -} - -.icofont-tools-bag::before { - content: "\e9b5"; -} - -.icofont-tow-truck::before { - content: "\e9b6"; -} - -.icofont-trolley::before { - content: "\e9b7"; -} - -.icofont-trowel::before { - content: "\e9b8"; -} - -.icofont-under-construction-alt::before { - content: "\e9b9"; -} - -.icofont-under-construction::before { - content: "\e9ba"; -} - -.icofont-vehicle-cement::before { - content: "\e9bb"; -} - -.icofont-vehicle-crane::before { - content: "\e9bc"; -} - -.icofont-vehicle-delivery-van::before { - content: "\e9bd"; -} - -.icofont-vehicle-dozer::before { - content: "\e9be"; -} - -.icofont-vehicle-excavator::before { - content: "\e9bf"; -} - -.icofont-vehicle-trucktor::before { - content: "\e9c0"; -} - -.icofont-vehicle-wrecking::before { - content: "\e9c1"; -} - -.icofont-worker::before { - content: "\e9c2"; -} - -.icofont-workers-group::before { - content: "\e9c3"; -} - -.icofont-wrench::before { - content: "\e9c4"; -} - -.icofont-afghani-false::before { - content: "\e9c5"; -} - -.icofont-afghani-minus::before { - content: "\e9c6"; -} - -.icofont-afghani-plus::before { - content: "\e9c7"; -} - -.icofont-afghani-true::before { - content: "\e9c8"; -} - -.icofont-afghani::before { - content: "\e9c9"; -} - -.icofont-baht-false::before { - content: "\e9ca"; -} - -.icofont-baht-minus::before { - content: "\e9cb"; -} - -.icofont-baht-plus::before { - content: "\e9cc"; -} - -.icofont-baht-true::before { - content: "\e9cd"; -} - -.icofont-baht::before { - content: "\e9ce"; -} - -.icofont-bitcoin-false::before { - content: "\e9cf"; -} - -.icofont-bitcoin-minus::before { - content: "\e9d0"; -} - -.icofont-bitcoin-plus::before { - content: "\e9d1"; -} - -.icofont-bitcoin-true::before { - content: "\e9d2"; -} - -.icofont-bitcoin::before { - content: "\e9d3"; -} - -.icofont-dollar-flase::before { - content: "\e9d4"; -} - -.icofont-dollar-minus::before { - content: "\e9d5"; -} - -.icofont-dollar-plus::before { - content: "\e9d6"; -} - -.icofont-dollar-true::before { - content: "\e9d7"; -} - -.icofont-dollar::before { - content: "\e9d8"; -} - -.icofont-dong-false::before { - content: "\e9d9"; -} - -.icofont-dong-minus::before { - content: "\e9da"; -} - -.icofont-dong-plus::before { - content: "\e9db"; -} - -.icofont-dong-true::before { - content: "\e9dc"; -} - -.icofont-dong::before { - content: "\e9dd"; -} - -.icofont-euro-false::before { - content: "\e9de"; -} - -.icofont-euro-minus::before { - content: "\e9df"; -} - -.icofont-euro-plus::before { - content: "\e9e0"; -} - -.icofont-euro-true::before { - content: "\e9e1"; -} - -.icofont-euro::before { - content: "\e9e2"; -} - -.icofont-frank-false::before { - content: "\e9e3"; -} - -.icofont-frank-minus::before { - content: "\e9e4"; -} - -.icofont-frank-plus::before { - content: "\e9e5"; -} - -.icofont-frank-true::before { - content: "\e9e6"; -} - -.icofont-frank::before { - content: "\e9e7"; -} - -.icofont-hryvnia-false::before { - content: "\e9e8"; -} - -.icofont-hryvnia-minus::before { - content: "\e9e9"; -} - -.icofont-hryvnia-plus::before { - content: "\e9ea"; -} - -.icofont-hryvnia-true::before { - content: "\e9eb"; -} - -.icofont-hryvnia::before { - content: "\e9ec"; -} - -.icofont-lira-false::before { - content: "\e9ed"; -} - -.icofont-lira-minus::before { - content: "\e9ee"; -} - -.icofont-lira-plus::before { - content: "\e9ef"; -} - -.icofont-lira-true::before { - content: "\e9f0"; -} - -.icofont-lira::before { - content: "\e9f1"; -} - -.icofont-peseta-false::before { - content: "\e9f2"; -} - -.icofont-peseta-minus::before { - content: "\e9f3"; -} - -.icofont-peseta-plus::before { - content: "\e9f4"; -} - -.icofont-peseta-true::before { - content: "\e9f5"; -} - -.icofont-peseta::before { - content: "\e9f6"; -} - -.icofont-peso-false::before { - content: "\e9f7"; -} - -.icofont-peso-minus::before { - content: "\e9f8"; -} - -.icofont-peso-plus::before { - content: "\e9f9"; -} - -.icofont-peso-true::before { - content: "\e9fa"; -} - -.icofont-peso::before { - content: "\e9fb"; -} - -.icofont-pound-false::before { - content: "\e9fc"; -} - -.icofont-pound-minus::before { - content: "\e9fd"; -} - -.icofont-pound-plus::before { - content: "\e9fe"; -} - -.icofont-pound-true::before { - content: "\e9ff"; -} - -.icofont-pound::before { - content: "\ea00"; -} - -.icofont-renminbi-false::before { - content: "\ea01"; -} - -.icofont-renminbi-minus::before { - content: "\ea02"; -} - -.icofont-renminbi-plus::before { - content: "\ea03"; -} - -.icofont-renminbi-true::before { - content: "\ea04"; -} - -.icofont-renminbi::before { - content: "\ea05"; -} - -.icofont-riyal-false::before { - content: "\ea06"; -} - -.icofont-riyal-minus::before { - content: "\ea07"; -} - -.icofont-riyal-plus::before { - content: "\ea08"; -} - -.icofont-riyal-true::before { - content: "\ea09"; -} - -.icofont-riyal::before { - content: "\ea0a"; -} - -.icofont-rouble-false::before { - content: "\ea0b"; -} - -.icofont-rouble-minus::before { - content: "\ea0c"; -} - -.icofont-rouble-plus::before { - content: "\ea0d"; -} - -.icofont-rouble-true::before { - content: "\ea0e"; -} - -.icofont-rouble::before { - content: "\ea0f"; -} - -.icofont-rupee-false::before { - content: "\ea10"; -} - -.icofont-rupee-minus::before { - content: "\ea11"; -} - -.icofont-rupee-plus::before { - content: "\ea12"; -} - -.icofont-rupee-true::before { - content: "\ea13"; -} - -.icofont-rupee::before { - content: "\ea14"; -} - -.icofont-taka-false::before { - content: "\ea15"; -} - -.icofont-taka-minus::before { - content: "\ea16"; -} - -.icofont-taka-plus::before { - content: "\ea17"; -} - -.icofont-taka-true::before { - content: "\ea18"; -} - -.icofont-taka::before { - content: "\ea19"; -} - -.icofont-turkish-lira-false::before { - content: "\ea1a"; -} - -.icofont-turkish-lira-minus::before { - content: "\ea1b"; -} - -.icofont-turkish-lira-plus::before { - content: "\ea1c"; -} - -.icofont-turkish-lira-true::before { - content: "\ea1d"; -} - -.icofont-turkish-lira::before { - content: "\ea1e"; -} - -.icofont-won-false::before { - content: "\ea1f"; -} - -.icofont-won-minus::before { - content: "\ea20"; -} - -.icofont-won-plus::before { - content: "\ea21"; -} - -.icofont-won-true::before { - content: "\ea22"; -} - -.icofont-won::before { - content: "\ea23"; -} - -.icofont-yen-false::before { - content: "\ea24"; -} - -.icofont-yen-minus::before { - content: "\ea25"; -} - -.icofont-yen-plus::before { - content: "\ea26"; -} - -.icofont-yen-true::before { - content: "\ea27"; -} - -.icofont-yen::before { - content: "\ea28"; -} - -.icofont-android-nexus::before { - content: "\ea29"; -} - -.icofont-android-tablet::before { - content: "\ea2a"; -} - -.icofont-apple-watch::before { - content: "\ea2b"; -} - -.icofont-drawing-tablet::before { - content: "\ea2c"; -} - -.icofont-earphone::before { - content: "\ea2d"; -} - -.icofont-flash-drive::before { - content: "\ea2e"; -} - -.icofont-game-console::before { - content: "\ea2f"; -} - -.icofont-game-controller::before { - content: "\ea30"; -} - -.icofont-game-pad::before { - content: "\ea31"; -} - -.icofont-game::before { - content: "\ea32"; -} - -.icofont-headphone-alt-1::before { - content: "\ea33"; -} - -.icofont-headphone-alt-2::before { - content: "\ea34"; -} - -.icofont-headphone-alt-3::before { - content: "\ea35"; -} - -.icofont-headphone-alt::before { - content: "\ea36"; -} - -.icofont-headphone::before { - content: "\ea37"; -} - -.icofont-htc-one::before { - content: "\ea38"; -} - -.icofont-imac::before { - content: "\ea39"; -} - -.icofont-ipad::before { - content: "\ea3a"; -} - -.icofont-iphone::before { - content: "\ea3b"; -} - -.icofont-ipod-nano::before { - content: "\ea3c"; -} - -.icofont-ipod-touch::before { - content: "\ea3d"; -} - -.icofont-keyboard-alt::before { - content: "\ea3e"; -} - -.icofont-keyboard-wireless::before { - content: "\ea3f"; -} - -.icofont-keyboard::before { - content: "\ea40"; -} - -.icofont-laptop-alt::before { - content: "\ea41"; -} - -.icofont-laptop::before { - content: "\ea42"; -} - -.icofont-macbook::before { - content: "\ea43"; -} - -.icofont-magic-mouse::before { - content: "\ea44"; -} - -.icofont-micro-chip::before { - content: "\ea45"; -} - -.icofont-microphone-alt::before { - content: "\ea46"; -} - -.icofont-microphone::before { - content: "\ea47"; -} - -.icofont-monitor::before { - content: "\ea48"; -} - -.icofont-mouse::before { - content: "\ea49"; -} - -.icofont-mp3-player::before { - content: "\ea4a"; -} - -.icofont-nintendo::before { - content: "\ea4b"; -} - -.icofont-playstation-alt::before { - content: "\ea4c"; -} - -.icofont-psvita::before { - content: "\ea4d"; -} - -.icofont-radio-mic::before { - content: "\ea4e"; -} - -.icofont-radio::before { - content: "\ea4f"; -} - -.icofont-refrigerator::before { - content: "\ea50"; -} - -.icofont-samsung-galaxy::before { - content: "\ea51"; -} - -.icofont-surface-tablet::before { - content: "\ea52"; -} - -.icofont-ui-head-phone::before { - content: "\ea53"; -} - -.icofont-ui-keyboard::before { - content: "\ea54"; -} - -.icofont-washing-machine::before { - content: "\ea55"; -} - -.icofont-wifi-router::before { - content: "\ea56"; -} - -.icofont-wii-u::before { - content: "\ea57"; -} - -.icofont-windows-lumia::before { - content: "\ea58"; -} - -.icofont-wireless-mouse::before { - content: "\ea59"; -} - -.icofont-xbox-360::before { - content: "\ea5a"; -} - -.icofont-arrow-down::before { - content: "\ea5b"; -} - -.icofont-arrow-left::before { - content: "\ea5c"; -} - -.icofont-arrow-right::before { - content: "\ea5d"; -} - -.icofont-arrow-up::before { - content: "\ea5e"; -} - -.icofont-block-down::before { - content: "\ea5f"; -} - -.icofont-block-left::before { - content: "\ea60"; -} - -.icofont-block-right::before { - content: "\ea61"; -} - -.icofont-block-up::before { - content: "\ea62"; -} - -.icofont-bubble-down::before { - content: "\ea63"; -} - -.icofont-bubble-left::before { - content: "\ea64"; -} - -.icofont-bubble-right::before { - content: "\ea65"; -} - -.icofont-bubble-up::before { - content: "\ea66"; -} - -.icofont-caret-down::before { - content: "\ea67"; -} - -.icofont-caret-left::before { - content: "\ea68"; -} - -.icofont-caret-right::before { - content: "\ea69"; -} - -.icofont-caret-up::before { - content: "\ea6a"; -} - -.icofont-circled-down::before { - content: "\ea6b"; -} - -.icofont-circled-left::before { - content: "\ea6c"; -} - -.icofont-circled-right::before { - content: "\ea6d"; -} - -.icofont-circled-up::before { - content: "\ea6e"; -} - -.icofont-collapse::before { - content: "\ea6f"; -} - -.icofont-cursor-drag::before { - content: "\ea70"; -} - -.icofont-curved-double-left::before { - content: "\ea71"; -} - -.icofont-curved-double-right::before { - content: "\ea72"; -} - -.icofont-curved-down::before { - content: "\ea73"; -} - -.icofont-curved-left::before { - content: "\ea74"; -} - -.icofont-curved-right::before { - content: "\ea75"; -} - -.icofont-curved-up::before { - content: "\ea76"; -} - -.icofont-dotted-down::before { - content: "\ea77"; -} - -.icofont-dotted-left::before { - content: "\ea78"; -} - -.icofont-dotted-right::before { - content: "\ea79"; -} - -.icofont-dotted-up::before { - content: "\ea7a"; -} - -.icofont-double-left::before { - content: "\ea7b"; -} - -.icofont-double-right::before { - content: "\ea7c"; -} - -.icofont-expand-alt::before { - content: "\ea7d"; -} - -.icofont-hand-down::before { - content: "\ea7e"; -} - -.icofont-hand-drag::before { - content: "\ea7f"; -} - -.icofont-hand-drag1::before { - content: "\ea80"; -} - -.icofont-hand-drag2::before { - content: "\ea81"; -} - -.icofont-hand-drawn-alt-down::before { - content: "\ea82"; -} - -.icofont-hand-drawn-alt-left::before { - content: "\ea83"; -} - -.icofont-hand-drawn-alt-right::before { - content: "\ea84"; -} - -.icofont-hand-drawn-alt-up::before { - content: "\ea85"; -} - -.icofont-hand-drawn-down::before { - content: "\ea86"; -} - -.icofont-hand-drawn-left::before { - content: "\ea87"; -} - -.icofont-hand-drawn-right::before { - content: "\ea88"; -} - -.icofont-hand-drawn-up::before { - content: "\ea89"; -} - -.icofont-hand-grippers::before { - content: "\ea8a"; -} - -.icofont-hand-left::before { - content: "\ea8b"; -} - -.icofont-hand-right::before { - content: "\ea8c"; -} - -.icofont-hand-up::before { - content: "\ea8d"; -} - -.icofont-line-block-down::before { - content: "\ea8e"; -} - -.icofont-line-block-left::before { - content: "\ea8f"; -} - -.icofont-line-block-right::before { - content: "\ea90"; -} - -.icofont-line-block-up::before { - content: "\ea91"; -} - -.icofont-long-arrow-down::before { - content: "\ea92"; -} - -.icofont-long-arrow-left::before { - content: "\ea93"; -} - -.icofont-long-arrow-right::before { - content: "\ea94"; -} - -.icofont-long-arrow-up::before { - content: "\ea95"; -} - -.icofont-rounded-collapse::before { - content: "\ea96"; -} - -.icofont-rounded-double-left::before { - content: "\ea97"; -} - -.icofont-rounded-double-right::before { - content: "\ea98"; -} - -.icofont-rounded-down::before { - content: "\ea99"; -} - -.icofont-rounded-expand::before { - content: "\ea9a"; -} - -.icofont-rounded-left-down::before { - content: "\ea9b"; -} - -.icofont-rounded-left-up::before { - content: "\ea9c"; -} - -.icofont-rounded-left::before { - content: "\ea9d"; -} - -.icofont-rounded-right-down::before { - content: "\ea9e"; -} - -.icofont-rounded-right-up::before { - content: "\ea9f"; -} - -.icofont-rounded-right::before { - content: "\eaa0"; -} - -.icofont-rounded-up::before { - content: "\eaa1"; -} - -.icofont-scroll-bubble-down::before { - content: "\eaa2"; -} - -.icofont-scroll-bubble-left::before { - content: "\eaa3"; -} - -.icofont-scroll-bubble-right::before { - content: "\eaa4"; -} - -.icofont-scroll-bubble-up::before { - content: "\eaa5"; -} - -.icofont-scroll-double-down::before { - content: "\eaa6"; -} - -.icofont-scroll-double-left::before { - content: "\eaa7"; -} - -.icofont-scroll-double-right::before { - content: "\eaa8"; -} - -.icofont-scroll-double-up::before { - content: "\eaa9"; -} - -.icofont-scroll-down::before { - content: "\eaaa"; -} - -.icofont-scroll-left::before { - content: "\eaab"; -} - -.icofont-scroll-long-down::before { - content: "\eaac"; -} - -.icofont-scroll-long-left::before { - content: "\eaad"; -} - -.icofont-scroll-long-right::before { - content: "\eaae"; -} - -.icofont-scroll-long-up::before { - content: "\eaaf"; -} - -.icofont-scroll-right::before { - content: "\eab0"; -} - -.icofont-scroll-up::before { - content: "\eab1"; -} - -.icofont-simple-down::before { - content: "\eab2"; -} - -.icofont-simple-left-down::before { - content: "\eab3"; -} - -.icofont-simple-left-up::before { - content: "\eab4"; -} - -.icofont-simple-left::before { - content: "\eab5"; -} - -.icofont-simple-right-down::before { - content: "\eab6"; -} - -.icofont-simple-right-up::before { - content: "\eab7"; -} - -.icofont-simple-right::before { - content: "\eab8"; -} - -.icofont-simple-up::before { - content: "\eab9"; -} - -.icofont-square-down::before { - content: "\eaba"; -} - -.icofont-square-left::before { - content: "\eabb"; -} - -.icofont-square-right::before { - content: "\eabc"; -} - -.icofont-square-up::before { - content: "\eabd"; -} - -.icofont-stylish-down::before { - content: "\eabe"; -} - -.icofont-stylish-left::before { - content: "\eabf"; -} - -.icofont-stylish-right::before { - content: "\eac0"; -} - -.icofont-stylish-up::before { - content: "\eac1"; -} - -.icofont-swoosh-down::before { - content: "\eac2"; -} - -.icofont-swoosh-left::before { - content: "\eac3"; -} - -.icofont-swoosh-right::before { - content: "\eac4"; -} - -.icofont-swoosh-up::before { - content: "\eac5"; -} - -.icofont-thin-double-left::before { - content: "\eac6"; -} - -.icofont-thin-double-right::before { - content: "\eac7"; -} - -.icofont-thin-down::before { - content: "\eac8"; -} - -.icofont-thin-left::before { - content: "\eac9"; -} - -.icofont-thin-right::before { - content: "\eaca"; -} - -.icofont-thin-up::before { - content: "\eacb"; -} - -.icofont-abc::before { - content: "\eacc"; -} - -.icofont-atom::before { - content: "\eacd"; -} - -.icofont-award::before { - content: "\eace"; -} - -.icofont-bell-alt::before { - content: "\eacf"; -} - -.icofont-black-board::before { - content: "\ead0"; -} - -.icofont-book-alt::before { - content: "\ead1"; -} - -.icofont-book::before { - content: "\ead2"; -} - -.icofont-brainstorming::before { - content: "\ead3"; -} - -.icofont-certificate-alt-1::before { - content: "\ead4"; -} - -.icofont-certificate-alt-2::before { - content: "\ead5"; -} - -.icofont-certificate::before { - content: "\ead6"; -} - -.icofont-education::before { - content: "\ead7"; -} - -.icofont-electron::before { - content: "\ead8"; -} - -.icofont-fountain-pen::before { - content: "\ead9"; -} - -.icofont-globe-alt::before { - content: "\eada"; -} - -.icofont-graduate-alt::before { - content: "\eadb"; -} - -.icofont-graduate::before { - content: "\eadc"; -} - -.icofont-group-students::before { - content: "\eadd"; -} - -.icofont-hat-alt::before { - content: "\eade"; -} - -.icofont-hat::before { - content: "\eadf"; -} - -.icofont-instrument::before { - content: "\eae0"; -} - -.icofont-lamp-light::before { - content: "\eae1"; -} - -.icofont-medal::before { - content: "\eae2"; -} - -.icofont-microscope-alt::before { - content: "\eae3"; -} - -.icofont-microscope::before { - content: "\eae4"; -} - -.icofont-paper::before { - content: "\eae5"; -} - -.icofont-pen-alt-4::before { - content: "\eae6"; -} - -.icofont-pen-nib::before { - content: "\eae7"; -} - -.icofont-pencil-alt-5::before { - content: "\eae8"; -} - -.icofont-quill-pen::before { - content: "\eae9"; -} - -.icofont-read-book-alt::before { - content: "\eaea"; -} - -.icofont-read-book::before { - content: "\eaeb"; -} - -.icofont-school-bag::before { - content: "\eaec"; -} - -.icofont-school-bus::before { - content: "\eaed"; -} - -.icofont-student-alt::before { - content: "\eaee"; -} - -.icofont-student::before { - content: "\eaef"; -} - -.icofont-teacher::before { - content: "\eaf0"; -} - -.icofont-test-bulb::before { - content: "\eaf1"; -} - -.icofont-test-tube-alt::before { - content: "\eaf2"; -} - -.icofont-university::before { - content: "\eaf3"; -} - -.icofont-angry::before { - content: "\eaf4"; -} - -.icofont-astonished::before { - content: "\eaf5"; -} - -.icofont-confounded::before { - content: "\eaf6"; -} - -.icofont-confused::before { - content: "\eaf7"; -} - -.icofont-crying::before { - content: "\eaf8"; -} - -.icofont-dizzy::before { - content: "\eaf9"; -} - -.icofont-expressionless::before { - content: "\eafa"; -} - -.icofont-heart-eyes::before { - content: "\eafb"; -} - -.icofont-laughing::before { - content: "\eafc"; -} - -.icofont-nerd-smile::before { - content: "\eafd"; -} - -.icofont-open-mouth::before { - content: "\eafe"; -} - -.icofont-rage::before { - content: "\eaff"; -} - -.icofont-rolling-eyes::before { - content: "\eb00"; -} - -.icofont-sad::before { - content: "\eb01"; -} - -.icofont-simple-smile::before { - content: "\eb02"; -} - -.icofont-slightly-smile::before { - content: "\eb03"; -} - -.icofont-smirk::before { - content: "\eb04"; -} - -.icofont-stuck-out-tongue::before { - content: "\eb05"; -} - -.icofont-wink-smile::before { - content: "\eb06"; -} - -.icofont-worried::before { - content: "\eb07"; -} - -.icofont-file-alt::before { - content: "\eb08"; -} - -.icofont-file-audio::before { - content: "\eb09"; -} - -.icofont-file-avi-mp4::before { - content: "\eb0a"; -} - -.icofont-file-bmp::before { - content: "\eb0b"; -} - -.icofont-file-code::before { - content: "\eb0c"; -} - -.icofont-file-css::before { - content: "\eb0d"; -} - -.icofont-file-document::before { - content: "\eb0e"; -} - -.icofont-file-eps::before { - content: "\eb0f"; -} - -.icofont-file-excel::before { - content: "\eb10"; -} - -.icofont-file-exe::before { - content: "\eb11"; -} - -.icofont-file-file::before { - content: "\eb12"; -} - -.icofont-file-flv::before { - content: "\eb13"; -} - -.icofont-file-gif::before { - content: "\eb14"; -} - -.icofont-file-html5::before { - content: "\eb15"; -} - -.icofont-file-image::before { - content: "\eb16"; -} - -.icofont-file-iso::before { - content: "\eb17"; -} - -.icofont-file-java::before { - content: "\eb18"; -} - -.icofont-file-javascript::before { - content: "\eb19"; -} - -.icofont-file-jpg::before { - content: "\eb1a"; -} - -.icofont-file-midi::before { - content: "\eb1b"; -} - -.icofont-file-mov::before { - content: "\eb1c"; -} - -.icofont-file-mp3::before { - content: "\eb1d"; -} - -.icofont-file-pdf::before { - content: "\eb1e"; -} - -.icofont-file-php::before { - content: "\eb1f"; -} - -.icofont-file-png::before { - content: "\eb20"; -} - -.icofont-file-powerpoint::before { - content: "\eb21"; -} - -.icofont-file-presentation::before { - content: "\eb22"; -} - -.icofont-file-psb::before { - content: "\eb23"; -} - -.icofont-file-psd::before { - content: "\eb24"; -} - -.icofont-file-python::before { - content: "\eb25"; -} - -.icofont-file-ruby::before { - content: "\eb26"; -} - -.icofont-file-spreadsheet::before { - content: "\eb27"; -} - -.icofont-file-sql::before { - content: "\eb28"; -} - -.icofont-file-svg::before { - content: "\eb29"; -} - -.icofont-file-text::before { - content: "\eb2a"; -} - -.icofont-file-tiff::before { - content: "\eb2b"; -} - -.icofont-file-video::before { - content: "\eb2c"; -} - -.icofont-file-wave::before { - content: "\eb2d"; -} - -.icofont-file-wmv::before { - content: "\eb2e"; -} - -.icofont-file-word::before { - content: "\eb2f"; -} - -.icofont-file-zip::before { - content: "\eb30"; -} - -.icofont-cycling-alt::before { - content: "\eb31"; -} - -.icofont-cycling::before { - content: "\eb32"; -} - -.icofont-dumbbell::before { - content: "\eb33"; -} - -.icofont-dumbbells::before { - content: "\eb34"; -} - -.icofont-gym-alt-1::before { - content: "\eb35"; -} - -.icofont-gym-alt-2::before { - content: "\eb36"; -} - -.icofont-gym-alt-3::before { - content: "\eb37"; -} - -.icofont-gym::before { - content: "\eb38"; -} - -.icofont-muscle-weight::before { - content: "\eb39"; -} - -.icofont-muscle::before { - content: "\eb3a"; -} - -.icofont-apple::before { - content: "\eb3b"; -} - -.icofont-arabian-coffee::before { - content: "\eb3c"; -} - -.icofont-artichoke::before { - content: "\eb3d"; -} - -.icofont-asparagus::before { - content: "\eb3e"; -} - -.icofont-avocado::before { - content: "\eb3f"; -} - -.icofont-baby-food::before { - content: "\eb40"; -} - -.icofont-banana::before { - content: "\eb41"; -} - -.icofont-bbq::before { - content: "\eb42"; -} - -.icofont-beans::before { - content: "\eb43"; -} - -.icofont-beer::before { - content: "\eb44"; -} - -.icofont-bell-pepper-capsicum::before { - content: "\eb45"; -} - -.icofont-birthday-cake::before { - content: "\eb46"; -} - -.icofont-bread::before { - content: "\eb47"; -} - -.icofont-broccoli::before { - content: "\eb48"; -} - -.icofont-burger::before { - content: "\eb49"; -} - -.icofont-cabbage::before { - content: "\eb4a"; -} - -.icofont-carrot::before { - content: "\eb4b"; -} - -.icofont-cauli-flower::before { - content: "\eb4c"; -} - -.icofont-cheese::before { - content: "\eb4d"; -} - -.icofont-chef::before { - content: "\eb4e"; -} - -.icofont-cherry::before { - content: "\eb4f"; -} - -.icofont-chicken-fry::before { - content: "\eb50"; -} - -.icofont-chicken::before { - content: "\eb51"; -} - -.icofont-cocktail::before { - content: "\eb52"; -} - -.icofont-coconut-water::before { - content: "\eb53"; -} - -.icofont-coconut::before { - content: "\eb54"; -} - -.icofont-coffee-alt::before { - content: "\eb55"; -} - -.icofont-coffee-cup::before { - content: "\eb56"; -} - -.icofont-coffee-mug::before { - content: "\eb57"; -} - -.icofont-coffee-pot::before { - content: "\eb58"; -} - -.icofont-cola::before { - content: "\eb59"; -} - -.icofont-corn::before { - content: "\eb5a"; -} - -.icofont-croissant::before { - content: "\eb5b"; -} - -.icofont-crop-plant::before { - content: "\eb5c"; -} - -.icofont-cucumber::before { - content: "\eb5d"; -} - -.icofont-culinary::before { - content: "\eb5e"; -} - -.icofont-cup-cake::before { - content: "\eb5f"; -} - -.icofont-dining-table::before { - content: "\eb60"; -} - -.icofont-donut::before { - content: "\eb61"; -} - -.icofont-egg-plant::before { - content: "\eb62"; -} - -.icofont-egg-poached::before { - content: "\eb63"; -} - -.icofont-farmer-alt::before { - content: "\eb64"; -} - -.icofont-farmer::before { - content: "\eb65"; -} - -.icofont-fast-food::before { - content: "\eb66"; -} - -.icofont-food-basket::before { - content: "\eb67"; -} - -.icofont-food-cart::before { - content: "\eb68"; -} - -.icofont-fork-and-knife::before { - content: "\eb69"; -} - -.icofont-french-fries::before { - content: "\eb6a"; -} - -.icofont-fruits::before { - content: "\eb6b"; -} - -.icofont-grapes::before { - content: "\eb6c"; -} - -.icofont-honey::before { - content: "\eb6d"; -} - -.icofont-hot-dog::before { - content: "\eb6e"; -} - -.icofont-ice-cream-alt::before { - content: "\eb6f"; -} - -.icofont-ice-cream::before { - content: "\eb70"; -} - -.icofont-juice::before { - content: "\eb71"; -} - -.icofont-ketchup::before { - content: "\eb72"; -} - -.icofont-kiwi::before { - content: "\eb73"; -} - -.icofont-layered-cake::before { - content: "\eb74"; -} - -.icofont-lemon-alt::before { - content: "\eb75"; -} - -.icofont-lemon::before { - content: "\eb76"; -} - -.icofont-lobster::before { - content: "\eb77"; -} - -.icofont-mango::before { - content: "\eb78"; -} - -.icofont-milk::before { - content: "\eb79"; -} - -.icofont-mushroom::before { - content: "\eb7a"; -} - -.icofont-noodles::before { - content: "\eb7b"; -} - -.icofont-onion::before { - content: "\eb7c"; -} - -.icofont-orange::before { - content: "\eb7d"; -} - -.icofont-pear::before { - content: "\eb7e"; -} - -.icofont-peas::before { - content: "\eb7f"; -} - -.icofont-pepper::before { - content: "\eb80"; -} - -.icofont-pie-alt::before { - content: "\eb81"; -} - -.icofont-pie::before { - content: "\eb82"; -} - -.icofont-pineapple::before { - content: "\eb83"; -} - -.icofont-pizza-slice::before { - content: "\eb84"; -} - -.icofont-pizza::before { - content: "\eb85"; -} - -.icofont-plant::before { - content: "\eb86"; -} - -.icofont-popcorn::before { - content: "\eb87"; -} - -.icofont-potato::before { - content: "\eb88"; -} - -.icofont-pumpkin::before { - content: "\eb89"; -} - -.icofont-raddish::before { - content: "\eb8a"; -} - -.icofont-restaurant-menu::before { - content: "\eb8b"; -} - -.icofont-restaurant::before { - content: "\eb8c"; -} - -.icofont-salt-and-pepper::before { - content: "\eb8d"; -} - -.icofont-sandwich::before { - content: "\eb8e"; -} - -.icofont-sausage::before { - content: "\eb8f"; -} - -.icofont-soft-drinks::before { - content: "\eb90"; -} - -.icofont-soup-bowl::before { - content: "\eb91"; -} - -.icofont-spoon-and-fork::before { - content: "\eb92"; -} - -.icofont-steak::before { - content: "\eb93"; -} - -.icofont-strawberry::before { - content: "\eb94"; -} - -.icofont-sub-sandwich::before { - content: "\eb95"; -} - -.icofont-sushi::before { - content: "\eb96"; -} - -.icofont-taco::before { - content: "\eb97"; -} - -.icofont-tea-pot::before { - content: "\eb98"; -} - -.icofont-tea::before { - content: "\eb99"; -} - -.icofont-tomato::before { - content: "\eb9a"; -} - -.icofont-watermelon::before { - content: "\eb9b"; -} - -.icofont-wheat::before { - content: "\eb9c"; -} - -.icofont-baby-backpack::before { - content: "\eb9d"; -} - -.icofont-baby-cloth::before { - content: "\eb9e"; -} - -.icofont-baby-milk-bottle::before { - content: "\eb9f"; -} - -.icofont-baby-trolley::before { - content: "\eba0"; -} - -.icofont-baby::before { - content: "\eba1"; -} - -.icofont-candy::before { - content: "\eba2"; -} - -.icofont-holding-hands::before { - content: "\eba3"; -} - -.icofont-infant-nipple::before { - content: "\eba4"; -} - -.icofont-kids-scooter::before { - content: "\eba5"; -} - -.icofont-safety-pin::before { - content: "\eba6"; -} - -.icofont-teddy-bear::before { - content: "\eba7"; -} - -.icofont-toy-ball::before { - content: "\eba8"; -} - -.icofont-toy-cat::before { - content: "\eba9"; -} - -.icofont-toy-duck::before { - content: "\ebaa"; -} - -.icofont-toy-elephant::before { - content: "\ebab"; -} - -.icofont-toy-hand::before { - content: "\ebac"; -} - -.icofont-toy-horse::before { - content: "\ebad"; -} - -.icofont-toy-lattu::before { - content: "\ebae"; -} - -.icofont-toy-train::before { - content: "\ebaf"; -} - -.icofont-burglar::before { - content: "\ebb0"; -} - -.icofont-cannon-firing::before { - content: "\ebb1"; -} - -.icofont-cc-camera::before { - content: "\ebb2"; -} - -.icofont-cop-badge::before { - content: "\ebb3"; -} - -.icofont-cop::before { - content: "\ebb4"; -} - -.icofont-court-hammer::before { - content: "\ebb5"; -} - -.icofont-court::before { - content: "\ebb6"; -} - -.icofont-finger-print::before { - content: "\ebb7"; -} - -.icofont-gavel::before { - content: "\ebb8"; -} - -.icofont-handcuff-alt::before { - content: "\ebb9"; -} - -.icofont-handcuff::before { - content: "\ebba"; -} - -.icofont-investigation::before { - content: "\ebbb"; -} - -.icofont-investigator::before { - content: "\ebbc"; -} - -.icofont-jail::before { - content: "\ebbd"; -} - -.icofont-judge::before { - content: "\ebbe"; -} - -.icofont-law-alt-1::before { - content: "\ebbf"; -} - -.icofont-law-alt-2::before { - content: "\ebc0"; -} - -.icofont-law-alt-3::before { - content: "\ebc1"; -} - -.icofont-law-book::before { - content: "\ebc2"; -} - -.icofont-law-document::before { - content: "\ebc3"; -} - -.icofont-law-order::before { - content: "\ebc4"; -} - -.icofont-law-protect::before { - content: "\ebc5"; -} - -.icofont-law-scales::before { - content: "\ebc6"; -} - -.icofont-law::before { - content: "\ebc7"; -} - -.icofont-lawyer-alt-1::before { - content: "\ebc8"; -} - -.icofont-lawyer-alt-2::before { - content: "\ebc9"; -} - -.icofont-lawyer::before { - content: "\ebca"; -} - -.icofont-legal::before { - content: "\ebcb"; -} - -.icofont-pistol::before { - content: "\ebcc"; -} - -.icofont-police-badge::before { - content: "\ebcd"; -} - -.icofont-police-cap::before { - content: "\ebce"; -} - -.icofont-police-car-alt-1::before { - content: "\ebcf"; -} - -.icofont-police-car-alt-2::before { - content: "\ebd0"; -} - -.icofont-police-car::before { - content: "\ebd1"; -} - -.icofont-police-hat::before { - content: "\ebd2"; -} - -.icofont-police-van::before { - content: "\ebd3"; -} - -.icofont-police::before { - content: "\ebd4"; -} - -.icofont-thief-alt::before { - content: "\ebd5"; -} - -.icofont-thief::before { - content: "\ebd6"; -} - -.icofont-abacus-alt::before { - content: "\ebd7"; -} - -.icofont-abacus::before { - content: "\ebd8"; -} - -.icofont-angle-180::before { - content: "\ebd9"; -} - -.icofont-angle-45::before { - content: "\ebda"; -} - -.icofont-angle-90::before { - content: "\ebdb"; -} - -.icofont-angle::before { - content: "\ebdc"; -} - -.icofont-calculator-alt-1::before { - content: "\ebdd"; -} - -.icofont-calculator-alt-2::before { - content: "\ebde"; -} - -.icofont-calculator::before { - content: "\ebdf"; -} - -.icofont-circle-ruler-alt::before { - content: "\ebe0"; -} - -.icofont-circle-ruler::before { - content: "\ebe1"; -} - -.icofont-compass-alt-1::before { - content: "\ebe2"; -} - -.icofont-compass-alt-2::before { - content: "\ebe3"; -} - -.icofont-compass-alt-3::before { - content: "\ebe4"; -} - -.icofont-compass-alt-4::before { - content: "\ebe5"; -} - -.icofont-golden-ratio::before { - content: "\ebe6"; -} - -.icofont-marker-alt-1::before { - content: "\ebe7"; -} - -.icofont-marker-alt-2::before { - content: "\ebe8"; -} - -.icofont-marker-alt-3::before { - content: "\ebe9"; -} - -.icofont-marker::before { - content: "\ebea"; -} - -.icofont-math::before { - content: "\ebeb"; -} - -.icofont-mathematical-alt-1::before { - content: "\ebec"; -} - -.icofont-mathematical-alt-2::before { - content: "\ebed"; -} - -.icofont-mathematical::before { - content: "\ebee"; -} - -.icofont-pen-alt-1::before { - content: "\ebef"; -} - -.icofont-pen-alt-2::before { - content: "\ebf0"; -} - -.icofont-pen-alt-3::before { - content: "\ebf1"; -} - -.icofont-pen-holder-alt-1::before { - content: "\ebf2"; -} - -.icofont-pen-holder::before { - content: "\ebf3"; -} - -.icofont-pen::before { - content: "\ebf4"; -} - -.icofont-pencil-alt-1::before { - content: "\ebf5"; -} - -.icofont-pencil-alt-2::before { - content: "\ebf6"; -} - -.icofont-pencil-alt-3::before { - content: "\ebf7"; -} - -.icofont-pencil-alt-4::before { - content: "\ebf8"; -} - -.icofont-pencil::before { - content: "\ebf9"; -} - -.icofont-ruler-alt-1::before { - content: "\ebfa"; -} - -.icofont-ruler-alt-2::before { - content: "\ebfb"; -} - -.icofont-ruler-compass-alt::before { - content: "\ebfc"; -} - -.icofont-ruler-compass::before { - content: "\ebfd"; -} - -.icofont-ruler-pencil-alt-1::before { - content: "\ebfe"; -} - -.icofont-ruler-pencil-alt-2::before { - content: "\ebff"; -} - -.icofont-ruler-pencil::before { - content: "\ec00"; -} - -.icofont-ruler::before { - content: "\ec01"; -} - -.icofont-rulers-alt::before { - content: "\ec02"; -} - -.icofont-rulers::before { - content: "\ec03"; -} - -.icofont-square-root::before { - content: "\ec04"; -} - -.icofont-ui-calculator::before { - content: "\ec05"; -} - -.icofont-aids::before { - content: "\ec06"; -} - -.icofont-ambulance-crescent::before { - content: "\ec07"; -} - -.icofont-ambulance-cross::before { - content: "\ec08"; -} - -.icofont-ambulance::before { - content: "\ec09"; -} - -.icofont-autism::before { - content: "\ec0a"; -} - -.icofont-bandage::before { - content: "\ec0b"; -} - -.icofont-blind::before { - content: "\ec0c"; -} - -.icofont-blood-drop::before { - content: "\ec0d"; -} - -.icofont-blood-test::before { - content: "\ec0e"; -} - -.icofont-blood::before { - content: "\ec0f"; -} - -.icofont-brain-alt::before { - content: "\ec10"; -} - -.icofont-brain::before { - content: "\ec11"; -} - -.icofont-capsule::before { - content: "\ec12"; -} - -.icofont-crutch::before { - content: "\ec13"; -} - -.icofont-disabled::before { - content: "\ec14"; -} - -.icofont-dna-alt-1::before { - content: "\ec15"; -} - -.icofont-dna-alt-2::before { - content: "\ec16"; -} - -.icofont-dna::before { - content: "\ec17"; -} - -.icofont-doctor-alt::before { - content: "\ec18"; -} - -.icofont-doctor::before { - content: "\ec19"; -} - -.icofont-drug-pack::before { - content: "\ec1a"; -} - -.icofont-drug::before { - content: "\ec1b"; -} - -.icofont-first-aid-alt::before { - content: "\ec1c"; -} - -.icofont-first-aid::before { - content: "\ec1d"; -} - -.icofont-heart-beat-alt::before { - content: "\ec1e"; -} - -.icofont-heart-beat::before { - content: "\ec1f"; -} - -.icofont-heartbeat::before { - content: "\ec20"; -} - -.icofont-herbal::before { - content: "\ec21"; -} - -.icofont-hospital::before { - content: "\ec22"; -} - -.icofont-icu::before { - content: "\ec23"; -} - -.icofont-injection-syringe::before { - content: "\ec24"; -} - -.icofont-laboratory::before { - content: "\ec25"; -} - -.icofont-medical-sign-alt::before { - content: "\ec26"; -} - -.icofont-medical-sign::before { - content: "\ec27"; -} - -.icofont-nurse-alt::before { - content: "\ec28"; -} - -.icofont-nurse::before { - content: "\ec29"; -} - -.icofont-nursing-home::before { - content: "\ec2a"; -} - -.icofont-operation-theater::before { - content: "\ec2b"; -} - -.icofont-paralysis-disability::before { - content: "\ec2c"; -} - -.icofont-patient-bed::before { - content: "\ec2d"; -} - -.icofont-patient-file::before { - content: "\ec2e"; -} - -.icofont-pills::before { - content: "\ec2f"; -} - -.icofont-prescription::before { - content: "\ec30"; -} - -.icofont-pulse::before { - content: "\ec31"; -} - -.icofont-stethoscope-alt::before { - content: "\ec32"; -} - -.icofont-stethoscope::before { - content: "\ec33"; -} - -.icofont-stretcher::before { - content: "\ec34"; -} - -.icofont-surgeon-alt::before { - content: "\ec35"; -} - -.icofont-surgeon::before { - content: "\ec36"; -} - -.icofont-tablets::before { - content: "\ec37"; -} - -.icofont-test-bottle::before { - content: "\ec38"; -} - -.icofont-test-tube::before { - content: "\ec39"; -} - -.icofont-thermometer-alt::before { - content: "\ec3a"; -} - -.icofont-thermometer::before { - content: "\ec3b"; -} - -.icofont-tooth::before { - content: "\ec3c"; -} - -.icofont-xray::before { - content: "\ec3d"; -} - -.icofont-ui-add::before { - content: "\ec3e"; -} - -.icofont-ui-alarm::before { - content: "\ec3f"; -} - -.icofont-ui-battery::before { - content: "\ec40"; -} - -.icofont-ui-block::before { - content: "\ec41"; -} - -.icofont-ui-bluetooth::before { - content: "\ec42"; -} - -.icofont-ui-brightness::before { - content: "\ec43"; -} - -.icofont-ui-browser::before { - content: "\ec44"; -} - -.icofont-ui-calendar::before { - content: "\ec45"; -} - -.icofont-ui-call::before { - content: "\ec46"; -} - -.icofont-ui-camera::before { - content: "\ec47"; -} - -.icofont-ui-cart::before { - content: "\ec48"; -} - -.icofont-ui-cell-phone::before { - content: "\ec49"; -} - -.icofont-ui-chat::before { - content: "\ec4a"; -} - -.icofont-ui-check::before { - content: "\ec4b"; -} - -.icofont-ui-clip-board::before { - content: "\ec4c"; -} - -.icofont-ui-clip::before { - content: "\ec4d"; -} - -.icofont-ui-clock::before { - content: "\ec4e"; -} - -.icofont-ui-close::before { - content: "\ec4f"; -} - -.icofont-ui-contact-list::before { - content: "\ec50"; -} - -.icofont-ui-copy::before { - content: "\ec51"; -} - -.icofont-ui-cut::before { - content: "\ec52"; -} - -.icofont-ui-delete::before { - content: "\ec53"; -} - -.icofont-ui-dial-phone::before { - content: "\ec54"; -} - -.icofont-ui-edit::before { - content: "\ec55"; -} - -.icofont-ui-email::before { - content: "\ec56"; -} - -.icofont-ui-file::before { - content: "\ec57"; -} - -.icofont-ui-fire-wall::before { - content: "\ec58"; -} - -.icofont-ui-flash-light::before { - content: "\ec59"; -} - -.icofont-ui-flight::before { - content: "\ec5a"; -} - -.icofont-ui-folder::before { - content: "\ec5b"; -} - -.icofont-ui-game::before { - content: "\ec5c"; -} - -.icofont-ui-handicapped::before { - content: "\ec5d"; -} - -.icofont-ui-home::before { - content: "\ec5e"; -} - -.icofont-ui-image::before { - content: "\ec5f"; -} - -.icofont-ui-laoding::before { - content: "\ec60"; -} - -.icofont-ui-lock::before { - content: "\ec61"; -} - -.icofont-ui-love-add::before { - content: "\ec62"; -} - -.icofont-ui-love-broken::before { - content: "\ec63"; -} - -.icofont-ui-love-remove::before { - content: "\ec64"; -} - -.icofont-ui-love::before { - content: "\ec65"; -} - -.icofont-ui-map::before { - content: "\ec66"; -} - -.icofont-ui-message::before { - content: "\ec67"; -} - -.icofont-ui-messaging::before { - content: "\ec68"; -} - -.icofont-ui-movie::before { - content: "\ec69"; -} - -.icofont-ui-music-player::before { - content: "\ec6a"; -} - -.icofont-ui-music::before { - content: "\ec6b"; -} - -.icofont-ui-mute::before { - content: "\ec6c"; -} - -.icofont-ui-network::before { - content: "\ec6d"; -} - -.icofont-ui-next::before { - content: "\ec6e"; -} - -.icofont-ui-note::before { - content: "\ec6f"; -} - -.icofont-ui-office::before { - content: "\ec70"; -} - -.icofont-ui-password::before { - content: "\ec71"; -} - -.icofont-ui-pause::before { - content: "\ec72"; -} - -.icofont-ui-play-stop::before { - content: "\ec73"; -} - -.icofont-ui-play::before { - content: "\ec74"; -} - -.icofont-ui-pointer::before { - content: "\ec75"; -} - -.icofont-ui-power::before { - content: "\ec76"; -} - -.icofont-ui-press::before { - content: "\ec77"; -} - -.icofont-ui-previous::before { - content: "\ec78"; -} - -.icofont-ui-rate-add::before { - content: "\ec79"; -} - -.icofont-ui-rate-blank::before { - content: "\ec7a"; -} - -.icofont-ui-rate-remove::before { - content: "\ec7b"; -} - -.icofont-ui-rating::before { - content: "\ec7c"; -} - -.icofont-ui-record::before { - content: "\ec7d"; -} - -.icofont-ui-remove::before { - content: "\ec7e"; -} - -.icofont-ui-reply::before { - content: "\ec7f"; -} - -.icofont-ui-rotation::before { - content: "\ec80"; -} - -.icofont-ui-rss::before { - content: "\ec81"; -} - -.icofont-ui-search::before { - content: "\ec82"; -} - -.icofont-ui-settings::before { - content: "\ec83"; -} - -.icofont-ui-social-link::before { - content: "\ec84"; -} - -.icofont-ui-tag::before { - content: "\ec85"; -} - -.icofont-ui-text-chat::before { - content: "\ec86"; -} - -.icofont-ui-text-loading::before { - content: "\ec87"; -} - -.icofont-ui-theme::before { - content: "\ec88"; -} - -.icofont-ui-timer::before { - content: "\ec89"; -} - -.icofont-ui-touch-phone::before { - content: "\ec8a"; -} - -.icofont-ui-travel::before { - content: "\ec8b"; -} - -.icofont-ui-unlock::before { - content: "\ec8c"; -} - -.icofont-ui-user-group::before { - content: "\ec8d"; -} - -.icofont-ui-user::before { - content: "\ec8e"; -} - -.icofont-ui-v-card::before { - content: "\ec8f"; -} - -.icofont-ui-video-chat::before { - content: "\ec90"; -} - -.icofont-ui-video-message::before { - content: "\ec91"; -} - -.icofont-ui-video-play::before { - content: "\ec92"; -} - -.icofont-ui-video::before { - content: "\ec93"; -} - -.icofont-ui-volume::before { - content: "\ec94"; -} - -.icofont-ui-weather::before { - content: "\ec95"; -} - -.icofont-ui-wifi::before { - content: "\ec96"; -} - -.icofont-ui-zoom-in::before { - content: "\ec97"; -} - -.icofont-ui-zoom-out::before { - content: "\ec98"; -} - -.icofont-cassette-player::before { - content: "\ec99"; -} - -.icofont-cassette::before { - content: "\ec9a"; -} - -.icofont-forward::before { - content: "\ec9b"; -} - -.icofont-guiter::before { - content: "\ec9c"; -} - -.icofont-movie::before { - content: "\ec9d"; -} - -.icofont-multimedia::before { - content: "\ec9e"; -} - -.icofont-music-alt::before { - content: "\ec9f"; -} - -.icofont-music-disk::before { - content: "\eca0"; -} - -.icofont-music-note::before { - content: "\eca1"; -} - -.icofont-music-notes::before { - content: "\eca2"; -} - -.icofont-music::before { - content: "\eca3"; -} - -.icofont-mute-volume::before { - content: "\eca4"; -} - -.icofont-pause::before { - content: "\eca5"; -} - -.icofont-play-alt-1::before { - content: "\eca6"; -} - -.icofont-play-alt-2::before { - content: "\eca7"; -} - -.icofont-play-alt-3::before { - content: "\eca8"; -} - -.icofont-play-pause::before { - content: "\eca9"; -} - -.icofont-play::before { - content: "\ecaa"; -} - -.icofont-record::before { - content: "\ecab"; -} - -.icofont-retro-music-disk::before { - content: "\ecac"; -} - -.icofont-rewind::before { - content: "\ecad"; -} - -.icofont-song-notes::before { - content: "\ecae"; -} - -.icofont-sound-wave-alt::before { - content: "\ecaf"; -} - -.icofont-sound-wave::before { - content: "\ecb0"; -} - -.icofont-stop::before { - content: "\ecb1"; -} - -.icofont-video-alt::before { - content: "\ecb2"; -} - -.icofont-video-cam::before { - content: "\ecb3"; -} - -.icofont-video-clapper::before { - content: "\ecb4"; -} - -.icofont-video::before { - content: "\ecb5"; -} - -.icofont-volume-bar::before { - content: "\ecb6"; -} - -.icofont-volume-down::before { - content: "\ecb7"; -} - -.icofont-volume-mute::before { - content: "\ecb8"; -} - -.icofont-volume-off::before { - content: "\ecb9"; -} - -.icofont-volume-up::before { - content: "\ecba"; -} - -.icofont-youtube-play::before { - content: "\ecbb"; -} - -.icofont-2checkout-alt::before { - content: "\ecbc"; -} - -.icofont-2checkout::before { - content: "\ecbd"; -} - -.icofont-amazon-alt::before { - content: "\ecbe"; -} - -.icofont-amazon::before { - content: "\ecbf"; -} - -.icofont-american-express-alt::before { - content: "\ecc0"; -} - -.icofont-american-express::before { - content: "\ecc1"; -} - -.icofont-apple-pay-alt::before { - content: "\ecc2"; -} - -.icofont-apple-pay::before { - content: "\ecc3"; -} - -.icofont-bank-transfer-alt::before { - content: "\ecc4"; -} - -.icofont-bank-transfer::before { - content: "\ecc5"; -} - -.icofont-braintree-alt::before { - content: "\ecc6"; -} - -.icofont-braintree::before { - content: "\ecc7"; -} - -.icofont-cash-on-delivery-alt::before { - content: "\ecc8"; -} - -.icofont-cash-on-delivery::before { - content: "\ecc9"; -} - -.icofont-diners-club-alt-1::before { - content: "\ecca"; -} - -.icofont-diners-club-alt-2::before { - content: "\eccb"; -} - -.icofont-diners-club-alt-3::before { - content: "\eccc"; -} - -.icofont-diners-club::before { - content: "\eccd"; -} - -.icofont-discover-alt::before { - content: "\ecce"; -} - -.icofont-discover::before { - content: "\eccf"; -} - -.icofont-eway-alt::before { - content: "\ecd0"; -} - -.icofont-eway::before { - content: "\ecd1"; -} - -.icofont-google-wallet-alt-1::before { - content: "\ecd2"; -} - -.icofont-google-wallet-alt-2::before { - content: "\ecd3"; -} - -.icofont-google-wallet-alt-3::before { - content: "\ecd4"; -} - -.icofont-google-wallet::before { - content: "\ecd5"; -} - -.icofont-jcb-alt::before { - content: "\ecd6"; -} - -.icofont-jcb::before { - content: "\ecd7"; -} - -.icofont-maestro-alt::before { - content: "\ecd8"; -} - -.icofont-maestro::before { - content: "\ecd9"; -} - -.icofont-mastercard-alt::before { - content: "\ecda"; -} - -.icofont-mastercard::before { - content: "\ecdb"; -} - -.icofont-payoneer-alt::before { - content: "\ecdc"; -} - -.icofont-payoneer::before { - content: "\ecdd"; -} - -.icofont-paypal-alt::before { - content: "\ecde"; -} - -.icofont-paypal::before { - content: "\ecdf"; -} - -.icofont-sage-alt::before { - content: "\ece0"; -} - -.icofont-sage::before { - content: "\ece1"; -} - -.icofont-skrill-alt::before { - content: "\ece2"; -} - -.icofont-skrill::before { - content: "\ece3"; -} - -.icofont-stripe-alt::before { - content: "\ece4"; -} - -.icofont-stripe::before { - content: "\ece5"; -} - -.icofont-visa-alt::before { - content: "\ece6"; -} - -.icofont-visa-electron::before { - content: "\ece7"; -} - -.icofont-visa::before { - content: "\ece8"; -} - -.icofont-western-union-alt::before { - content: "\ece9"; -} - -.icofont-western-union::before { - content: "\ecea"; -} - -.icofont-boy::before { - content: "\eceb"; -} - -.icofont-business-man-alt-1::before { - content: "\ecec"; -} - -.icofont-business-man-alt-2::before { - content: "\eced"; -} - -.icofont-business-man-alt-3::before { - content: "\ecee"; -} - -.icofont-business-man::before { - content: "\ecef"; -} - -.icofont-female::before { - content: "\ecf0"; -} - -.icofont-funky-man::before { - content: "\ecf1"; -} - -.icofont-girl-alt::before { - content: "\ecf2"; -} - -.icofont-girl::before { - content: "\ecf3"; -} - -.icofont-group::before { - content: "\ecf4"; -} - -.icofont-hotel-boy-alt::before { - content: "\ecf5"; -} - -.icofont-hotel-boy::before { - content: "\ecf6"; -} - -.icofont-kid::before { - content: "\ecf7"; -} - -.icofont-man-in-glasses::before { - content: "\ecf8"; -} - -.icofont-people::before { - content: "\ecf9"; -} - -.icofont-support::before { - content: "\ecfa"; -} - -.icofont-user-alt-1::before { - content: "\ecfb"; -} - -.icofont-user-alt-2::before { - content: "\ecfc"; -} - -.icofont-user-alt-3::before { - content: "\ecfd"; -} - -.icofont-user-alt-4::before { - content: "\ecfe"; -} - -.icofont-user-alt-5::before { - content: "\ecff"; -} - -.icofont-user-alt-6::before { - content: "\ed00"; -} - -.icofont-user-alt-7::before { - content: "\ed01"; -} - -.icofont-user-female::before { - content: "\ed02"; -} - -.icofont-user-male::before { - content: "\ed03"; -} - -.icofont-user-suited::before { - content: "\ed04"; -} - -.icofont-user::before { - content: "\ed05"; -} - -.icofont-users-alt-1::before { - content: "\ed06"; -} - -.icofont-users-alt-2::before { - content: "\ed07"; -} - -.icofont-users-alt-3::before { - content: "\ed08"; -} - -.icofont-users-alt-4::before { - content: "\ed09"; -} - -.icofont-users-alt-5::before { - content: "\ed0a"; -} - -.icofont-users-alt-6::before { - content: "\ed0b"; -} - -.icofont-users-social::before { - content: "\ed0c"; -} - -.icofont-users::before { - content: "\ed0d"; -} - -.icofont-waiter-alt::before { - content: "\ed0e"; -} - -.icofont-waiter::before { - content: "\ed0f"; -} - -.icofont-woman-in-glasses::before { - content: "\ed10"; -} - -.icofont-search-1::before { - content: "\ed11"; -} - -.icofont-search-2::before { - content: "\ed12"; -} - -.icofont-search-document::before { - content: "\ed13"; -} - -.icofont-search-folder::before { - content: "\ed14"; -} - -.icofont-search-job::before { - content: "\ed15"; -} - -.icofont-search-map::before { - content: "\ed16"; -} - -.icofont-search-property::before { - content: "\ed17"; -} - -.icofont-search-restaurant::before { - content: "\ed18"; -} - -.icofont-search-stock::before { - content: "\ed19"; -} - -.icofont-search-user::before { - content: "\ed1a"; -} - -.icofont-search::before { - content: "\ed1b"; -} - -.icofont-500px::before { - content: "\ed1c"; -} - -.icofont-aim::before { - content: "\ed1d"; -} - -.icofont-badoo::before { - content: "\ed1e"; -} - -.icofont-baidu-tieba::before { - content: "\ed1f"; -} - -.icofont-bbm-messenger::before { - content: "\ed20"; -} - -.icofont-bebo::before { - content: "\ed21"; -} - -.icofont-behance::before { - content: "\ed22"; -} - -.icofont-blogger::before { - content: "\ed23"; -} - -.icofont-bootstrap::before { - content: "\ed24"; -} - -.icofont-brightkite::before { - content: "\ed25"; -} - -.icofont-cloudapp::before { - content: "\ed26"; -} - -.icofont-concrete5::before { - content: "\ed27"; -} - -.icofont-delicious::before { - content: "\ed28"; -} - -.icofont-designbump::before { - content: "\ed29"; -} - -.icofont-designfloat::before { - content: "\ed2a"; -} - -.icofont-deviantart::before { - content: "\ed2b"; -} - -.icofont-digg::before { - content: "\ed2c"; -} - -.icofont-dotcms::before { - content: "\ed2d"; -} - -.icofont-dribbble::before { - content: "\ed2e"; -} - -.icofont-dribble::before { - content: "\ed2f"; -} - -.icofont-dropbox::before { - content: "\ed30"; -} - -.icofont-ebuddy::before { - content: "\ed31"; -} - -.icofont-ello::before { - content: "\ed32"; -} - -.icofont-ember::before { - content: "\ed33"; -} - -.icofont-envato::before { - content: "\ed34"; -} - -.icofont-evernote::before { - content: "\ed35"; -} - -.icofont-facebook-messenger::before { - content: "\ed36"; -} - -.icofont-facebook::before { - content: "\ed37"; -} - -.icofont-feedburner::before { - content: "\ed38"; -} - -.icofont-flikr::before { - content: "\ed39"; -} - -.icofont-folkd::before { - content: "\ed3a"; -} - -.icofont-foursquare::before { - content: "\ed3b"; -} - -.icofont-friendfeed::before { - content: "\ed3c"; -} - -.icofont-ghost::before { - content: "\ed3d"; -} - -.icofont-github::before { - content: "\ed3e"; -} - -.icofont-gnome::before { - content: "\ed3f"; -} - -.icofont-google-buzz::before { - content: "\ed40"; -} - -.icofont-google-hangouts::before { - content: "\ed41"; -} - -.icofont-google-map::before { - content: "\ed42"; -} - -.icofont-google-plus::before { - content: "\ed43"; -} - -.icofont-google-talk::before { - content: "\ed44"; -} - -.icofont-hype-machine::before { - content: "\ed45"; -} - -.icofont-instagram::before { - content: "\ed46"; -} - -.icofont-kakaotalk::before { - content: "\ed47"; -} - -.icofont-kickstarter::before { - content: "\ed48"; -} - -.icofont-kik::before { - content: "\ed49"; -} - -.icofont-kiwibox::before { - content: "\ed4a"; -} - -.icofont-line-messenger::before { - content: "\ed4b"; -} - -.icofont-line::before { - content: "\ed4c"; -} - -.icofont-linkedin::before { - content: "\ed4d"; -} - -.icofont-linux-mint::before { - content: "\ed4e"; -} - -.icofont-live-messenger::before { - content: "\ed4f"; -} - -.icofont-livejournal::before { - content: "\ed50"; -} - -.icofont-magento::before { - content: "\ed51"; -} - -.icofont-meetme::before { - content: "\ed52"; -} - -.icofont-meetup::before { - content: "\ed53"; -} - -.icofont-mixx::before { - content: "\ed54"; -} - -.icofont-newsvine::before { - content: "\ed55"; -} - -.icofont-nimbuss::before { - content: "\ed56"; -} - -.icofont-odnoklassniki::before { - content: "\ed57"; -} - -.icofont-opencart::before { - content: "\ed58"; -} - -.icofont-oscommerce::before { - content: "\ed59"; -} - -.icofont-pandora::before { - content: "\ed5a"; -} - -.icofont-photobucket::before { - content: "\ed5b"; -} - -.icofont-picasa::before { - content: "\ed5c"; -} - -.icofont-pinterest::before { - content: "\ed5d"; -} - -.icofont-prestashop::before { - content: "\ed5e"; -} - -.icofont-qik::before { - content: "\ed5f"; -} - -.icofont-qq::before { - content: "\ed60"; -} - -.icofont-readernaut::before { - content: "\ed61"; -} - -.icofont-reddit::before { - content: "\ed62"; -} - -.icofont-renren::before { - content: "\ed63"; -} - -.icofont-rss::before { - content: "\ed64"; -} - -.icofont-shopify::before { - content: "\ed65"; -} - -.icofont-silverstripe::before { - content: "\ed66"; -} - -.icofont-skype::before { - content: "\ed67"; -} - -.icofont-slack::before { - content: "\ed68"; -} - -.icofont-slashdot::before { - content: "\ed69"; -} - -.icofont-slidshare::before { - content: "\ed6a"; -} - -.icofont-smugmug::before { - content: "\ed6b"; -} - -.icofont-snapchat::before { - content: "\ed6c"; -} - -.icofont-soundcloud::before { - content: "\ed6d"; -} - -.icofont-spotify::before { - content: "\ed6e"; -} - -.icofont-stack-exchange::before { - content: "\ed6f"; -} - -.icofont-stack-overflow::before { - content: "\ed70"; -} - -.icofont-steam::before { - content: "\ed71"; -} - -.icofont-stumbleupon::before { - content: "\ed72"; -} - -.icofont-tagged::before { - content: "\ed73"; -} - -.icofont-technorati::before { - content: "\ed74"; -} - -.icofont-telegram::before { - content: "\ed75"; -} - -.icofont-tinder::before { - content: "\ed76"; -} - -.icofont-trello::before { - content: "\ed77"; -} - -.icofont-tumblr::before { - content: "\ed78"; -} - -.icofont-twitch::before { - content: "\ed79"; -} - -.icofont-twitter::before { - content: "\ed7a"; -} - -.icofont-typo3::before { - content: "\ed7b"; -} - -.icofont-ubercart::before { - content: "\ed7c"; -} - -.icofont-viber::before { - content: "\ed7d"; -} - -.icofont-viddler::before { - content: "\ed7e"; -} - -.icofont-vimeo::before { - content: "\ed7f"; -} - -.icofont-vine::before { - content: "\ed80"; -} - -.icofont-virb::before { - content: "\ed81"; -} - -.icofont-virtuemart::before { - content: "\ed82"; -} - -.icofont-vk::before { - content: "\ed83"; -} - -.icofont-wechat::before { - content: "\ed84"; -} - -.icofont-weibo::before { - content: "\ed85"; -} - -.icofont-whatsapp::before { - content: "\ed86"; -} - -.icofont-xing::before { - content: "\ed87"; -} - -.icofont-yahoo::before { - content: "\ed88"; -} - -.icofont-yelp::before { - content: "\ed89"; -} - -.icofont-youku::before { - content: "\ed8a"; -} - -.icofont-youtube::before { - content: "\ed8b"; -} - -.icofont-zencart::before { - content: "\ed8c"; -} - -.icofont-badminton-birdie::before { - content: "\ed8d"; -} - -.icofont-baseball::before { - content: "\ed8e"; -} - -.icofont-baseballer::before { - content: "\ed8f"; -} - -.icofont-basketball-hoop::before { - content: "\ed90"; -} - -.icofont-basketball::before { - content: "\ed91"; -} - -.icofont-billiard-ball::before { - content: "\ed92"; -} - -.icofont-boot-alt-1::before { - content: "\ed93"; -} - -.icofont-boot-alt-2::before { - content: "\ed94"; -} - -.icofont-boot::before { - content: "\ed95"; -} - -.icofont-bowling-alt::before { - content: "\ed96"; -} - -.icofont-bowling::before { - content: "\ed97"; -} - -.icofont-canoe::before { - content: "\ed98"; -} - -.icofont-cheer-leader::before { - content: "\ed99"; -} - -.icofont-climbing::before { - content: "\ed9a"; -} - -.icofont-corner::before { - content: "\ed9b"; -} - -.icofont-field-alt::before { - content: "\ed9c"; -} - -.icofont-field::before { - content: "\ed9d"; -} - -.icofont-football-alt::before { - content: "\ed9e"; -} - -.icofont-football-american::before { - content: "\ed9f"; -} - -.icofont-football::before { - content: "\eda0"; -} - -.icofont-foul::before { - content: "\eda1"; -} - -.icofont-goal-keeper::before { - content: "\eda2"; -} - -.icofont-goal::before { - content: "\eda3"; -} - -.icofont-golf-alt::before { - content: "\eda4"; -} - -.icofont-golf-bag::before { - content: "\eda5"; -} - -.icofont-golf-cart::before { - content: "\eda6"; -} - -.icofont-golf-field::before { - content: "\eda7"; -} - -.icofont-golf::before { - content: "\eda8"; -} - -.icofont-golfer::before { - content: "\eda9"; -} - -.icofont-helmet::before { - content: "\edaa"; -} - -.icofont-hockey-alt::before { - content: "\edab"; -} - -.icofont-hockey::before { - content: "\edac"; -} - -.icofont-ice-skate::before { - content: "\edad"; -} - -.icofont-jersey-alt::before { - content: "\edae"; -} - -.icofont-jersey::before { - content: "\edaf"; -} - -.icofont-jumping::before { - content: "\edb0"; -} - -.icofont-kick::before { - content: "\edb1"; -} - -.icofont-leg::before { - content: "\edb2"; -} - -.icofont-match-review::before { - content: "\edb3"; -} - -.icofont-medal-sport::before { - content: "\edb4"; -} - -.icofont-offside::before { - content: "\edb5"; -} - -.icofont-olympic-logo::before { - content: "\edb6"; -} - -.icofont-olympic::before { - content: "\edb7"; -} - -.icofont-padding::before { - content: "\edb8"; -} - -.icofont-penalty-card::before { - content: "\edb9"; -} - -.icofont-racer::before { - content: "\edba"; -} - -.icofont-racing-car::before { - content: "\edbb"; -} - -.icofont-racing-flag-alt::before { - content: "\edbc"; -} - -.icofont-racing-flag::before { - content: "\edbd"; -} - -.icofont-racings-wheel::before { - content: "\edbe"; -} - -.icofont-referee::before { - content: "\edbf"; -} - -.icofont-refree-jersey::before { - content: "\edc0"; -} - -.icofont-result-sport::before { - content: "\edc1"; -} - -.icofont-rugby-ball::before { - content: "\edc2"; -} - -.icofont-rugby-player::before { - content: "\edc3"; -} - -.icofont-rugby::before { - content: "\edc4"; -} - -.icofont-runner-alt-1::before { - content: "\edc5"; -} - -.icofont-runner-alt-2::before { - content: "\edc6"; -} - -.icofont-runner::before { - content: "\edc7"; -} - -.icofont-score-board::before { - content: "\edc8"; -} - -.icofont-skiing-man::before { - content: "\edc9"; -} - -.icofont-skydiving-goggles::before { - content: "\edca"; -} - -.icofont-snow-mobile::before { - content: "\edcb"; -} - -.icofont-steering::before { - content: "\edcc"; -} - -.icofont-stopwatch::before { - content: "\edcd"; -} - -.icofont-substitute::before { - content: "\edce"; -} - -.icofont-swimmer::before { - content: "\edcf"; -} - -.icofont-table-tennis::before { - content: "\edd0"; -} - -.icofont-team-alt::before { - content: "\edd1"; -} - -.icofont-team::before { - content: "\edd2"; -} - -.icofont-tennis-player::before { - content: "\edd3"; -} - -.icofont-tennis::before { - content: "\edd4"; -} - -.icofont-tracking::before { - content: "\edd5"; -} - -.icofont-trophy-alt::before { - content: "\edd6"; -} - -.icofont-trophy::before { - content: "\edd7"; -} - -.icofont-volleyball-alt::before { - content: "\edd8"; -} - -.icofont-volleyball-fire::before { - content: "\edd9"; -} - -.icofont-volleyball::before { - content: "\edda"; -} - -.icofont-water-bottle::before { - content: "\eddb"; -} - -.icofont-whistle-alt::before { - content: "\eddc"; -} - -.icofont-whistle::before { - content: "\eddd"; -} - -.icofont-win-trophy::before { - content: "\edde"; -} - -.icofont-align-center::before { - content: "\eddf"; -} - -.icofont-align-left::before { - content: "\ede0"; -} - -.icofont-align-right::before { - content: "\ede1"; -} - -.icofont-all-caps::before { - content: "\ede2"; -} - -.icofont-bold::before { - content: "\ede3"; -} - -.icofont-brush::before { - content: "\ede4"; -} - -.icofont-clip-board::before { - content: "\ede5"; -} - -.icofont-code-alt::before { - content: "\ede6"; -} - -.icofont-color-bucket::before { - content: "\ede7"; -} - -.icofont-color-picker::before { - content: "\ede8"; -} - -.icofont-copy-invert::before { - content: "\ede9"; -} - -.icofont-copy::before { - content: "\edea"; -} - -.icofont-cut::before { - content: "\edeb"; -} - -.icofont-delete-alt::before { - content: "\edec"; -} - -.icofont-edit-alt::before { - content: "\eded"; -} - -.icofont-eraser-alt::before { - content: "\edee"; -} - -.icofont-font::before { - content: "\edef"; -} - -.icofont-heading::before { - content: "\edf0"; -} - -.icofont-indent::before { - content: "\edf1"; -} - -.icofont-italic-alt::before { - content: "\edf2"; -} - -.icofont-italic::before { - content: "\edf3"; -} - -.icofont-justify-all::before { - content: "\edf4"; -} - -.icofont-justify-center::before { - content: "\edf5"; -} - -.icofont-justify-left::before { - content: "\edf6"; -} - -.icofont-justify-right::before { - content: "\edf7"; -} - -.icofont-link-broken::before { - content: "\edf8"; -} - -.icofont-outdent::before { - content: "\edf9"; -} - -.icofont-paper-clip::before { - content: "\edfa"; -} - -.icofont-paragraph::before { - content: "\edfb"; -} - -.icofont-pin::before { - content: "\edfc"; -} - -.icofont-printer::before { - content: "\edfd"; -} - -.icofont-redo::before { - content: "\edfe"; -} - -.icofont-rotation::before { - content: "\edff"; -} - -.icofont-save::before { - content: "\ee00"; -} - -.icofont-small-cap::before { - content: "\ee01"; -} - -.icofont-strike-through::before { - content: "\ee02"; -} - -.icofont-sub-listing::before { - content: "\ee03"; -} - -.icofont-subscript::before { - content: "\ee04"; -} - -.icofont-superscript::before { - content: "\ee05"; -} - -.icofont-table::before { - content: "\ee06"; -} - -.icofont-text-height::before { - content: "\ee07"; -} - -.icofont-text-width::before { - content: "\ee08"; -} - -.icofont-trash::before { - content: "\ee09"; -} - -.icofont-underline::before { - content: "\ee0a"; -} - -.icofont-undo::before { - content: "\ee0b"; -} - -.icofont-air-balloon::before { - content: "\ee0c"; -} - -.icofont-airplane-alt::before { - content: "\ee0d"; -} - -.icofont-airplane::before { - content: "\ee0e"; -} - -.icofont-articulated-truck::before { - content: "\ee0f"; -} - -.icofont-auto-mobile::before { - content: "\ee10"; -} - -.icofont-auto-rickshaw::before { - content: "\ee11"; -} - -.icofont-bicycle-alt-1::before { - content: "\ee12"; -} - -.icofont-bicycle-alt-2::before { - content: "\ee13"; -} - -.icofont-bicycle::before { - content: "\ee14"; -} - -.icofont-bus-alt-1::before { - content: "\ee15"; -} - -.icofont-bus-alt-2::before { - content: "\ee16"; -} - -.icofont-bus-alt-3::before { - content: "\ee17"; -} - -.icofont-bus::before { - content: "\ee18"; -} - -.icofont-cab::before { - content: "\ee19"; -} - -.icofont-cable-car::before { - content: "\ee1a"; -} - -.icofont-car-alt-1::before { - content: "\ee1b"; -} - -.icofont-car-alt-2::before { - content: "\ee1c"; -} - -.icofont-car-alt-3::before { - content: "\ee1d"; -} - -.icofont-car-alt-4::before { - content: "\ee1e"; -} - -.icofont-car::before { - content: "\ee1f"; -} - -.icofont-delivery-time::before { - content: "\ee20"; -} - -.icofont-fast-delivery::before { - content: "\ee21"; -} - -.icofont-fire-truck-alt::before { - content: "\ee22"; -} - -.icofont-fire-truck::before { - content: "\ee23"; -} - -.icofont-free-delivery::before { - content: "\ee24"; -} - -.icofont-helicopter::before { - content: "\ee25"; -} - -.icofont-motor-bike-alt::before { - content: "\ee26"; -} - -.icofont-motor-bike::before { - content: "\ee27"; -} - -.icofont-motor-biker::before { - content: "\ee28"; -} - -.icofont-oil-truck::before { - content: "\ee29"; -} - -.icofont-rickshaw::before { - content: "\ee2a"; -} - -.icofont-rocket-alt-1::before { - content: "\ee2b"; -} - -.icofont-rocket-alt-2::before { - content: "\ee2c"; -} - -.icofont-rocket::before { - content: "\ee2d"; -} - -.icofont-sail-boat-alt-1::before { - content: "\ee2e"; -} - -.icofont-sail-boat-alt-2::before { - content: "\ee2f"; -} - -.icofont-sail-boat::before { - content: "\ee30"; -} - -.icofont-scooter::before { - content: "\ee31"; -} - -.icofont-sea-plane::before { - content: "\ee32"; -} - -.icofont-ship-alt::before { - content: "\ee33"; -} - -.icofont-ship::before { - content: "\ee34"; -} - -.icofont-speed-boat::before { - content: "\ee35"; -} - -.icofont-taxi::before { - content: "\ee36"; -} - -.icofont-tractor::before { - content: "\ee37"; -} - -.icofont-train-line::before { - content: "\ee38"; -} - -.icofont-train-steam::before { - content: "\ee39"; -} - -.icofont-tram::before { - content: "\ee3a"; -} - -.icofont-truck-alt::before { - content: "\ee3b"; -} - -.icofont-truck-loaded::before { - content: "\ee3c"; -} - -.icofont-truck::before { - content: "\ee3d"; -} - -.icofont-van-alt::before { - content: "\ee3e"; -} - -.icofont-van::before { - content: "\ee3f"; -} - -.icofont-yacht::before { - content: "\ee40"; -} - -.icofont-5-star-hotel::before { - content: "\ee41"; -} - -.icofont-air-ticket::before { - content: "\ee42"; -} - -.icofont-beach-bed::before { - content: "\ee43"; -} - -.icofont-beach::before { - content: "\ee44"; -} - -.icofont-camping-vest::before { - content: "\ee45"; -} - -.icofont-direction-sign::before { - content: "\ee46"; -} - -.icofont-hill-side::before { - content: "\ee47"; -} - -.icofont-hill::before { - content: "\ee48"; -} - -.icofont-hotel::before { - content: "\ee49"; -} - -.icofont-island-alt::before { - content: "\ee4a"; -} - -.icofont-island::before { - content: "\ee4b"; -} - -.icofont-sandals-female::before { - content: "\ee4c"; -} - -.icofont-sandals-male::before { - content: "\ee4d"; -} - -.icofont-travelling::before { - content: "\ee4e"; -} - -.icofont-breakdown::before { - content: "\ee4f"; -} - -.icofont-celsius::before { - content: "\ee50"; -} - -.icofont-clouds::before { - content: "\ee51"; -} - -.icofont-cloudy::before { - content: "\ee52"; -} - -.icofont-dust::before { - content: "\ee53"; -} - -.icofont-eclipse::before { - content: "\ee54"; -} - -.icofont-fahrenheit::before { - content: "\ee55"; -} - -.icofont-forest-fire::before { - content: "\ee56"; -} - -.icofont-full-night::before { - content: "\ee57"; -} - -.icofont-full-sunny::before { - content: "\ee58"; -} - -.icofont-hail-night::before { - content: "\ee59"; -} - -.icofont-hail-rainy-night::before { - content: "\ee5a"; -} - -.icofont-hail-rainy-sunny::before { - content: "\ee5b"; -} - -.icofont-hail-rainy::before { - content: "\ee5c"; -} - -.icofont-hail-sunny::before { - content: "\ee5d"; -} - -.icofont-hail-thunder-night::before { - content: "\ee5e"; -} - -.icofont-hail-thunder-sunny::before { - content: "\ee5f"; -} - -.icofont-hail-thunder::before { - content: "\ee60"; -} - -.icofont-hail::before { - content: "\ee61"; -} - -.icofont-hill-night::before { - content: "\ee62"; -} - -.icofont-hill-sunny::before { - content: "\ee63"; -} - -.icofont-hurricane::before { - content: "\ee64"; -} - -.icofont-meteor::before { - content: "\ee65"; -} - -.icofont-night::before { - content: "\ee66"; -} - -.icofont-rainy-night::before { - content: "\ee67"; -} - -.icofont-rainy-sunny::before { - content: "\ee68"; -} - -.icofont-rainy-thunder::before { - content: "\ee69"; -} - -.icofont-rainy::before { - content: "\ee6a"; -} - -.icofont-snow-alt::before { - content: "\ee6b"; -} - -.icofont-snow-flake::before { - content: "\ee6c"; -} - -.icofont-snow-temp::before { - content: "\ee6d"; -} - -.icofont-snow::before { - content: "\ee6e"; -} - -.icofont-snowy-hail::before { - content: "\ee6f"; -} - -.icofont-snowy-night-hail::before { - content: "\ee70"; -} - -.icofont-snowy-night-rainy::before { - content: "\ee71"; -} - -.icofont-snowy-night::before { - content: "\ee72"; -} - -.icofont-snowy-rainy::before { - content: "\ee73"; -} - -.icofont-snowy-sunny-hail::before { - content: "\ee74"; -} - -.icofont-snowy-sunny-rainy::before { - content: "\ee75"; -} - -.icofont-snowy-sunny::before { - content: "\ee76"; -} - -.icofont-snowy-thunder-night::before { - content: "\ee77"; -} - -.icofont-snowy-thunder-sunny::before { - content: "\ee78"; -} - -.icofont-snowy-thunder::before { - content: "\ee79"; -} - -.icofont-snowy-windy-night::before { - content: "\ee7a"; -} - -.icofont-snowy-windy-sunny::before { - content: "\ee7b"; -} - -.icofont-snowy-windy::before { - content: "\ee7c"; -} - -.icofont-snowy::before { - content: "\ee7d"; -} - -.icofont-sun-alt::before { - content: "\ee7e"; -} - -.icofont-sun-rise::before { - content: "\ee7f"; -} - -.icofont-sun-set::before { - content: "\ee80"; -} - -.icofont-sun::before { - content: "\ee81"; -} - -.icofont-sunny-day-temp::before { - content: "\ee82"; -} - -.icofont-sunny::before { - content: "\ee83"; -} - -.icofont-thunder-light::before { - content: "\ee84"; -} - -.icofont-tornado::before { - content: "\ee85"; -} - -.icofont-umbrella-alt::before { - content: "\ee86"; -} - -.icofont-umbrella::before { - content: "\ee87"; -} - -.icofont-volcano::before { - content: "\ee88"; -} - -.icofont-wave::before { - content: "\ee89"; -} - -.icofont-wind-scale-0::before { - content: "\ee8a"; -} - -.icofont-wind-scale-1::before { - content: "\ee8b"; -} - -.icofont-wind-scale-10::before { - content: "\ee8c"; -} - -.icofont-wind-scale-11::before { - content: "\ee8d"; -} - -.icofont-wind-scale-12::before { - content: "\ee8e"; -} - -.icofont-wind-scale-2::before { - content: "\ee8f"; -} - -.icofont-wind-scale-3::before { - content: "\ee90"; -} - -.icofont-wind-scale-4::before { - content: "\ee91"; -} - -.icofont-wind-scale-5::before { - content: "\ee92"; -} - -.icofont-wind-scale-6::before { - content: "\ee93"; -} - -.icofont-wind-scale-7::before { - content: "\ee94"; -} - -.icofont-wind-scale-8::before { - content: "\ee95"; -} - -.icofont-wind-scale-9::before { - content: "\ee96"; -} - -.icofont-wind-waves::before { - content: "\ee97"; -} - -.icofont-wind::before { - content: "\ee98"; -} - -.icofont-windy-hail::before { - content: "\ee99"; -} - -.icofont-windy-night::before { - content: "\ee9a"; -} - -.icofont-windy-raining::before { - content: "\ee9b"; -} - -.icofont-windy-sunny::before { - content: "\ee9c"; -} - -.icofont-windy-thunder-raining::before { - content: "\ee9d"; -} - -.icofont-windy-thunder::before { - content: "\ee9e"; -} - -.icofont-windy::before { - content: "\ee9f"; -} - -.icofont-addons::before { - content: "\eea0"; -} - -.icofont-address-book::before { - content: "\eea1"; -} - -.icofont-adjust::before { - content: "\eea2"; -} - -.icofont-alarm::before { - content: "\eea3"; -} - -.icofont-anchor::before { - content: "\eea4"; -} - -.icofont-archive::before { - content: "\eea5"; -} - -.icofont-at::before { - content: "\eea6"; -} - -.icofont-attachment::before { - content: "\eea7"; -} - -.icofont-audio::before { - content: "\eea8"; -} - -.icofont-automation::before { - content: "\eea9"; -} - -.icofont-badge::before { - content: "\eeaa"; -} - -.icofont-bag-alt::before { - content: "\eeab"; -} - -.icofont-bag::before { - content: "\eeac"; -} - -.icofont-ban::before { - content: "\eead"; -} - -.icofont-bar-code::before { - content: "\eeae"; -} - -.icofont-bars::before { - content: "\eeaf"; -} - -.icofont-basket::before { - content: "\eeb0"; -} - -.icofont-battery-empty::before { - content: "\eeb1"; -} - -.icofont-battery-full::before { - content: "\eeb2"; -} - -.icofont-battery-half::before { - content: "\eeb3"; -} - -.icofont-battery-low::before { - content: "\eeb4"; -} - -.icofont-beaker::before { - content: "\eeb5"; -} - -.icofont-beard::before { - content: "\eeb6"; -} - -.icofont-bed::before { - content: "\eeb7"; -} - -.icofont-bell::before { - content: "\eeb8"; -} - -.icofont-beverage::before { - content: "\eeb9"; -} - -.icofont-bill::before { - content: "\eeba"; -} - -.icofont-bin::before { - content: "\eebb"; -} - -.icofont-binary::before { - content: "\eebc"; -} - -.icofont-binoculars::before { - content: "\eebd"; -} - -.icofont-bluetooth::before { - content: "\eebe"; -} - -.icofont-bomb::before { - content: "\eebf"; -} - -.icofont-book-mark::before { - content: "\eec0"; -} - -.icofont-box::before { - content: "\eec1"; -} - -.icofont-briefcase::before { - content: "\eec2"; -} - -.icofont-broken::before { - content: "\eec3"; -} - -.icofont-bucket::before { - content: "\eec4"; -} - -.icofont-bucket1::before { - content: "\eec5"; -} - -.icofont-bucket2::before { - content: "\eec6"; -} - -.icofont-bug::before { - content: "\eec7"; -} - -.icofont-building::before { - content: "\eec8"; -} - -.icofont-bulb-alt::before { - content: "\eec9"; -} - -.icofont-bullet::before { - content: "\eeca"; -} - -.icofont-bullhorn::before { - content: "\eecb"; -} - -.icofont-bullseye::before { - content: "\eecc"; -} - -.icofont-calendar::before { - content: "\eecd"; -} - -.icofont-camera-alt::before { - content: "\eece"; -} - -.icofont-camera::before { - content: "\eecf"; -} - -.icofont-card::before { - content: "\eed0"; -} - -.icofont-cart-alt::before { - content: "\eed1"; -} - -.icofont-cart::before { - content: "\eed2"; -} - -.icofont-cc::before { - content: "\eed3"; -} - -.icofont-charging::before { - content: "\eed4"; -} - -.icofont-chat::before { - content: "\eed5"; -} - -.icofont-check-alt::before { - content: "\eed6"; -} - -.icofont-check-circled::before { - content: "\eed7"; -} - -.icofont-check::before { - content: "\eed8"; -} - -.icofont-checked::before { - content: "\eed9"; -} - -.icofont-children-care::before { - content: "\eeda"; -} - -.icofont-clip::before { - content: "\eedb"; -} - -.icofont-clock-time::before { - content: "\eedc"; -} - -.icofont-close-circled::before { - content: "\eedd"; -} - -.icofont-close-line-circled::before { - content: "\eede"; -} - -.icofont-close-line-squared-alt::before { - content: "\eedf"; -} - -.icofont-close-line-squared::before { - content: "\eee0"; -} - -.icofont-close-line::before { - content: "\eee1"; -} - -.icofont-close-squared-alt::before { - content: "\eee2"; -} - -.icofont-close-squared::before { - content: "\eee3"; -} - -.icofont-close::before { - content: "\eee4"; -} - -.icofont-cloud-download::before { - content: "\eee5"; -} - -.icofont-cloud-refresh::before { - content: "\eee6"; -} - -.icofont-cloud-upload::before { - content: "\eee7"; -} - -.icofont-cloud::before { - content: "\eee8"; -} - -.icofont-code-not-allowed::before { - content: "\eee9"; -} - -.icofont-code::before { - content: "\eeea"; -} - -.icofont-comment::before { - content: "\eeeb"; -} - -.icofont-compass-alt::before { - content: "\eeec"; -} - -.icofont-compass::before { - content: "\eeed"; -} - -.icofont-computer::before { - content: "\eeee"; -} - -.icofont-connection::before { - content: "\eeef"; -} - -.icofont-console::before { - content: "\eef0"; -} - -.icofont-contacts::before { - content: "\eef1"; -} - -.icofont-contrast::before { - content: "\eef2"; -} - -.icofont-copyright::before { - content: "\eef3"; -} - -.icofont-credit-card::before { - content: "\eef4"; -} - -.icofont-crop::before { - content: "\eef5"; -} - -.icofont-crown::before { - content: "\eef6"; -} - -.icofont-cube::before { - content: "\eef7"; -} - -.icofont-cubes::before { - content: "\eef8"; -} - -.icofont-dashboard-web::before { - content: "\eef9"; -} - -.icofont-dashboard::before { - content: "\eefa"; -} - -.icofont-data::before { - content: "\eefb"; -} - -.icofont-database-add::before { - content: "\eefc"; -} - -.icofont-database-locked::before { - content: "\eefd"; -} - -.icofont-database-remove::before { - content: "\eefe"; -} - -.icofont-database::before { - content: "\eeff"; -} - -.icofont-delete::before { - content: "\ef00"; -} - -.icofont-diamond::before { - content: "\ef01"; -} - -.icofont-dice-multiple::before { - content: "\ef02"; -} - -.icofont-dice::before { - content: "\ef03"; -} - -.icofont-disc::before { - content: "\ef04"; -} - -.icofont-diskette::before { - content: "\ef05"; -} - -.icofont-document-folder::before { - content: "\ef06"; -} - -.icofont-download-alt::before { - content: "\ef07"; -} - -.icofont-download::before { - content: "\ef08"; -} - -.icofont-downloaded::before { - content: "\ef09"; -} - -.icofont-drag::before { - content: "\ef0a"; -} - -.icofont-drag1::before { - content: "\ef0b"; -} - -.icofont-drag2::before { - content: "\ef0c"; -} - -.icofont-drag3::before { - content: "\ef0d"; -} - -.icofont-earth::before { - content: "\ef0e"; -} - -.icofont-ebook::before { - content: "\ef0f"; -} - -.icofont-edit::before { - content: "\ef10"; -} - -.icofont-eject::before { - content: "\ef11"; -} - -.icofont-email::before { - content: "\ef12"; -} - -.icofont-envelope-open::before { - content: "\ef13"; -} - -.icofont-envelope::before { - content: "\ef14"; -} - -.icofont-eraser::before { - content: "\ef15"; -} - -.icofont-error::before { - content: "\ef16"; -} - -.icofont-excavator::before { - content: "\ef17"; -} - -.icofont-exchange::before { - content: "\ef18"; -} - -.icofont-exclamation-circle::before { - content: "\ef19"; -} - -.icofont-exclamation-square::before { - content: "\ef1a"; -} - -.icofont-exclamation-tringle::before { - content: "\ef1b"; -} - -.icofont-exclamation::before { - content: "\ef1c"; -} - -.icofont-exit::before { - content: "\ef1d"; -} - -.icofont-expand::before { - content: "\ef1e"; -} - -.icofont-external-link::before { - content: "\ef1f"; -} - -.icofont-external::before { - content: "\ef20"; -} - -.icofont-eye-alt::before { - content: "\ef21"; -} - -.icofont-eye-blocked::before { - content: "\ef22"; -} - -.icofont-eye-dropper::before { - content: "\ef23"; -} - -.icofont-eye::before { - content: "\ef24"; -} - -.icofont-favourite::before { - content: "\ef25"; -} - -.icofont-fax::before { - content: "\ef26"; -} - -.icofont-file-fill::before { - content: "\ef27"; -} - -.icofont-film::before { - content: "\ef28"; -} - -.icofont-filter::before { - content: "\ef29"; -} - -.icofont-fire-alt::before { - content: "\ef2a"; -} - -.icofont-fire-burn::before { - content: "\ef2b"; -} - -.icofont-fire::before { - content: "\ef2c"; -} - -.icofont-flag-alt-1::before { - content: "\ef2d"; -} - -.icofont-flag-alt-2::before { - content: "\ef2e"; -} - -.icofont-flag::before { - content: "\ef2f"; -} - -.icofont-flame-torch::before { - content: "\ef30"; -} - -.icofont-flash-light::before { - content: "\ef31"; -} - -.icofont-flash::before { - content: "\ef32"; -} - -.icofont-flask::before { - content: "\ef33"; -} - -.icofont-focus::before { - content: "\ef34"; -} - -.icofont-folder-open::before { - content: "\ef35"; -} - -.icofont-folder::before { - content: "\ef36"; -} - -.icofont-foot-print::before { - content: "\ef37"; -} - -.icofont-garbage::before { - content: "\ef38"; -} - -.icofont-gear-alt::before { - content: "\ef39"; -} - -.icofont-gear::before { - content: "\ef3a"; -} - -.icofont-gears::before { - content: "\ef3b"; -} - -.icofont-gift::before { - content: "\ef3c"; -} - -.icofont-glass::before { - content: "\ef3d"; -} - -.icofont-globe::before { - content: "\ef3e"; -} - -.icofont-graffiti::before { - content: "\ef3f"; -} - -.icofont-grocery::before { - content: "\ef40"; -} - -.icofont-hand::before { - content: "\ef41"; -} - -.icofont-hanger::before { - content: "\ef42"; -} - -.icofont-hard-disk::before { - content: "\ef43"; -} - -.icofont-heart-alt::before { - content: "\ef44"; -} - -.icofont-heart::before { - content: "\ef45"; -} - -.icofont-history::before { - content: "\ef46"; -} - -.icofont-home::before { - content: "\ef47"; -} - -.icofont-horn::before { - content: "\ef48"; -} - -.icofont-hour-glass::before { - content: "\ef49"; -} - -.icofont-id::before { - content: "\ef4a"; -} - -.icofont-image::before { - content: "\ef4b"; -} - -.icofont-inbox::before { - content: "\ef4c"; -} - -.icofont-infinite::before { - content: "\ef4d"; -} - -.icofont-info-circle::before { - content: "\ef4e"; -} - -.icofont-info-square::before { - content: "\ef4f"; -} - -.icofont-info::before { - content: "\ef50"; -} - -.icofont-institution::before { - content: "\ef51"; -} - -.icofont-interface::before { - content: "\ef52"; -} - -.icofont-invisible::before { - content: "\ef53"; -} - -.icofont-jacket::before { - content: "\ef54"; -} - -.icofont-jar::before { - content: "\ef55"; -} - -.icofont-jewlery::before { - content: "\ef56"; -} - -.icofont-karate::before { - content: "\ef57"; -} - -.icofont-key-hole::before { - content: "\ef58"; -} - -.icofont-key::before { - content: "\ef59"; -} - -.icofont-label::before { - content: "\ef5a"; -} - -.icofont-lamp::before { - content: "\ef5b"; -} - -.icofont-layers::before { - content: "\ef5c"; -} - -.icofont-layout::before { - content: "\ef5d"; -} - -.icofont-leaf::before { - content: "\ef5e"; -} - -.icofont-leaflet::before { - content: "\ef5f"; -} - -.icofont-learn::before { - content: "\ef60"; -} - -.icofont-lego::before { - content: "\ef61"; -} - -.icofont-lens::before { - content: "\ef62"; -} - -.icofont-letter::before { - content: "\ef63"; -} - -.icofont-letterbox::before { - content: "\ef64"; -} - -.icofont-library::before { - content: "\ef65"; -} - -.icofont-license::before { - content: "\ef66"; -} - -.icofont-life-bouy::before { - content: "\ef67"; -} - -.icofont-life-buoy::before { - content: "\ef68"; -} - -.icofont-life-jacket::before { - content: "\ef69"; -} - -.icofont-life-ring::before { - content: "\ef6a"; -} - -.icofont-light-bulb::before { - content: "\ef6b"; -} - -.icofont-lighter::before { - content: "\ef6c"; -} - -.icofont-lightning-ray::before { - content: "\ef6d"; -} - -.icofont-like::before { - content: "\ef6e"; -} - -.icofont-line-height::before { - content: "\ef6f"; -} - -.icofont-link-alt::before { - content: "\ef70"; -} - -.icofont-link::before { - content: "\ef71"; -} - -.icofont-list::before { - content: "\ef72"; -} - -.icofont-listening::before { - content: "\ef73"; -} - -.icofont-listine-dots::before { - content: "\ef74"; -} - -.icofont-listing-box::before { - content: "\ef75"; -} - -.icofont-listing-number::before { - content: "\ef76"; -} - -.icofont-live-support::before { - content: "\ef77"; -} - -.icofont-location-arrow::before { - content: "\ef78"; -} - -.icofont-location-pin::before { - content: "\ef79"; -} - -.icofont-lock::before { - content: "\ef7a"; -} - -.icofont-login::before { - content: "\ef7b"; -} - -.icofont-logout::before { - content: "\ef7c"; -} - -.icofont-lollipop::before { - content: "\ef7d"; -} - -.icofont-long-drive::before { - content: "\ef7e"; -} - -.icofont-look::before { - content: "\ef7f"; -} - -.icofont-loop::before { - content: "\ef80"; -} - -.icofont-luggage::before { - content: "\ef81"; -} - -.icofont-lunch::before { - content: "\ef82"; -} - -.icofont-lungs::before { - content: "\ef83"; -} - -.icofont-magic-alt::before { - content: "\ef84"; -} - -.icofont-magic::before { - content: "\ef85"; -} - -.icofont-magnet::before { - content: "\ef86"; -} - -.icofont-mail-box::before { - content: "\ef87"; -} - -.icofont-mail::before { - content: "\ef88"; -} - -.icofont-male::before { - content: "\ef89"; -} - -.icofont-map-pins::before { - content: "\ef8a"; -} - -.icofont-map::before { - content: "\ef8b"; -} - -.icofont-maximize::before { - content: "\ef8c"; -} - -.icofont-measure::before { - content: "\ef8d"; -} - -.icofont-medicine::before { - content: "\ef8e"; -} - -.icofont-mega-phone::before { - content: "\ef8f"; -} - -.icofont-megaphone-alt::before { - content: "\ef90"; -} - -.icofont-megaphone::before { - content: "\ef91"; -} - -.icofont-memorial::before { - content: "\ef92"; -} - -.icofont-memory-card::before { - content: "\ef93"; -} - -.icofont-mic-mute::before { - content: "\ef94"; -} - -.icofont-mic::before { - content: "\ef95"; -} - -.icofont-military::before { - content: "\ef96"; -} - -.icofont-mill::before { - content: "\ef97"; -} - -.icofont-minus-circle::before { - content: "\ef98"; -} - -.icofont-minus-square::before { - content: "\ef99"; -} - -.icofont-minus::before { - content: "\ef9a"; -} - -.icofont-mobile-phone::before { - content: "\ef9b"; -} - -.icofont-molecule::before { - content: "\ef9c"; -} - -.icofont-money::before { - content: "\ef9d"; -} - -.icofont-moon::before { - content: "\ef9e"; -} - -.icofont-mop::before { - content: "\ef9f"; -} - -.icofont-muffin::before { - content: "\efa0"; -} - -.icofont-mustache::before { - content: "\efa1"; -} - -.icofont-navigation-menu::before { - content: "\efa2"; -} - -.icofont-navigation::before { - content: "\efa3"; -} - -.icofont-network-tower::before { - content: "\efa4"; -} - -.icofont-network::before { - content: "\efa5"; -} - -.icofont-news::before { - content: "\efa6"; -} - -.icofont-newspaper::before { - content: "\efa7"; -} - -.icofont-no-smoking::before { - content: "\efa8"; -} - -.icofont-not-allowed::before { - content: "\efa9"; -} - -.icofont-notebook::before { - content: "\efaa"; -} - -.icofont-notepad::before { - content: "\efab"; -} - -.icofont-notification::before { - content: "\efac"; -} - -.icofont-numbered::before { - content: "\efad"; -} - -.icofont-opposite::before { - content: "\efae"; -} - -.icofont-optic::before { - content: "\efaf"; -} - -.icofont-options::before { - content: "\efb0"; -} - -.icofont-package::before { - content: "\efb1"; -} - -.icofont-page::before { - content: "\efb2"; -} - -.icofont-paint::before { - content: "\efb3"; -} - -.icofont-paper-plane::before { - content: "\efb4"; -} - -.icofont-paperclip::before { - content: "\efb5"; -} - -.icofont-papers::before { - content: "\efb6"; -} - -.icofont-pay::before { - content: "\efb7"; -} - -.icofont-penguin-linux::before { - content: "\efb8"; -} - -.icofont-pestle::before { - content: "\efb9"; -} - -.icofont-phone-circle::before { - content: "\efba"; -} - -.icofont-phone::before { - content: "\efbb"; -} - -.icofont-picture::before { - content: "\efbc"; -} - -.icofont-pine::before { - content: "\efbd"; -} - -.icofont-pixels::before { - content: "\efbe"; -} - -.icofont-plugin::before { - content: "\efbf"; -} - -.icofont-plus-circle::before { - content: "\efc0"; -} - -.icofont-plus-square::before { - content: "\efc1"; -} - -.icofont-plus::before { - content: "\efc2"; -} - -.icofont-polygonal::before { - content: "\efc3"; -} - -.icofont-power::before { - content: "\efc4"; -} - -.icofont-price::before { - content: "\efc5"; -} - -.icofont-print::before { - content: "\efc6"; -} - -.icofont-puzzle::before { - content: "\efc7"; -} - -.icofont-qr-code::before { - content: "\efc8"; -} - -.icofont-queen::before { - content: "\efc9"; -} - -.icofont-question-circle::before { - content: "\efca"; -} - -.icofont-question-square::before { - content: "\efcb"; -} - -.icofont-question::before { - content: "\efcc"; -} - -.icofont-quote-left::before { - content: "\efcd"; -} - -.icofont-quote-right::before { - content: "\efce"; -} - -.icofont-random::before { - content: "\efcf"; -} - -.icofont-recycle::before { - content: "\efd0"; -} - -.icofont-refresh::before { - content: "\efd1"; -} - -.icofont-repair::before { - content: "\efd2"; -} - -.icofont-reply-all::before { - content: "\efd3"; -} - -.icofont-reply::before { - content: "\efd4"; -} - -.icofont-resize::before { - content: "\efd5"; -} - -.icofont-responsive::before { - content: "\efd6"; -} - -.icofont-retweet::before { - content: "\efd7"; -} - -.icofont-road::before { - content: "\efd8"; -} - -.icofont-robot::before { - content: "\efd9"; -} - -.icofont-royal::before { - content: "\efda"; -} - -.icofont-rss-feed::before { - content: "\efdb"; -} - -.icofont-safety::before { - content: "\efdc"; -} - -.icofont-sale-discount::before { - content: "\efdd"; -} - -.icofont-satellite::before { - content: "\efde"; -} - -.icofont-send-mail::before { - content: "\efdf"; -} - -.icofont-server::before { - content: "\efe0"; -} - -.icofont-settings-alt::before { - content: "\efe1"; -} - -.icofont-settings::before { - content: "\efe2"; -} - -.icofont-share-alt::before { - content: "\efe3"; -} - -.icofont-share-boxed::before { - content: "\efe4"; -} - -.icofont-share::before { - content: "\efe5"; -} - -.icofont-shield::before { - content: "\efe6"; -} - -.icofont-shopping-cart::before { - content: "\efe7"; -} - -.icofont-sign-in::before { - content: "\efe8"; -} - -.icofont-sign-out::before { - content: "\efe9"; -} - -.icofont-signal::before { - content: "\efea"; -} - -.icofont-site-map::before { - content: "\efeb"; -} - -.icofont-smart-phone::before { - content: "\efec"; -} - -.icofont-soccer::before { - content: "\efed"; -} - -.icofont-sort-alt::before { - content: "\efee"; -} - -.icofont-sort::before { - content: "\efef"; -} - -.icofont-space::before { - content: "\eff0"; -} - -.icofont-spanner::before { - content: "\eff1"; -} - -.icofont-speech-comments::before { - content: "\eff2"; -} - -.icofont-speed-meter::before { - content: "\eff3"; -} - -.icofont-spinner-alt-1::before { - content: "\eff4"; -} - -.icofont-spinner-alt-2::before { - content: "\eff5"; -} - -.icofont-spinner-alt-3::before { - content: "\eff6"; -} - -.icofont-spinner-alt-4::before { - content: "\eff7"; -} - -.icofont-spinner-alt-5::before { - content: "\eff8"; -} - -.icofont-spinner-alt-6::before { - content: "\eff9"; -} - -.icofont-spinner::before { - content: "\effa"; -} - -.icofont-spreadsheet::before { - content: "\effb"; -} - -.icofont-square::before { - content: "\effc"; -} - -.icofont-ssl-security::before { - content: "\effd"; -} - -.icofont-star-alt-1::before { - content: "\effe"; -} - -.icofont-star-alt-2::before { - content: "\efff"; -} - -.icofont-star::before { - content: "\f000"; -} - -.icofont-street-view::before { - content: "\f001"; -} - -.icofont-support-faq::before { - content: "\f002"; -} - -.icofont-tack-pin::before { - content: "\f003"; -} - -.icofont-tag::before { - content: "\f004"; -} - -.icofont-tags::before { - content: "\f005"; -} - -.icofont-tasks-alt::before { - content: "\f006"; -} - -.icofont-tasks::before { - content: "\f007"; -} - -.icofont-telephone::before { - content: "\f008"; -} - -.icofont-telescope::before { - content: "\f009"; -} - -.icofont-terminal::before { - content: "\f00a"; -} - -.icofont-thumbs-down::before { - content: "\f00b"; -} - -.icofont-thumbs-up::before { - content: "\f00c"; -} - -.icofont-tick-boxed::before { - content: "\f00d"; -} - -.icofont-tick-mark::before { - content: "\f00e"; -} - -.icofont-ticket::before { - content: "\f00f"; -} - -.icofont-tie::before { - content: "\f010"; -} - -.icofont-toggle-off::before { - content: "\f011"; -} - -.icofont-toggle-on::before { - content: "\f012"; -} - -.icofont-tools-alt-2::before { - content: "\f013"; -} - -.icofont-tools::before { - content: "\f014"; -} - -.icofont-touch::before { - content: "\f015"; -} - -.icofont-traffic-light::before { - content: "\f016"; -} - -.icofont-transparent::before { - content: "\f017"; -} - -.icofont-tree::before { - content: "\f018"; -} - -.icofont-unique-idea::before { - content: "\f019"; -} - -.icofont-unlock::before { - content: "\f01a"; -} - -.icofont-unlocked::before { - content: "\f01b"; -} - -.icofont-upload-alt::before { - content: "\f01c"; -} - -.icofont-upload::before { - content: "\f01d"; -} - -.icofont-usb-drive::before { - content: "\f01e"; -} - -.icofont-usb::before { - content: "\f01f"; -} - -.icofont-vector-path::before { - content: "\f020"; -} - -.icofont-verification-check::before { - content: "\f021"; -} - -.icofont-wall-clock::before { - content: "\f022"; -} - -.icofont-wall::before { - content: "\f023"; -} - -.icofont-wallet::before { - content: "\f024"; -} - -.icofont-warning-alt::before { - content: "\f025"; -} - -.icofont-warning::before { - content: "\f026"; -} - -.icofont-water-drop::before { - content: "\f027"; -} - -.icofont-web::before { - content: "\f028"; -} - -.icofont-wheelchair::before { - content: "\f029"; -} - -.icofont-wifi-alt::before { - content: "\f02a"; -} - -.icofont-wifi::before { - content: "\f02b"; -} - -.icofont-world::before { - content: "\f02c"; -} - -.icofont-zigzag::before { - content: "\f02d"; -} - -.icofont-zipped::before { - content: "\f02e"; -} - -.icofont-xs { - font-size: .5em; -} - -.icofont-sm { - font-size: .75em; -} - -.icofont-md { - font-size: 1.25em; -} - -.icofont-lg { - font-size: 1.5em; -} - -.icofont-1x { - font-size: 1em; -} - -.icofont-2x { - font-size: 2em; -} - -.icofont-3x { - font-size: 3em; -} - -.icofont-4x { - font-size: 4em; -} - -.icofont-5x { - font-size: 5em; -} - -.icofont-6x { - font-size: 6em; -} - -.icofont-7x { - font-size: 7em; -} - -.icofont-8x { - font-size: 8em; -} - -.icofont-9x { - font-size: 9em; -} - -.icofont-10x { - font-size: 10em; -} - -.icofont-fw { - width: 1.25em; - text-align: center; -} - -.icofont-ul { - padding-left: 0; - margin-left: 0; - list-style-type: none; -} - -.icofont-ul>li { - position: relative; - line-height: 2em; -} - -.icofont-ul>li .icofont { - display: inline-block; - vertical-align: middle; -} - -.icofont-border { - padding: .2em .25em .15em; - border: solid 0.08em #f1f1f1; - border-radius: .1em; -} - -.icofont-pull-left { - float: left; -} - -.icofont-pull-right { - float: right; -} - -.icofont.icofont-pull-left { - margin-right: .3em; -} - -.icofont.icofont-pull-right { - margin-left: .3em; -} - -.icofont-spin { - display: inline-block; - animation: icofont-spin 2s infinite linear; - animation: icofont-spin 2s infinite linear; -} - -.icofont-pulse { - display: inline-block; - animation: icofont-spin 1s infinite steps(8); - animation: icofont-spin 1s infinite steps(8); -} - -@keyframes icofont-spin { - 0% { - transform: rotate(0deg); - transform: rotate(0deg); - } - - 100% { - transform: rotate(360deg); - transform: rotate(360deg); - } -} - -@keyframes icofont-spin { - 0% { - transform: rotate(0deg); - transform: rotate(0deg); - } - - 100% { - transform: rotate(360deg); - transform: rotate(360deg); - } -} - -.icofont-rotate-90 { - filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=1)"; - transform: rotate(90deg); - transform: rotate(90deg); -} - -.icofont-rotate-180 { - filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2)"; - transform: rotate(180deg); - transform: rotate(180deg); -} - -.icofont-rotate-270 { - filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=3)"; - transform: rotate(270deg); - transform: rotate(270deg); -} - -.icofont-flip-horizontal { - filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)"; - transform: scale(-1, 1); - transform: scale(-1, 1); -} - -.icofont-flip-vertical { - filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)"; - transform: scale(1, -1); - transform: scale(1, -1); -} - -.icofont-flip-horizontal.icofont-flip-vertical { - filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)"; - transform: scale(-1, -1); - transform: scale(-1, -1); -} - -:root .icofont-rotate-90, -:root .icofont-rotate-180, -:root .icofont-rotate-270, -:root .icofont-flip-horizontal, -:root .icofont-flip-vertical { - display: inline-block; - filter: none; - filter: none; -} - -.icofont-inverse { - color: #fff; -} - -.sr-only { - position: absolute; - overflow: hidden; - width: 1px; - height: 1px; - padding: 0; - border: 0; - margin: -1px; - clip: rect(0, 0, 0, 0); -} - -.sr-only-focusable:active, -.sr-only-focusable:focus { - position: static; - overflow: visible; - width: auto; - height: auto; - margin: 0; - clip: auto; -} \ No newline at end of file diff --git a/assets/styles/icons.css b/assets/styles/icons.css deleted file mode 100755 index 2adf638..0000000 --- a/assets/styles/icons.css +++ /dev/null @@ -1,80 +0,0 @@ -.icon { - display: inline-block; - width: auto; - height: auto; - margin-right: var(--size-xxs); - direction: ltr; - font-family: var(--font-icons); - font-feature-settings: 'liga'; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; - font-style: normal; - font-weight: normal; - letter-spacing: normal; - line-height: inherit; - text-rendering: optimizelegibility; - text-transform: none; - vertical-align: middle; - white-space: nowrap; - word-wrap: normal; - - &.red { - color: red; - } - - &.md-dark { - color: var(--dark); - } - - &.md-light { - color: var(--light); - } -} - -.icon-s { - font-size: var(--size-s); - line-height: var(--size-s); -} - -.icon-m { - font-size: var(--size-m); - line-height: var(--size-m); -} - -.icon-l { - font-size: var(--size-l); - line-height: var(--size-l); -} - -.icon-xl { - font-size: var(--size-xl); - line-height: var(--size-xl); -} - -.icon::before { - content: attr(data-icon); -} - - -.icon-inline { - margin-right: 0.4em; - font-size: var(--size-m); -} - -[class^="icofont-"], -[class^="material-"], -[class*=" icofont-"], -.icon { - color: var(--icon-color); - - &.is-large { - margin-top: var(--size-l); - margin-bottom: var(--size-xl); - font-size: var(--size-l); - } - - &.is-inline{ - margin-right: 0.25em; - color: var(--color-darken-strong); - } -} \ No newline at end of file diff --git a/assets/styles/layouts/simple.css b/assets/styles/layouts/simple.css deleted file mode 100644 index 3a447c5..0000000 --- a/assets/styles/layouts/simple.css +++ /dev/null @@ -1,32 +0,0 @@ -/* Simple -############################################################################ */ -.simple { - table { - margin-top: var(--size-l); - margin-bottom: var(--size-l); - - th { - padding-bottom: var(--size-s); - font-weight: var(--fw-medium); - text-align: left; - } - - tr td { - padding: var(--size-s) var(--size-s) var(--size-s) 0; - border-top: solid 1px var(--color-green); - } - } - - h3 { - margin-top: var(--size-xxl); - - - i { - margin-right: var(--size-xs); - } - } - - .page{ - margin-bottom: var(--size-xl); - } -} \ No newline at end of file diff --git a/assets/styles/layouts/work-results.css b/assets/styles/layouts/work-results.css deleted file mode 100644 index dfa43c7..0000000 --- a/assets/styles/layouts/work-results.css +++ /dev/null @@ -1,75 +0,0 @@ -/* Work Result -############################################################################ */ -.work-result { - h1.title{ - font-size: var(--size-m); - } - - h2.subtitle, - h2.subtitle a{ - margin-top: calc(var(--size-m) * -1); - font-size: var(--size-m); - } - - h2.title{ - font-weight: var(--fw-medium); - } - - h3.subtitle{ - color: var(--color-dark); - - - @media only screen and (width >= 40rem) { - font-size: var(--size-l); - } - } - - main{ - padding-bottom: var(--size-xl); - } - - dl.metadata a{ - border-bottom: none; - } - - .work-result-thumbnail{ - max-width: calc(var(--max-width-content) /2); - margin-bottom: var(--size-xl); - background-color: var(--color-darken-light); - - @media screen and (width <= 40rem){ - max-width: 100%; - } - - img{ - display: block; - mix-blend-mode: darken; - } - } - - .work-result-avatar{ - display: none; - width: 50%; - } - - @media screen and (width > 100rem){ - .work-result-main{ - display: grid; - gap: var(--size-xl); - grid-row: auto; - grid-template-areas: - "title title" - "left right"; - grid-template-columns: var(--max-width-content) 1fr; - - .work-result-header{ - grid-area: title; - } - - .metadata-wrap{ - grid-area: right; - } - - } - } -} \ No newline at end of file diff --git a/assets/styles/layouts/work.css b/assets/styles/layouts/work.css deleted file mode 100644 index 6878694..0000000 --- a/assets/styles/layouts/work.css +++ /dev/null @@ -1,13 +0,0 @@ -/* Work -############################################################################ */ -.work { - hr { - margin: 0; - margin-top: var(--size-l); - margin-bottom: var(--size-l); - } - - p { - margin-bottom: var(--size-m); - } -} \ No newline at end of file diff --git a/assets/styles/reset.css b/assets/styles/reset.css deleted file mode 100755 index 7314dcb..0000000 --- a/assets/styles/reset.css +++ /dev/null @@ -1,68 +0,0 @@ -/* http://meyerweb.com/eric/tools/css/reset/ - v2.0 | 20110126 - License: none (public domain) -*/ - -html, body, div, span, applet, object, iframe, -h1, h2, h3, h4, h5, h6, p, blockquote, pre, -a, abbr, acronym, address, big, cite, code, -del, dfn, em, img, ins, kbd, q, s, samp, -small, strike, strong, sub, sup, tt, var, -b, u, i, center, -dl, dt, dd, ol, ul, li, -fieldset, form, label, legend, -table, caption, tbody, tfoot, thead, tr, th, td, -article, aside, canvas, details, embed, -figure, figcaption, footer, header, hgroup, -menu, nav, output, ruby, section, summary, -time, mark, audio, video { - padding: 0; - border: 0; - margin: 0; - font: inherit; - font-size: 100%; - vertical-align: baseline; -} - -/* HTML5 display-role reset for older browsers */ -article, aside, details, figcaption, figure, -footer, header, hgroup, menu, nav, section { - display: block; -} - -body { - line-height: 1; -} - -ol, ul { - list-style: none; -} - -blockquote, q { - quotes: none; -} - -blockquote::before, blockquote::after, -q::before, q::after { - content: ''; - content: none; -} - -table { - border-collapse: collapse; - border-spacing: 0; -} - -button, input, textarea{ - padding: 0; - border: none; - margin: 0; - background-color: transparent; - - &:active, &:focus{ - border: solid 1px transparent; - box-shadow: none; - outline-color: transparent; - outline-style: none; - } -} \ No newline at end of file diff --git a/assets/styles/utilities.css b/assets/styles/utilities.css deleted file mode 100755 index 86b8a91..0000000 --- a/assets/styles/utilities.css +++ /dev/null @@ -1,3 +0,0 @@ -.grow{ - flex-grow: 1; -} \ No newline at end of file diff --git a/assets/styles/variables.css b/assets/styles/variables.css deleted file mode 100755 index 64c1a77..0000000 --- a/assets/styles/variables.css +++ /dev/null @@ -1,83 +0,0 @@ -:root { - /* Faktor */ - --scaling-factor: 1.1; - - /* Sizes */ - --size-xxs: calc(4px * var(--scaling-factor)); - --size-xs: calc(7px * var(--scaling-factor)); - --size-s: calc(11px * var(--scaling-factor)); - --size-m: calc(18px * var(--scaling-factor)); - --size-l: calc(29px * var(--scaling-factor)); - --size-xl: calc(47px * var(--scaling-factor)); - --size-xxl: calc(76px * var(--scaling-factor)); - - /* Font Properties */ - --font-family-serif: "PTserif", georgia, serif; - --font-family-sans: "Barlow", arial, sans-serif; - --base-font-size: var(--size-m); - --font-icons: "Material Icons"; - - /* Font Weights */ - --fw-light: 300; - --fw-normal: 400; - --fw-medium: 500; - --fw-bold: 600; - - /* Line Heights */ - --lh-tight: 110%; - --lh-default: 130%; - --lh-loose: 150%; - - /* Opacity */ - --op-medium: 0.6; - - /* Base Colors */ - --color-steingrau: hsl(42deg 3% 55% / 60%); - --color-lichtgrau: hsl(100deg 3% 77% / 100%); - --color-hellgrau: #BBBAB7; - --color-blaugrau: #82899A; - --color-pink: #d16; - --color-green: #10CFA3; - --color-blue: #28C0DE; - --color-darkblue: #047A91; - --color-yellow: #DECC28; - --color-light: #E6DED1; - --color-lightest: #fff; - --color-lighten: rgb(255 255 255 / 20%); - --color-lighten-strong: rgb(255 255 255 / 50%); - --color-dark: #57544F; - --color-darker: #000; - --color-darkest: #000; - --color-darken: rgb(0 0 0 / 20%); - --color-darken-strong: rgb(0 0 0 / 70%); - --color-darken-light: rgb(20 20 0 / 5%); - - /* Functional Colors */ - --interaction-color: var(--color-pink); - --decoration-color: var(--color-green); - --icon-color: var(--color-blue); - --text-color: var(--color-darker); - --headline-color: var(--color-darkblue); - --headline-color-light: var(--color-steingrau); - --aside-color: var(--color-lichtgrau); - --border-color: var(--color-lichtgrau); - --seperator-color: var(--color-light); - --background-color: var(--color-lightest); - - /* Transitions */ - --tr-fast: 0.2s; - --tr-medium: 0.6s; - --tr-slow: 1s; - - /* Misc */ - --bw: 2px; - --text-shadow: 0 0 20px rgb(0 0 0 / 90%); - --box-shadow: 0 0 20px rgb(0 0 0 / 10%); - --max-width-content: 50rem; - --aside-width: 20rem; - --border-width: 2px; - --radius-xs: 3px; - --radius-s: 0.5rem; - --shadow-m: 0 0 10px rgb(0 0 0 / 20%); - --size-image-thumbnail: 12.5rem; -} diff --git a/assets/uploads/c.noss_a_lucas_cranach_exibition_with_paintings_which_are_prese_63eaa10b-fca7-461f-9ea0-ac4dac887979.jpg b/assets/uploads/c.noss_a_lucas_cranach_exibition_with_paintings_which_are_prese_63eaa10b-fca7-461f-9ea0-ac4dac887979.jpg deleted file mode 100644 index 38ef1d0..0000000 Binary files a/assets/uploads/c.noss_a_lucas_cranach_exibition_with_paintings_which_are_prese_63eaa10b-fca7-461f-9ea0-ac4dac887979.jpg and /dev/null differ diff --git a/assets/uploads/c.noss_a_teaser_image_for_a_html_to_pdf_library_where_images_an_63c0185b-ad0b-47b4-851c-0369af67b964.jpg b/assets/uploads/c.noss_a_teaser_image_for_a_html_to_pdf_library_where_images_an_63c0185b-ad0b-47b4-851c-0369af67b964.jpg deleted file mode 100644 index 9b0f296..0000000 Binary files a/assets/uploads/c.noss_a_teaser_image_for_a_html_to_pdf_library_where_images_an_63c0185b-ad0b-47b4-851c-0369af67b964.jpg and /dev/null differ diff --git a/assets/uploads/final-blockdown.webp b/assets/uploads/final-blockdown.webp deleted file mode 100644 index 4471849..0000000 Binary files a/assets/uploads/final-blockdown.webp and /dev/null differ diff --git a/assets/uploads/nils-xxl-1800x.jpg b/assets/uploads/nils-xxl-1800x.jpg deleted file mode 100644 index 950ce00..0000000 Binary files a/assets/uploads/nils-xxl-1800x.jpg and /dev/null differ diff --git a/assets/uploads/nils.jpg b/assets/uploads/nils.jpg deleted file mode 100644 index 1677da9..0000000 Binary files a/assets/uploads/nils.jpg and /dev/null differ diff --git a/assets/uploads/photo-log-aaron-asgharzadeh-2025-07-11-08.jpg.jpg b/assets/uploads/photo-log-aaron-asgharzadeh-2025-07-11-08.jpg.jpg deleted file mode 100644 index bbc5d15..0000000 Binary files a/assets/uploads/photo-log-aaron-asgharzadeh-2025-07-11-08.jpg.jpg and /dev/null differ diff --git a/assets/uploads/photo-log-anton-zaitsev-2024-09-18-10_hubd4f6ee98d8a4fc89b5459d6ffa9f0eb_287524_1600x0_resize_q100_linear.jpg b/assets/uploads/photo-log-anton-zaitsev-2024-09-18-10_hubd4f6ee98d8a4fc89b5459d6ffa9f0eb_287524_1600x0_resize_q100_linear.jpg deleted file mode 100644 index 305719d..0000000 Binary files a/assets/uploads/photo-log-anton-zaitsev-2024-09-18-10_hubd4f6ee98d8a4fc89b5459d6ffa9f0eb_287524_1600x0_resize_q100_linear.jpg and /dev/null differ diff --git a/assets/uploads/photo-log-niklas-mehlem-2025-05-30-10.jpg b/assets/uploads/photo-log-niklas-mehlem-2025-05-30-10.jpg deleted file mode 100644 index f371cf3..0000000 Binary files a/assets/uploads/photo-log-niklas-mehlem-2025-05-30-10.jpg and /dev/null differ diff --git a/assets/uploads/photo-log-paul-strebinger-justin-penner-2024-18-11-05.png b/assets/uploads/photo-log-paul-strebinger-justin-penner-2024-18-11-05.png deleted file mode 100644 index 7e1f32a..0000000 Binary files a/assets/uploads/photo-log-paul-strebinger-justin-penner-2024-18-11-05.png and /dev/null differ diff --git a/assets/uploads/photo-log-vassilij-misenko-2025-07-16-08-s.webp b/assets/uploads/photo-log-vassilij-misenko-2025-07-16-08-s.webp deleted file mode 100644 index 8fdb1f6..0000000 Binary files a/assets/uploads/photo-log-vassilij-misenko-2025-07-16-08-s.webp and /dev/null differ diff --git a/assets/uploads/polarek-nils-ba-ss24-bilddokumentation-13-s.webp b/assets/uploads/polarek-nils-ba-ss24-bilddokumentation-13-s.webp deleted file mode 100644 index afa1148..0000000 Binary files a/assets/uploads/polarek-nils-ba-ss24-bilddokumentation-13-s.webp and /dev/null differ diff --git a/assets/uploads/sbrock_2_kollaboration-s.webp b/assets/uploads/sbrock_2_kollaboration-s.webp deleted file mode 100644 index 88e16cb..0000000 Binary files a/assets/uploads/sbrock_2_kollaboration-s.webp and /dev/null differ diff --git a/ausarbeitung.html b/ausarbeitung.html deleted file mode 100644 index ab4e7d2..0000000 --- a/ausarbeitung.html +++ /dev/null @@ -1,70 +0,0 @@ ---- -layout: simple -title: Schriftliche Ausarbeitung ---- - -**Die Ausarbeitung soll den Prozess, den methodischen Rahmen, die wichtigsten Ergebnisse, Implikationen und mögliche Richtungen für zukünftige Arbeiten dokumentieren. Die Ausarbeitung kann in Deutsch oder Englisch verfasst werden.** - - -### Inhaltliche Aspekte - -- Stellen Sie den Kontext Ihrer Arbeit vor, erläutern Sie die Problemstellung und formulieren Sie die Forschungsfrage(n) sowie die Zielsetzung der Arbeit. -- Beschreiben Sie den praktischen und theoretischen Hintergrund Ihrer Arbeit. Erklären Sie, warum das Thema relevant ist und welche Lücken in der bestehenden Forschung/ Domäne Sie adressieren möchten. -- Erläutern Sie den methodischen Rahmen Ihrer Arbeit und Ihr Vorgehen. Beschreiben Sie die verwendeten Methoden und begründen Sie deren Auswahl. -- Präsentieren Sie Ihre Ergebnisse und Schlussfolgerungen klar und prägnant. -- Interpretieren Sie Ihre Ergebnisse und setzen Sie sie in den Kontext des Status Quo. Diskutieren Sie die Implikationen Ihrer Ergebnisse und reflektieren Sie über mögliche Limitationen Ihrer Arbeit. -- Fassen Sie die wichtigsten Erkenntnisse Ihrer Arbeit zusammen und geben Sie einen Ausblick auf mögliche zukünftige Arbeiten. Welche Fragen bleiben offen? Welche neuen Fragen und Lücken ergeben sich? - -### Formale Aspekte -- Verwenden Sie eine klare und präzise Sprache. Achten Sie auf wissenschaftliche Ausdrucksweise und vermeiden Sie umgangssprachliche Formulierungen. -- Verwenden Sie [APA](https://apaformat.org/apa-in-text-citation/) als Zitationsstil. Stellen Sie sicher, dass alle Quellen korrekt zitiert sind und im Literaturverzeichnis aufgeführt werden. -- Vermeiden Sie Plagiate, indem Sie alle verwendeten Quellen und Hilfsmittel ordnungsgemäß kennzeichnen. -- Nutzen Sie vorzugsweise Latex zur Erstellung Ihrer Arbeit, um eine professionelle Formatierung und Struktur zu gewährleisten. -- Überarbeiten Sie Ihre Arbeit sorgfältig und führen Sie eine gründliche Rechtschreib- und Grammatikprüfung durch. - -Weitere Informationen und Hilfestellungen zum wissenschaftlichen Arbeiten finden Sie auf der Medieninformatik-Website unter [Wissenschaftliches Arbeiten](https://www.medieninformatik.th-koeln.de/tools/wissenschaftliches-arbeiten/). Nutzen Sie die Unterstützung des [Schreibzentrums der TH Köln](https://www.th-koeln.de/studium/schreibzentrum_94800.php) bei Fragen und Schwierigkeiten rund um das wissenschaftliche Schreiben. - - - -### Niveaustufen - -1. Beste Ausarbeitung -👉 (exzellent – wissenschaftlich fundiert, sprachlich präzise und hervorragend strukturiert) - -Grundlagen & Theorie: Exzellente, tiefgehende und reflektierte theoretische Auseinandersetzung mit dem Thema. -Nachvollziehbarkeit & Argumentation: Sehr stringente Argumentation mit klaren, gut begründeten Aussagen. -Gliederung & Struktur: Perfekt strukturierte Arbeit mit logischem, schlüssigem Aufbau und klarem roten Faden. -Sprache & Ausdruck: Präzise, eloquent, wissenschaftlich korrekt und angenehm zu lesen. -Formalitäten & Zitation: Fehlerfreie Zitation und Formatierung, perfektes wissenschaftliches Arbeiten. -2. Gute Ausarbeitung -👉 (gut strukturiert, verständlich, fundiert argumentiert) - -Grundlagen & Theorie: Tiefgehende, kritische Auseinandersetzung mit der Theorie und klarer Bezug zur Arbeit. -Nachvollziehbarkeit & Argumentation: Schlüssige und gut begründete Argumentation ohne größere Lücken. -Gliederung & Struktur: Stringente und klare Struktur, logisch aufeinander aufbauende Abschnitte. -Sprache & Ausdruck: Gut lesbare, präzise und akademische Ausdrucksweise mit nur minimalen Schwächen. -Formalitäten & Zitation: Sehr saubere Zitierweise, korrektes wissenschaftliches Arbeiten, konsistente Formatierung. -3. Passable Ausarbeitung -👉 (solide, aber mit Optimierungspotenzial in Tiefe und Klarheit) - -Grundlagen & Theorie: Gut recherchierte Basis, aber keine tiefgehende Auseinandersetzung mit dem Thema. -Nachvollziehbarkeit & Argumentation: Logische Argumentationsstruktur, kleinere Ungenauigkeiten oder unzureichende Begründungen. -Gliederung & Struktur: Klarer roter Faden, aber nicht durchgängig optimal aufgebaut oder gegliedert. -Sprache & Ausdruck: Meistens präzise und verständlich, aber gelegentliche stilistische oder grammatikalische Schwächen. -Formalitäten & Zitation: Weitgehend korrekte Zitation und Formatierung, kleinere Fehler oder Inkonsistenzen. -4. Akzeptable Ausarbeitung -👉 (grundlegende, aber fehlerhafte oder unzureichende Umsetzung) - -Grundlagen & Theorie: Erste theoretische Auseinandersetzung, aber noch oberflächlich oder mit Lücken. -Nachvollziehbarkeit & Argumentation: Argumentation verständlich, aber mit Unstimmigkeiten oder schwacher Begründung. -Gliederung & Struktur: Grundsätzlich erkennbarer Aufbau, aber teilweise unklar oder mit Sprüngen. -Sprache & Ausdruck: Verständlich, aber mit stilistischen Schwächen oder häufiger unpräziser Ausdrucksweise. -Formalitäten & Zitation: Zitierweise vorhanden, aber nicht konsistent oder fehlerhaft, grundlegende Formatierung eingehalten. -5. Schlechte Ausarbeitung -👉 (unvollständig, schlecht strukturiert, nicht nachvollziehbar) - -Grundlagen & Theorie: Kaum fundierte Auseinandersetzung mit dem Thema, fehlende oder oberflächliche Recherche, unklare oder falsche Theoriewahl. -Nachvollziehbarkeit & Argumentation: Keine stringente Argumentation, Widersprüche oder fehlende Begründungen. -Gliederung & Struktur: Chaotische oder unlogische Struktur, kein roter Faden, Themen werden ohne Zusammenhang behandelt. -Sprache & Ausdruck: Sehr viele sprachliche Fehler, schlechte Lesbarkeit, unpräzise oder unverständliche Formulierungen. -Formalitäten & Zitation: Fehlende oder inkonsistente Zitierweise, große Mängel bei Layout, Formatierung oder wissenschaftlichen Standards. \ No newline at end of file diff --git a/bilddoku.html b/bilddoku.html deleted file mode 100644 index 7c7a7a8..0000000 --- a/bilddoku.html +++ /dev/null @@ -1,101 +0,0 @@ ---- -layout: simple -title: Bilddokumentation ---- - -**Die Bilddokumentation umfasst Bilder, Grafiken und Animationen, die das Werk und den Prozess dokumentieren. Die Bilder werden im Sciebo hochgeladen. Den Upload Link erhalten Sie von mir. Die Bilder müssen veröffentlichungsfähig sein. Zu jedem Bild sind Bildunterschriften zu verfassen, die den Inhalt beschreiben und ihn in den Kontext der Arbeit einordnen. Diese sind im [IPTC-Format](https://de.wikipedia.org/wiki/IPTC-IIM-Standard#IPTC-Felder) in den jeweiligen Bilddaten zu speichern.** - -### Was sollte beachtet werden? - -- Dokumentieren Sie sowohl wichtige und interessante Schritte als auch Meilensteine des Prozesses. -- Achten Sie darauf, dass die Bilder eine hohe Qualität haben (hohe Auflösung, gute Beleuchtung, klare Darstellung). Die maximale Dateigröße von 3 MB pro Bild sollte nicht überschritten werden. -- Verfassen Sie zu jedem Bild eine aussagekräftige Bildunterschrift, die den Inhalt beschreibt und in den Kontext der Arbeit einordnet. Speichern Sie diese Bildunterschriften im IPTC-Format in den jeweiligen Bilddaten. -- Achten Sie darauf, dass alle Bilder veröffentlichungsfähig sind. Vermeiden Sie die Verwendung von urheberrechtlich geschütztem Material oder vertraulichen Informationen. Fügen Sie, falls erforderlich, Einwilligungserklärungen abgebildeter Personen hinzu. -- Organisieren Sie Ihre Bilddateien systematisch und benennen Sie sie eindeutig, um eine einfache Zuordnung und Wiederauffindbarkeit zu gewährleisten. - -#### Beispiel für eine Bildunterschrift im IPTC-Format - -- **Title**: Entwicklung des Prototyps -- **Description**: Dieses Bild zeigt den Entwicklungsprozess des Prototyps während der Implementierungsphase. Es verdeutlicht die verschiedenen Schritte von der Planung über die Programmierung bis hin zum Testen. -- **Keywords**: Prototyp, Entwicklung, Implementierung, Testen -- **Copyright**: Ihr Name - -#### Nomenklatur - - -``` -photo-log-NAME-DATUM-LAUFENDE-NUMMER.DATEIENDUNG -``` - -z.B. - -``` -photo-log-max-mustermann-2022-01-01-01.png -``` - -### Niveaustufen - -Bewertung der Bilddokumentation - -Eine gute Bilddokumentation sollte den Arbeits- und Forschungsprozess sichtbar machen, wichtige Aspekte nachvollziehbar erklären und ästhetisch ansprechend gestaltet sein. Wichtige Kriterien sind: - -Dokumentation des Arbeitsprozesses: Wichtige Schritte und Entscheidungen werden visuell festgehalten. -Sinnvolle Bildauswahl: Die Bilder sind relevant, treffend und inhaltlich sinnvoll. -Kontext & Erklärung: Bilder sind mit passenden Beschreibungen versehen, die ihr Verständnis erleichtern. -Gestalterische Qualität: Bildkomposition, Beleuchtung und Perspektive sind gut gewählt. -Struktur & Präsentation: Die Bilddokumentation ist übersichtlich, klar und ansprechend gestaltet. -1. Beste Bilddokumentation - -👉 (exzellent – aussagekräftig, durchdacht, professionell gestaltet) - -✅ Dokumentation des Arbeitsprozesses: Lückenlose visuelle Begleitung des gesamten Projekts – von den ersten Ideen bis zum fertigen Ergebnis. -✅ Sinnvolle Bildauswahl: Jedes Bild ist relevant, trägt zur Geschichte bei und ergänzt den Text sinnvoll. -✅ Kontext & Erklärung: Präzise, informative Bildunterschriften, die das Bild in den Forschungsprozess einordnen. -✅ Gestalterische Qualität: Hohe technische Qualität (scharf, gut ausgeleuchtet, durchdachte Perspektiven). -✅ Struktur & Präsentation: Klare, intuitive Anordnung, ansprechendes Layout, angenehme visuelle Gestaltung. - -2. Gute Bilddokumentation - -👉 (solide, gut verständlich, mit kleineren Schwächen in Auswahl oder Gestaltung) - -✅ Dokumentation des Arbeitsprozesses: Relevante Schritte sind gut dokumentiert, aber nicht immer vollständig. -✅ Sinnvolle Bildauswahl: Die meisten Bilder sind gut gewählt, einige könnten aber klarer oder prägnanter sein. -✅ Kontext & Erklärung: Verständliche Erklärungen, aber nicht immer tiefgehend oder präzise formuliert. -✅ Gestalterische Qualität: Gute Bildqualität, aber gelegentliche Schwächen in Schärfe, Beleuchtung oder Perspektive. -✅ Struktur & Präsentation: Gut lesbar und sinnvoll angeordnet, aber nicht durchgehend optimal gestaltet. - -3. Passable Bilddokumentation - -👉 (ausreichend, aber mit Verbesserungspotenzial in Struktur, Qualität oder Kontext) - -✅ Dokumentation des Arbeitsprozesses: Wichtige Schritte sind vorhanden, aber es gibt erkennbare Lücken. -✅ Sinnvolle Bildauswahl: Einige Bilder sind relevant, andere wirken überflüssig oder unklar. -✅ Kontext & Erklärung: Bildunterschriften vorhanden, aber teilweise ungenau oder wenig erklärend. -✅ Gestalterische Qualität: Mittelmäßige Bildqualität (leichte Unschärfen, schlechte Beleuchtung, unruhige Komposition). -✅ Struktur & Präsentation: Die Anordnung ist verständlich, aber nicht optimal strukturiert oder gestaltet. - -4. Akzeptable Bilddokumentation - -👉 (lückenhaft, wenig durchdacht, technisch oder inhaltlich schwach, aber grundlegende Inhalte vorhanden) - -✅ Dokumentation des Arbeitsprozesses: Nur wenige oder zufällig gewählte Bilder, keine durchgängige visuelle Begleitung. -✅ Sinnvolle Bildauswahl: Einige Bilder sind unpassend oder bieten keinen Mehrwert. -✅ Kontext & Erklärung: Bildunterschriften fehlen oder sind so knapp, dass der Kontext unklar bleibt. -✅ Gestalterische Qualität: Mehrere Bilder sind unscharf, verwackelt, schlecht ausgeleuchtet oder ungünstig komponiert. -✅ Struktur & Präsentation: Die Bilder sind unübersichtlich angeordnet oder wirken willkürlich zusammengestellt. - -5. Schlechte Bilddokumentation - -👉 (mangelhaft – unvollständig, unverständlich, visuell oder inhaltlich unbrauchbar) - -✅ Dokumentation des Arbeitsprozesses: Kaum oder keine visuelle Begleitung des Projekts, wichtige Schritte fehlen. -✅ Sinnvolle Bildauswahl: Bilder sind irrelevant, unpassend oder nicht aussagekräftig. -✅ Kontext & Erklärung: Keine oder völlig unzureichende Beschriftungen, Bilder bleiben ohne Bedeutung. -✅ Gestalterische Qualität: Sehr schlechte Bildqualität (unscharf, überbelichtet, verwackelt, unbrauchbare Perspektiven). -✅ Struktur & Präsentation: Chaotisch, unübersichtlich, unprofessionell aufbereitet. - -Fazit: - -Eine gute Bilddokumentation erzählt eine visuelle Geschichte des Forschungs- und Arbeitsprozesses. Sie ist gut strukturiert, visuell ansprechend und inhaltlich relevant. - -Bilder sind keine Dekoration – sie müssen Informationen vermitteln und den Forschungsprozess unterstützen! \ No newline at end of file diff --git a/compiled-assets/fonts/.gitkeep b/compiled-assets/fonts/.gitkeep deleted file mode 100644 index e69de29..0000000 diff --git a/compiled-assets/fonts/Barlow/Barlow-Black.ttf b/compiled-assets/fonts/Barlow/Barlow-Black.ttf deleted file mode 100755 index 4d9bb93..0000000 Binary files a/compiled-assets/fonts/Barlow/Barlow-Black.ttf and /dev/null differ diff --git a/compiled-assets/fonts/Barlow/Barlow-BlackItalic.ttf b/compiled-assets/fonts/Barlow/Barlow-BlackItalic.ttf deleted file mode 100755 index 1947969..0000000 Binary files a/compiled-assets/fonts/Barlow/Barlow-BlackItalic.ttf and /dev/null differ diff --git a/compiled-assets/fonts/Barlow/Barlow-Bold.ttf b/compiled-assets/fonts/Barlow/Barlow-Bold.ttf deleted file mode 100755 index 86f237c..0000000 Binary files a/compiled-assets/fonts/Barlow/Barlow-Bold.ttf and /dev/null differ diff --git a/compiled-assets/fonts/Barlow/Barlow-BoldItalic.ttf b/compiled-assets/fonts/Barlow/Barlow-BoldItalic.ttf deleted file mode 100755 index bc59eaf..0000000 Binary files a/compiled-assets/fonts/Barlow/Barlow-BoldItalic.ttf and /dev/null differ diff --git a/compiled-assets/fonts/Barlow/Barlow-ExtraBold.ttf b/compiled-assets/fonts/Barlow/Barlow-ExtraBold.ttf deleted file mode 100755 index 0da0383..0000000 Binary files a/compiled-assets/fonts/Barlow/Barlow-ExtraBold.ttf and /dev/null differ diff --git a/compiled-assets/fonts/Barlow/Barlow-ExtraBoldItalic.ttf b/compiled-assets/fonts/Barlow/Barlow-ExtraBoldItalic.ttf deleted file mode 100755 index a1f1612..0000000 Binary files a/compiled-assets/fonts/Barlow/Barlow-ExtraBoldItalic.ttf and /dev/null differ diff --git a/compiled-assets/fonts/Barlow/Barlow-ExtraLight.ttf b/compiled-assets/fonts/Barlow/Barlow-ExtraLight.ttf deleted file mode 100755 index b70214d..0000000 Binary files a/compiled-assets/fonts/Barlow/Barlow-ExtraLight.ttf and /dev/null differ diff --git a/compiled-assets/fonts/Barlow/Barlow-ExtraLightItalic.ttf b/compiled-assets/fonts/Barlow/Barlow-ExtraLightItalic.ttf deleted file mode 100755 index a5f9351..0000000 Binary files a/compiled-assets/fonts/Barlow/Barlow-ExtraLightItalic.ttf and /dev/null differ diff --git a/compiled-assets/fonts/Barlow/Barlow-Italic.ttf b/compiled-assets/fonts/Barlow/Barlow-Italic.ttf deleted file mode 100755 index 987594e..0000000 Binary files a/compiled-assets/fonts/Barlow/Barlow-Italic.ttf and /dev/null differ diff --git a/compiled-assets/fonts/Barlow/Barlow-Light.ttf b/compiled-assets/fonts/Barlow/Barlow-Light.ttf deleted file mode 100755 index a6f71f2..0000000 Binary files a/compiled-assets/fonts/Barlow/Barlow-Light.ttf and /dev/null differ diff --git a/compiled-assets/fonts/Barlow/Barlow-LightItalic.ttf b/compiled-assets/fonts/Barlow/Barlow-LightItalic.ttf deleted file mode 100755 index 28b8a38..0000000 Binary files a/compiled-assets/fonts/Barlow/Barlow-LightItalic.ttf and /dev/null differ diff --git a/compiled-assets/fonts/Barlow/Barlow-Medium.ttf b/compiled-assets/fonts/Barlow/Barlow-Medium.ttf deleted file mode 100755 index 1806783..0000000 Binary files a/compiled-assets/fonts/Barlow/Barlow-Medium.ttf and /dev/null differ diff --git a/compiled-assets/fonts/Barlow/Barlow-MediumItalic.ttf b/compiled-assets/fonts/Barlow/Barlow-MediumItalic.ttf deleted file mode 100755 index 46e2a76..0000000 Binary files a/compiled-assets/fonts/Barlow/Barlow-MediumItalic.ttf and /dev/null differ diff --git a/compiled-assets/fonts/Barlow/Barlow-Regular.ttf b/compiled-assets/fonts/Barlow/Barlow-Regular.ttf deleted file mode 100755 index 340f1c6..0000000 Binary files a/compiled-assets/fonts/Barlow/Barlow-Regular.ttf and /dev/null differ diff --git a/compiled-assets/fonts/Barlow/Barlow-SemiBold.ttf b/compiled-assets/fonts/Barlow/Barlow-SemiBold.ttf deleted file mode 100755 index e95527e..0000000 Binary files a/compiled-assets/fonts/Barlow/Barlow-SemiBold.ttf and /dev/null differ diff --git a/compiled-assets/fonts/Barlow/Barlow-SemiBoldItalic.ttf b/compiled-assets/fonts/Barlow/Barlow-SemiBoldItalic.ttf deleted file mode 100755 index ba4f521..0000000 Binary files a/compiled-assets/fonts/Barlow/Barlow-SemiBoldItalic.ttf and /dev/null differ diff --git a/compiled-assets/fonts/Barlow/Barlow-Thin.ttf b/compiled-assets/fonts/Barlow/Barlow-Thin.ttf deleted file mode 100755 index d8882fe..0000000 Binary files a/compiled-assets/fonts/Barlow/Barlow-Thin.ttf and /dev/null differ diff --git a/compiled-assets/fonts/Barlow/Barlow-ThinItalic.ttf b/compiled-assets/fonts/Barlow/Barlow-ThinItalic.ttf deleted file mode 100755 index 869f1a3..0000000 Binary files a/compiled-assets/fonts/Barlow/Barlow-ThinItalic.ttf and /dev/null differ diff --git a/compiled-assets/fonts/Barlow/OFL.txt b/compiled-assets/fonts/Barlow/OFL.txt deleted file mode 100755 index 264ffc5..0000000 --- a/compiled-assets/fonts/Barlow/OFL.txt +++ /dev/null @@ -1,93 +0,0 @@ -Copyright 2017 The Barlow Project Authors (https://github.com/jpt/barlow) - -This Font Software is licensed under the SIL Open Font License, Version 1.1. -This license is copied below, and is also available with a FAQ at: -http://scripts.sil.org/OFL - - ------------------------------------------------------------ -SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 ------------------------------------------------------------ - -PREAMBLE -The goals of the Open Font License (OFL) are to stimulate worldwide -development of collaborative font projects, to support the font creation -efforts of academic and linguistic communities, and to provide a free and -open framework in which fonts may be shared and improved in partnership -with others. - -The OFL allows the licensed fonts to be used, studied, modified and -redistributed freely as long as they are not sold by themselves. The -fonts, including any derivative works, can be bundled, embedded, -redistributed and/or sold with any software provided that any reserved -names are not used by derivative works. The fonts and derivatives, -however, cannot be released under any other type of license. The -requirement for fonts to remain under this license does not apply -to any document created using the fonts or their derivatives. - -DEFINITIONS -"Font Software" refers to the set of files released by the Copyright -Holder(s) under this license and clearly marked as such. This may -include source files, build scripts and documentation. - -"Reserved Font Name" refers to any names specified as such after the -copyright statement(s). - -"Original Version" refers to the collection of Font Software components as -distributed by the Copyright Holder(s). - -"Modified Version" refers to any derivative made by adding to, deleting, -or substituting -- in part or in whole -- any of the components of the -Original Version, by changing formats or by porting the Font Software to a -new environment. - -"Author" refers to any designer, engineer, programmer, technical -writer or other person who contributed to the Font Software. - -PERMISSION & CONDITIONS -Permission is hereby granted, free of charge, to any person obtaining -a copy of the Font Software, to use, study, copy, merge, embed, modify, -redistribute, and sell modified and unmodified copies of the Font -Software, subject to the following conditions: - -1) Neither the Font Software nor any of its individual components, -in Original or Modified Versions, may be sold by itself. - -2) Original or Modified Versions of the Font Software may be bundled, -redistributed and/or sold with any software, provided that each copy -contains the above copyright notice and this license. These can be -included either as stand-alone text files, human-readable headers or -in the appropriate machine-readable metadata fields within text or -binary files as long as those fields can be easily viewed by the user. - -3) No Modified Version of the Font Software may use the Reserved Font -Name(s) unless explicit written permission is granted by the corresponding -Copyright Holder. This restriction only applies to the primary font name as -presented to the users. - -4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font -Software shall not be used to promote, endorse or advertise any -Modified Version, except to acknowledge the contribution(s) of the -Copyright Holder(s) and the Author(s) or with their explicit written -permission. - -5) The Font Software, modified or unmodified, in part or in whole, -must be distributed entirely under this license, and must not be -distributed under any other license. The requirement for fonts to -remain under this license does not apply to any document created -using the Font Software. - -TERMINATION -This license becomes null and void if any of the above conditions are -not met. - -DISCLAIMER -THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT -OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE -COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL -DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM -OTHER DEALINGS IN THE FONT SOFTWARE. diff --git a/compiled-assets/fonts/Icofont/icofont.eot b/compiled-assets/fonts/Icofont/icofont.eot deleted file mode 100755 index 56e15db..0000000 Binary files a/compiled-assets/fonts/Icofont/icofont.eot and /dev/null differ diff --git a/compiled-assets/fonts/Icofont/icofont.svg b/compiled-assets/fonts/Icofont/icofont.svg deleted file mode 100755 index 8535ec6..0000000 --- a/compiled-assets/fonts/Icofont/icofont.svg +++ /dev/null @@ -1,2105 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/compiled-assets/fonts/Icofont/icofont.ttf b/compiled-assets/fonts/Icofont/icofont.ttf deleted file mode 100755 index ba6d235..0000000 Binary files a/compiled-assets/fonts/Icofont/icofont.ttf and /dev/null differ diff --git a/compiled-assets/fonts/Icofont/icofont.woff b/compiled-assets/fonts/Icofont/icofont.woff deleted file mode 100755 index 48002ce..0000000 Binary files a/compiled-assets/fonts/Icofont/icofont.woff and /dev/null differ diff --git a/compiled-assets/fonts/Icofont/icofont.woff2 b/compiled-assets/fonts/Icofont/icofont.woff2 deleted file mode 100755 index 75f03d7..0000000 Binary files a/compiled-assets/fonts/Icofont/icofont.woff2 and /dev/null differ diff --git a/compiled-assets/fonts/MaterialIcons/MaterialIcons-Regular.eot b/compiled-assets/fonts/MaterialIcons/MaterialIcons-Regular.eot deleted file mode 100755 index 70508eb..0000000 Binary files a/compiled-assets/fonts/MaterialIcons/MaterialIcons-Regular.eot and /dev/null differ diff --git a/compiled-assets/fonts/MaterialIcons/MaterialIcons-Regular.ijmap b/compiled-assets/fonts/MaterialIcons/MaterialIcons-Regular.ijmap deleted file mode 100755 index d9f1d25..0000000 --- a/compiled-assets/fonts/MaterialIcons/MaterialIcons-Regular.ijmap +++ /dev/null @@ -1 +0,0 @@ -{"icons":{"e84d":{"name":"3d Rotation"},"eb3b":{"name":"Ac Unit"},"e190":{"name":"Access Alarm"},"e191":{"name":"Access Alarms"},"e192":{"name":"Access Time"},"e84e":{"name":"Accessibility"},"e914":{"name":"Accessible"},"e84f":{"name":"Account Balance"},"e850":{"name":"Account Balance Wallet"},"e851":{"name":"Account Box"},"e853":{"name":"Account Circle"},"e60e":{"name":"Adb"},"e145":{"name":"Add"},"e439":{"name":"Add A Photo"},"e193":{"name":"Add Alarm"},"e003":{"name":"Add Alert"},"e146":{"name":"Add Box"},"e147":{"name":"Add Circle"},"e148":{"name":"Add Circle Outline"},"e567":{"name":"Add Location"},"e854":{"name":"Add Shopping Cart"},"e39d":{"name":"Add To Photos"},"e05c":{"name":"Add To Queue"},"e39e":{"name":"Adjust"},"e630":{"name":"Airline Seat Flat"},"e631":{"name":"Airline Seat Flat Angled"},"e632":{"name":"Airline Seat Individual Suite"},"e633":{"name":"Airline Seat Legroom Extra"},"e634":{"name":"Airline Seat Legroom Normal"},"e635":{"name":"Airline Seat Legroom Reduced"},"e636":{"name":"Airline Seat Recline Extra"},"e637":{"name":"Airline Seat Recline Normal"},"e195":{"name":"Airplanemode Active"},"e194":{"name":"Airplanemode Inactive"},"e055":{"name":"Airplay"},"eb3c":{"name":"Airport Shuttle"},"e855":{"name":"Alarm"},"e856":{"name":"Alarm Add"},"e857":{"name":"Alarm Off"},"e858":{"name":"Alarm On"},"e019":{"name":"Album"},"eb3d":{"name":"All Inclusive"},"e90b":{"name":"All Out"},"e859":{"name":"Android"},"e85a":{"name":"Announcement"},"e5c3":{"name":"Apps"},"e149":{"name":"Archive"},"e5c4":{"name":"Arrow Back"},"e5db":{"name":"Arrow Downward"},"e5c5":{"name":"Arrow Drop Down"},"e5c6":{"name":"Arrow Drop Down Circle"},"e5c7":{"name":"Arrow Drop Up"},"e5c8":{"name":"Arrow Forward"},"e5d8":{"name":"Arrow Upward"},"e060":{"name":"Art Track"},"e85b":{"name":"Aspect Ratio"},"e85c":{"name":"Assessment"},"e85d":{"name":"Assignment"},"e85e":{"name":"Assignment Ind"},"e85f":{"name":"Assignment Late"},"e860":{"name":"Assignment Return"},"e861":{"name":"Assignment Returned"},"e862":{"name":"Assignment Turned In"},"e39f":{"name":"Assistant"},"e3a0":{"name":"Assistant Photo"},"e226":{"name":"Attach File"},"e227":{"name":"Attach Money"},"e2bc":{"name":"Attachment"},"e3a1":{"name":"Audiotrack"},"e863":{"name":"Autorenew"},"e01b":{"name":"Av Timer"},"e14a":{"name":"Backspace"},"e864":{"name":"Backup"},"e19c":{"name":"Battery Alert"},"e1a3":{"name":"Battery Charging Full"},"e1a4":{"name":"Battery Full"},"e1a5":{"name":"Battery Std"},"e1a6":{"name":"Battery Unknown"},"eb3e":{"name":"Beach Access"},"e52d":{"name":"Beenhere"},"e14b":{"name":"Block"},"e1a7":{"name":"Bluetooth"},"e60f":{"name":"Bluetooth Audio"},"e1a8":{"name":"Bluetooth Connected"},"e1a9":{"name":"Bluetooth Disabled"},"e1aa":{"name":"Bluetooth Searching"},"e3a2":{"name":"Blur Circular"},"e3a3":{"name":"Blur Linear"},"e3a4":{"name":"Blur Off"},"e3a5":{"name":"Blur On"},"e865":{"name":"Book"},"e866":{"name":"Bookmark"},"e867":{"name":"Bookmark Border"},"e228":{"name":"Border All"},"e229":{"name":"Border Bottom"},"e22a":{"name":"Border Clear"},"e22b":{"name":"Border Color"},"e22c":{"name":"Border Horizontal"},"e22d":{"name":"Border Inner"},"e22e":{"name":"Border Left"},"e22f":{"name":"Border Outer"},"e230":{"name":"Border Right"},"e231":{"name":"Border Style"},"e232":{"name":"Border Top"},"e233":{"name":"Border Vertical"},"e06b":{"name":"Branding Watermark"},"e3a6":{"name":"Brightness 1"},"e3a7":{"name":"Brightness 2"},"e3a8":{"name":"Brightness 3"},"e3a9":{"name":"Brightness 4"},"e3aa":{"name":"Brightness 5"},"e3ab":{"name":"Brightness 6"},"e3ac":{"name":"Brightness 7"},"e1ab":{"name":"Brightness Auto"},"e1ac":{"name":"Brightness High"},"e1ad":{"name":"Brightness Low"},"e1ae":{"name":"Brightness Medium"},"e3ad":{"name":"Broken Image"},"e3ae":{"name":"Brush"},"e6dd":{"name":"Bubble Chart"},"e868":{"name":"Bug Report"},"e869":{"name":"Build"},"e43c":{"name":"Burst Mode"},"e0af":{"name":"Business"},"eb3f":{"name":"Business Center"},"e86a":{"name":"Cached"},"e7e9":{"name":"Cake"},"e0b0":{"name":"Call"},"e0b1":{"name":"Call End"},"e0b2":{"name":"Call Made"},"e0b3":{"name":"Call Merge"},"e0b4":{"name":"Call Missed"},"e0e4":{"name":"Call Missed Outgoing"},"e0b5":{"name":"Call Received"},"e0b6":{"name":"Call Split"},"e06c":{"name":"Call To Action"},"e3af":{"name":"Camera"},"e3b0":{"name":"Camera Alt"},"e8fc":{"name":"Camera Enhance"},"e3b1":{"name":"Camera Front"},"e3b2":{"name":"Camera Rear"},"e3b3":{"name":"Camera Roll"},"e5c9":{"name":"Cancel"},"e8f6":{"name":"Card Giftcard"},"e8f7":{"name":"Card Membership"},"e8f8":{"name":"Card Travel"},"eb40":{"name":"Casino"},"e307":{"name":"Cast"},"e308":{"name":"Cast Connected"},"e3b4":{"name":"Center Focus Strong"},"e3b5":{"name":"Center Focus Weak"},"e86b":{"name":"Change History"},"e0b7":{"name":"Chat"},"e0ca":{"name":"Chat Bubble"},"e0cb":{"name":"Chat Bubble Outline"},"e5ca":{"name":"Check"},"e834":{"name":"Check Box"},"e835":{"name":"Check Box Outline Blank"},"e86c":{"name":"Check Circle"},"e5cb":{"name":"Chevron Left"},"e5cc":{"name":"Chevron Right"},"eb41":{"name":"Child Care"},"eb42":{"name":"Child Friendly"},"e86d":{"name":"Chrome Reader Mode"},"e86e":{"name":"Class"},"e14c":{"name":"Clear"},"e0b8":{"name":"Clear All"},"e5cd":{"name":"Close"},"e01c":{"name":"Closed Caption"},"e2bd":{"name":"Cloud"},"e2be":{"name":"Cloud Circle"},"e2bf":{"name":"Cloud Done"},"e2c0":{"name":"Cloud Download"},"e2c1":{"name":"Cloud Off"},"e2c2":{"name":"Cloud Queue"},"e2c3":{"name":"Cloud Upload"},"e86f":{"name":"Code"},"e3b6":{"name":"Collections"},"e431":{"name":"Collections Bookmark"},"e3b7":{"name":"Color Lens"},"e3b8":{"name":"Colorize"},"e0b9":{"name":"Comment"},"e3b9":{"name":"Compare"},"e915":{"name":"Compare Arrows"},"e30a":{"name":"Computer"},"e638":{"name":"Confirmation Number"},"e0d0":{"name":"Contact Mail"},"e0cf":{"name":"Contact Phone"},"e0ba":{"name":"Contacts"},"e14d":{"name":"Content Copy"},"e14e":{"name":"Content Cut"},"e14f":{"name":"Content Paste"},"e3ba":{"name":"Control Point"},"e3bb":{"name":"Control Point Duplicate"},"e90c":{"name":"Copyright"},"e150":{"name":"Create"},"e2cc":{"name":"Create New Folder"},"e870":{"name":"Credit Card"},"e3be":{"name":"Crop"},"e3bc":{"name":"Crop 16 9"},"e3bd":{"name":"Crop 3 2"},"e3bf":{"name":"Crop 5 4"},"e3c0":{"name":"Crop 7 5"},"e3c1":{"name":"Crop Din"},"e3c2":{"name":"Crop Free"},"e3c3":{"name":"Crop Landscape"},"e3c4":{"name":"Crop Original"},"e3c5":{"name":"Crop Portrait"},"e437":{"name":"Crop Rotate"},"e3c6":{"name":"Crop Square"},"e871":{"name":"Dashboard"},"e1af":{"name":"Data Usage"},"e916":{"name":"Date Range"},"e3c7":{"name":"Dehaze"},"e872":{"name":"Delete"},"e92b":{"name":"Delete Forever"},"e16c":{"name":"Delete Sweep"},"e873":{"name":"Description"},"e30b":{"name":"Desktop Mac"},"e30c":{"name":"Desktop Windows"},"e3c8":{"name":"Details"},"e30d":{"name":"Developer Board"},"e1b0":{"name":"Developer Mode"},"e335":{"name":"Device Hub"},"e1b1":{"name":"Devices"},"e337":{"name":"Devices Other"},"e0bb":{"name":"Dialer Sip"},"e0bc":{"name":"Dialpad"},"e52e":{"name":"Directions"},"e52f":{"name":"Directions Bike"},"e532":{"name":"Directions Boat"},"e530":{"name":"Directions Bus"},"e531":{"name":"Directions Car"},"e534":{"name":"Directions Railway"},"e566":{"name":"Directions Run"},"e533":{"name":"Directions Subway"},"e535":{"name":"Directions Transit"},"e536":{"name":"Directions Walk"},"e610":{"name":"Disc Full"},"e875":{"name":"Dns"},"e612":{"name":"Do Not Disturb"},"e611":{"name":"Do Not Disturb Alt"},"e643":{"name":"Do Not Disturb Off"},"e644":{"name":"Do Not Disturb On"},"e30e":{"name":"Dock"},"e7ee":{"name":"Domain"},"e876":{"name":"Done"},"e877":{"name":"Done All"},"e917":{"name":"Donut Large"},"e918":{"name":"Donut Small"},"e151":{"name":"Drafts"},"e25d":{"name":"Drag Handle"},"e613":{"name":"Drive Eta"},"e1b2":{"name":"Dvr"},"e3c9":{"name":"Edit"},"e568":{"name":"Edit Location"},"e8fb":{"name":"Eject"},"e0be":{"name":"Email"},"e63f":{"name":"Enhanced Encryption"},"e01d":{"name":"Equalizer"},"e000":{"name":"Error"},"e001":{"name":"Error Outline"},"e926":{"name":"Euro Symbol"},"e56d":{"name":"Ev Station"},"e878":{"name":"Event"},"e614":{"name":"Event Available"},"e615":{"name":"Event Busy"},"e616":{"name":"Event Note"},"e903":{"name":"Event Seat"},"e879":{"name":"Exit To App"},"e5ce":{"name":"Expand Less"},"e5cf":{"name":"Expand More"},"e01e":{"name":"Explicit"},"e87a":{"name":"Explore"},"e3ca":{"name":"Exposure"},"e3cb":{"name":"Exposure Neg 1"},"e3cc":{"name":"Exposure Neg 2"},"e3cd":{"name":"Exposure Plus 1"},"e3ce":{"name":"Exposure Plus 2"},"e3cf":{"name":"Exposure Zero"},"e87b":{"name":"Extension"},"e87c":{"name":"Face"},"e01f":{"name":"Fast Forward"},"e020":{"name":"Fast Rewind"},"e87d":{"name":"Favorite"},"e87e":{"name":"Favorite Border"},"e06d":{"name":"Featured Play List"},"e06e":{"name":"Featured Video"},"e87f":{"name":"Feedback"},"e05d":{"name":"Fiber Dvr"},"e061":{"name":"Fiber Manual Record"},"e05e":{"name":"Fiber New"},"e06a":{"name":"Fiber Pin"},"e062":{"name":"Fiber Smart Record"},"e2c4":{"name":"File Download"},"e2c6":{"name":"File Upload"},"e3d3":{"name":"Filter"},"e3d0":{"name":"Filter 1"},"e3d1":{"name":"Filter 2"},"e3d2":{"name":"Filter 3"},"e3d4":{"name":"Filter 4"},"e3d5":{"name":"Filter 5"},"e3d6":{"name":"Filter 6"},"e3d7":{"name":"Filter 7"},"e3d8":{"name":"Filter 8"},"e3d9":{"name":"Filter 9"},"e3da":{"name":"Filter 9 Plus"},"e3db":{"name":"Filter B And W"},"e3dc":{"name":"Filter Center Focus"},"e3dd":{"name":"Filter Drama"},"e3de":{"name":"Filter Frames"},"e3df":{"name":"Filter Hdr"},"e152":{"name":"Filter List"},"e3e0":{"name":"Filter None"},"e3e2":{"name":"Filter Tilt Shift"},"e3e3":{"name":"Filter Vintage"},"e880":{"name":"Find In Page"},"e881":{"name":"Find Replace"},"e90d":{"name":"Fingerprint"},"e5dc":{"name":"First Page"},"eb43":{"name":"Fitness Center"},"e153":{"name":"Flag"},"e3e4":{"name":"Flare"},"e3e5":{"name":"Flash Auto"},"e3e6":{"name":"Flash Off"},"e3e7":{"name":"Flash On"},"e539":{"name":"Flight"},"e904":{"name":"Flight Land"},"e905":{"name":"Flight Takeoff"},"e3e8":{"name":"Flip"},"e882":{"name":"Flip To Back"},"e883":{"name":"Flip To Front"},"e2c7":{"name":"Folder"},"e2c8":{"name":"Folder Open"},"e2c9":{"name":"Folder Shared"},"e617":{"name":"Folder Special"},"e167":{"name":"Font Download"},"e234":{"name":"Format Align Center"},"e235":{"name":"Format Align Justify"},"e236":{"name":"Format Align Left"},"e237":{"name":"Format Align Right"},"e238":{"name":"Format Bold"},"e239":{"name":"Format Clear"},"e23a":{"name":"Format Color Fill"},"e23b":{"name":"Format Color Reset"},"e23c":{"name":"Format Color Text"},"e23d":{"name":"Format Indent Decrease"},"e23e":{"name":"Format Indent Increase"},"e23f":{"name":"Format Italic"},"e240":{"name":"Format Line Spacing"},"e241":{"name":"Format List Bulleted"},"e242":{"name":"Format List Numbered"},"e243":{"name":"Format Paint"},"e244":{"name":"Format Quote"},"e25e":{"name":"Format Shapes"},"e245":{"name":"Format Size"},"e246":{"name":"Format Strikethrough"},"e247":{"name":"Format Textdirection L To R"},"e248":{"name":"Format Textdirection R To L"},"e249":{"name":"Format Underlined"},"e0bf":{"name":"Forum"},"e154":{"name":"Forward"},"e056":{"name":"Forward 10"},"e057":{"name":"Forward 30"},"e058":{"name":"Forward 5"},"eb44":{"name":"Free Breakfast"},"e5d0":{"name":"Fullscreen"},"e5d1":{"name":"Fullscreen Exit"},"e24a":{"name":"Functions"},"e927":{"name":"G Translate"},"e30f":{"name":"Gamepad"},"e021":{"name":"Games"},"e90e":{"name":"Gavel"},"e155":{"name":"Gesture"},"e884":{"name":"Get App"},"e908":{"name":"Gif"},"eb45":{"name":"Golf Course"},"e1b3":{"name":"Gps Fixed"},"e1b4":{"name":"Gps Not Fixed"},"e1b5":{"name":"Gps Off"},"e885":{"name":"Grade"},"e3e9":{"name":"Gradient"},"e3ea":{"name":"Grain"},"e1b8":{"name":"Graphic Eq"},"e3eb":{"name":"Grid Off"},"e3ec":{"name":"Grid On"},"e7ef":{"name":"Group"},"e7f0":{"name":"Group Add"},"e886":{"name":"Group Work"},"e052":{"name":"Hd"},"e3ed":{"name":"Hdr Off"},"e3ee":{"name":"Hdr On"},"e3f1":{"name":"Hdr Strong"},"e3f2":{"name":"Hdr Weak"},"e310":{"name":"Headset"},"e311":{"name":"Headset Mic"},"e3f3":{"name":"Healing"},"e023":{"name":"Hearing"},"e887":{"name":"Help"},"e8fd":{"name":"Help Outline"},"e024":{"name":"High Quality"},"e25f":{"name":"Highlight"},"e888":{"name":"Highlight Off"},"e889":{"name":"History"},"e88a":{"name":"Home"},"eb46":{"name":"Hot Tub"},"e53a":{"name":"Hotel"},"e88b":{"name":"Hourglass Empty"},"e88c":{"name":"Hourglass Full"},"e902":{"name":"Http"},"e88d":{"name":"Https"},"e3f4":{"name":"Image"},"e3f5":{"name":"Image Aspect Ratio"},"e0e0":{"name":"Import Contacts"},"e0c3":{"name":"Import Export"},"e912":{"name":"Important Devices"},"e156":{"name":"Inbox"},"e909":{"name":"Indeterminate Check Box"},"e88e":{"name":"Info"},"e88f":{"name":"Info Outline"},"e890":{"name":"Input"},"e24b":{"name":"Insert Chart"},"e24c":{"name":"Insert Comment"},"e24d":{"name":"Insert Drive File"},"e24e":{"name":"Insert Emoticon"},"e24f":{"name":"Insert Invitation"},"e250":{"name":"Insert Link"},"e251":{"name":"Insert Photo"},"e891":{"name":"Invert Colors"},"e0c4":{"name":"Invert Colors Off"},"e3f6":{"name":"Iso"},"e312":{"name":"Keyboard"},"e313":{"name":"Keyboard Arrow Down"},"e314":{"name":"Keyboard Arrow Left"},"e315":{"name":"Keyboard Arrow Right"},"e316":{"name":"Keyboard Arrow Up"},"e317":{"name":"Keyboard Backspace"},"e318":{"name":"Keyboard Capslock"},"e31a":{"name":"Keyboard Hide"},"e31b":{"name":"Keyboard Return"},"e31c":{"name":"Keyboard Tab"},"e31d":{"name":"Keyboard Voice"},"eb47":{"name":"Kitchen"},"e892":{"name":"Label"},"e893":{"name":"Label Outline"},"e3f7":{"name":"Landscape"},"e894":{"name":"Language"},"e31e":{"name":"Laptop"},"e31f":{"name":"Laptop Chromebook"},"e320":{"name":"Laptop Mac"},"e321":{"name":"Laptop Windows"},"e5dd":{"name":"Last Page"},"e895":{"name":"Launch"},"e53b":{"name":"Layers"},"e53c":{"name":"Layers Clear"},"e3f8":{"name":"Leak Add"},"e3f9":{"name":"Leak Remove"},"e3fa":{"name":"Lens"},"e02e":{"name":"Library Add"},"e02f":{"name":"Library Books"},"e030":{"name":"Library Music"},"e90f":{"name":"Lightbulb Outline"},"e919":{"name":"Line Style"},"e91a":{"name":"Line Weight"},"e260":{"name":"Linear Scale"},"e157":{"name":"Link"},"e438":{"name":"Linked Camera"},"e896":{"name":"List"},"e0c6":{"name":"Live Help"},"e639":{"name":"Live Tv"},"e53f":{"name":"Local Activity"},"e53d":{"name":"Local Airport"},"e53e":{"name":"Local Atm"},"e540":{"name":"Local Bar"},"e541":{"name":"Local Cafe"},"e542":{"name":"Local Car Wash"},"e543":{"name":"Local Convenience Store"},"e556":{"name":"Local Dining"},"e544":{"name":"Local Drink"},"e545":{"name":"Local Florist"},"e546":{"name":"Local Gas Station"},"e547":{"name":"Local Grocery Store"},"e548":{"name":"Local Hospital"},"e549":{"name":"Local Hotel"},"e54a":{"name":"Local Laundry Service"},"e54b":{"name":"Local Library"},"e54c":{"name":"Local Mall"},"e54d":{"name":"Local Movies"},"e54e":{"name":"Local Offer"},"e54f":{"name":"Local Parking"},"e550":{"name":"Local Pharmacy"},"e551":{"name":"Local Phone"},"e552":{"name":"Local Pizza"},"e553":{"name":"Local Play"},"e554":{"name":"Local Post Office"},"e555":{"name":"Local Printshop"},"e557":{"name":"Local See"},"e558":{"name":"Local Shipping"},"e559":{"name":"Local Taxi"},"e7f1":{"name":"Location City"},"e1b6":{"name":"Location Disabled"},"e0c7":{"name":"Location Off"},"e0c8":{"name":"Location On"},"e1b7":{"name":"Location Searching"},"e897":{"name":"Lock"},"e898":{"name":"Lock Open"},"e899":{"name":"Lock Outline"},"e3fc":{"name":"Looks"},"e3fb":{"name":"Looks 3"},"e3fd":{"name":"Looks 4"},"e3fe":{"name":"Looks 5"},"e3ff":{"name":"Looks 6"},"e400":{"name":"Looks One"},"e401":{"name":"Looks Two"},"e028":{"name":"Loop"},"e402":{"name":"Loupe"},"e16d":{"name":"Low Priority"},"e89a":{"name":"Loyalty"},"e158":{"name":"Mail"},"e0e1":{"name":"Mail Outline"},"e55b":{"name":"Map"},"e159":{"name":"Markunread"},"e89b":{"name":"Markunread Mailbox"},"e322":{"name":"Memory"},"e5d2":{"name":"Menu"},"e252":{"name":"Merge Type"},"e0c9":{"name":"Message"},"e029":{"name":"Mic"},"e02a":{"name":"Mic None"},"e02b":{"name":"Mic Off"},"e618":{"name":"Mms"},"e253":{"name":"Mode Comment"},"e254":{"name":"Mode Edit"},"e263":{"name":"Monetization On"},"e25c":{"name":"Money Off"},"e403":{"name":"Monochrome Photos"},"e7f2":{"name":"Mood"},"e7f3":{"name":"Mood Bad"},"e619":{"name":"More"},"e5d3":{"name":"More Horiz"},"e5d4":{"name":"More Vert"},"e91b":{"name":"Motorcycle"},"e323":{"name":"Mouse"},"e168":{"name":"Move To Inbox"},"e02c":{"name":"Movie"},"e404":{"name":"Movie Creation"},"e43a":{"name":"Movie Filter"},"e6df":{"name":"Multiline Chart"},"e405":{"name":"Music Note"},"e063":{"name":"Music Video"},"e55c":{"name":"My Location"},"e406":{"name":"Nature"},"e407":{"name":"Nature People"},"e408":{"name":"Navigate Before"},"e409":{"name":"Navigate Next"},"e55d":{"name":"Navigation"},"e569":{"name":"Near Me"},"e1b9":{"name":"Network Cell"},"e640":{"name":"Network Check"},"e61a":{"name":"Network Locked"},"e1ba":{"name":"Network Wifi"},"e031":{"name":"New Releases"},"e16a":{"name":"Next Week"},"e1bb":{"name":"Nfc"},"e641":{"name":"No Encryption"},"e0cc":{"name":"No Sim"},"e033":{"name":"Not Interested"},"e06f":{"name":"Note"},"e89c":{"name":"Note Add"},"e7f4":{"name":"Notifications"},"e7f7":{"name":"Notifications Active"},"e7f5":{"name":"Notifications None"},"e7f6":{"name":"Notifications Off"},"e7f8":{"name":"Notifications Paused"},"e90a":{"name":"Offline Pin"},"e63a":{"name":"Ondemand Video"},"e91c":{"name":"Opacity"},"e89d":{"name":"Open In Browser"},"e89e":{"name":"Open In New"},"e89f":{"name":"Open With"},"e7f9":{"name":"Pages"},"e8a0":{"name":"Pageview"},"e40a":{"name":"Palette"},"e925":{"name":"Pan Tool"},"e40b":{"name":"Panorama"},"e40c":{"name":"Panorama Fish Eye"},"e40d":{"name":"Panorama Horizontal"},"e40e":{"name":"Panorama Vertical"},"e40f":{"name":"Panorama Wide Angle"},"e7fa":{"name":"Party Mode"},"e034":{"name":"Pause"},"e035":{"name":"Pause Circle Filled"},"e036":{"name":"Pause Circle Outline"},"e8a1":{"name":"Payment"},"e7fb":{"name":"People"},"e7fc":{"name":"People Outline"},"e8a2":{"name":"Perm Camera Mic"},"e8a3":{"name":"Perm Contact Calendar"},"e8a4":{"name":"Perm Data Setting"},"e8a5":{"name":"Perm Device Information"},"e8a6":{"name":"Perm Identity"},"e8a7":{"name":"Perm Media"},"e8a8":{"name":"Perm Phone Msg"},"e8a9":{"name":"Perm Scan Wifi"},"e7fd":{"name":"Person"},"e7fe":{"name":"Person Add"},"e7ff":{"name":"Person Outline"},"e55a":{"name":"Person Pin"},"e56a":{"name":"Person Pin Circle"},"e63b":{"name":"Personal Video"},"e91d":{"name":"Pets"},"e0cd":{"name":"Phone"},"e324":{"name":"Phone Android"},"e61b":{"name":"Phone Bluetooth Speaker"},"e61c":{"name":"Phone Forwarded"},"e61d":{"name":"Phone In Talk"},"e325":{"name":"Phone Iphone"},"e61e":{"name":"Phone Locked"},"e61f":{"name":"Phone Missed"},"e620":{"name":"Phone Paused"},"e326":{"name":"Phonelink"},"e0db":{"name":"Phonelink Erase"},"e0dc":{"name":"Phonelink Lock"},"e327":{"name":"Phonelink Off"},"e0dd":{"name":"Phonelink Ring"},"e0de":{"name":"Phonelink Setup"},"e410":{"name":"Photo"},"e411":{"name":"Photo Album"},"e412":{"name":"Photo Camera"},"e43b":{"name":"Photo Filter"},"e413":{"name":"Photo Library"},"e432":{"name":"Photo Size Select Actual"},"e433":{"name":"Photo Size Select Large"},"e434":{"name":"Photo Size Select Small"},"e415":{"name":"Picture As Pdf"},"e8aa":{"name":"Picture In Picture"},"e911":{"name":"Picture In Picture Alt"},"e6c4":{"name":"Pie Chart"},"e6c5":{"name":"Pie Chart Outlined"},"e55e":{"name":"Pin Drop"},"e55f":{"name":"Place"},"e037":{"name":"Play Arrow"},"e038":{"name":"Play Circle Filled"},"e039":{"name":"Play Circle Outline"},"e906":{"name":"Play For Work"},"e03b":{"name":"Playlist Add"},"e065":{"name":"Playlist Add Check"},"e05f":{"name":"Playlist Play"},"e800":{"name":"Plus One"},"e801":{"name":"Poll"},"e8ab":{"name":"Polymer"},"eb48":{"name":"Pool"},"e0ce":{"name":"Portable Wifi Off"},"e416":{"name":"Portrait"},"e63c":{"name":"Power"},"e336":{"name":"Power Input"},"e8ac":{"name":"Power Settings New"},"e91e":{"name":"Pregnant Woman"},"e0df":{"name":"Present To All"},"e8ad":{"name":"Print"},"e645":{"name":"Priority High"},"e80b":{"name":"Public"},"e255":{"name":"Publish"},"e8ae":{"name":"Query Builder"},"e8af":{"name":"Question Answer"},"e03c":{"name":"Queue"},"e03d":{"name":"Queue Music"},"e066":{"name":"Queue Play Next"},"e03e":{"name":"Radio"},"e837":{"name":"Radio Button Checked"},"e836":{"name":"Radio Button Unchecked"},"e560":{"name":"Rate Review"},"e8b0":{"name":"Receipt"},"e03f":{"name":"Recent Actors"},"e91f":{"name":"Record Voice Over"},"e8b1":{"name":"Redeem"},"e15a":{"name":"Redo"},"e5d5":{"name":"Refresh"},"e15b":{"name":"Remove"},"e15c":{"name":"Remove Circle"},"e15d":{"name":"Remove Circle Outline"},"e067":{"name":"Remove From Queue"},"e417":{"name":"Remove Red Eye"},"e928":{"name":"Remove Shopping Cart"},"e8fe":{"name":"Reorder"},"e040":{"name":"Repeat"},"e041":{"name":"Repeat One"},"e042":{"name":"Replay"},"e059":{"name":"Replay 10"},"e05a":{"name":"Replay 30"},"e05b":{"name":"Replay 5"},"e15e":{"name":"Reply"},"e15f":{"name":"Reply All"},"e160":{"name":"Report"},"e8b2":{"name":"Report Problem"},"e56c":{"name":"Restaurant"},"e561":{"name":"Restaurant Menu"},"e8b3":{"name":"Restore"},"e929":{"name":"Restore Page"},"e0d1":{"name":"Ring Volume"},"e8b4":{"name":"Room"},"eb49":{"name":"Room Service"},"e418":{"name":"Rotate 90 Degrees Ccw"},"e419":{"name":"Rotate Left"},"e41a":{"name":"Rotate Right"},"e920":{"name":"Rounded Corner"},"e328":{"name":"Router"},"e921":{"name":"Rowing"},"e0e5":{"name":"Rss Feed"},"e642":{"name":"Rv Hookup"},"e562":{"name":"Satellite"},"e161":{"name":"Save"},"e329":{"name":"Scanner"},"e8b5":{"name":"Schedule"},"e80c":{"name":"School"},"e1be":{"name":"Screen Lock Landscape"},"e1bf":{"name":"Screen Lock Portrait"},"e1c0":{"name":"Screen Lock Rotation"},"e1c1":{"name":"Screen Rotation"},"e0e2":{"name":"Screen Share"},"e623":{"name":"Sd Card"},"e1c2":{"name":"Sd Storage"},"e8b6":{"name":"Search"},"e32a":{"name":"Security"},"e162":{"name":"Select All"},"e163":{"name":"Send"},"e811":{"name":"Sentiment Dissatisfied"},"e812":{"name":"Sentiment Neutral"},"e813":{"name":"Sentiment Satisfied"},"e814":{"name":"Sentiment Very Dissatisfied"},"e815":{"name":"Sentiment Very Satisfied"},"e8b8":{"name":"Settings"},"e8b9":{"name":"Settings Applications"},"e8ba":{"name":"Settings Backup Restore"},"e8bb":{"name":"Settings Bluetooth"},"e8bd":{"name":"Settings Brightness"},"e8bc":{"name":"Settings Cell"},"e8be":{"name":"Settings Ethernet"},"e8bf":{"name":"Settings Input Antenna"},"e8c0":{"name":"Settings Input Component"},"e8c1":{"name":"Settings Input Composite"},"e8c2":{"name":"Settings Input Hdmi"},"e8c3":{"name":"Settings Input Svideo"},"e8c4":{"name":"Settings Overscan"},"e8c5":{"name":"Settings Phone"},"e8c6":{"name":"Settings Power"},"e8c7":{"name":"Settings Remote"},"e1c3":{"name":"Settings System Daydream"},"e8c8":{"name":"Settings Voice"},"e80d":{"name":"Share"},"e8c9":{"name":"Shop"},"e8ca":{"name":"Shop Two"},"e8cb":{"name":"Shopping Basket"},"e8cc":{"name":"Shopping Cart"},"e261":{"name":"Short Text"},"e6e1":{"name":"Show Chart"},"e043":{"name":"Shuffle"},"e1c8":{"name":"Signal Cellular 4 Bar"},"e1cd":{"name":"Signal Cellular Connected No Internet 4 Bar"},"e1ce":{"name":"Signal Cellular No Sim"},"e1cf":{"name":"Signal Cellular Null"},"e1d0":{"name":"Signal Cellular Off"},"e1d8":{"name":"Signal Wifi 4 Bar"},"e1d9":{"name":"Signal Wifi 4 Bar Lock"},"e1da":{"name":"Signal Wifi Off"},"e32b":{"name":"Sim Card"},"e624":{"name":"Sim Card Alert"},"e044":{"name":"Skip Next"},"e045":{"name":"Skip Previous"},"e41b":{"name":"Slideshow"},"e068":{"name":"Slow Motion Video"},"e32c":{"name":"Smartphone"},"eb4a":{"name":"Smoke Free"},"eb4b":{"name":"Smoking Rooms"},"e625":{"name":"Sms"},"e626":{"name":"Sms Failed"},"e046":{"name":"Snooze"},"e164":{"name":"Sort"},"e053":{"name":"Sort By Alpha"},"eb4c":{"name":"Spa"},"e256":{"name":"Space Bar"},"e32d":{"name":"Speaker"},"e32e":{"name":"Speaker Group"},"e8cd":{"name":"Speaker Notes"},"e92a":{"name":"Speaker Notes Off"},"e0d2":{"name":"Speaker Phone"},"e8ce":{"name":"Spellcheck"},"e838":{"name":"Star"},"e83a":{"name":"Star Border"},"e839":{"name":"Star Half"},"e8d0":{"name":"Stars"},"e0d3":{"name":"Stay Current Landscape"},"e0d4":{"name":"Stay Current Portrait"},"e0d5":{"name":"Stay Primary Landscape"},"e0d6":{"name":"Stay Primary Portrait"},"e047":{"name":"Stop"},"e0e3":{"name":"Stop Screen Share"},"e1db":{"name":"Storage"},"e8d1":{"name":"Store"},"e563":{"name":"Store Mall Directory"},"e41c":{"name":"Straighten"},"e56e":{"name":"Streetview"},"e257":{"name":"Strikethrough S"},"e41d":{"name":"Style"},"e5d9":{"name":"Subdirectory Arrow Left"},"e5da":{"name":"Subdirectory Arrow Right"},"e8d2":{"name":"Subject"},"e064":{"name":"Subscriptions"},"e048":{"name":"Subtitles"},"e56f":{"name":"Subway"},"e8d3":{"name":"Supervisor Account"},"e049":{"name":"Surround Sound"},"e0d7":{"name":"Swap Calls"},"e8d4":{"name":"Swap Horiz"},"e8d5":{"name":"Swap Vert"},"e8d6":{"name":"Swap Vertical Circle"},"e41e":{"name":"Switch Camera"},"e41f":{"name":"Switch Video"},"e627":{"name":"Sync"},"e628":{"name":"Sync Disabled"},"e629":{"name":"Sync Problem"},"e62a":{"name":"System Update"},"e8d7":{"name":"System Update Alt"},"e8d8":{"name":"Tab"},"e8d9":{"name":"Tab Unselected"},"e32f":{"name":"Tablet"},"e330":{"name":"Tablet Android"},"e331":{"name":"Tablet Mac"},"e420":{"name":"Tag Faces"},"e62b":{"name":"Tap And Play"},"e564":{"name":"Terrain"},"e262":{"name":"Text Fields"},"e165":{"name":"Text Format"},"e0d8":{"name":"Textsms"},"e421":{"name":"Texture"},"e8da":{"name":"Theaters"},"e8db":{"name":"Thumb Down"},"e8dc":{"name":"Thumb Up"},"e8dd":{"name":"Thumbs Up Down"},"e62c":{"name":"Time To Leave"},"e422":{"name":"Timelapse"},"e922":{"name":"Timeline"},"e425":{"name":"Timer"},"e423":{"name":"Timer 10"},"e424":{"name":"Timer 3"},"e426":{"name":"Timer Off"},"e264":{"name":"Title"},"e8de":{"name":"Toc"},"e8df":{"name":"Today"},"e8e0":{"name":"Toll"},"e427":{"name":"Tonality"},"e913":{"name":"Touch App"},"e332":{"name":"Toys"},"e8e1":{"name":"Track Changes"},"e565":{"name":"Traffic"},"e570":{"name":"Train"},"e571":{"name":"Tram"},"e572":{"name":"Transfer Within A Station"},"e428":{"name":"Transform"},"e8e2":{"name":"Translate"},"e8e3":{"name":"Trending Down"},"e8e4":{"name":"Trending Flat"},"e8e5":{"name":"Trending Up"},"e429":{"name":"Tune"},"e8e6":{"name":"Turned In"},"e8e7":{"name":"Turned In Not"},"e333":{"name":"Tv"},"e169":{"name":"Unarchive"},"e166":{"name":"Undo"},"e5d6":{"name":"Unfold Less"},"e5d7":{"name":"Unfold More"},"e923":{"name":"Update"},"e1e0":{"name":"Usb"},"e8e8":{"name":"Verified User"},"e258":{"name":"Vertical Align Bottom"},"e259":{"name":"Vertical Align Center"},"e25a":{"name":"Vertical Align Top"},"e62d":{"name":"Vibration"},"e070":{"name":"Video Call"},"e071":{"name":"Video Label"},"e04a":{"name":"Video Library"},"e04b":{"name":"Videocam"},"e04c":{"name":"Videocam Off"},"e338":{"name":"Videogame Asset"},"e8e9":{"name":"View Agenda"},"e8ea":{"name":"View Array"},"e8eb":{"name":"View Carousel"},"e8ec":{"name":"View Column"},"e42a":{"name":"View Comfy"},"e42b":{"name":"View Compact"},"e8ed":{"name":"View Day"},"e8ee":{"name":"View Headline"},"e8ef":{"name":"View List"},"e8f0":{"name":"View Module"},"e8f1":{"name":"View Quilt"},"e8f2":{"name":"View Stream"},"e8f3":{"name":"View Week"},"e435":{"name":"Vignette"},"e8f4":{"name":"Visibility"},"e8f5":{"name":"Visibility Off"},"e62e":{"name":"Voice Chat"},"e0d9":{"name":"Voicemail"},"e04d":{"name":"Volume Down"},"e04e":{"name":"Volume Mute"},"e04f":{"name":"Volume Off"},"e050":{"name":"Volume Up"},"e0da":{"name":"Vpn Key"},"e62f":{"name":"Vpn Lock"},"e1bc":{"name":"Wallpaper"},"e002":{"name":"Warning"},"e334":{"name":"Watch"},"e924":{"name":"Watch Later"},"e42c":{"name":"Wb Auto"},"e42d":{"name":"Wb Cloudy"},"e42e":{"name":"Wb Incandescent"},"e436":{"name":"Wb Iridescent"},"e430":{"name":"Wb Sunny"},"e63d":{"name":"Wc"},"e051":{"name":"Web"},"e069":{"name":"Web Asset"},"e16b":{"name":"Weekend"},"e80e":{"name":"Whatshot"},"e1bd":{"name":"Widgets"},"e63e":{"name":"Wifi"},"e1e1":{"name":"Wifi Lock"},"e1e2":{"name":"Wifi Tethering"},"e8f9":{"name":"Work"},"e25b":{"name":"Wrap Text"},"e8fa":{"name":"Youtube Searched For"},"e8ff":{"name":"Zoom In"},"e900":{"name":"Zoom Out"},"e56b":{"name":"Zoom Out Map"}}} \ No newline at end of file diff --git a/compiled-assets/fonts/MaterialIcons/MaterialIcons-Regular.svg b/compiled-assets/fonts/MaterialIcons/MaterialIcons-Regular.svg deleted file mode 100755 index a449327..0000000 --- a/compiled-assets/fonts/MaterialIcons/MaterialIcons-Regular.svg +++ /dev/null @@ -1,2373 +0,0 @@ - - - - - -Created by FontForge 20151118 at Mon Feb 8 11:58:02 2016 - By shyndman -Copyright 2015 Google, Inc. All Rights Reserved. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/compiled-assets/fonts/MaterialIcons/MaterialIcons-Regular.ttf b/compiled-assets/fonts/MaterialIcons/MaterialIcons-Regular.ttf deleted file mode 100755 index 7015564..0000000 Binary files a/compiled-assets/fonts/MaterialIcons/MaterialIcons-Regular.ttf and /dev/null differ diff --git a/compiled-assets/fonts/MaterialIcons/MaterialIcons-Regular.woff b/compiled-assets/fonts/MaterialIcons/MaterialIcons-Regular.woff deleted file mode 100755 index b648a3e..0000000 Binary files a/compiled-assets/fonts/MaterialIcons/MaterialIcons-Regular.woff and /dev/null differ diff --git a/compiled-assets/fonts/MaterialIcons/MaterialIcons-Regular.woff2 b/compiled-assets/fonts/MaterialIcons/MaterialIcons-Regular.woff2 deleted file mode 100755 index 9fa2112..0000000 Binary files a/compiled-assets/fonts/MaterialIcons/MaterialIcons-Regular.woff2 and /dev/null differ diff --git a/compiled-assets/fonts/MaterialIcons/codepoints b/compiled-assets/fonts/MaterialIcons/codepoints deleted file mode 100755 index 3c8b075..0000000 --- a/compiled-assets/fonts/MaterialIcons/codepoints +++ /dev/null @@ -1,932 +0,0 @@ -3d_rotation e84d -ac_unit eb3b -access_alarm e190 -access_alarms e191 -access_time e192 -accessibility e84e -accessible e914 -account_balance e84f -account_balance_wallet e850 -account_box e851 -account_circle e853 -adb e60e -add e145 -add_a_photo e439 -add_alarm e193 -add_alert e003 -add_box e146 -add_circle e147 -add_circle_outline e148 -add_location e567 -add_shopping_cart e854 -add_to_photos e39d -add_to_queue e05c -adjust e39e -airline_seat_flat e630 -airline_seat_flat_angled e631 -airline_seat_individual_suite e632 -airline_seat_legroom_extra e633 -airline_seat_legroom_normal e634 -airline_seat_legroom_reduced e635 -airline_seat_recline_extra e636 -airline_seat_recline_normal e637 -airplanemode_active e195 -airplanemode_inactive e194 -airplay e055 -airport_shuttle eb3c -alarm e855 -alarm_add e856 -alarm_off e857 -alarm_on e858 -album e019 -all_inclusive eb3d -all_out e90b -android e859 -announcement e85a -apps e5c3 -archive e149 -arrow_back e5c4 -arrow_downward e5db -arrow_drop_down e5c5 -arrow_drop_down_circle e5c6 -arrow_drop_up e5c7 -arrow_forward e5c8 -arrow_upward e5d8 -art_track e060 -aspect_ratio e85b -assessment e85c -assignment e85d -assignment_ind e85e -assignment_late e85f -assignment_return e860 -assignment_returned e861 -assignment_turned_in e862 -assistant e39f -assistant_photo e3a0 -attach_file e226 -attach_money e227 -attachment e2bc -audiotrack e3a1 -autorenew e863 -av_timer e01b -backspace e14a -backup e864 -battery_alert e19c -battery_charging_full e1a3 -battery_full e1a4 -battery_std e1a5 -battery_unknown e1a6 -beach_access eb3e -beenhere e52d -block e14b -bluetooth e1a7 -bluetooth_audio e60f -bluetooth_connected e1a8 -bluetooth_disabled e1a9 -bluetooth_searching e1aa -blur_circular e3a2 -blur_linear e3a3 -blur_off e3a4 -blur_on e3a5 -book e865 -bookmark e866 -bookmark_border e867 -border_all e228 -border_bottom e229 -border_clear e22a -border_color e22b -border_horizontal e22c -border_inner e22d -border_left e22e -border_outer e22f -border_right e230 -border_style e231 -border_top e232 -border_vertical e233 -branding_watermark e06b -brightness_1 e3a6 -brightness_2 e3a7 -brightness_3 e3a8 -brightness_4 e3a9 -brightness_5 e3aa -brightness_6 e3ab -brightness_7 e3ac -brightness_auto e1ab -brightness_high e1ac -brightness_low e1ad -brightness_medium e1ae -broken_image e3ad -brush e3ae -bubble_chart e6dd -bug_report e868 -build e869 -burst_mode e43c -business e0af -business_center eb3f -cached e86a -cake e7e9 -call e0b0 -call_end e0b1 -call_made e0b2 -call_merge e0b3 -call_missed e0b4 -call_missed_outgoing e0e4 -call_received e0b5 -call_split e0b6 -call_to_action e06c -camera e3af -camera_alt e3b0 -camera_enhance e8fc -camera_front e3b1 -camera_rear e3b2 -camera_roll e3b3 -cancel e5c9 -card_giftcard e8f6 -card_membership e8f7 -card_travel e8f8 -casino eb40 -cast e307 -cast_connected e308 -center_focus_strong e3b4 -center_focus_weak e3b5 -change_history e86b -chat e0b7 -chat_bubble e0ca -chat_bubble_outline e0cb -check e5ca -check_box e834 -check_box_outline_blank e835 -check_circle e86c -chevron_left e5cb -chevron_right e5cc -child_care eb41 -child_friendly eb42 -chrome_reader_mode e86d -class e86e -clear e14c -clear_all e0b8 -close e5cd -closed_caption e01c -cloud e2bd -cloud_circle e2be -cloud_done e2bf -cloud_download e2c0 -cloud_off e2c1 -cloud_queue e2c2 -cloud_upload e2c3 -code e86f -collections e3b6 -collections_bookmark e431 -color_lens e3b7 -colorize e3b8 -comment e0b9 -compare e3b9 -compare_arrows e915 -computer e30a -confirmation_number e638 -contact_mail e0d0 -contact_phone e0cf -contacts e0ba -content_copy e14d -content_cut e14e -content_paste e14f -control_point e3ba -control_point_duplicate e3bb -copyright e90c -create e150 -create_new_folder e2cc -credit_card e870 -crop e3be -crop_16_9 e3bc -crop_3_2 e3bd -crop_5_4 e3bf -crop_7_5 e3c0 -crop_din e3c1 -crop_free e3c2 -crop_landscape e3c3 -crop_original e3c4 -crop_portrait e3c5 -crop_rotate e437 -crop_square e3c6 -dashboard e871 -data_usage e1af -date_range e916 -dehaze e3c7 -delete e872 -delete_forever e92b -delete_sweep e16c -description e873 -desktop_mac e30b -desktop_windows e30c -details e3c8 -developer_board e30d -developer_mode e1b0 -device_hub e335 -devices e1b1 -devices_other e337 -dialer_sip e0bb -dialpad e0bc -directions e52e -directions_bike e52f -directions_boat e532 -directions_bus e530 -directions_car e531 -directions_railway e534 -directions_run e566 -directions_subway e533 -directions_transit e535 -directions_walk e536 -disc_full e610 -dns e875 -do_not_disturb e612 -do_not_disturb_alt e611 -do_not_disturb_off e643 -do_not_disturb_on e644 -dock e30e -domain e7ee -done e876 -done_all e877 -donut_large e917 -donut_small e918 -drafts e151 -drag_handle e25d -drive_eta e613 -dvr e1b2 -edit e3c9 -edit_location e568 -eject e8fb -email e0be -enhanced_encryption e63f -equalizer e01d -error e000 -error_outline e001 -euro_symbol e926 -ev_station e56d -event e878 -event_available e614 -event_busy e615 -event_note e616 -event_seat e903 -exit_to_app e879 -expand_less e5ce -expand_more e5cf -explicit e01e -explore e87a -exposure e3ca -exposure_neg_1 e3cb -exposure_neg_2 e3cc -exposure_plus_1 e3cd -exposure_plus_2 e3ce -exposure_zero e3cf -extension e87b -face e87c -fast_forward e01f -fast_rewind e020 -favorite e87d -favorite_border e87e -featured_play_list e06d -featured_video e06e -feedback e87f -fiber_dvr e05d -fiber_manual_record e061 -fiber_new e05e -fiber_pin e06a -fiber_smart_record e062 -file_download e2c4 -file_upload e2c6 -filter e3d3 -filter_1 e3d0 -filter_2 e3d1 -filter_3 e3d2 -filter_4 e3d4 -filter_5 e3d5 -filter_6 e3d6 -filter_7 e3d7 -filter_8 e3d8 -filter_9 e3d9 -filter_9_plus e3da -filter_b_and_w e3db -filter_center_focus e3dc -filter_drama e3dd -filter_frames e3de -filter_hdr e3df -filter_list e152 -filter_none e3e0 -filter_tilt_shift e3e2 -filter_vintage e3e3 -find_in_page e880 -find_replace e881 -fingerprint e90d -first_page e5dc -fitness_center eb43 -flag e153 -flare e3e4 -flash_auto e3e5 -flash_off e3e6 -flash_on e3e7 -flight e539 -flight_land e904 -flight_takeoff e905 -flip e3e8 -flip_to_back e882 -flip_to_front e883 -folder e2c7 -folder_open e2c8 -folder_shared e2c9 -folder_special e617 -font_download e167 -format_align_center e234 -format_align_justify e235 -format_align_left e236 -format_align_right e237 -format_bold e238 -format_clear e239 -format_color_fill e23a -format_color_reset e23b -format_color_text e23c -format_indent_decrease e23d -format_indent_increase e23e -format_italic e23f -format_line_spacing e240 -format_list_bulleted e241 -format_list_numbered e242 -format_paint e243 -format_quote e244 -format_shapes e25e -format_size e245 -format_strikethrough e246 -format_textdirection_l_to_r e247 -format_textdirection_r_to_l e248 -format_underlined e249 -forum e0bf -forward e154 -forward_10 e056 -forward_30 e057 -forward_5 e058 -free_breakfast eb44 -fullscreen e5d0 -fullscreen_exit e5d1 -functions e24a -g_translate e927 -gamepad e30f -games e021 -gavel e90e -gesture e155 -get_app e884 -gif e908 -golf_course eb45 -gps_fixed e1b3 -gps_not_fixed e1b4 -gps_off e1b5 -grade e885 -gradient e3e9 -grain e3ea -graphic_eq e1b8 -grid_off e3eb -grid_on e3ec -group e7ef -group_add e7f0 -group_work e886 -hd e052 -hdr_off e3ed -hdr_on e3ee -hdr_strong e3f1 -hdr_weak e3f2 -headset e310 -headset_mic e311 -healing e3f3 -hearing e023 -help e887 -help_outline e8fd -high_quality e024 -highlight e25f -highlight_off e888 -history e889 -home e88a -hot_tub eb46 -hotel e53a -hourglass_empty e88b -hourglass_full e88c -http e902 -https e88d -image e3f4 -image_aspect_ratio e3f5 -import_contacts e0e0 -import_export e0c3 -important_devices e912 -inbox e156 -indeterminate_check_box e909 -info e88e -info_outline e88f -input e890 -insert_chart e24b -insert_comment e24c -insert_drive_file e24d -insert_emoticon e24e -insert_invitation e24f -insert_link e250 -insert_photo e251 -invert_colors e891 -invert_colors_off e0c4 -iso e3f6 -keyboard e312 -keyboard_arrow_down e313 -keyboard_arrow_left e314 -keyboard_arrow_right e315 -keyboard_arrow_up e316 -keyboard_backspace e317 -keyboard_capslock e318 -keyboard_hide e31a -keyboard_return e31b -keyboard_tab e31c -keyboard_voice e31d -kitchen eb47 -label e892 -label_outline e893 -landscape e3f7 -language e894 -laptop e31e -laptop_chromebook e31f -laptop_mac e320 -laptop_windows e321 -last_page e5dd -launch e895 -layers e53b -layers_clear e53c -leak_add e3f8 -leak_remove e3f9 -lens e3fa -library_add e02e -library_books e02f -library_music e030 -lightbulb_outline e90f -line_style e919 -line_weight e91a -linear_scale e260 -link e157 -linked_camera e438 -list e896 -live_help e0c6 -live_tv e639 -local_activity e53f -local_airport e53d -local_atm e53e -local_bar e540 -local_cafe e541 -local_car_wash e542 -local_convenience_store e543 -local_dining e556 -local_drink e544 -local_florist e545 -local_gas_station e546 -local_grocery_store e547 -local_hospital e548 -local_hotel e549 -local_laundry_service e54a -local_library e54b -local_mall e54c -local_movies e54d -local_offer e54e -local_parking e54f -local_pharmacy e550 -local_phone e551 -local_pizza e552 -local_play e553 -local_post_office e554 -local_printshop e555 -local_see e557 -local_shipping e558 -local_taxi e559 -location_city e7f1 -location_disabled e1b6 -location_off e0c7 -location_on e0c8 -location_searching e1b7 -lock e897 -lock_open e898 -lock_outline e899 -looks e3fc -looks_3 e3fb -looks_4 e3fd -looks_5 e3fe -looks_6 e3ff -looks_one e400 -looks_two e401 -loop e028 -loupe e402 -low_priority e16d -loyalty e89a -mail e158 -mail_outline e0e1 -map e55b -markunread e159 -markunread_mailbox e89b -memory e322 -menu e5d2 -merge_type e252 -message e0c9 -mic e029 -mic_none e02a -mic_off e02b -mms e618 -mode_comment e253 -mode_edit e254 -monetization_on e263 -money_off e25c -monochrome_photos e403 -mood e7f2 -mood_bad e7f3 -more e619 -more_horiz e5d3 -more_vert e5d4 -motorcycle e91b -mouse e323 -move_to_inbox e168 -movie e02c -movie_creation e404 -movie_filter e43a -multiline_chart e6df -music_note e405 -music_video e063 -my_location e55c -nature e406 -nature_people e407 -navigate_before e408 -navigate_next e409 -navigation e55d -near_me e569 -network_cell e1b9 -network_check e640 -network_locked e61a -network_wifi e1ba -new_releases e031 -next_week e16a -nfc e1bb -no_encryption e641 -no_sim e0cc -not_interested e033 -note e06f -note_add e89c -notifications e7f4 -notifications_active e7f7 -notifications_none e7f5 -notifications_off e7f6 -notifications_paused e7f8 -offline_pin e90a -ondemand_video e63a -opacity e91c -open_in_browser e89d -open_in_new e89e -open_with e89f -pages e7f9 -pageview e8a0 -palette e40a -pan_tool e925 -panorama e40b -panorama_fish_eye e40c -panorama_horizontal e40d -panorama_vertical e40e -panorama_wide_angle e40f -party_mode e7fa -pause e034 -pause_circle_filled e035 -pause_circle_outline e036 -payment e8a1 -people e7fb -people_outline e7fc -perm_camera_mic e8a2 -perm_contact_calendar e8a3 -perm_data_setting e8a4 -perm_device_information e8a5 -perm_identity e8a6 -perm_media e8a7 -perm_phone_msg e8a8 -perm_scan_wifi e8a9 -person e7fd -person_add e7fe -person_outline e7ff -person_pin e55a -person_pin_circle e56a -personal_video e63b -pets e91d -phone e0cd -phone_android e324 -phone_bluetooth_speaker e61b -phone_forwarded e61c -phone_in_talk e61d -phone_iphone e325 -phone_locked e61e -phone_missed e61f -phone_paused e620 -phonelink e326 -phonelink_erase e0db -phonelink_lock e0dc -phonelink_off e327 -phonelink_ring e0dd -phonelink_setup e0de -photo e410 -photo_album e411 -photo_camera e412 -photo_filter e43b -photo_library e413 -photo_size_select_actual e432 -photo_size_select_large e433 -photo_size_select_small e434 -picture_as_pdf e415 -picture_in_picture e8aa -picture_in_picture_alt e911 -pie_chart e6c4 -pie_chart_outlined e6c5 -pin_drop e55e -place e55f -play_arrow e037 -play_circle_filled e038 -play_circle_outline e039 -play_for_work e906 -playlist_add e03b -playlist_add_check e065 -playlist_play e05f -plus_one e800 -poll e801 -polymer e8ab -pool eb48 -portable_wifi_off e0ce -portrait e416 -power e63c -power_input e336 -power_settings_new e8ac -pregnant_woman e91e -present_to_all e0df -print e8ad -priority_high e645 -public e80b -publish e255 -query_builder e8ae -question_answer e8af -queue e03c -queue_music e03d -queue_play_next e066 -radio e03e -radio_button_checked e837 -radio_button_unchecked e836 -rate_review e560 -receipt e8b0 -recent_actors e03f -record_voice_over e91f -redeem e8b1 -redo e15a -refresh e5d5 -remove e15b -remove_circle e15c -remove_circle_outline e15d -remove_from_queue e067 -remove_red_eye e417 -remove_shopping_cart e928 -reorder e8fe -repeat e040 -repeat_one e041 -replay e042 -replay_10 e059 -replay_30 e05a -replay_5 e05b -reply e15e -reply_all e15f -report e160 -report_problem e8b2 -restaurant e56c -restaurant_menu e561 -restore e8b3 -restore_page e929 -ring_volume e0d1 -room e8b4 -room_service eb49 -rotate_90_degrees_ccw e418 -rotate_left e419 -rotate_right e41a -rounded_corner e920 -router e328 -rowing e921 -rss_feed e0e5 -rv_hookup e642 -satellite e562 -save e161 -scanner e329 -schedule e8b5 -school e80c -screen_lock_landscape e1be -screen_lock_portrait e1bf -screen_lock_rotation e1c0 -screen_rotation e1c1 -screen_share e0e2 -sd_card e623 -sd_storage e1c2 -search e8b6 -security e32a -select_all e162 -send e163 -sentiment_dissatisfied e811 -sentiment_neutral e812 -sentiment_satisfied e813 -sentiment_very_dissatisfied e814 -sentiment_very_satisfied e815 -settings e8b8 -settings_applications e8b9 -settings_backup_restore e8ba -settings_bluetooth e8bb -settings_brightness e8bd -settings_cell e8bc -settings_ethernet e8be -settings_input_antenna e8bf -settings_input_component e8c0 -settings_input_composite e8c1 -settings_input_hdmi e8c2 -settings_input_svideo e8c3 -settings_overscan e8c4 -settings_phone e8c5 -settings_power e8c6 -settings_remote e8c7 -settings_system_daydream e1c3 -settings_voice e8c8 -share e80d -shop e8c9 -shop_two e8ca -shopping_basket e8cb -shopping_cart e8cc -short_text e261 -show_chart e6e1 -shuffle e043 -signal_cellular_4_bar e1c8 -signal_cellular_connected_no_internet_4_bar e1cd -signal_cellular_no_sim e1ce -signal_cellular_null e1cf -signal_cellular_off e1d0 -signal_wifi_4_bar e1d8 -signal_wifi_4_bar_lock e1d9 -signal_wifi_off e1da -sim_card e32b -sim_card_alert e624 -skip_next e044 -skip_previous e045 -slideshow e41b -slow_motion_video e068 -smartphone e32c -smoke_free eb4a -smoking_rooms eb4b -sms e625 -sms_failed e626 -snooze e046 -sort e164 -sort_by_alpha e053 -spa eb4c -space_bar e256 -speaker e32d -speaker_group e32e -speaker_notes e8cd -speaker_notes_off e92a -speaker_phone e0d2 -spellcheck e8ce -star e838 -star_border e83a -star_half e839 -stars e8d0 -stay_current_landscape e0d3 -stay_current_portrait e0d4 -stay_primary_landscape e0d5 -stay_primary_portrait e0d6 -stop e047 -stop_screen_share e0e3 -storage e1db -store e8d1 -store_mall_directory e563 -straighten e41c -streetview e56e -strikethrough_s e257 -style e41d -subdirectory_arrow_left e5d9 -subdirectory_arrow_right e5da -subject e8d2 -subscriptions e064 -subtitles e048 -subway e56f -supervisor_account e8d3 -surround_sound e049 -swap_calls e0d7 -swap_horiz e8d4 -swap_vert e8d5 -swap_vertical_circle e8d6 -switch_camera e41e -switch_video e41f -sync e627 -sync_disabled e628 -sync_problem e629 -system_update e62a -system_update_alt e8d7 -tab e8d8 -tab_unselected e8d9 -tablet e32f -tablet_android e330 -tablet_mac e331 -tag_faces e420 -tap_and_play e62b -terrain e564 -text_fields e262 -text_format e165 -textsms e0d8 -texture e421 -theaters e8da -thumb_down e8db -thumb_up e8dc -thumbs_up_down e8dd -time_to_leave e62c -timelapse e422 -timeline e922 -timer e425 -timer_10 e423 -timer_3 e424 -timer_off e426 -title e264 -toc e8de -today e8df -toll e8e0 -tonality e427 -touch_app e913 -toys e332 -track_changes e8e1 -traffic e565 -train e570 -tram e571 -transfer_within_a_station e572 -transform e428 -translate e8e2 -trending_down e8e3 -trending_flat e8e4 -trending_up e8e5 -tune e429 -turned_in e8e6 -turned_in_not e8e7 -tv e333 -unarchive e169 -undo e166 -unfold_less e5d6 -unfold_more e5d7 -update e923 -usb e1e0 -verified_user e8e8 -vertical_align_bottom e258 -vertical_align_center e259 -vertical_align_top e25a -vibration e62d -video_call e070 -video_label e071 -video_library e04a -videocam e04b -videocam_off e04c -videogame_asset e338 -view_agenda e8e9 -view_array e8ea -view_carousel e8eb -view_column e8ec -view_comfy e42a -view_compact e42b -view_day e8ed -view_headline e8ee -view_list e8ef -view_module e8f0 -view_quilt e8f1 -view_stream e8f2 -view_week e8f3 -vignette e435 -visibility e8f4 -visibility_off e8f5 -voice_chat e62e -voicemail e0d9 -volume_down e04d -volume_mute e04e -volume_off e04f -volume_up e050 -vpn_key e0da -vpn_lock e62f -wallpaper e1bc -warning e002 -watch e334 -watch_later e924 -wb_auto e42c -wb_cloudy e42d -wb_incandescent e42e -wb_iridescent e436 -wb_sunny e430 -wc e63d -web e051 -web_asset e069 -weekend e16b -whatshot e80e -widgets e1bd -wifi e63e -wifi_lock e1e1 -wifi_tethering e1e2 -work e8f9 -wrap_text e25b -youtube_searched_for e8fa -zoom_in e8ff -zoom_out e900 -zoom_out_map e56b diff --git a/compiled-assets/styles/.gitkeep b/compiled-assets/styles/.gitkeep deleted file mode 100644 index e69de29..0000000 diff --git a/compiled-assets/styles/combined-styles.css b/compiled-assets/styles/combined-styles.css deleted file mode 100644 index c6e306a..0000000 --- a/compiled-assets/styles/combined-styles.css +++ /dev/null @@ -1,9 +0,0 @@ -/*! -* @package IcoFont -* @version 1.0.1 -* @author IcoFont https://icofont.com -* @copyright Copyright (c) 2015 - 2018 IcoFont -* @license - https://icofont.com/license/ -*/ -html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,big,cite,code,del,dfn,em,img,ins,kbd,q,s,samp,small,strike,strong,sub,sup,tt,var,b,u,i,center,dl,dt,dd,ol,ul,li,fieldset,form,label,legend,table,caption,tbody,tfoot,thead,tr,th,td,article,aside,canvas,details,embed,figure,figcaption,footer,header,hgroup,menu,nav,output,ruby,section,summary,time,mark,audio,video{font:inherit;vertical-align:baseline;border:0;margin:0;padding:0;font-size:100%}article,aside,details,figcaption,figure,footer,header,hgroup,menu,nav,section{display:block}body{line-height:1}ol,ul{list-style:none}blockquote,q{quotes:none}blockquote:before,blockquote:after,q:before,q:after{content:"";content:none}table{border-collapse:collapse;border-spacing:0}button,input,textarea{background-color:transparent;border:none;margin:0;padding:0}:is(button,input,textarea):active{box-shadow:none;border:1px solid transparent;outline-style:none;outline-color:transparent}:is(button,input,textarea):focus{box-shadow:none;border:1px solid transparent;outline-style:none;outline-color:transparent}@font-face{font-family:Barlow;font-style:normal;font-weight:300;src:url(../fonts/Barlow/Barlow-Light.ttf)}@font-face{font-family:Barlow;font-style:normal;font-weight:400;src:url(../fonts/Barlow/Barlow-Regular.ttf)}@font-face{font-family:Barlow;font-style:normal;font-weight:500;src:url(../fonts/Barlow/Barlow-Medium.ttf)}@font-face{font-family:Barlow;font-style:normal;font-weight:600;src:url(../fonts/Barlow/Barlow-Bold.ttf)}@font-face{font-family:Material Icons;font-style:normal;font-weight:400;src:url(../fonts/MaterialIcons/MaterialIcons-Regular.eot);src:local(Material Icons),local(MaterialIcons-Regular),url(../fonts/MaterialIcons/MaterialIcons-Regular.woff2)format("woff2"),url(../fonts/MaterialIcons/MaterialIcons-Regular.woff)format("woff"),url(../fonts/MaterialIcons/MaterialIcons-Regular.ttf)format("truetype")}.icon{margin-right:var(--size-xxs);font-family:var(--font-icons);font-feature-settings:"liga";-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;letter-spacing:normal;font-style:normal;font-weight:400;line-height:inherit;text-rendering:optimizelegibility;text-transform:none;vertical-align:middle;white-space:nowrap;word-wrap:normal;direction:ltr;width:auto;height:auto;display:inline-block}.icon.red{color:red}.icon.md-dark{color:var(--dark)}.icon.md-light{color:var(--light)}.icon-s{font-size:var(--size-s);line-height:var(--size-s)}.icon-m{font-size:var(--size-m);line-height:var(--size-m)}.icon-l{font-size:var(--size-l);line-height:var(--size-l)}.icon-xl{font-size:var(--size-xl);line-height:var(--size-xl)}.icon:before{content:attr(data-icon)}.icon-inline{font-size:var(--size-m);margin-right:.4em}[class^=icofont-],[class^=material-],[class*=\ icofont-],.icon{color:var(--icon-color)}:is([class^=icofont-],[class^=material-],[class*=\ icofont-],.icon).is-large{margin-top:var(--size-l);margin-bottom:var(--size-xl);font-size:var(--size-l)}:is([class^=icofont-],[class^=material-],[class*=\ icofont-],.icon).is-inline{color:var(--color-darken-strong);margin-right:.25em}@font-face{font-family:IcoFont;font-style:"Regular";font-weight:400;src:url(../fonts/Icofont/icofont.woff2)format("woff2"),url(../fonts/Icofont/icofont.woff)format("woff")}[class^=icofont-],[class*=\ icofont-]{font-feature-settings:"liga";-webkit-font-smoothing:antialiased;font-variant:normal;text-transform:none;white-space:nowrap;word-wrap:normal;direction:ltr;font-style:normal;font-weight:400;line-height:1;font-family:IcoFont!important}.icofont-angry-monster:before{content:""}.icofont-bathtub:before{content:""}.icofont-bird-wings:before{content:""}.icofont-bow:before{content:""}.icofont-castle:before{content:""}.icofont-circuit:before{content:""}.icofont-crown-king:before{content:""}.icofont-crown-queen:before{content:""}.icofont-dart:before{content:""}.icofont-disability-race:before{content:""}.icofont-diving-goggle:before{content:""}.icofont-eye-open:before{content:""}.icofont-flora-flower:before{content:""}.icofont-flora:before{content:""}.icofont-gift-box:before{content:""}.icofont-halloween-pumpkin:before{content:""}.icofont-hand-power:before{content:""}.icofont-hand-thunder:before{content:""}.icofont-king-monster:before{content:""}.icofont-love:before{content:""}.icofont-magician-hat:before{content:""}.icofont-native-american:before{content:""}.icofont-owl-look:before{content:""}.icofont-phoenix:before{content:""}.icofont-robot-face:before{content:""}.icofont-sand-clock:before{content:""}.icofont-shield-alt:before{content:""}.icofont-ship-wheel:before{content:""}.icofont-skull-danger:before{content:""}.icofont-skull-face:before{content:""}.icofont-snowmobile:before{content:""}.icofont-space-shuttle:before{content:""}.icofont-star-shape:before{content:""}.icofont-swirl:before{content:""}.icofont-tattoo-wing:before{content:""}.icofont-throne:before{content:""}.icofont-tree-alt:before{content:""}.icofont-triangle:before{content:""}.icofont-unity-hand:before{content:""}.icofont-weed:before{content:""}.icofont-woman-bird:before{content:""}.icofont-bat:before{content:""}.icofont-bear-face:before{content:""}.icofont-bear-tracks:before{content:""}.icofont-bear:before{content:""}.icofont-bird-alt:before{content:""}.icofont-bird-flying:before{content:""}.icofont-bird:before{content:""}.icofont-birds:before{content:""}.icofont-bone:before{content:""}.icofont-bull:before{content:""}.icofont-butterfly-alt:before{content:""}.icofont-butterfly:before{content:""}.icofont-camel-alt:before{content:""}.icofont-camel-head:before{content:""}.icofont-camel:before{content:""}.icofont-cat-alt-1:before{content:""}.icofont-cat-alt-2:before{content:""}.icofont-cat-alt-3:before{content:""}.icofont-cat-dog:before{content:""}.icofont-cat-face:before{content:""}.icofont-cat:before{content:""}.icofont-cow-head:before{content:""}.icofont-cow:before{content:""}.icofont-crab:before{content:""}.icofont-crocodile:before{content:""}.icofont-deer-head:before{content:""}.icofont-dog-alt:before{content:""}.icofont-dog-barking:before{content:""}.icofont-dog:before{content:""}.icofont-dolphin:before{content:""}.icofont-duck-tracks:before{content:""}.icofont-eagle-head:before{content:""}.icofont-eaten-fish:before{content:""}.icofont-elephant-alt:before{content:""}.icofont-elephant-head-alt:before{content:""}.icofont-elephant-head:before{content:""}.icofont-elephant:before{content:""}.icofont-elk:before{content:""}.icofont-fish-1:before{content:""}.icofont-fish-2:before{content:""}.icofont-fish-3:before{content:""}.icofont-fish-4:before{content:""}.icofont-fish-5:before{content:""}.icofont-fish:before{content:""}.icofont-fox-alt:before{content:""}.icofont-fox:before{content:""}.icofont-frog-tracks:before{content:""}.icofont-frog:before{content:""}.icofont-froggy:before{content:""}.icofont-giraffe-head-1:before{content:""}.icofont-giraffe-head-2:before{content:""}.icofont-giraffe-head:before{content:""}.icofont-giraffe:before{content:""}.icofont-goat-head:before{content:""}.icofont-gorilla:before{content:""}.icofont-hen-tracks:before{content:""}.icofont-horse-head-1:before{content:""}.icofont-horse-head-2:before{content:""}.icofont-horse-head:before{content:""}.icofont-horse-tracks:before{content:""}.icofont-jellyfish:before{content:""}.icofont-kangaroo:before{content:""}.icofont-lemur:before{content:""}.icofont-lion-head-1:before{content:""}.icofont-lion-head-2:before{content:""}.icofont-lion-head:before{content:""}.icofont-lion:before{content:""}.icofont-monkey-2:before{content:""}.icofont-monkey-3:before{content:""}.icofont-monkey-face:before{content:""}.icofont-monkey:before{content:""}.icofont-octopus-alt:before{content:""}.icofont-octopus:before{content:""}.icofont-owl:before{content:""}.icofont-panda-face:before{content:""}.icofont-panda:before{content:""}.icofont-panther:before{content:""}.icofont-parrot-lip:before{content:""}.icofont-parrot:before{content:""}.icofont-paw:before{content:""}.icofont-pelican:before{content:""}.icofont-penguin:before{content:""}.icofont-pig-face:before{content:""}.icofont-pig:before{content:""}.icofont-pigeon-1:before{content:""}.icofont-pigeon-2:before{content:""}.icofont-pigeon:before{content:""}.icofont-rabbit:before{content:""}.icofont-rat:before{content:""}.icofont-rhino-head:before{content:""}.icofont-rhino:before{content:""}.icofont-rooster:before{content:""}.icofont-seahorse:before{content:""}.icofont-seal:before{content:""}.icofont-shrimp-alt:before{content:""}.icofont-shrimp:before{content:""}.icofont-snail-1:before{content:""}.icofont-snail-2:before{content:""}.icofont-snail-3:before{content:""}.icofont-snail:before{content:""}.icofont-snake:before{content:""}.icofont-squid:before{content:""}.icofont-squirrel:before{content:""}.icofont-tiger-face:before{content:""}.icofont-tiger:before{content:""}.icofont-turtle:before{content:""}.icofont-whale:before{content:""}.icofont-woodpecker:before{content:""}.icofont-zebra:before{content:""}.icofont-brand-acer:before{content:""}.icofont-brand-adidas:before{content:""}.icofont-brand-adobe:before{content:""}.icofont-brand-air-new-zealand:before{content:""}.icofont-brand-airbnb:before{content:""}.icofont-brand-aircell:before{content:""}.icofont-brand-airtel:before{content:""}.icofont-brand-alcatel:before{content:""}.icofont-brand-alibaba:before{content:""}.icofont-brand-aliexpress:before{content:""}.icofont-brand-alipay:before{content:""}.icofont-brand-amazon:before{content:""}.icofont-brand-amd:before{content:""}.icofont-brand-american-airlines:before{content:""}.icofont-brand-android-robot:before{content:""}.icofont-brand-android:before{content:""}.icofont-brand-aol:before{content:""}.icofont-brand-apple:before{content:""}.icofont-brand-appstore:before{content:""}.icofont-brand-asus:before{content:""}.icofont-brand-ati:before{content:""}.icofont-brand-att:before{content:""}.icofont-brand-audi:before{content:""}.icofont-brand-axiata:before{content:""}.icofont-brand-bada:before{content:""}.icofont-brand-bbc:before{content:""}.icofont-brand-bing:before{content:""}.icofont-brand-blackberry:before{content:""}.icofont-brand-bmw:before{content:""}.icofont-brand-box:before{content:""}.icofont-brand-burger-king:before{content:""}.icofont-brand-business-insider:before{content:""}.icofont-brand-buzzfeed:before{content:""}.icofont-brand-cannon:before{content:""}.icofont-brand-casio:before{content:""}.icofont-brand-china-mobile:before{content:""}.icofont-brand-china-telecom:before{content:""}.icofont-brand-china-unicom:before{content:""}.icofont-brand-cisco:before{content:""}.icofont-brand-citibank:before{content:""}.icofont-brand-cnet:before{content:""}.icofont-brand-cnn:before{content:""}.icofont-brand-cocal-cola:before{content:""}.icofont-brand-compaq:before{content:""}.icofont-brand-debian:before{content:""}.icofont-brand-delicious:before{content:""}.icofont-brand-dell:before{content:""}.icofont-brand-designbump:before{content:""}.icofont-brand-designfloat:before{content:""}.icofont-brand-disney:before{content:""}.icofont-brand-dodge:before{content:""}.icofont-brand-dove:before{content:""}.icofont-brand-drupal:before{content:""}.icofont-brand-ebay:before{content:""}.icofont-brand-eleven:before{content:""}.icofont-brand-emirates:before{content:""}.icofont-brand-espn:before{content:""}.icofont-brand-etihad-airways:before{content:""}.icofont-brand-etisalat:before{content:""}.icofont-brand-etsy:before{content:""}.icofont-brand-fastrack:before{content:""}.icofont-brand-fedex:before{content:""}.icofont-brand-ferrari:before{content:""}.icofont-brand-fitbit:before{content:""}.icofont-brand-flikr:before{content:""}.icofont-brand-forbes:before{content:""}.icofont-brand-foursquare:before{content:""}.icofont-brand-foxconn:before{content:""}.icofont-brand-fujitsu:before{content:""}.icofont-brand-general-electric:before{content:""}.icofont-brand-gillette:before{content:""}.icofont-brand-gizmodo:before{content:""}.icofont-brand-gnome:before{content:""}.icofont-brand-google:before{content:""}.icofont-brand-gopro:before{content:""}.icofont-brand-gucci:before{content:""}.icofont-brand-hallmark:before{content:""}.icofont-brand-hi5:before{content:""}.icofont-brand-honda:before{content:""}.icofont-brand-hp:before{content:""}.icofont-brand-hsbc:before{content:""}.icofont-brand-htc:before{content:""}.icofont-brand-huawei:before{content:""}.icofont-brand-hulu:before{content:""}.icofont-brand-hyundai:before{content:""}.icofont-brand-ibm:before{content:""}.icofont-brand-icofont:before{content:""}.icofont-brand-icq:before{content:""}.icofont-brand-ikea:before{content:""}.icofont-brand-imdb:before{content:""}.icofont-brand-indiegogo:before{content:""}.icofont-brand-intel:before{content:""}.icofont-brand-ipair:before{content:""}.icofont-brand-jaguar:before{content:""}.icofont-brand-java:before{content:""}.icofont-brand-joomla:before{content:""}.icofont-brand-kickstarter:before{content:""}.icofont-brand-kik:before{content:""}.icofont-brand-lastfm:before{content:""}.icofont-brand-lego:before{content:""}.icofont-brand-lenovo:before{content:""}.icofont-brand-levis:before{content:""}.icofont-brand-lexus:before{content:""}.icofont-brand-lg:before{content:""}.icofont-brand-life-hacker:before{content:""}.icofont-brand-linux-mint:before{content:""}.icofont-brand-linux:before{content:""}.icofont-brand-lionix:before{content:""}.icofont-brand-loreal:before{content:""}.icofont-brand-louis-vuitton:before{content:""}.icofont-brand-mac-os:before{content:""}.icofont-brand-marvel-app:before{content:""}.icofont-brand-mashable:before{content:""}.icofont-brand-mazda:before{content:""}.icofont-brand-mcdonals:before{content:""}.icofont-brand-mercedes:before{content:""}.icofont-brand-micromax:before{content:""}.icofont-brand-microsoft:before{content:""}.icofont-brand-mobileme:before{content:""}.icofont-brand-mobily:before{content:""}.icofont-brand-motorola:before{content:""}.icofont-brand-msi:before{content:""}.icofont-brand-mts:before{content:""}.icofont-brand-myspace:before{content:""}.icofont-brand-mytv:before{content:""}.icofont-brand-nasa:before{content:""}.icofont-brand-natgeo:before{content:""}.icofont-brand-nbc:before{content:""}.icofont-brand-nescafe:before{content:""}.icofont-brand-nestle:before{content:""}.icofont-brand-netflix:before{content:""}.icofont-brand-nexus:before{content:""}.icofont-brand-nike:before{content:""}.icofont-brand-nokia:before{content:""}.icofont-brand-nvidia:before{content:""}.icofont-brand-omega:before{content:""}.icofont-brand-opensuse:before{content:""}.icofont-brand-oracle:before{content:""}.icofont-brand-panasonic:before{content:""}.icofont-brand-paypal:before{content:""}.icofont-brand-pepsi:before{content:""}.icofont-brand-philips:before{content:""}.icofont-brand-pizza-hut:before{content:""}.icofont-brand-playstation:before{content:""}.icofont-brand-puma:before{content:""}.icofont-brand-qatar-air:before{content:""}.icofont-brand-qvc:before{content:""}.icofont-brand-readernaut:before{content:""}.icofont-brand-redbull:before{content:""}.icofont-brand-reebok:before{content:""}.icofont-brand-reuters:before{content:""}.icofont-brand-samsung:before{content:""}.icofont-brand-sap:before{content:""}.icofont-brand-saudia-airlines:before{content:""}.icofont-brand-scribd:before{content:""}.icofont-brand-shell:before{content:""}.icofont-brand-siemens:before{content:""}.icofont-brand-sk-telecom:before{content:""}.icofont-brand-slideshare:before{content:""}.icofont-brand-smashing-magazine:before{content:""}.icofont-brand-snapchat:before{content:""}.icofont-brand-sony-ericsson:before{content:""}.icofont-brand-sony:before{content:""}.icofont-brand-soundcloud:before{content:""}.icofont-brand-sprint:before{content:""}.icofont-brand-squidoo:before{content:""}.icofont-brand-starbucks:before{content:""}.icofont-brand-stc:before{content:""}.icofont-brand-steam:before{content:""}.icofont-brand-suzuki:before{content:""}.icofont-brand-symbian:before{content:""}.icofont-brand-t-mobile:before{content:""}.icofont-brand-tango:before{content:""}.icofont-brand-target:before{content:""}.icofont-brand-tata-indicom:before{content:""}.icofont-brand-techcrunch:before{content:""}.icofont-brand-telenor:before{content:""}.icofont-brand-teliasonera:before{content:""}.icofont-brand-tesla:before{content:""}.icofont-brand-the-verge:before{content:""}.icofont-brand-thenextweb:before{content:""}.icofont-brand-toshiba:before{content:""}.icofont-brand-toyota:before{content:""}.icofont-brand-tribenet:before{content:""}.icofont-brand-ubuntu:before{content:""}.icofont-brand-unilever:before{content:""}.icofont-brand-vaio:before{content:""}.icofont-brand-verizon:before{content:""}.icofont-brand-viber:before{content:""}.icofont-brand-vodafone:before{content:""}.icofont-brand-volkswagen:before{content:""}.icofont-brand-walmart:before{content:""}.icofont-brand-warnerbros:before{content:""}.icofont-brand-whatsapp:before{content:""}.icofont-brand-wikipedia:before{content:""}.icofont-brand-windows:before{content:""}.icofont-brand-wire:before{content:""}.icofont-brand-wordpress:before{content:""}.icofont-brand-xiaomi:before{content:""}.icofont-brand-yahoobuzz:before{content:""}.icofont-brand-yamaha:before{content:""}.icofont-brand-youtube:before{content:""}.icofont-brand-zain:before{content:""}.icofont-bank-alt:before{content:""}.icofont-bank:before{content:""}.icofont-barcode:before{content:""}.icofont-bill-alt:before{content:""}.icofont-billboard:before{content:""}.icofont-briefcase-1:before{content:""}.icofont-briefcase-2:before{content:""}.icofont-businessman:before{content:""}.icofont-businesswoman:before{content:""}.icofont-chair:before{content:""}.icofont-coins:before{content:""}.icofont-company:before{content:""}.icofont-contact-add:before{content:""}.icofont-files-stack:before{content:""}.icofont-handshake-deal:before{content:""}.icofont-id-card:before{content:""}.icofont-meeting-add:before{content:""}.icofont-money-bag:before{content:""}.icofont-pie-chart:before{content:""}.icofont-presentation-alt:before{content:""}.icofont-presentation:before{content:""}.icofont-stamp:before{content:""}.icofont-stock-mobile:before{content:""}.icofont-chart-arrows-axis:before{content:""}.icofont-chart-bar-graph:before{content:""}.icofont-chart-flow-1:before{content:""}.icofont-chart-flow-2:before{content:""}.icofont-chart-flow:before{content:""}.icofont-chart-growth:before{content:""}.icofont-chart-histogram-alt:before{content:""}.icofont-chart-histogram:before{content:""}.icofont-chart-line-alt:before{content:""}.icofont-chart-line:before{content:""}.icofont-chart-pie-alt:before{content:""}.icofont-chart-pie:before{content:""}.icofont-chart-radar-graph:before{content:""}.icofont-architecture-alt:before{content:""}.icofont-architecture:before{content:""}.icofont-barricade:before{content:""}.icofont-bolt:before{content:""}.icofont-bricks:before{content:""}.icofont-building-alt:before{content:""}.icofont-bull-dozer:before{content:""}.icofont-calculations:before{content:""}.icofont-cement-mix:before{content:""}.icofont-cement-mixer:before{content:""}.icofont-concrete-mixer:before{content:""}.icofont-danger-zone:before{content:""}.icofont-drill:before{content:""}.icofont-eco-energy:before{content:""}.icofont-eco-environmen:before{content:""}.icofont-energy-air:before{content:""}.icofont-energy-oil:before{content:""}.icofont-energy-savings:before{content:""}.icofont-energy-solar:before{content:""}.icofont-energy-water:before{content:""}.icofont-engineer:before{content:""}.icofont-fire-extinguisher-alt:before{content:""}.icofont-fire-extinguisher:before{content:""}.icofont-fix-tools:before{content:""}.icofont-fork-lift:before{content:""}.icofont-glue-oil:before{content:""}.icofont-hammer-alt:before{content:""}.icofont-hammer:before{content:""}.icofont-help-robot:before{content:""}.icofont-industries-1:before{content:""}.icofont-industries-2:before{content:""}.icofont-industries-3:before{content:""}.icofont-industries-4:before{content:""}.icofont-industries-5:before{content:""}.icofont-industries:before{content:""}.icofont-labour:before{content:""}.icofont-mining:before{content:""}.icofont-paint-brush:before{content:""}.icofont-pollution:before{content:""}.icofont-power-zone:before{content:""}.icofont-radio-active:before{content:""}.icofont-recycle-alt:before{content:""}.icofont-recycling-man:before{content:""}.icofont-safety-hat-light:before{content:""}.icofont-safety-hat:before{content:""}.icofont-saw:before{content:""}.icofont-screw-driver:before{content:""}.icofont-tools-1:before{content:""}.icofont-tools-bag:before{content:""}.icofont-tow-truck:before{content:""}.icofont-trolley:before{content:""}.icofont-trowel:before{content:""}.icofont-under-construction-alt:before{content:""}.icofont-under-construction:before{content:""}.icofont-vehicle-cement:before{content:""}.icofont-vehicle-crane:before{content:""}.icofont-vehicle-delivery-van:before{content:""}.icofont-vehicle-dozer:before{content:""}.icofont-vehicle-excavator:before{content:""}.icofont-vehicle-trucktor:before{content:""}.icofont-vehicle-wrecking:before{content:""}.icofont-worker:before{content:""}.icofont-workers-group:before{content:""}.icofont-wrench:before{content:""}.icofont-afghani-false:before{content:""}.icofont-afghani-minus:before{content:""}.icofont-afghani-plus:before{content:""}.icofont-afghani-true:before{content:""}.icofont-afghani:before{content:""}.icofont-baht-false:before{content:""}.icofont-baht-minus:before{content:""}.icofont-baht-plus:before{content:""}.icofont-baht-true:before{content:""}.icofont-baht:before{content:""}.icofont-bitcoin-false:before{content:""}.icofont-bitcoin-minus:before{content:""}.icofont-bitcoin-plus:before{content:""}.icofont-bitcoin-true:before{content:""}.icofont-bitcoin:before{content:""}.icofont-dollar-flase:before{content:""}.icofont-dollar-minus:before{content:""}.icofont-dollar-plus:before{content:""}.icofont-dollar-true:before{content:""}.icofont-dollar:before{content:""}.icofont-dong-false:before{content:""}.icofont-dong-minus:before{content:""}.icofont-dong-plus:before{content:""}.icofont-dong-true:before{content:""}.icofont-dong:before{content:""}.icofont-euro-false:before{content:""}.icofont-euro-minus:before{content:""}.icofont-euro-plus:before{content:""}.icofont-euro-true:before{content:""}.icofont-euro:before{content:""}.icofont-frank-false:before{content:""}.icofont-frank-minus:before{content:""}.icofont-frank-plus:before{content:""}.icofont-frank-true:before{content:""}.icofont-frank:before{content:""}.icofont-hryvnia-false:before{content:""}.icofont-hryvnia-minus:before{content:""}.icofont-hryvnia-plus:before{content:""}.icofont-hryvnia-true:before{content:""}.icofont-hryvnia:before{content:""}.icofont-lira-false:before{content:""}.icofont-lira-minus:before{content:""}.icofont-lira-plus:before{content:""}.icofont-lira-true:before{content:""}.icofont-lira:before{content:""}.icofont-peseta-false:before{content:""}.icofont-peseta-minus:before{content:""}.icofont-peseta-plus:before{content:""}.icofont-peseta-true:before{content:""}.icofont-peseta:before{content:""}.icofont-peso-false:before{content:""}.icofont-peso-minus:before{content:""}.icofont-peso-plus:before{content:""}.icofont-peso-true:before{content:""}.icofont-peso:before{content:""}.icofont-pound-false:before{content:""}.icofont-pound-minus:before{content:""}.icofont-pound-plus:before{content:""}.icofont-pound-true:before{content:""}.icofont-pound:before{content:""}.icofont-renminbi-false:before{content:""}.icofont-renminbi-minus:before{content:""}.icofont-renminbi-plus:before{content:""}.icofont-renminbi-true:before{content:""}.icofont-renminbi:before{content:""}.icofont-riyal-false:before{content:""}.icofont-riyal-minus:before{content:""}.icofont-riyal-plus:before{content:""}.icofont-riyal-true:before{content:""}.icofont-riyal:before{content:""}.icofont-rouble-false:before{content:""}.icofont-rouble-minus:before{content:""}.icofont-rouble-plus:before{content:""}.icofont-rouble-true:before{content:""}.icofont-rouble:before{content:""}.icofont-rupee-false:before{content:""}.icofont-rupee-minus:before{content:""}.icofont-rupee-plus:before{content:""}.icofont-rupee-true:before{content:""}.icofont-rupee:before{content:""}.icofont-taka-false:before{content:""}.icofont-taka-minus:before{content:""}.icofont-taka-plus:before{content:""}.icofont-taka-true:before{content:""}.icofont-taka:before{content:""}.icofont-turkish-lira-false:before{content:""}.icofont-turkish-lira-minus:before{content:""}.icofont-turkish-lira-plus:before{content:""}.icofont-turkish-lira-true:before{content:""}.icofont-turkish-lira:before{content:""}.icofont-won-false:before{content:""}.icofont-won-minus:before{content:""}.icofont-won-plus:before{content:""}.icofont-won-true:before{content:""}.icofont-won:before{content:""}.icofont-yen-false:before{content:""}.icofont-yen-minus:before{content:""}.icofont-yen-plus:before{content:""}.icofont-yen-true:before{content:""}.icofont-yen:before{content:""}.icofont-android-nexus:before{content:""}.icofont-android-tablet:before{content:""}.icofont-apple-watch:before{content:""}.icofont-drawing-tablet:before{content:""}.icofont-earphone:before{content:""}.icofont-flash-drive:before{content:""}.icofont-game-console:before{content:""}.icofont-game-controller:before{content:""}.icofont-game-pad:before{content:""}.icofont-game:before{content:""}.icofont-headphone-alt-1:before{content:""}.icofont-headphone-alt-2:before{content:""}.icofont-headphone-alt-3:before{content:""}.icofont-headphone-alt:before{content:""}.icofont-headphone:before{content:""}.icofont-htc-one:before{content:""}.icofont-imac:before{content:""}.icofont-ipad:before{content:""}.icofont-iphone:before{content:""}.icofont-ipod-nano:before{content:""}.icofont-ipod-touch:before{content:""}.icofont-keyboard-alt:before{content:""}.icofont-keyboard-wireless:before{content:""}.icofont-keyboard:before{content:""}.icofont-laptop-alt:before{content:""}.icofont-laptop:before{content:""}.icofont-macbook:before{content:""}.icofont-magic-mouse:before{content:""}.icofont-micro-chip:before{content:""}.icofont-microphone-alt:before{content:""}.icofont-microphone:before{content:""}.icofont-monitor:before{content:""}.icofont-mouse:before{content:""}.icofont-mp3-player:before{content:""}.icofont-nintendo:before{content:""}.icofont-playstation-alt:before{content:""}.icofont-psvita:before{content:""}.icofont-radio-mic:before{content:""}.icofont-radio:before{content:""}.icofont-refrigerator:before{content:""}.icofont-samsung-galaxy:before{content:""}.icofont-surface-tablet:before{content:""}.icofont-ui-head-phone:before{content:""}.icofont-ui-keyboard:before{content:""}.icofont-washing-machine:before{content:""}.icofont-wifi-router:before{content:""}.icofont-wii-u:before{content:""}.icofont-windows-lumia:before{content:""}.icofont-wireless-mouse:before{content:""}.icofont-xbox-360:before{content:""}.icofont-arrow-down:before{content:""}.icofont-arrow-left:before{content:""}.icofont-arrow-right:before{content:""}.icofont-arrow-up:before{content:""}.icofont-block-down:before{content:""}.icofont-block-left:before{content:""}.icofont-block-right:before{content:""}.icofont-block-up:before{content:""}.icofont-bubble-down:before{content:""}.icofont-bubble-left:before{content:""}.icofont-bubble-right:before{content:""}.icofont-bubble-up:before{content:""}.icofont-caret-down:before{content:""}.icofont-caret-left:before{content:""}.icofont-caret-right:before{content:""}.icofont-caret-up:before{content:""}.icofont-circled-down:before{content:""}.icofont-circled-left:before{content:""}.icofont-circled-right:before{content:""}.icofont-circled-up:before{content:""}.icofont-collapse:before{content:""}.icofont-cursor-drag:before{content:""}.icofont-curved-double-left:before{content:""}.icofont-curved-double-right:before{content:""}.icofont-curved-down:before{content:""}.icofont-curved-left:before{content:""}.icofont-curved-right:before{content:""}.icofont-curved-up:before{content:""}.icofont-dotted-down:before{content:""}.icofont-dotted-left:before{content:""}.icofont-dotted-right:before{content:""}.icofont-dotted-up:before{content:""}.icofont-double-left:before{content:""}.icofont-double-right:before{content:""}.icofont-expand-alt:before{content:""}.icofont-hand-down:before{content:""}.icofont-hand-drag:before{content:""}.icofont-hand-drag1:before{content:""}.icofont-hand-drag2:before{content:""}.icofont-hand-drawn-alt-down:before{content:""}.icofont-hand-drawn-alt-left:before{content:""}.icofont-hand-drawn-alt-right:before{content:""}.icofont-hand-drawn-alt-up:before{content:""}.icofont-hand-drawn-down:before{content:""}.icofont-hand-drawn-left:before{content:""}.icofont-hand-drawn-right:before{content:""}.icofont-hand-drawn-up:before{content:""}.icofont-hand-grippers:before{content:""}.icofont-hand-left:before{content:""}.icofont-hand-right:before{content:""}.icofont-hand-up:before{content:""}.icofont-line-block-down:before{content:""}.icofont-line-block-left:before{content:""}.icofont-line-block-right:before{content:""}.icofont-line-block-up:before{content:""}.icofont-long-arrow-down:before{content:""}.icofont-long-arrow-left:before{content:""}.icofont-long-arrow-right:before{content:""}.icofont-long-arrow-up:before{content:""}.icofont-rounded-collapse:before{content:""}.icofont-rounded-double-left:before{content:""}.icofont-rounded-double-right:before{content:""}.icofont-rounded-down:before{content:""}.icofont-rounded-expand:before{content:""}.icofont-rounded-left-down:before{content:""}.icofont-rounded-left-up:before{content:""}.icofont-rounded-left:before{content:""}.icofont-rounded-right-down:before{content:""}.icofont-rounded-right-up:before{content:""}.icofont-rounded-right:before{content:""}.icofont-rounded-up:before{content:""}.icofont-scroll-bubble-down:before{content:""}.icofont-scroll-bubble-left:before{content:""}.icofont-scroll-bubble-right:before{content:""}.icofont-scroll-bubble-up:before{content:""}.icofont-scroll-double-down:before{content:""}.icofont-scroll-double-left:before{content:""}.icofont-scroll-double-right:before{content:""}.icofont-scroll-double-up:before{content:""}.icofont-scroll-down:before{content:""}.icofont-scroll-left:before{content:""}.icofont-scroll-long-down:before{content:""}.icofont-scroll-long-left:before{content:""}.icofont-scroll-long-right:before{content:""}.icofont-scroll-long-up:before{content:""}.icofont-scroll-right:before{content:""}.icofont-scroll-up:before{content:""}.icofont-simple-down:before{content:""}.icofont-simple-left-down:before{content:""}.icofont-simple-left-up:before{content:""}.icofont-simple-left:before{content:""}.icofont-simple-right-down:before{content:""}.icofont-simple-right-up:before{content:""}.icofont-simple-right:before{content:""}.icofont-simple-up:before{content:""}.icofont-square-down:before{content:""}.icofont-square-left:before{content:""}.icofont-square-right:before{content:""}.icofont-square-up:before{content:""}.icofont-stylish-down:before{content:""}.icofont-stylish-left:before{content:""}.icofont-stylish-right:before{content:""}.icofont-stylish-up:before{content:""}.icofont-swoosh-down:before{content:""}.icofont-swoosh-left:before{content:""}.icofont-swoosh-right:before{content:""}.icofont-swoosh-up:before{content:""}.icofont-thin-double-left:before{content:""}.icofont-thin-double-right:before{content:""}.icofont-thin-down:before{content:""}.icofont-thin-left:before{content:""}.icofont-thin-right:before{content:""}.icofont-thin-up:before{content:""}.icofont-abc:before{content:""}.icofont-atom:before{content:""}.icofont-award:before{content:""}.icofont-bell-alt:before{content:""}.icofont-black-board:before{content:""}.icofont-book-alt:before{content:""}.icofont-book:before{content:""}.icofont-brainstorming:before{content:""}.icofont-certificate-alt-1:before{content:""}.icofont-certificate-alt-2:before{content:""}.icofont-certificate:before{content:""}.icofont-education:before{content:""}.icofont-electron:before{content:""}.icofont-fountain-pen:before{content:""}.icofont-globe-alt:before{content:""}.icofont-graduate-alt:before{content:""}.icofont-graduate:before{content:""}.icofont-group-students:before{content:""}.icofont-hat-alt:before{content:""}.icofont-hat:before{content:""}.icofont-instrument:before{content:""}.icofont-lamp-light:before{content:""}.icofont-medal:before{content:""}.icofont-microscope-alt:before{content:""}.icofont-microscope:before{content:""}.icofont-paper:before{content:""}.icofont-pen-alt-4:before{content:""}.icofont-pen-nib:before{content:""}.icofont-pencil-alt-5:before{content:""}.icofont-quill-pen:before{content:""}.icofont-read-book-alt:before{content:""}.icofont-read-book:before{content:""}.icofont-school-bag:before{content:""}.icofont-school-bus:before{content:""}.icofont-student-alt:before{content:""}.icofont-student:before{content:""}.icofont-teacher:before{content:""}.icofont-test-bulb:before{content:""}.icofont-test-tube-alt:before{content:""}.icofont-university:before{content:""}.icofont-angry:before{content:""}.icofont-astonished:before{content:""}.icofont-confounded:before{content:""}.icofont-confused:before{content:""}.icofont-crying:before{content:""}.icofont-dizzy:before{content:""}.icofont-expressionless:before{content:""}.icofont-heart-eyes:before{content:""}.icofont-laughing:before{content:""}.icofont-nerd-smile:before{content:""}.icofont-open-mouth:before{content:""}.icofont-rage:before{content:""}.icofont-rolling-eyes:before{content:""}.icofont-sad:before{content:""}.icofont-simple-smile:before{content:""}.icofont-slightly-smile:before{content:""}.icofont-smirk:before{content:""}.icofont-stuck-out-tongue:before{content:""}.icofont-wink-smile:before{content:""}.icofont-worried:before{content:""}.icofont-file-alt:before{content:""}.icofont-file-audio:before{content:""}.icofont-file-avi-mp4:before{content:""}.icofont-file-bmp:before{content:""}.icofont-file-code:before{content:""}.icofont-file-css:before{content:""}.icofont-file-document:before{content:""}.icofont-file-eps:before{content:""}.icofont-file-excel:before{content:""}.icofont-file-exe:before{content:""}.icofont-file-file:before{content:""}.icofont-file-flv:before{content:""}.icofont-file-gif:before{content:""}.icofont-file-html5:before{content:""}.icofont-file-image:before{content:""}.icofont-file-iso:before{content:""}.icofont-file-java:before{content:""}.icofont-file-javascript:before{content:""}.icofont-file-jpg:before{content:""}.icofont-file-midi:before{content:""}.icofont-file-mov:before{content:""}.icofont-file-mp3:before{content:""}.icofont-file-pdf:before{content:""}.icofont-file-php:before{content:""}.icofont-file-png:before{content:""}.icofont-file-powerpoint:before{content:""}.icofont-file-presentation:before{content:""}.icofont-file-psb:before{content:""}.icofont-file-psd:before{content:""}.icofont-file-python:before{content:""}.icofont-file-ruby:before{content:""}.icofont-file-spreadsheet:before{content:""}.icofont-file-sql:before{content:""}.icofont-file-svg:before{content:""}.icofont-file-text:before{content:""}.icofont-file-tiff:before{content:""}.icofont-file-video:before{content:""}.icofont-file-wave:before{content:""}.icofont-file-wmv:before{content:""}.icofont-file-word:before{content:""}.icofont-file-zip:before{content:""}.icofont-cycling-alt:before{content:""}.icofont-cycling:before{content:""}.icofont-dumbbell:before{content:""}.icofont-dumbbells:before{content:""}.icofont-gym-alt-1:before{content:""}.icofont-gym-alt-2:before{content:""}.icofont-gym-alt-3:before{content:""}.icofont-gym:before{content:""}.icofont-muscle-weight:before{content:""}.icofont-muscle:before{content:""}.icofont-apple:before{content:""}.icofont-arabian-coffee:before{content:""}.icofont-artichoke:before{content:""}.icofont-asparagus:before{content:""}.icofont-avocado:before{content:""}.icofont-baby-food:before{content:""}.icofont-banana:before{content:""}.icofont-bbq:before{content:""}.icofont-beans:before{content:""}.icofont-beer:before{content:""}.icofont-bell-pepper-capsicum:before{content:""}.icofont-birthday-cake:before{content:""}.icofont-bread:before{content:""}.icofont-broccoli:before{content:""}.icofont-burger:before{content:""}.icofont-cabbage:before{content:""}.icofont-carrot:before{content:""}.icofont-cauli-flower:before{content:""}.icofont-cheese:before{content:""}.icofont-chef:before{content:""}.icofont-cherry:before{content:""}.icofont-chicken-fry:before{content:""}.icofont-chicken:before{content:""}.icofont-cocktail:before{content:""}.icofont-coconut-water:before{content:""}.icofont-coconut:before{content:""}.icofont-coffee-alt:before{content:""}.icofont-coffee-cup:before{content:""}.icofont-coffee-mug:before{content:""}.icofont-coffee-pot:before{content:""}.icofont-cola:before{content:""}.icofont-corn:before{content:""}.icofont-croissant:before{content:""}.icofont-crop-plant:before{content:""}.icofont-cucumber:before{content:""}.icofont-culinary:before{content:""}.icofont-cup-cake:before{content:""}.icofont-dining-table:before{content:""}.icofont-donut:before{content:""}.icofont-egg-plant:before{content:""}.icofont-egg-poached:before{content:""}.icofont-farmer-alt:before{content:""}.icofont-farmer:before{content:""}.icofont-fast-food:before{content:""}.icofont-food-basket:before{content:""}.icofont-food-cart:before{content:""}.icofont-fork-and-knife:before{content:""}.icofont-french-fries:before{content:""}.icofont-fruits:before{content:""}.icofont-grapes:before{content:""}.icofont-honey:before{content:""}.icofont-hot-dog:before{content:""}.icofont-ice-cream-alt:before{content:""}.icofont-ice-cream:before{content:""}.icofont-juice:before{content:""}.icofont-ketchup:before{content:""}.icofont-kiwi:before{content:""}.icofont-layered-cake:before{content:""}.icofont-lemon-alt:before{content:""}.icofont-lemon:before{content:""}.icofont-lobster:before{content:""}.icofont-mango:before{content:""}.icofont-milk:before{content:""}.icofont-mushroom:before{content:""}.icofont-noodles:before{content:""}.icofont-onion:before{content:""}.icofont-orange:before{content:""}.icofont-pear:before{content:""}.icofont-peas:before{content:""}.icofont-pepper:before{content:""}.icofont-pie-alt:before{content:""}.icofont-pie:before{content:""}.icofont-pineapple:before{content:""}.icofont-pizza-slice:before{content:""}.icofont-pizza:before{content:""}.icofont-plant:before{content:""}.icofont-popcorn:before{content:""}.icofont-potato:before{content:""}.icofont-pumpkin:before{content:""}.icofont-raddish:before{content:""}.icofont-restaurant-menu:before{content:""}.icofont-restaurant:before{content:""}.icofont-salt-and-pepper:before{content:""}.icofont-sandwich:before{content:""}.icofont-sausage:before{content:""}.icofont-soft-drinks:before{content:""}.icofont-soup-bowl:before{content:""}.icofont-spoon-and-fork:before{content:""}.icofont-steak:before{content:""}.icofont-strawberry:before{content:""}.icofont-sub-sandwich:before{content:""}.icofont-sushi:before{content:""}.icofont-taco:before{content:""}.icofont-tea-pot:before{content:""}.icofont-tea:before{content:""}.icofont-tomato:before{content:""}.icofont-watermelon:before{content:""}.icofont-wheat:before{content:""}.icofont-baby-backpack:before{content:""}.icofont-baby-cloth:before{content:""}.icofont-baby-milk-bottle:before{content:""}.icofont-baby-trolley:before{content:""}.icofont-baby:before{content:""}.icofont-candy:before{content:""}.icofont-holding-hands:before{content:""}.icofont-infant-nipple:before{content:""}.icofont-kids-scooter:before{content:""}.icofont-safety-pin:before{content:""}.icofont-teddy-bear:before{content:""}.icofont-toy-ball:before{content:""}.icofont-toy-cat:before{content:""}.icofont-toy-duck:before{content:""}.icofont-toy-elephant:before{content:""}.icofont-toy-hand:before{content:""}.icofont-toy-horse:before{content:""}.icofont-toy-lattu:before{content:""}.icofont-toy-train:before{content:""}.icofont-burglar:before{content:""}.icofont-cannon-firing:before{content:""}.icofont-cc-camera:before{content:""}.icofont-cop-badge:before{content:""}.icofont-cop:before{content:""}.icofont-court-hammer:before{content:""}.icofont-court:before{content:""}.icofont-finger-print:before{content:""}.icofont-gavel:before{content:""}.icofont-handcuff-alt:before{content:""}.icofont-handcuff:before{content:""}.icofont-investigation:before{content:""}.icofont-investigator:before{content:""}.icofont-jail:before{content:""}.icofont-judge:before{content:""}.icofont-law-alt-1:before{content:""}.icofont-law-alt-2:before{content:""}.icofont-law-alt-3:before{content:""}.icofont-law-book:before{content:""}.icofont-law-document:before{content:""}.icofont-law-order:before{content:""}.icofont-law-protect:before{content:""}.icofont-law-scales:before{content:""}.icofont-law:before{content:""}.icofont-lawyer-alt-1:before{content:""}.icofont-lawyer-alt-2:before{content:""}.icofont-lawyer:before{content:""}.icofont-legal:before{content:""}.icofont-pistol:before{content:""}.icofont-police-badge:before{content:""}.icofont-police-cap:before{content:""}.icofont-police-car-alt-1:before{content:""}.icofont-police-car-alt-2:before{content:""}.icofont-police-car:before{content:""}.icofont-police-hat:before{content:""}.icofont-police-van:before{content:""}.icofont-police:before{content:""}.icofont-thief-alt:before{content:""}.icofont-thief:before{content:""}.icofont-abacus-alt:before{content:""}.icofont-abacus:before{content:""}.icofont-angle-180:before{content:""}.icofont-angle-45:before{content:""}.icofont-angle-90:before{content:""}.icofont-angle:before{content:""}.icofont-calculator-alt-1:before{content:""}.icofont-calculator-alt-2:before{content:""}.icofont-calculator:before{content:""}.icofont-circle-ruler-alt:before{content:""}.icofont-circle-ruler:before{content:""}.icofont-compass-alt-1:before{content:""}.icofont-compass-alt-2:before{content:""}.icofont-compass-alt-3:before{content:""}.icofont-compass-alt-4:before{content:""}.icofont-golden-ratio:before{content:""}.icofont-marker-alt-1:before{content:""}.icofont-marker-alt-2:before{content:""}.icofont-marker-alt-3:before{content:""}.icofont-marker:before{content:""}.icofont-math:before{content:""}.icofont-mathematical-alt-1:before{content:""}.icofont-mathematical-alt-2:before{content:""}.icofont-mathematical:before{content:""}.icofont-pen-alt-1:before{content:""}.icofont-pen-alt-2:before{content:""}.icofont-pen-alt-3:before{content:""}.icofont-pen-holder-alt-1:before{content:""}.icofont-pen-holder:before{content:""}.icofont-pen:before{content:""}.icofont-pencil-alt-1:before{content:""}.icofont-pencil-alt-2:before{content:""}.icofont-pencil-alt-3:before{content:""}.icofont-pencil-alt-4:before{content:""}.icofont-pencil:before{content:""}.icofont-ruler-alt-1:before{content:""}.icofont-ruler-alt-2:before{content:""}.icofont-ruler-compass-alt:before{content:""}.icofont-ruler-compass:before{content:""}.icofont-ruler-pencil-alt-1:before{content:""}.icofont-ruler-pencil-alt-2:before{content:""}.icofont-ruler-pencil:before{content:""}.icofont-ruler:before{content:""}.icofont-rulers-alt:before{content:""}.icofont-rulers:before{content:""}.icofont-square-root:before{content:""}.icofont-ui-calculator:before{content:""}.icofont-aids:before{content:""}.icofont-ambulance-crescent:before{content:""}.icofont-ambulance-cross:before{content:""}.icofont-ambulance:before{content:""}.icofont-autism:before{content:""}.icofont-bandage:before{content:""}.icofont-blind:before{content:""}.icofont-blood-drop:before{content:""}.icofont-blood-test:before{content:""}.icofont-blood:before{content:""}.icofont-brain-alt:before{content:""}.icofont-brain:before{content:""}.icofont-capsule:before{content:""}.icofont-crutch:before{content:""}.icofont-disabled:before{content:""}.icofont-dna-alt-1:before{content:""}.icofont-dna-alt-2:before{content:""}.icofont-dna:before{content:""}.icofont-doctor-alt:before{content:""}.icofont-doctor:before{content:""}.icofont-drug-pack:before{content:""}.icofont-drug:before{content:""}.icofont-first-aid-alt:before{content:""}.icofont-first-aid:before{content:""}.icofont-heart-beat-alt:before{content:""}.icofont-heart-beat:before{content:""}.icofont-heartbeat:before{content:""}.icofont-herbal:before{content:""}.icofont-hospital:before{content:""}.icofont-icu:before{content:""}.icofont-injection-syringe:before{content:""}.icofont-laboratory:before{content:""}.icofont-medical-sign-alt:before{content:""}.icofont-medical-sign:before{content:""}.icofont-nurse-alt:before{content:""}.icofont-nurse:before{content:""}.icofont-nursing-home:before{content:""}.icofont-operation-theater:before{content:""}.icofont-paralysis-disability:before{content:""}.icofont-patient-bed:before{content:""}.icofont-patient-file:before{content:""}.icofont-pills:before{content:""}.icofont-prescription:before{content:""}.icofont-pulse:before{content:""}.icofont-stethoscope-alt:before{content:""}.icofont-stethoscope:before{content:""}.icofont-stretcher:before{content:""}.icofont-surgeon-alt:before{content:""}.icofont-surgeon:before{content:""}.icofont-tablets:before{content:""}.icofont-test-bottle:before{content:""}.icofont-test-tube:before{content:""}.icofont-thermometer-alt:before{content:""}.icofont-thermometer:before{content:""}.icofont-tooth:before{content:""}.icofont-xray:before{content:""}.icofont-ui-add:before{content:""}.icofont-ui-alarm:before{content:""}.icofont-ui-battery:before{content:""}.icofont-ui-block:before{content:""}.icofont-ui-bluetooth:before{content:""}.icofont-ui-brightness:before{content:""}.icofont-ui-browser:before{content:""}.icofont-ui-calendar:before{content:""}.icofont-ui-call:before{content:""}.icofont-ui-camera:before{content:""}.icofont-ui-cart:before{content:""}.icofont-ui-cell-phone:before{content:""}.icofont-ui-chat:before{content:""}.icofont-ui-check:before{content:""}.icofont-ui-clip-board:before{content:""}.icofont-ui-clip:before{content:""}.icofont-ui-clock:before{content:""}.icofont-ui-close:before{content:""}.icofont-ui-contact-list:before{content:""}.icofont-ui-copy:before{content:""}.icofont-ui-cut:before{content:""}.icofont-ui-delete:before{content:""}.icofont-ui-dial-phone:before{content:""}.icofont-ui-edit:before{content:""}.icofont-ui-email:before{content:""}.icofont-ui-file:before{content:""}.icofont-ui-fire-wall:before{content:""}.icofont-ui-flash-light:before{content:""}.icofont-ui-flight:before{content:""}.icofont-ui-folder:before{content:""}.icofont-ui-game:before{content:""}.icofont-ui-handicapped:before{content:""}.icofont-ui-home:before{content:""}.icofont-ui-image:before{content:""}.icofont-ui-laoding:before{content:""}.icofont-ui-lock:before{content:""}.icofont-ui-love-add:before{content:""}.icofont-ui-love-broken:before{content:""}.icofont-ui-love-remove:before{content:""}.icofont-ui-love:before{content:""}.icofont-ui-map:before{content:""}.icofont-ui-message:before{content:""}.icofont-ui-messaging:before{content:""}.icofont-ui-movie:before{content:""}.icofont-ui-music-player:before{content:""}.icofont-ui-music:before{content:""}.icofont-ui-mute:before{content:""}.icofont-ui-network:before{content:""}.icofont-ui-next:before{content:""}.icofont-ui-note:before{content:""}.icofont-ui-office:before{content:""}.icofont-ui-password:before{content:""}.icofont-ui-pause:before{content:""}.icofont-ui-play-stop:before{content:""}.icofont-ui-play:before{content:""}.icofont-ui-pointer:before{content:""}.icofont-ui-power:before{content:""}.icofont-ui-press:before{content:""}.icofont-ui-previous:before{content:""}.icofont-ui-rate-add:before{content:""}.icofont-ui-rate-blank:before{content:""}.icofont-ui-rate-remove:before{content:""}.icofont-ui-rating:before{content:""}.icofont-ui-record:before{content:""}.icofont-ui-remove:before{content:""}.icofont-ui-reply:before{content:""}.icofont-ui-rotation:before{content:""}.icofont-ui-rss:before{content:""}.icofont-ui-search:before{content:""}.icofont-ui-settings:before{content:""}.icofont-ui-social-link:before{content:""}.icofont-ui-tag:before{content:""}.icofont-ui-text-chat:before{content:""}.icofont-ui-text-loading:before{content:""}.icofont-ui-theme:before{content:""}.icofont-ui-timer:before{content:""}.icofont-ui-touch-phone:before{content:""}.icofont-ui-travel:before{content:""}.icofont-ui-unlock:before{content:""}.icofont-ui-user-group:before{content:""}.icofont-ui-user:before{content:""}.icofont-ui-v-card:before{content:""}.icofont-ui-video-chat:before{content:""}.icofont-ui-video-message:before{content:""}.icofont-ui-video-play:before{content:""}.icofont-ui-video:before{content:""}.icofont-ui-volume:before{content:""}.icofont-ui-weather:before{content:""}.icofont-ui-wifi:before{content:""}.icofont-ui-zoom-in:before{content:""}.icofont-ui-zoom-out:before{content:""}.icofont-cassette-player:before{content:""}.icofont-cassette:before{content:""}.icofont-forward:before{content:""}.icofont-guiter:before{content:""}.icofont-movie:before{content:""}.icofont-multimedia:before{content:""}.icofont-music-alt:before{content:""}.icofont-music-disk:before{content:""}.icofont-music-note:before{content:""}.icofont-music-notes:before{content:""}.icofont-music:before{content:""}.icofont-mute-volume:before{content:""}.icofont-pause:before{content:""}.icofont-play-alt-1:before{content:""}.icofont-play-alt-2:before{content:""}.icofont-play-alt-3:before{content:""}.icofont-play-pause:before{content:""}.icofont-play:before{content:""}.icofont-record:before{content:""}.icofont-retro-music-disk:before{content:""}.icofont-rewind:before{content:""}.icofont-song-notes:before{content:""}.icofont-sound-wave-alt:before{content:""}.icofont-sound-wave:before{content:""}.icofont-stop:before{content:""}.icofont-video-alt:before{content:""}.icofont-video-cam:before{content:""}.icofont-video-clapper:before{content:""}.icofont-video:before{content:""}.icofont-volume-bar:before{content:""}.icofont-volume-down:before{content:""}.icofont-volume-mute:before{content:""}.icofont-volume-off:before{content:""}.icofont-volume-up:before{content:""}.icofont-youtube-play:before{content:""}.icofont-2checkout-alt:before{content:""}.icofont-2checkout:before{content:""}.icofont-amazon-alt:before{content:""}.icofont-amazon:before{content:""}.icofont-american-express-alt:before{content:""}.icofont-american-express:before{content:""}.icofont-apple-pay-alt:before{content:""}.icofont-apple-pay:before{content:""}.icofont-bank-transfer-alt:before{content:""}.icofont-bank-transfer:before{content:""}.icofont-braintree-alt:before{content:""}.icofont-braintree:before{content:""}.icofont-cash-on-delivery-alt:before{content:""}.icofont-cash-on-delivery:before{content:""}.icofont-diners-club-alt-1:before{content:""}.icofont-diners-club-alt-2:before{content:""}.icofont-diners-club-alt-3:before{content:""}.icofont-diners-club:before{content:""}.icofont-discover-alt:before{content:""}.icofont-discover:before{content:""}.icofont-eway-alt:before{content:""}.icofont-eway:before{content:""}.icofont-google-wallet-alt-1:before{content:""}.icofont-google-wallet-alt-2:before{content:""}.icofont-google-wallet-alt-3:before{content:""}.icofont-google-wallet:before{content:""}.icofont-jcb-alt:before{content:""}.icofont-jcb:before{content:""}.icofont-maestro-alt:before{content:""}.icofont-maestro:before{content:""}.icofont-mastercard-alt:before{content:""}.icofont-mastercard:before{content:""}.icofont-payoneer-alt:before{content:""}.icofont-payoneer:before{content:""}.icofont-paypal-alt:before{content:""}.icofont-paypal:before{content:""}.icofont-sage-alt:before{content:""}.icofont-sage:before{content:""}.icofont-skrill-alt:before{content:""}.icofont-skrill:before{content:""}.icofont-stripe-alt:before{content:""}.icofont-stripe:before{content:""}.icofont-visa-alt:before{content:""}.icofont-visa-electron:before{content:""}.icofont-visa:before{content:""}.icofont-western-union-alt:before{content:""}.icofont-western-union:before{content:""}.icofont-boy:before{content:""}.icofont-business-man-alt-1:before{content:""}.icofont-business-man-alt-2:before{content:""}.icofont-business-man-alt-3:before{content:""}.icofont-business-man:before{content:""}.icofont-female:before{content:""}.icofont-funky-man:before{content:""}.icofont-girl-alt:before{content:""}.icofont-girl:before{content:""}.icofont-group:before{content:""}.icofont-hotel-boy-alt:before{content:""}.icofont-hotel-boy:before{content:""}.icofont-kid:before{content:""}.icofont-man-in-glasses:before{content:""}.icofont-people:before{content:""}.icofont-support:before{content:""}.icofont-user-alt-1:before{content:""}.icofont-user-alt-2:before{content:""}.icofont-user-alt-3:before{content:""}.icofont-user-alt-4:before{content:""}.icofont-user-alt-5:before{content:""}.icofont-user-alt-6:before{content:""}.icofont-user-alt-7:before{content:""}.icofont-user-female:before{content:""}.icofont-user-male:before{content:""}.icofont-user-suited:before{content:""}.icofont-user:before{content:""}.icofont-users-alt-1:before{content:""}.icofont-users-alt-2:before{content:""}.icofont-users-alt-3:before{content:""}.icofont-users-alt-4:before{content:""}.icofont-users-alt-5:before{content:""}.icofont-users-alt-6:before{content:""}.icofont-users-social:before{content:""}.icofont-users:before{content:""}.icofont-waiter-alt:before{content:""}.icofont-waiter:before{content:""}.icofont-woman-in-glasses:before{content:""}.icofont-search-1:before{content:""}.icofont-search-2:before{content:""}.icofont-search-document:before{content:""}.icofont-search-folder:before{content:""}.icofont-search-job:before{content:""}.icofont-search-map:before{content:""}.icofont-search-property:before{content:""}.icofont-search-restaurant:before{content:""}.icofont-search-stock:before{content:""}.icofont-search-user:before{content:""}.icofont-search:before{content:""}.icofont-500px:before{content:""}.icofont-aim:before{content:""}.icofont-badoo:before{content:""}.icofont-baidu-tieba:before{content:""}.icofont-bbm-messenger:before{content:""}.icofont-bebo:before{content:""}.icofont-behance:before{content:""}.icofont-blogger:before{content:""}.icofont-bootstrap:before{content:""}.icofont-brightkite:before{content:""}.icofont-cloudapp:before{content:""}.icofont-concrete5:before{content:""}.icofont-delicious:before{content:""}.icofont-designbump:before{content:""}.icofont-designfloat:before{content:""}.icofont-deviantart:before{content:""}.icofont-digg:before{content:""}.icofont-dotcms:before{content:""}.icofont-dribbble:before{content:""}.icofont-dribble:before{content:""}.icofont-dropbox:before{content:""}.icofont-ebuddy:before{content:""}.icofont-ello:before{content:""}.icofont-ember:before{content:""}.icofont-envato:before{content:""}.icofont-evernote:before{content:""}.icofont-facebook-messenger:before{content:""}.icofont-facebook:before{content:""}.icofont-feedburner:before{content:""}.icofont-flikr:before{content:""}.icofont-folkd:before{content:""}.icofont-foursquare:before{content:""}.icofont-friendfeed:before{content:""}.icofont-ghost:before{content:""}.icofont-github:before{content:""}.icofont-gnome:before{content:""}.icofont-google-buzz:before{content:""}.icofont-google-hangouts:before{content:""}.icofont-google-map:before{content:""}.icofont-google-plus:before{content:""}.icofont-google-talk:before{content:""}.icofont-hype-machine:before{content:""}.icofont-instagram:before{content:""}.icofont-kakaotalk:before{content:""}.icofont-kickstarter:before{content:""}.icofont-kik:before{content:""}.icofont-kiwibox:before{content:""}.icofont-line-messenger:before{content:""}.icofont-line:before{content:""}.icofont-linkedin:before{content:""}.icofont-linux-mint:before{content:""}.icofont-live-messenger:before{content:""}.icofont-livejournal:before{content:""}.icofont-magento:before{content:""}.icofont-meetme:before{content:""}.icofont-meetup:before{content:""}.icofont-mixx:before{content:""}.icofont-newsvine:before{content:""}.icofont-nimbuss:before{content:""}.icofont-odnoklassniki:before{content:""}.icofont-opencart:before{content:""}.icofont-oscommerce:before{content:""}.icofont-pandora:before{content:""}.icofont-photobucket:before{content:""}.icofont-picasa:before{content:""}.icofont-pinterest:before{content:""}.icofont-prestashop:before{content:""}.icofont-qik:before{content:""}.icofont-qq:before{content:""}.icofont-readernaut:before{content:""}.icofont-reddit:before{content:""}.icofont-renren:before{content:""}.icofont-rss:before{content:""}.icofont-shopify:before{content:""}.icofont-silverstripe:before{content:""}.icofont-skype:before{content:""}.icofont-slack:before{content:""}.icofont-slashdot:before{content:""}.icofont-slidshare:before{content:""}.icofont-smugmug:before{content:""}.icofont-snapchat:before{content:""}.icofont-soundcloud:before{content:""}.icofont-spotify:before{content:""}.icofont-stack-exchange:before{content:""}.icofont-stack-overflow:before{content:""}.icofont-steam:before{content:""}.icofont-stumbleupon:before{content:""}.icofont-tagged:before{content:""}.icofont-technorati:before{content:""}.icofont-telegram:before{content:""}.icofont-tinder:before{content:""}.icofont-trello:before{content:""}.icofont-tumblr:before{content:""}.icofont-twitch:before{content:""}.icofont-twitter:before{content:""}.icofont-typo3:before{content:""}.icofont-ubercart:before{content:""}.icofont-viber:before{content:""}.icofont-viddler:before{content:""}.icofont-vimeo:before{content:""}.icofont-vine:before{content:""}.icofont-virb:before{content:""}.icofont-virtuemart:before{content:""}.icofont-vk:before{content:""}.icofont-wechat:before{content:""}.icofont-weibo:before{content:""}.icofont-whatsapp:before{content:""}.icofont-xing:before{content:""}.icofont-yahoo:before{content:""}.icofont-yelp:before{content:""}.icofont-youku:before{content:""}.icofont-youtube:before{content:""}.icofont-zencart:before{content:""}.icofont-badminton-birdie:before{content:""}.icofont-baseball:before{content:""}.icofont-baseballer:before{content:""}.icofont-basketball-hoop:before{content:""}.icofont-basketball:before{content:""}.icofont-billiard-ball:before{content:""}.icofont-boot-alt-1:before{content:""}.icofont-boot-alt-2:before{content:""}.icofont-boot:before{content:""}.icofont-bowling-alt:before{content:""}.icofont-bowling:before{content:""}.icofont-canoe:before{content:""}.icofont-cheer-leader:before{content:""}.icofont-climbing:before{content:""}.icofont-corner:before{content:""}.icofont-field-alt:before{content:""}.icofont-field:before{content:""}.icofont-football-alt:before{content:""}.icofont-football-american:before{content:""}.icofont-football:before{content:""}.icofont-foul:before{content:""}.icofont-goal-keeper:before{content:""}.icofont-goal:before{content:""}.icofont-golf-alt:before{content:""}.icofont-golf-bag:before{content:""}.icofont-golf-cart:before{content:""}.icofont-golf-field:before{content:""}.icofont-golf:before{content:""}.icofont-golfer:before{content:""}.icofont-helmet:before{content:""}.icofont-hockey-alt:before{content:""}.icofont-hockey:before{content:""}.icofont-ice-skate:before{content:""}.icofont-jersey-alt:before{content:""}.icofont-jersey:before{content:""}.icofont-jumping:before{content:""}.icofont-kick:before{content:""}.icofont-leg:before{content:""}.icofont-match-review:before{content:""}.icofont-medal-sport:before{content:""}.icofont-offside:before{content:""}.icofont-olympic-logo:before{content:""}.icofont-olympic:before{content:""}.icofont-padding:before{content:""}.icofont-penalty-card:before{content:""}.icofont-racer:before{content:""}.icofont-racing-car:before{content:""}.icofont-racing-flag-alt:before{content:""}.icofont-racing-flag:before{content:""}.icofont-racings-wheel:before{content:""}.icofont-referee:before{content:""}.icofont-refree-jersey:before{content:""}.icofont-result-sport:before{content:""}.icofont-rugby-ball:before{content:""}.icofont-rugby-player:before{content:""}.icofont-rugby:before{content:""}.icofont-runner-alt-1:before{content:""}.icofont-runner-alt-2:before{content:""}.icofont-runner:before{content:""}.icofont-score-board:before{content:""}.icofont-skiing-man:before{content:""}.icofont-skydiving-goggles:before{content:""}.icofont-snow-mobile:before{content:""}.icofont-steering:before{content:""}.icofont-stopwatch:before{content:""}.icofont-substitute:before{content:""}.icofont-swimmer:before{content:""}.icofont-table-tennis:before{content:""}.icofont-team-alt:before{content:""}.icofont-team:before{content:""}.icofont-tennis-player:before{content:""}.icofont-tennis:before{content:""}.icofont-tracking:before{content:""}.icofont-trophy-alt:before{content:""}.icofont-trophy:before{content:""}.icofont-volleyball-alt:before{content:""}.icofont-volleyball-fire:before{content:""}.icofont-volleyball:before{content:""}.icofont-water-bottle:before{content:""}.icofont-whistle-alt:before{content:""}.icofont-whistle:before{content:""}.icofont-win-trophy:before{content:""}.icofont-align-center:before{content:""}.icofont-align-left:before{content:""}.icofont-align-right:before{content:""}.icofont-all-caps:before{content:""}.icofont-bold:before{content:""}.icofont-brush:before{content:""}.icofont-clip-board:before{content:""}.icofont-code-alt:before{content:""}.icofont-color-bucket:before{content:""}.icofont-color-picker:before{content:""}.icofont-copy-invert:before{content:""}.icofont-copy:before{content:""}.icofont-cut:before{content:""}.icofont-delete-alt:before{content:""}.icofont-edit-alt:before{content:""}.icofont-eraser-alt:before{content:""}.icofont-font:before{content:""}.icofont-heading:before{content:""}.icofont-indent:before{content:""}.icofont-italic-alt:before{content:""}.icofont-italic:before{content:""}.icofont-justify-all:before{content:""}.icofont-justify-center:before{content:""}.icofont-justify-left:before{content:""}.icofont-justify-right:before{content:""}.icofont-link-broken:before{content:""}.icofont-outdent:before{content:""}.icofont-paper-clip:before{content:""}.icofont-paragraph:before{content:""}.icofont-pin:before{content:""}.icofont-printer:before{content:""}.icofont-redo:before{content:""}.icofont-rotation:before{content:""}.icofont-save:before{content:""}.icofont-small-cap:before{content:""}.icofont-strike-through:before{content:""}.icofont-sub-listing:before{content:""}.icofont-subscript:before{content:""}.icofont-superscript:before{content:""}.icofont-table:before{content:""}.icofont-text-height:before{content:""}.icofont-text-width:before{content:""}.icofont-trash:before{content:""}.icofont-underline:before{content:""}.icofont-undo:before{content:""}.icofont-air-balloon:before{content:""}.icofont-airplane-alt:before{content:""}.icofont-airplane:before{content:""}.icofont-articulated-truck:before{content:""}.icofont-auto-mobile:before{content:""}.icofont-auto-rickshaw:before{content:""}.icofont-bicycle-alt-1:before{content:""}.icofont-bicycle-alt-2:before{content:""}.icofont-bicycle:before{content:""}.icofont-bus-alt-1:before{content:""}.icofont-bus-alt-2:before{content:""}.icofont-bus-alt-3:before{content:""}.icofont-bus:before{content:""}.icofont-cab:before{content:""}.icofont-cable-car:before{content:""}.icofont-car-alt-1:before{content:""}.icofont-car-alt-2:before{content:""}.icofont-car-alt-3:before{content:""}.icofont-car-alt-4:before{content:""}.icofont-car:before{content:""}.icofont-delivery-time:before{content:""}.icofont-fast-delivery:before{content:""}.icofont-fire-truck-alt:before{content:""}.icofont-fire-truck:before{content:""}.icofont-free-delivery:before{content:""}.icofont-helicopter:before{content:""}.icofont-motor-bike-alt:before{content:""}.icofont-motor-bike:before{content:""}.icofont-motor-biker:before{content:""}.icofont-oil-truck:before{content:""}.icofont-rickshaw:before{content:""}.icofont-rocket-alt-1:before{content:""}.icofont-rocket-alt-2:before{content:""}.icofont-rocket:before{content:""}.icofont-sail-boat-alt-1:before{content:""}.icofont-sail-boat-alt-2:before{content:""}.icofont-sail-boat:before{content:""}.icofont-scooter:before{content:""}.icofont-sea-plane:before{content:""}.icofont-ship-alt:before{content:""}.icofont-ship:before{content:""}.icofont-speed-boat:before{content:""}.icofont-taxi:before{content:""}.icofont-tractor:before{content:""}.icofont-train-line:before{content:""}.icofont-train-steam:before{content:""}.icofont-tram:before{content:""}.icofont-truck-alt:before{content:""}.icofont-truck-loaded:before{content:""}.icofont-truck:before{content:""}.icofont-van-alt:before{content:""}.icofont-van:before{content:""}.icofont-yacht:before{content:""}.icofont-5-star-hotel:before{content:""}.icofont-air-ticket:before{content:""}.icofont-beach-bed:before{content:""}.icofont-beach:before{content:""}.icofont-camping-vest:before{content:""}.icofont-direction-sign:before{content:""}.icofont-hill-side:before{content:""}.icofont-hill:before{content:""}.icofont-hotel:before{content:""}.icofont-island-alt:before{content:""}.icofont-island:before{content:""}.icofont-sandals-female:before{content:""}.icofont-sandals-male:before{content:""}.icofont-travelling:before{content:""}.icofont-breakdown:before{content:""}.icofont-celsius:before{content:""}.icofont-clouds:before{content:""}.icofont-cloudy:before{content:""}.icofont-dust:before{content:""}.icofont-eclipse:before{content:""}.icofont-fahrenheit:before{content:""}.icofont-forest-fire:before{content:""}.icofont-full-night:before{content:""}.icofont-full-sunny:before{content:""}.icofont-hail-night:before{content:""}.icofont-hail-rainy-night:before{content:""}.icofont-hail-rainy-sunny:before{content:""}.icofont-hail-rainy:before{content:""}.icofont-hail-sunny:before{content:""}.icofont-hail-thunder-night:before{content:""}.icofont-hail-thunder-sunny:before{content:""}.icofont-hail-thunder:before{content:""}.icofont-hail:before{content:""}.icofont-hill-night:before{content:""}.icofont-hill-sunny:before{content:""}.icofont-hurricane:before{content:""}.icofont-meteor:before{content:""}.icofont-night:before{content:""}.icofont-rainy-night:before{content:""}.icofont-rainy-sunny:before{content:""}.icofont-rainy-thunder:before{content:""}.icofont-rainy:before{content:""}.icofont-snow-alt:before{content:""}.icofont-snow-flake:before{content:""}.icofont-snow-temp:before{content:""}.icofont-snow:before{content:""}.icofont-snowy-hail:before{content:""}.icofont-snowy-night-hail:before{content:""}.icofont-snowy-night-rainy:before{content:""}.icofont-snowy-night:before{content:""}.icofont-snowy-rainy:before{content:""}.icofont-snowy-sunny-hail:before{content:""}.icofont-snowy-sunny-rainy:before{content:""}.icofont-snowy-sunny:before{content:""}.icofont-snowy-thunder-night:before{content:""}.icofont-snowy-thunder-sunny:before{content:""}.icofont-snowy-thunder:before{content:""}.icofont-snowy-windy-night:before{content:""}.icofont-snowy-windy-sunny:before{content:""}.icofont-snowy-windy:before{content:""}.icofont-snowy:before{content:""}.icofont-sun-alt:before{content:""}.icofont-sun-rise:before{content:""}.icofont-sun-set:before{content:""}.icofont-sun:before{content:""}.icofont-sunny-day-temp:before{content:""}.icofont-sunny:before{content:""}.icofont-thunder-light:before{content:""}.icofont-tornado:before{content:""}.icofont-umbrella-alt:before{content:""}.icofont-umbrella:before{content:""}.icofont-volcano:before{content:""}.icofont-wave:before{content:""}.icofont-wind-scale-0:before{content:""}.icofont-wind-scale-1:before{content:""}.icofont-wind-scale-10:before{content:""}.icofont-wind-scale-11:before{content:""}.icofont-wind-scale-12:before{content:""}.icofont-wind-scale-2:before{content:""}.icofont-wind-scale-3:before{content:""}.icofont-wind-scale-4:before{content:""}.icofont-wind-scale-5:before{content:""}.icofont-wind-scale-6:before{content:""}.icofont-wind-scale-7:before{content:""}.icofont-wind-scale-8:before{content:""}.icofont-wind-scale-9:before{content:""}.icofont-wind-waves:before{content:""}.icofont-wind:before{content:""}.icofont-windy-hail:before{content:""}.icofont-windy-night:before{content:""}.icofont-windy-raining:before{content:""}.icofont-windy-sunny:before{content:""}.icofont-windy-thunder-raining:before{content:""}.icofont-windy-thunder:before{content:""}.icofont-windy:before{content:""}.icofont-addons:before{content:""}.icofont-address-book:before{content:""}.icofont-adjust:before{content:""}.icofont-alarm:before{content:""}.icofont-anchor:before{content:""}.icofont-archive:before{content:""}.icofont-at:before{content:""}.icofont-attachment:before{content:""}.icofont-audio:before{content:""}.icofont-automation:before{content:""}.icofont-badge:before{content:""}.icofont-bag-alt:before{content:""}.icofont-bag:before{content:""}.icofont-ban:before{content:""}.icofont-bar-code:before{content:""}.icofont-bars:before{content:""}.icofont-basket:before{content:""}.icofont-battery-empty:before{content:""}.icofont-battery-full:before{content:""}.icofont-battery-half:before{content:""}.icofont-battery-low:before{content:""}.icofont-beaker:before{content:""}.icofont-beard:before{content:""}.icofont-bed:before{content:""}.icofont-bell:before{content:""}.icofont-beverage:before{content:""}.icofont-bill:before{content:""}.icofont-bin:before{content:""}.icofont-binary:before{content:""}.icofont-binoculars:before{content:""}.icofont-bluetooth:before{content:""}.icofont-bomb:before{content:""}.icofont-book-mark:before{content:""}.icofont-box:before{content:""}.icofont-briefcase:before{content:""}.icofont-broken:before{content:""}.icofont-bucket:before{content:""}.icofont-bucket1:before{content:""}.icofont-bucket2:before{content:""}.icofont-bug:before{content:""}.icofont-building:before{content:""}.icofont-bulb-alt:before{content:""}.icofont-bullet:before{content:""}.icofont-bullhorn:before{content:""}.icofont-bullseye:before{content:""}.icofont-calendar:before{content:""}.icofont-camera-alt:before{content:""}.icofont-camera:before{content:""}.icofont-card:before{content:""}.icofont-cart-alt:before{content:""}.icofont-cart:before{content:""}.icofont-cc:before{content:""}.icofont-charging:before{content:""}.icofont-chat:before{content:""}.icofont-check-alt:before{content:""}.icofont-check-circled:before{content:""}.icofont-check:before{content:""}.icofont-checked:before{content:""}.icofont-children-care:before{content:""}.icofont-clip:before{content:""}.icofont-clock-time:before{content:""}.icofont-close-circled:before{content:""}.icofont-close-line-circled:before{content:""}.icofont-close-line-squared-alt:before{content:""}.icofont-close-line-squared:before{content:""}.icofont-close-line:before{content:""}.icofont-close-squared-alt:before{content:""}.icofont-close-squared:before{content:""}.icofont-close:before{content:""}.icofont-cloud-download:before{content:""}.icofont-cloud-refresh:before{content:""}.icofont-cloud-upload:before{content:""}.icofont-cloud:before{content:""}.icofont-code-not-allowed:before{content:""}.icofont-code:before{content:""}.icofont-comment:before{content:""}.icofont-compass-alt:before{content:""}.icofont-compass:before{content:""}.icofont-computer:before{content:""}.icofont-connection:before{content:""}.icofont-console:before{content:""}.icofont-contacts:before{content:""}.icofont-contrast:before{content:""}.icofont-copyright:before{content:""}.icofont-credit-card:before{content:""}.icofont-crop:before{content:""}.icofont-crown:before{content:""}.icofont-cube:before{content:""}.icofont-cubes:before{content:""}.icofont-dashboard-web:before{content:""}.icofont-dashboard:before{content:""}.icofont-data:before{content:""}.icofont-database-add:before{content:""}.icofont-database-locked:before{content:""}.icofont-database-remove:before{content:""}.icofont-database:before{content:""}.icofont-delete:before{content:""}.icofont-diamond:before{content:""}.icofont-dice-multiple:before{content:""}.icofont-dice:before{content:""}.icofont-disc:before{content:""}.icofont-diskette:before{content:""}.icofont-document-folder:before{content:""}.icofont-download-alt:before{content:""}.icofont-download:before{content:""}.icofont-downloaded:before{content:""}.icofont-drag:before{content:""}.icofont-drag1:before{content:""}.icofont-drag2:before{content:""}.icofont-drag3:before{content:""}.icofont-earth:before{content:""}.icofont-ebook:before{content:""}.icofont-edit:before{content:""}.icofont-eject:before{content:""}.icofont-email:before{content:""}.icofont-envelope-open:before{content:""}.icofont-envelope:before{content:""}.icofont-eraser:before{content:""}.icofont-error:before{content:""}.icofont-excavator:before{content:""}.icofont-exchange:before{content:""}.icofont-exclamation-circle:before{content:""}.icofont-exclamation-square:before{content:""}.icofont-exclamation-tringle:before{content:""}.icofont-exclamation:before{content:""}.icofont-exit:before{content:""}.icofont-expand:before{content:""}.icofont-external-link:before{content:""}.icofont-external:before{content:""}.icofont-eye-alt:before{content:""}.icofont-eye-blocked:before{content:""}.icofont-eye-dropper:before{content:""}.icofont-eye:before{content:""}.icofont-favourite:before{content:""}.icofont-fax:before{content:""}.icofont-file-fill:before{content:""}.icofont-film:before{content:""}.icofont-filter:before{content:""}.icofont-fire-alt:before{content:""}.icofont-fire-burn:before{content:""}.icofont-fire:before{content:""}.icofont-flag-alt-1:before{content:""}.icofont-flag-alt-2:before{content:""}.icofont-flag:before{content:""}.icofont-flame-torch:before{content:""}.icofont-flash-light:before{content:""}.icofont-flash:before{content:""}.icofont-flask:before{content:""}.icofont-focus:before{content:""}.icofont-folder-open:before{content:""}.icofont-folder:before{content:""}.icofont-foot-print:before{content:""}.icofont-garbage:before{content:""}.icofont-gear-alt:before{content:""}.icofont-gear:before{content:""}.icofont-gears:before{content:""}.icofont-gift:before{content:""}.icofont-glass:before{content:""}.icofont-globe:before{content:""}.icofont-graffiti:before{content:""}.icofont-grocery:before{content:""}.icofont-hand:before{content:""}.icofont-hanger:before{content:""}.icofont-hard-disk:before{content:""}.icofont-heart-alt:before{content:""}.icofont-heart:before{content:""}.icofont-history:before{content:""}.icofont-home:before{content:""}.icofont-horn:before{content:""}.icofont-hour-glass:before{content:""}.icofont-id:before{content:""}.icofont-image:before{content:""}.icofont-inbox:before{content:""}.icofont-infinite:before{content:""}.icofont-info-circle:before{content:""}.icofont-info-square:before{content:""}.icofont-info:before{content:""}.icofont-institution:before{content:""}.icofont-interface:before{content:""}.icofont-invisible:before{content:""}.icofont-jacket:before{content:""}.icofont-jar:before{content:""}.icofont-jewlery:before{content:""}.icofont-karate:before{content:""}.icofont-key-hole:before{content:""}.icofont-key:before{content:""}.icofont-label:before{content:""}.icofont-lamp:before{content:""}.icofont-layers:before{content:""}.icofont-layout:before{content:""}.icofont-leaf:before{content:""}.icofont-leaflet:before{content:""}.icofont-learn:before{content:""}.icofont-lego:before{content:""}.icofont-lens:before{content:""}.icofont-letter:before{content:""}.icofont-letterbox:before{content:""}.icofont-library:before{content:""}.icofont-license:before{content:""}.icofont-life-bouy:before{content:""}.icofont-life-buoy:before{content:""}.icofont-life-jacket:before{content:""}.icofont-life-ring:before{content:""}.icofont-light-bulb:before{content:""}.icofont-lighter:before{content:""}.icofont-lightning-ray:before{content:""}.icofont-like:before{content:""}.icofont-line-height:before{content:""}.icofont-link-alt:before{content:""}.icofont-link:before{content:""}.icofont-list:before{content:""}.icofont-listening:before{content:""}.icofont-listine-dots:before{content:""}.icofont-listing-box:before{content:""}.icofont-listing-number:before{content:""}.icofont-live-support:before{content:""}.icofont-location-arrow:before{content:""}.icofont-location-pin:before{content:""}.icofont-lock:before{content:""}.icofont-login:before{content:""}.icofont-logout:before{content:""}.icofont-lollipop:before{content:""}.icofont-long-drive:before{content:""}.icofont-look:before{content:""}.icofont-loop:before{content:""}.icofont-luggage:before{content:""}.icofont-lunch:before{content:""}.icofont-lungs:before{content:""}.icofont-magic-alt:before{content:""}.icofont-magic:before{content:""}.icofont-magnet:before{content:""}.icofont-mail-box:before{content:""}.icofont-mail:before{content:""}.icofont-male:before{content:""}.icofont-map-pins:before{content:""}.icofont-map:before{content:""}.icofont-maximize:before{content:""}.icofont-measure:before{content:""}.icofont-medicine:before{content:""}.icofont-mega-phone:before{content:""}.icofont-megaphone-alt:before{content:""}.icofont-megaphone:before{content:""}.icofont-memorial:before{content:""}.icofont-memory-card:before{content:""}.icofont-mic-mute:before{content:""}.icofont-mic:before{content:""}.icofont-military:before{content:""}.icofont-mill:before{content:""}.icofont-minus-circle:before{content:""}.icofont-minus-square:before{content:""}.icofont-minus:before{content:""}.icofont-mobile-phone:before{content:""}.icofont-molecule:before{content:""}.icofont-money:before{content:""}.icofont-moon:before{content:""}.icofont-mop:before{content:""}.icofont-muffin:before{content:""}.icofont-mustache:before{content:""}.icofont-navigation-menu:before{content:""}.icofont-navigation:before{content:""}.icofont-network-tower:before{content:""}.icofont-network:before{content:""}.icofont-news:before{content:""}.icofont-newspaper:before{content:""}.icofont-no-smoking:before{content:""}.icofont-not-allowed:before{content:""}.icofont-notebook:before{content:""}.icofont-notepad:before{content:""}.icofont-notification:before{content:""}.icofont-numbered:before{content:""}.icofont-opposite:before{content:""}.icofont-optic:before{content:""}.icofont-options:before{content:""}.icofont-package:before{content:""}.icofont-page:before{content:""}.icofont-paint:before{content:""}.icofont-paper-plane:before{content:""}.icofont-paperclip:before{content:""}.icofont-papers:before{content:""}.icofont-pay:before{content:""}.icofont-penguin-linux:before{content:""}.icofont-pestle:before{content:""}.icofont-phone-circle:before{content:""}.icofont-phone:before{content:""}.icofont-picture:before{content:""}.icofont-pine:before{content:""}.icofont-pixels:before{content:""}.icofont-plugin:before{content:""}.icofont-plus-circle:before{content:""}.icofont-plus-square:before{content:""}.icofont-plus:before{content:""}.icofont-polygonal:before{content:""}.icofont-power:before{content:""}.icofont-price:before{content:""}.icofont-print:before{content:""}.icofont-puzzle:before{content:""}.icofont-qr-code:before{content:""}.icofont-queen:before{content:""}.icofont-question-circle:before{content:""}.icofont-question-square:before{content:""}.icofont-question:before{content:""}.icofont-quote-left:before{content:""}.icofont-quote-right:before{content:""}.icofont-random:before{content:""}.icofont-recycle:before{content:""}.icofont-refresh:before{content:""}.icofont-repair:before{content:""}.icofont-reply-all:before{content:""}.icofont-reply:before{content:""}.icofont-resize:before{content:""}.icofont-responsive:before{content:""}.icofont-retweet:before{content:""}.icofont-road:before{content:""}.icofont-robot:before{content:""}.icofont-royal:before{content:""}.icofont-rss-feed:before{content:""}.icofont-safety:before{content:""}.icofont-sale-discount:before{content:""}.icofont-satellite:before{content:""}.icofont-send-mail:before{content:""}.icofont-server:before{content:""}.icofont-settings-alt:before{content:""}.icofont-settings:before{content:""}.icofont-share-alt:before{content:""}.icofont-share-boxed:before{content:""}.icofont-share:before{content:""}.icofont-shield:before{content:""}.icofont-shopping-cart:before{content:""}.icofont-sign-in:before{content:""}.icofont-sign-out:before{content:""}.icofont-signal:before{content:""}.icofont-site-map:before{content:""}.icofont-smart-phone:before{content:""}.icofont-soccer:before{content:""}.icofont-sort-alt:before{content:""}.icofont-sort:before{content:""}.icofont-space:before{content:""}.icofont-spanner:before{content:""}.icofont-speech-comments:before{content:""}.icofont-speed-meter:before{content:""}.icofont-spinner-alt-1:before{content:""}.icofont-spinner-alt-2:before{content:""}.icofont-spinner-alt-3:before{content:""}.icofont-spinner-alt-4:before{content:""}.icofont-spinner-alt-5:before{content:""}.icofont-spinner-alt-6:before{content:""}.icofont-spinner:before{content:""}.icofont-spreadsheet:before{content:""}.icofont-square:before{content:""}.icofont-ssl-security:before{content:""}.icofont-star-alt-1:before{content:""}.icofont-star-alt-2:before{content:""}.icofont-star:before{content:""}.icofont-street-view:before{content:""}.icofont-support-faq:before{content:""}.icofont-tack-pin:before{content:""}.icofont-tag:before{content:""}.icofont-tags:before{content:""}.icofont-tasks-alt:before{content:""}.icofont-tasks:before{content:""}.icofont-telephone:before{content:""}.icofont-telescope:before{content:""}.icofont-terminal:before{content:""}.icofont-thumbs-down:before{content:""}.icofont-thumbs-up:before{content:""}.icofont-tick-boxed:before{content:""}.icofont-tick-mark:before{content:""}.icofont-ticket:before{content:""}.icofont-tie:before{content:""}.icofont-toggle-off:before{content:""}.icofont-toggle-on:before{content:""}.icofont-tools-alt-2:before{content:""}.icofont-tools:before{content:""}.icofont-touch:before{content:""}.icofont-traffic-light:before{content:""}.icofont-transparent:before{content:""}.icofont-tree:before{content:""}.icofont-unique-idea:before{content:""}.icofont-unlock:before{content:""}.icofont-unlocked:before{content:""}.icofont-upload-alt:before{content:""}.icofont-upload:before{content:""}.icofont-usb-drive:before{content:""}.icofont-usb:before{content:""}.icofont-vector-path:before{content:""}.icofont-verification-check:before{content:""}.icofont-wall-clock:before{content:""}.icofont-wall:before{content:""}.icofont-wallet:before{content:""}.icofont-warning-alt:before{content:""}.icofont-warning:before{content:""}.icofont-water-drop:before{content:""}.icofont-web:before{content:""}.icofont-wheelchair:before{content:""}.icofont-wifi-alt:before{content:""}.icofont-wifi:before{content:""}.icofont-world:before{content:""}.icofont-zigzag:before{content:""}.icofont-zipped:before{content:""}.icofont-xs{font-size:.5em}.icofont-sm{font-size:.75em}.icofont-md{font-size:1.25em}.icofont-lg{font-size:1.5em}.icofont-1x{font-size:1em}.icofont-2x{font-size:2em}.icofont-3x{font-size:3em}.icofont-4x{font-size:4em}.icofont-5x{font-size:5em}.icofont-6x{font-size:6em}.icofont-7x{font-size:7em}.icofont-8x{font-size:8em}.icofont-9x{font-size:9em}.icofont-10x{font-size:10em}.icofont-fw{text-align:center;width:1.25em}.icofont-ul{margin-left:0;padding-left:0;list-style-type:none}.icofont-ul>li{line-height:2em;position:relative}.icofont-ul>li .icofont{vertical-align:middle;display:inline-block}.icofont-border{border:.08em solid #f1f1f1;border-radius:.1em;padding:.2em .25em .15em}.icofont-pull-left{float:left}.icofont-pull-right{float:right}.icofont.icofont-pull-left{margin-right:.3em}.icofont.icofont-pull-right{margin-left:.3em}.icofont-spin{animation:2s linear infinite icofont-spin;display:inline-block}.icofont-pulse{animation:1s steps(8,end) infinite icofont-spin;display:inline-block}@keyframes icofont-spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.icofont-rotate-90{filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";transform:rotate(90deg)}.icofont-rotate-180{filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";transform:rotate(180deg)}.icofont-rotate-270{filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";transform:rotate(270deg)}.icofont-flip-horizontal{filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";transform:scaleX(-1)}.icofont-flip-vertical{filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)";transform:scaleY(-1)}.icofont-flip-horizontal.icofont-flip-vertical{filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)";transform:scale(-1)}:root .icofont-rotate-90,:root .icofont-rotate-180,:root .icofont-rotate-270,:root .icofont-flip-horizontal,:root .icofont-flip-vertical{filter:none;display:inline-block}.icofont-inverse{color:#fff}.sr-only{clip:rect(0,0,0,0);border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.sr-only-focusable:active,.sr-only-focusable:focus{clip:auto;width:auto;height:auto;margin:0;position:static;overflow:visible}:root{--scaling-factor:1.1;--size-xxs:calc(4px*var(--scaling-factor));--size-xs:calc(7px*var(--scaling-factor));--size-s:calc(11px*var(--scaling-factor));--size-m:calc(18px*var(--scaling-factor));--size-l:calc(29px*var(--scaling-factor));--size-xl:calc(47px*var(--scaling-factor));--size-xxl:calc(76px*var(--scaling-factor));--font-family-serif:"PTserif",georgia,serif;--font-family-sans:"Barlow",arial,sans-serif;--base-font-size:var(--size-m);--font-icons:"Material Icons";--fw-light:300;--fw-normal:400;--fw-medium:500;--fw-bold:600;--lh-tight:110%;--lh-default:130%;--lh-loose:150%;--op-medium:.6;--color-steingrau:rgba(144,142,137,.6);--color-lichtgrau:#c4c6c3;--color-hellgrau:#bbbab7;--color-blaugrau:#82899a;--color-pink:#d16;--color-green:#10cfa3;--color-blue:#28c0de;--color-darkblue:#047a91;--color-yellow:#decc28;--color-light:#e6ded1;--color-lightest:#fff;--color-lighten:rgba(255,255,255,.2);--color-lighten-strong:rgba(255,255,255,.5);--color-dark:#57544f;--color-darker:#000;--color-darkest:#000;--color-darken:rgba(0,0,0,.2);--color-darken-strong:rgba(0,0,0,.7);--color-darken-light:rgba(20,20,0,.05);--interaction-color:var(--color-pink);--decoration-color:var(--color-green);--icon-color:var(--color-blue);--text-color:var(--color-darker);--headline-color:var(--color-darkblue);--headline-color-light:var(--color-steingrau);--aside-color:var(--color-lichtgrau);--border-color:var(--color-lichtgrau);--seperator-color:var(--color-light);--background-color:var(--color-lightest);--tr-fast:.2s;--tr-medium:.6s;--tr-slow:1s;--bw:2px;--text-shadow:0 0 20px rgba(0,0,0,.9);--box-shadow:0 0 20px rgba(0,0,0,.1);--max-width-content:50rem;--aside-width:20rem;--border-width:2px;--radius-xs:3px;--radius-s:.5rem;--shadow-m:0 0 10px rgba(0,0,0,.2);--size-image-thumbnail:12.5rem}*{box-sizing:border-box}html,body{color:var(--text-color);font-family:var(--font-family-sans);font-size:var(--base-font-size);font-weight:var(--fw-light);-webkit-hyphens:auto;-ms-hyphens:auto;hyphens:auto;line-height:var(--lh-default);scroll-behavior:smooth}body{background-color:var(--background-color);flex-direction:column;align-items:stretch;min-height:100vh;display:flex}blockquote{padding:var(--size-m);border-left:solid var(--border-width)var(--color-yellow);background-color:var(--color-darken-light)}h1,h2,h3,h4{color:var(--headline-color);font-weight:var(--fw-medium);-webkit-hyphens:none;-ms-hyphens:none;hyphens:none;line-height:var(--lh-tight)}h1,h2,h3,h4,p,blockquote{margin-bottom:var(--size-m)}h1{font-size:var(--size-l);font-weight:var(--fw-bold)}@media only screen and (min-width:40rem){h1{font-size:var(--size-xl);font-weight:var(--fw-normal)}}h2{color:var(--color-darker);font-size:calc(var(--size-m)*1.2)}@media only screen and (min-width:40rem){h2{font-size:var(--size-l)}}h3{font-size:calc(var(--size-m)*1.2)}h2+h3{margin-top:var(--size-l)}h3 i[class^=icofont-]{margin-bottom:-.2em!important}h3:has(i[class^=icofont-]){margin-top:var(--size-xl)}.highlighter-rouge+h3{margin-top:var(--size-l)}h4{color:var(--color-darkest)}ul+p,ul+h3,ul+h4{margin-top:var(--size-l)}p{margin-bottom:var(--size-xs)}p+h2,p+h3{margin-top:var(--size-l)}p+h4{margin-top:var(--size-m)}img{width:100%}em{font-weight:var(--fw-normal)}ul:not([class]){padding:0}ul:not([class]) li{margin-bottom:var(--size-xxs);margin-left:var(--size-m);display:block}ul:not([class]) li:before{padding-right:var(--size-s);margin-left:calc(var(--size-m)*-1);color:var(--icon-color);content:"»";font-weight:var(--fw-bold)}dl{margin-bottom:var(--size-l)}dl dt{margin-right:var(--size-xs);float:left;font-weight:var(--fw-medium);display:block}dl dt:after{content:":"}dl dd{margin-bottom:var(--size-xs);display:block}.title{font-weight:var(--fw-bold)}@media only screen and (min-width:40rem){.title{font-weight:var(--fw-normal)}}.subtitle{margin-top:calc(var(--size-s)*-1);font-weight:var(--fw-medium);line-height:var(--lh-default)}@media only screen and (min-width:40rem){.subtitle{font-weight:var(--fw-normal)}}strong{font-weight:var(--fw-medium)}a{color:var(--interaction-color);text-decoration:none}a:not(.wrap){border-bottom:solid 2px var(--decoration-color);font-weight:var(--fw-medium);text-decoration:none;transition:all .3s}a:not(.wrap).extern:before{color:var(--interaction-color);content:"open_in_new"}a:not(.wrap):hover{background-color:var(--decoration-color);color:var(--color-lightest)!important}@media only screen and (max-width:40rem){.header,.page,.footer{padding:var(--size-m)}}@media only screen and (min-width:calc(40rem + .001px)){.header,.page{margin-left:var(--size-xl);flex:0 auto}:is(.header,.page)>*{padding-right:var(--size-xl)}:is(.header,.page)>*>:not(.is-full-width){max-width:var(--max-width-content)}.footer{padding-left:var(--size-xl)}}.page{flex:auto}.section.has-seperator{padding-top:var(--size-l);border-top:dotted var(--border-width)var(--border-color);margin-top:var(--size-xl)}.section.with-bg-gray{padding-top:var(--size-xl);padding-bottom:var(--size-xxl);margin-top:var(--size-xl);background-color:var(--color-light)}@media only screen and (max-width:40rem){.section.with-bg-gray{padding:var(--size-xl)var(--size-m);margin:calc(var(--size-m)*-1);margin-top:var(--size-xl)}}@media only screen and (min-width:calc(40rem + .001px)){.section.with-bg-gray{padding-left:var(--size-xl);margin-left:calc(var(--size-xl)*-1)}}.section.with-bg-dark{padding-top:var(--size-xl);padding-bottom:var(--size-xxl);margin-top:var(--size-xl);background-color:var(--color-light)}@media only screen and (max-width:40rem){.section.with-bg-dark{padding:var(--size-xl)var(--size-m);margin:calc(var(--size-m)*-1);margin-top:var(--size-xl)}}@media only screen and (min-width:calc(40rem + .001px)){.section.with-bg-dark{padding-left:var(--size-xl);margin-left:calc(var(--size-xl)*-1)}}.section.with-bg-dark{background-color:var(--color-dark)}.section.with-bg-dark *{color:var(--color-lightest)}.section.with-bg-gray+.section.with-bg-dark{margin-top:0}section+section{margin-top:var(--size-xl)}.artefact-list{grid-template-columns:repeat(auto-fill,minmax(12em,1fr));gap:1em;margin-top:1em;margin-bottom:1em;display:grid}.artefact-list li{font-weight:var(--fw-medium);text-align:center;transition:all var(--tr-fast);vertical-align:middle;overflow:hidden}.artefact-list li a{border:none;border:solid 1px var(--color-darken);border-radius:var(--radius-s);aspect-ratio:3/2;-webkit-hyphens:auto;-ms-hyphens:auto;hyphens:auto;line-height:var(--lh-tight);background-color:rgba(0,0,0,.03);flex-direction:column;justify-content:center;align-items:center;height:100%;padding:2em;text-decoration:none;display:flex}.artefact-list li a:hover{background-color:var(--interaction-color);color:var(--color-lightest)}.artefact-list li a:hover i{color:var(--color-lightest)}.artefact-list li i{color:var(--color-pink);text-align:center;display:block;margin-top:1ch!important;margin-bottom:.5ch!important}.avatar{border-radius:50%;width:100%;max-width:300px}.footer{padding-top:var(--size-m);padding-bottom:var(--size-xl);background-color:var(--color-darkest);color:var(--color-lightest)}.footer a{color:var(--color-lightest)}.header{padding-bottom:var(--size-xl);text-align:center}@media only screen and (min-width:40rem){.header{text-align:left}}.header .title{margin-bottom:var(--size-m);color:var(--decoration-color);font-size:var(--size-l);font-weight:var(--fw-medium)}.header .subtitle{color:var(--color-dark);font-size:var(--size-m)}.header .subtitle a{color:var(--color-dark);font-size:var(--size-m)}@media only screen and (min-width:40rem){.header .title{font-size:var(--size-xl)}.header .subtitle{font-size:var(--size-l)}.header .subtitle a{font-size:var(--size-l)}}.herotext{margin-bottom:var(--size-xxl);font-size:var(--size-m);font-weight:var(--fw-normal);line-height:var(--lh-default)}@media only screen and (min-width:40rem){.herotext{font-size:var(--size-l);font-weight:var(--fw-normal)}}.mini-hero{padding-top:var(--size-l);padding-bottom:var(--size-xl);max-width:calc(var(--max-width-content)*.66)!important}.home-button{margin-top:var(--size-xl);margin-bottom:var(--size-l)}.home-button>a{transition:transform var(--tr-medium);border:none;text-decoration:none}.home-button>a:hover{background-color:transparent;transform:rotate(60deg)}.simple-button{padding:var(--size-s)var(--size-m);border-radius:var(--radius-xs);background-color:var(--interaction-color);color:var(--color-lightest);font-size:var(--size-m);transition:all var(--tr-fast)}.simple-button:hover{background-color:var(--color-darkblue);box-shadow:var(--box-shadow);cursor:pointer}.keywords li{display:inline}.keywords li+li:before{content:","}.metadata dt{padding-top:var(--size-xs);border-top:solid var(--border-width)var(--color-green)}.metadata dd{padding-top:var(--size-xs);border-top:solid var(--border-width)var(--color-green)}--linear.taglist li{display:inline-block}__item.taglist:before{color:var(--decoration-color);content:"#"}__item.toc{max-width:var(--vp-medium);padding-top:var(--size-xs);padding-bottom:var(--size-xs);border-top:solid 1px var(--seperator-color)}.topic-overview{margin-top:var(--size-xl);gap:var(--size-s);grid-template-columns:repeat(auto-fill,minmax(16em,1fr));display:grid}.topic-overview .topic-item{padding-bottom:var(--size-m);border-bottom:solid 3px var(--color-pink);background-color:var(--color-lighten);transition:transform var(--tr-fast);flex-direction:column;justify-items:center;height:100%;margin-left:0;display:flex}.topic-overview .topic-item>*{color:var(--color-darkblue);padding-right:2em}.topic-overview .topic-item:before{content:none}.topic-overview .topic-item h3{padding-top:var(--size-m);margin-bottom:var(--size-s);color:var(--color-darkest)}.topic-overview .topic-item p{line-height:var(--lh-tight)}.topic-overview .topic-item:hover{z-index:1000;transform:rotate(2deg)}.topic-overview .topic-item.with-light-background{padding:var(--size-s);padding-bottom:var(--size-m);background-color:var(--color-lighten-strong)}.topic-overview .topic-item.with-light-background h3{padding-top:var(--size-xs)}.work-overview{margin-top:var(--size-xl);margin-bottom:var(--size-l);gap:var(--size-s);grid-template-columns:repeat(auto-fill,minmax(32rem,1fr));display:grid}@media screen and (max-width:calc(32rem - .001px)){.work-overview{grid-template-columns:1fr}}.work-overview .work-item{border-bottom:solid 3px var(--color-pink);background-color:var(--color-lighten);transition:all var(--tr-fast)}.work-overview .work-item .wrap{width:100%;height:100%;display:block}.work-overview .work-item.is-hidden{display:none}.work-overview .work-item figure{gap:var(--size-s);display:flex}@media screen and (max-width:calc(32rem - .001px)){.work-overview .work-item figure{flex-direction:column}}.work-overview .work-item figure h3{margin-bottom:var(--size-s);-webkit-hyphens:auto;-ms-hyphens:auto;hyphens:auto;text-wrap:balance;padding-top:0}.work-overview .work-item figure img{object-fit:cover;width:6em;height:5em}@media screen and (max-width:calc(32rem - .001px)){.work-overview .work-item figure img{width:100%;height:auto}}.work-overview .work-item figure .meta{margin-bottom:var(--size-m);flex-grow:2}.work-overview .work-item figure p{line-height:var(--lh-tight)}.work-overview .work-item:before{content:none}.work-overview .work-item.with-light-background{padding:var(--size-s);background-color:var(--color-lighten-strong)}.work-overview .work-item:has(a):hover{z-index:1000;box-shadow:var(--box-shadow);transform:scale(1.02)}.work-overview .work-item:has(a):hover.with-light-background{background-color:var(--color-lightest)}.work-overview .more-button{justify-content:center;align-items:center;width:100%;height:100%;display:flex}details{margin-left:calc(var(--size-m)*-.5);transition:padding var(--tr-slow),margin var(--tr-slow),opacity var(--tr-medium);transition:grid-template-rows .5s ease-out}details summary{list-style:none;display:flex}details summary::-webkit-details-marker{display:none}details summary h3{color:var(--color-darkest);font-size:calc(var(--size-l)*.7)}details summary:before{width:var(--size-l);height:var(--size-l);padding-right:var(--size-xxs);color:var(--interaction-color);content:"chevron_right";font-family:var(--font-icons);font-feature-settings:"liga";font-size:var(--size-l);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-variation-settings:"FILL" 0,"wght" 200,"GRAD" -25,"opsz" 48;font-style:normal;font-weight:var(--fw-bold);letter-spacing:normal;text-rendering:optimizelegibility;text-transform:none;white-space:nowrap;word-wrap:normal;direction:ltr;line-height:80%;transition:transform .2s ease-in-out;display:inline-block}details summary:hover{cursor:pointer}details .details-content{margin-left:var(--size-l);grid-template-rows:0fr;transition:grid-template-rows .5s ease-out;display:grid;overflow-y:hidden}details .details-content div{overflow:hidden}details[open]{padding-bottom:var(--size-l);border-bottom:solid var(--border-width-l)var(--dark);margin-bottom:var(--size-l);grid-template-rows:1fr;opacity:1!important}details[open] .details-content{grid-template-rows:1fr}details[open] summary:before{transform:rotate(90deg)!important}.slideshow{grid-template-columns:repeat(auto-fill,var(--size-image-thumbnail));gap:1px;display:grid}@media screen and (max-width:40rem){.slideshow{grid-template-columns:1fr}}.slideshow li{aspect-ratio:1;background-color:var(--color-darken-light);width:100%;height:100%}.slideshow li:hover{cursor:pointer}.slideshow li button{aspect-ratio:1;width:100%;height:100%}.slideshow li img{mix-blend-mode:darken;object-fit:cover;width:100%;height:100%;display:block}.image-popover{background-color:transparent;width:100vw;height:100vh}.image-popover .image-popover-content{object-fit:contain;width:90%;height:90%;display:block}.image-popover .next-btn{color:var(--color-lightest);transition:all var(--tr-fast);border:none;line-height:0;position:absolute}.image-popover .next-btn span{color:var(--interaction-color);font-size:var(--size-l);border:none}.image-popover .next-btn span:hover{color:var(--color-lightest);cursor:pointer;transform:translate(15%)}.image-popover .prev-btn{color:var(--color-lightest);transition:all var(--tr-fast);border:none;line-height:0;position:absolute}.image-popover .prev-btn span{color:var(--interaction-color);font-size:var(--size-l);border:none}.image-popover .prev-btn span:hover{color:var(--color-lightest);cursor:pointer;transform:translate(15%)}.image-popover .close-btn{color:var(--color-lightest);transition:all var(--tr-fast);border:none;line-height:0;position:absolute}.image-popover .close-btn span{color:var(--interaction-color);font-size:var(--size-l);border:none}.image-popover .close-btn span:hover{color:var(--color-lightest);cursor:pointer;transform:translate(15%)}.image-popover button.close-btn{top:var(--size-m);right:var(--size-m)}.image-popover button.close-btn span{font-size:var(--size-xl)}.image-popover button.close-btn span:hover{transform:rotate(90deg)}.image-popover button.next-btn{top:50%;right:var(--size-m);transform:translateY(-50%)}.image-popover button.prev-btn{top:50%;left:var(--size-m);transform:translateY(-50%)}.image-popover button.prev-btn span:hover{transform:translate(-15%)}.image-popover::-ms-backdrop{background:rgba(0,0,0,.95)}.image-popover::backdrop{background:rgba(0,0,0,.95)}.image-popover:popover-open{opacity:1;transition:all var(--tr-medium);justify-content:center;align-items:center;display:flex}@starting-style{.image-popover:popover-open{opacity:0}}.image-popover:popover-open .close-btn{transform:rotate(90deg)}.video-container{aspect-ratio:16/9;position:relative;max-width:calc(var(--size-image-thumbnail)*3)!important}.video-container iframe{width:100%;height:100%;position:absolute;top:0;left:0}.form input{color:var(--color-lighten);font-family:var(--ff-primary)}.form textarea{color:var(--color-lighten);font-family:var(--ff-primary)}.form label{z-index:10;color:var(--color-darkest);font-size:var(--s);transform:translateY(calc(var(--size-m)*-1.75));transition:all var(--tr-fast)ease;display:inline-block;position:relative}.form .form-row{position:relative}.form input[type=text]{z-index:20;padding:var(--size-s)var(--size-s)var(--size-s)0;border:none;border-bottom:solid 1px var(--decoration-color);font-size:var(--size-m);background-color:transparent;outline:none;width:100%;display:inline-block;position:relative}.form input[type=tel]{z-index:20;padding:var(--size-s)var(--size-s)var(--size-s)0;border:none;border-bottom:solid 1px var(--decoration-color);font-size:var(--size-m);background-color:transparent;outline:none;width:100%;display:inline-block;position:relative}.form input[type=email]{z-index:20;padding:var(--size-s)var(--size-s)var(--size-s)0;border:none;border-bottom:solid 1px var(--decoration-color);font-size:var(--size-m);background-color:transparent;outline:none;width:100%;display:inline-block;position:relative}.form textarea{z-index:20;padding:var(--size-s)var(--size-s)var(--size-s)0;border:none;border-bottom:solid 1px var(--decoration-color);font-size:var(--size-m);background-color:transparent;outline:none;width:100%;display:inline-block;position:relative}.form input[type=text]:focus{padding:var(--size-s);border-bottom-color:var(--darker);background-color:var(--color-lighten)}.form input[type=fon]:focus{padding:var(--size-s);border-bottom-color:var(--darker);background-color:var(--color-lighten)}.form input[type=email]:focus{padding:var(--size-s);border-bottom-color:var(--darker);background-color:var(--color-lighten)}.form textarea:focus{padding:var(--size-s);border-bottom-color:var(--darker);background-color:var(--color-lighten)}.form input[type=text]:focus~label{font-size:var(--size-s);transform:translateY(calc(var(--size-m)*-.1))}.form input[type=tel]:focus~label{font-size:var(--size-s);transform:translateY(calc(var(--size-m)*-.1))}.form input[type=email]:focus~label{font-size:var(--size-s);transform:translateY(calc(var(--size-m)*-.1))}.form textarea:focus~label{font-size:var(--size-s);transform:translateY(calc(var(--size-m)*-.1))}.form input.filled+label{font-size:var(--size-s);transform:translateY(calc(var(--size-m)*-.1))}.form button[type=submit]{margin-top:var(--size-l)}.state-of-work{margin-top:var(--size-xxl);margin-bottom:var(--size-xxl)}@media screen and (max-width:768px){.state-of-work .hide-on-mobile{display:none}}.state-of-work .capacity-item{aspect-ratio:1;background-color:var(--color-light);text-align:center;border-radius:50%;justify-content:center;align-items:center;width:2.5em;height:2.5em;display:inline-flex}.state-of-work .table-container{width:100%;overflow-x:auto}.state-of-work table{max-width:var(--max-width-content);border-collapse:collapse;border-spacing:0;width:100%}.state-of-work table thead th{min-width:12ch;padding:1rem}.state-of-work table tbody th{text-align:left;min-width:12ch}.state-of-work table tbody td{font-weight:var(--fw-bold);text-align:center}.state-of-work table tbody tr *{border-top:dotted var(--border-width)var(--border-color);padding:1rem}.simple table{margin-top:var(--size-l);margin-bottom:var(--size-l)}.simple table th{padding-bottom:var(--size-s);font-weight:var(--fw-medium);text-align:left}.simple table tr td{padding:var(--size-s)var(--size-s)var(--size-s)0;border-top:solid 1px var(--color-green)}.simple h3{margin-top:var(--size-xxl)}.simple h3 i{margin-right:var(--size-xs)}.simple .page{margin-bottom:var(--size-xl)}.work hr{margin:0;margin-top:var(--size-l);margin-bottom:var(--size-l)}.work p{margin-bottom:var(--size-m)}.work-result h1.title{font-size:var(--size-m)}.work-result h2.subtitle{margin-top:calc(var(--size-m)*-1);font-size:var(--size-m)}.work-result h2.subtitle a{margin-top:calc(var(--size-m)*-1);font-size:var(--size-m)}.work-result h2.title{font-weight:var(--fw-medium)}.work-result h3.subtitle{color:var(--color-dark)}@media only screen and (min-width:40rem){.work-result h3.subtitle{font-size:var(--size-l)}}.work-result main{padding-bottom:var(--size-xl)}.work-result dl.metadata a{border-bottom:none}.work-result .work-result-thumbnail{max-width:calc(var(--max-width-content)/2);margin-bottom:var(--size-xl);background-color:var(--color-darken-light)}@media screen and (max-width:40rem){.work-result .work-result-thumbnail{max-width:100%}}.work-result .work-result-thumbnail img{mix-blend-mode:darken;display:block}.work-result .work-result-avatar{width:50%;display:none}@media screen and (min-width:calc(100rem + .001px)){.work-result .work-result-main{gap:var(--size-xl);grid-row:auto;grid-template-areas:"title title""left right";grid-template-columns:var(--max-width-content)1fr;display:grid}.work-result .work-result-main .work-result-header{grid-area:title}.work-result .work-result-main .metadata-wrap{grid-area:right}}.grow{flex-grow:1} -/*# sourceMappingURL=compiled-assets/styles/combined-styles.css.map */ diff --git a/compiled-assets/styles/combined-styles.css.map b/compiled-assets/styles/combined-styles.css.map deleted file mode 100644 index 9a1a028..0000000 --- a/compiled-assets/styles/combined-styles.css.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"mappings":"+KCKA,2eAsBA,4FAKA,mBAIA,sBAIA,yBAIA,4EAMA,gDAKA,kFAME,4HAAA,2HM7DF,0GAOA,4GAOA,2GAOA,yGAQA,6YQ7BA,yZAoBE,oBAIA,gCAIA,kCAKF,0DAKA,0DAKA,0DAKA,6DAKA,qCAKA,uDAKA,uFAME,2JAMA,kIXlEF,4KAQA,8QAkBA,4CAIA,sCAIA,yCAIA,kCAIA,qCAIA,sCAIA,yCAIA,0CAIA,mCAIA,8CAIA,4CAIA,uCAIA,2CAIA,oCAIA,uCAIA,gDAIA,yCAIA,2CAIA,2CAIA,mCAIA,2CAIA,8CAIA,uCAIA,sCAIA,yCAIA,yCAIA,yCAIA,yCAIA,2CAIA,yCAIA,yCAIA,4CAIA,yCAIA,oCAIA,0CAIA,qCAIA,uCAIA,uCAIA,yCAIA,mCAIA,yCAIA,kCAIA,wCAIA,0CAIA,mCAIA,uCAIA,0CAIA,mCAIA,oCAIA,mCAIA,mCAIA,4CAIA,wCAIA,wCAIA,yCAIA,oCAIA,wCAIA,wCAIA,wCAIA,sCAIA,uCAIA,kCAIA,uCAIA,kCAIA,mCAIA,wCAIA,wCAIA,sCAIA,0CAIA,kCAIA,sCAIA,0CAIA,yCAIA,yCAIA,2CAIA,gDAIA,4CAIA,uCAIA,kCAIA,qCAIA,qCAIA,qCAIA,qCAIA,qCAIA,mCAIA,sCAIA,kCAIA,0CAIA,mCAIA,qCAIA,6CAIA,6CAIA,2CAIA,sCAIA,wCAIA,sCAIA,yCAIA,2CAIA,2CAIA,yCAIA,2CAIA,wCAIA,uCAIA,oCAIA,0CAIA,0CAIA,wCAIA,mCAIA,uCAIA,uCAIA,0CAIA,qCAIA,0CAIA,sCAIA,kCAIA,yCAIA,oCAIA,sCAIA,yCAIA,qCAIA,kCAIA,sCAIA,sCAIA,uCAIA,kCAIA,uCAIA,uCAIA,qCAIA,qCAIA,kCAIA,yCAIA,oCAIA,sCAIA,uCAIA,mCAIA,yCAIA,qCAIA,sCAIA,sCAIA,sCAIA,oCAIA,oCAIA,oCAIA,uCAIA,yCAIA,oCAIA,qCAIA,oCAIA,yCAIA,oCAIA,yCAIA,2CAIA,0CAIA,oDAIA,2CAIA,4CAIA,2CAIA,4CAIA,4CAIA,+CAIA,2CAIA,2CAIA,wCAIA,sDAIA,kDAIA,4CAIA,wCAIA,0CAIA,6CAIA,yCAIA,wCAIA,wCAIA,yCAIA,2CAIA,yCAIA,wCAIA,yCAIA,+CAIA,wCAIA,wCAIA,gDAIA,qDAIA,6CAIA,2CAIA,0CAIA,iDAIA,kDAIA,iDAIA,0CAIA,6CAIA,yCAIA,wCAIA,+CAIA,2CAIA,2CAIA,8CAIA,yCAIA,+CAIA,gDAIA,2CAIA,0CAIA,yCAIA,2CAIA,yCAIA,2CAIA,6CAIA,yCAIA,mDAIA,6CAIA,yCAIA,6CAIA,0CAIA,4CAIA,2CAIA,0CAIA,2CAIA,+CAIA,4CAIA,4CAIA,qDAIA,6CAIA,4CAIA,0CAIA,2CAIA,0CAIA,0CAIA,6CAIA,wCAIA,0CAIA,uCAIA,yCAIA,wCAIA,2CAIA,yCAIA,4CAIA,wCAIA,4CAIA,wCAIA,yCAIA,yCAIA,8CAIA,0CAIA,0CAIA,2CAIA,yCAIA,2CAIA,gDAIA,wCAIA,2CAIA,yCAIA,2CAIA,0CAIA,0CAIA,uCAIA,gDAIA,+CAIA,0CAIA,2CAIA,2CAIA,kDAIA,2CAIA,+CAIA,6CAIA,0CAIA,6CAIA,6CAIA,6CAIA,8CAIA,6CAIA,2CAIA,6CAIA,wCAIA,wCAIA,4CAIA,yCAIA,yCAIA,2CAIA,wCAIA,4CAIA,2CAIA,4CAIA,0CAIA,yCAIA,0CAIA,2CAIA,0CAIA,6CAIA,2CAIA,8CAIA,2CAIA,0CAIA,4CAIA,8CAIA,gDAIA,yCAIA,8CAIA,wCAIA,+CAIA,4CAIA,2CAIA,4CAIA,4CAIA,wCAIA,oDAIA,2CAIA,0CAIA,4CAIA,+CAIA,+CAIA,sDAIA,6CAIA,kDAIA,yCAIA,+CAIA,2CAIA,4CAIA,8CAIA,wCAIA,0CAIA,2CAIA,4CAIA,6CAIA,0CAIA,2CAIA,iDAIA,+CAIA,4CAIA,gDAIA,0CAIA,8CAIA,+CAIA,4CAIA,2CAIA,6CAIA,2CAIA,6CAIA,yCAIA,4CAIA,0CAIA,6CAIA,+CAIA,4CAIA,+CAIA,6CAIA,8CAIA,4CAIA,yCAIA,8CAIA,2CAIA,8CAIA,2CAIA,4CAIA,yCAIA,uCAIA,mCAIA,sCAIA,uCAIA,wCAIA,0CAIA,0CAIA,0CAIA,4CAIA,oCAIA,oCAIA,sCAIA,0CAIA,0CAIA,6CAIA,sCAIA,0CAIA,wCAIA,wCAIA,+CAIA,2CAIA,oCAIA,2CAIA,gDAIA,8CAIA,2CAIA,2CAIA,yCAIA,2CAIA,kDAIA,8CAIA,6CAIA,yCAIA,4CAIA,wCAIA,gDAIA,+CAIA,2CAIA,wCAIA,mCAIA,qCAIA,2CAIA,yCAIA,2CAIA,yCAIA,2CAIA,6CAIA,0CAIA,oCAIA,yCAIA,6CAIA,yCAIA,yCAIA,6CAIA,2CAIA,2CAIA,uCAIA,oDAIA,gDAIA,wCAIA,wCAIA,uCAIA,yCAIA,qCAIA,yCAIA,2CAIA,2CAIA,2CAIA,2CAIA,2CAIA,yCAIA,qCAIA,qCAIA,0CAIA,wCAIA,yCAIA,2CAIA,0CAIA,4CAIA,+CAIA,yCAIA,kCAIA,2CAIA,sCAIA,wCAIA,wCAIA,sCAIA,qCAIA,qDAIA,iDAIA,6CAIA,4CAIA,mDAIA,4CAIA,gDAIA,+CAIA,+CAIA,qCAIA,4CAIA,qCAIA,4CAIA,4CAIA,2CAIA,2CAIA,sCAIA,yCAIA,yCAIA,wCAIA,wCAIA,mCAIA,4CAIA,4CAIA,2CAIA,2CAIA,sCAIA,2CAIA,2CAIA,0CAIA,0CAIA,qCAIA,yCAIA,yCAIA,wCAIA,wCAIA,mCAIA,yCAIA,yCAIA,wCAIA,wCAIA,mCAIA,0CAIA,0CAIA,yCAIA,yCAIA,oCAIA,4CAIA,4CAIA,2CAIA,2CAIA,sCAIA,yCAIA,yCAIA,wCAIA,wCAIA,mCAIA,2CAIA,2CAIA,0CAIA,0CAIA,qCAIA,yCAIA,yCAIA,wCAIA,wCAIA,mCAIA,0CAIA,0CAIA,yCAIA,yCAIA,oCAIA,6CAIA,6CAIA,4CAIA,4CAIA,uCAIA,0CAIA,0CAIA,yCAIA,yCAIA,oCAIA,2CAIA,2CAIA,0CAIA,0CAIA,qCAIA,0CAIA,0CAIA,yCAIA,yCAIA,oCAIA,yCAIA,yCAIA,wCAIA,wCAIA,mCAIA,iDAIA,iDAIA,gDAIA,gDAIA,2CAIA,wCAIA,wCAIA,uCAIA,uCAIA,kCAIA,wCAIA,wCAIA,uCAIA,uCAIA,kCAIA,4CAIA,6CAIA,0CAIA,6CAIA,uCAIA,0CAIA,2CAIA,8CAIA,uCAIA,mCAIA,8CAIA,8CAIA,8CAIA,4CAIA,wCAIA,sCAIA,mCAIA,mCAIA,qCAIA,wCAIA,yCAIA,2CAIA,gDAIA,uCAIA,yCAIA,qCAIA,sCAIA,0CAIA,yCAIA,6CAIA,yCAIA,sCAIA,oCAIA,yCAIA,uCAIA,8CAIA,qCAIA,wCAIA,oCAIA,2CAIA,6CAIA,6CAIA,4CAIA,0CAIA,8CAIA,0CAIA,oCAIA,4CAIA,6CAIA,uCAIA,yCAIA,yCAIA,0CAIA,uCAIA,yCAIA,yCAIA,0CAIA,uCAIA,0CAIA,0CAIA,2CAIA,wCAIA,yCAIA,yCAIA,0CAIA,uCAIA,2CAIA,2CAIA,4CAIA,yCAIA,uCAIA,0CAIA,iDAIA,kDAIA,0CAIA,0CAIA,2CAIA,wCAIA,0CAIA,0CAIA,2CAIA,wCAIA,0CAIA,2CAIA,yCAIA,wCAIA,wCAIA,yCAIA,yCAIA,kDAIA,kDAIA,mDAIA,gDAIA,8CAIA,8CAIA,+CAIA,4CAIA,4CAIA,wCAIA,yCAIA,sCAIA,8CAIA,8CAIA,+CAIA,4CAIA,8CAIA,8CAIA,+CAIA,4CAIA,+CAIA,kDAIA,mDAIA,2CAIA,6CAIA,gDAIA,8CAIA,2CAIA,iDAIA,+CAIA,4CAIA,yCAIA,iDAIA,iDAIA,kDAIA,+CAIA,iDAIA,iDAIA,kDAIA,+CAIA,0CAIA,0CAIA,+CAIA,+CAIA,gDAIA,6CAIA,2CAIA,wCAIA,0CAIA,+CAIA,6CAIA,0CAIA,gDAIA,8CAIA,2CAIA,wCAIA,0CAIA,0CAIA,2CAIA,wCAIA,2CAIA,2CAIA,4CAIA,yCAIA,0CAIA,0CAIA,2CAIA,wCAIA,+CAIA,gDAIA,wCAIA,wCAIA,yCAIA,sCAIA,kCAIA,mCAIA,oCAIA,uCAIA,0CAIA,uCAIA,mCAIA,4CAIA,gDAIA,gDAIA,0CAIA,wCAIA,uCAIA,2CAIA,wCAIA,2CAIA,uCAIA,6CAIA,sCAIA,kCAIA,yCAIA,yCAIA,oCAIA,6CAIA,yCAIA,oCAIA,wCAIA,sCAIA,2CAIA,wCAIA,4CAIA,wCAIA,yCAIA,yCAIA,0CAIA,sCAIA,sCAIA,wCAIA,4CAIA,yCAIA,oCAIA,yCAIA,yCAIA,uCAIA,qCAIA,oCAIA,6CAIA,yCAIA,uCAIA,yCAIA,yCAIA,mCAIA,2CAIA,kCAIA,2CAIA,6CAIA,oCAIA,+CAIA,yCAIA,sCAIA,uCAIA,yCAIA,2CAIA,uCAIA,wCAIA,uCAIA,4CAIA,uCAIA,yCAIA,uCAIA,wCAIA,uCAIA,uCAIA,yCAIA,yCAIA,uCAIA,wCAIA,8CAIA,uCAIA,wCAIA,uCAIA,uCAIA,uCAIA,uCAIA,uCAIA,8CAIA,gDAIA,uCAIA,uCAIA,0CAIA,wCAIA,+CAIA,uCAIA,uCAIA,wCAIA,wCAIA,yCAIA,wCAIA,uCAIA,wCAIA,uCAIA,0CAIA,sCAIA,uCAIA,wCAIA,wCAIA,wCAIA,wCAIA,kCAIA,4CAIA,qCAIA,oCAIA,6CAIA,wCAIA,wCAIA,sCAIA,wCAIA,qCAIA,kCAIA,oCAIA,mCAIA,mDAIA,4CAIA,oCAIA,uCAIA,qCAIA,sCAIA,qCAIA,2CAIA,qCAIA,mCAIA,qCAIA,0CAIA,sCAIA,uCAIA,4CAIA,sCAIA,yCAIA,yCAIA,yCAIA,yCAIA,mCAIA,mCAIA,wCAIA,yCAIA,uCAIA,uCAIA,uCAIA,2CAIA,oCAIA,wCAIA,0CAIA,yCAIA,qCAIA,wCAIA,0CAIA,wCAIA,6CAIA,2CAIA,qCAIA,qCAIA,oCAIA,sCAIA,4CAIA,wCAIA,oCAIA,sCAIA,mCAIA,2CAIA,wCAIA,oCAIA,sCAIA,oCAIA,mCAIA,uCAIA,sCAIA,oCAIA,qCAIA,mCAIA,mCAIA,qCAIA,sCAIA,kCAIA,wCAIA,0CAIA,oCAIA,oCAIA,sCAIA,qCAIA,sCAIA,sCAIA,8CAIA,yCAIA,8CAIA,uCAIA,sCAIA,0CAIA,wCAIA,6CAIA,oCAIA,yCAIA,2CAIA,oCAIA,mCAIA,sCAIA,kCAIA,qCAIA,yCAIA,oCAIA,4CAIA,yCAIA,+CAIA,2CAIA,mCAIA,oCAIA,4CAIA,4CAIA,2CAIA,yCAIA,yCAIA,uCAIA,sCAIA,uCAIA,2CAIA,uCAIA,wCAIA,wCAIA,wCAIA,sCAIA,4CAIA,wCAIA,wCAIA,kCAIA,2CAIA,oCAIA,2CAIA,oCAIA,2CAIA,uCAIA,4CAIA,2CAIA,mCAIA,oCAIA,wCAIA,wCAIA,wCAIA,uCAIA,2CAIA,wCAIA,0CAIA,yCAIA,kCAIA,2CAIA,2CAIA,qCAIA,oCAIA,qCAIA,2CAIA,yCAIA,+CAIA,+CAIA,yCAIA,yCAIA,yCAIA,qCAIA,wCAIA,oCAIA,yCAIA,qCAIA,wCAIA,uCAIA,uCAIA,oCAIA,+CAIA,+CAIA,yCAIA,+CAIA,2CAIA,4CAIA,4CAIA,4CAIA,4CAIA,2CAIA,2CAIA,2CAIA,2CAIA,qCAIA,mCAIA,iDAIA,iDAIA,2CAIA,wCAIA,wCAIA,wCAIA,+CAIA,yCAIA,kCAIA,2CAIA,2CAIA,2CAIA,2CAIA,qCAIA,0CAIA,0CAIA,gDAIA,4CAIA,iDAIA,iDAIA,2CAIA,oCAIA,yCAIA,qCAIA,0CAIA,4CAIA,mCAIA,iDAIA,8CAIA,wCAIA,qCAIA,sCAIA,oCAIA,yCAIA,yCAIA,oCAIA,wCAIA,oCAIA,sCAIA,qCAIA,uCAIA,wCAIA,wCAIA,kCAIA,yCAIA,qCAIA,wCAIA,mCAIA,4CAIA,wCAIA,6CAIA,yCAIA,wCAIA,qCAIA,uCAIA,kCAIA,gDAIA,yCAIA,+CAIA,2CAIA,wCAIA,oCAIA,2CAIA,gDAIA,mDAIA,0CAIA,2CAIA,oCAIA,2CAIA,oCAIA,8CAIA,0CAIA,wCAIA,0CAIA,sCAIA,sCAIA,0CAIA,wCAIA,8CAIA,0CAIA,oCAIA,mCAIA,qCAIA,uCAIA,yCAIA,uCAIA,2CAIA,4CAIA,yCAIA,0CAIA,sCAIA,wCAIA,sCAIA,4CAIA,sCAIA,uCAIA,4CAIA,sCAIA,uCAIA,uCAIA,8CAIA,sCAIA,qCAIA,wCAIA,4CAIA,sCAIA,uCAIA,sCAIA,2CAIA,6CAIA,wCAIA,wCAIA,sCAIA,6CAIA,sCAIA,uCAIA,yCAIA,sCAIA,0CAIA,6CAIA,6CAIA,sCAIA,qCAIA,yCAIA,2CAIA,uCAIA,8CAIA,uCAIA,sCAIA,yCAIA,sCAIA,sCAIA,wCAIA,0CAIA,uCAIA,2CAIA,sCAIA,yCAIA,uCAIA,uCAIA,0CAIA,0CAIA,4CAIA,6CAIA,wCAIA,wCAIA,wCAIA,uCAIA,0CAIA,qCAIA,wCAIA,0CAIA,6CAIA,qCAIA,2CAIA,8CAIA,uCAIA,uCAIA,6CAIA,wCAIA,wCAIA,4CAIA,sCAIA,wCAIA,4CAIA,+CAIA,4CAIA,uCAIA,wCAIA,yCAIA,sCAIA,yCAIA,0CAIA,8CAIA,uCAIA,sCAIA,qCAIA,oCAIA,yCAIA,wCAIA,yCAIA,yCAIA,0CAIA,oCAIA,0CAIA,oCAIA,yCAIA,yCAIA,yCAIA,yCAIA,mCAIA,qCAIA,+CAIA,qCAIA,yCAIA,6CAIA,yCAIA,mCAIA,wCAIA,wCAIA,4CAIA,oCAIA,yCAIA,0CAIA,0CAIA,yCAIA,wCAIA,2CAIA,4CAIA,wCAIA,yCAIA,qCAIA,mDAIA,+CAIA,4CAIA,wCAIA,gDAIA,4CAIA,4CAIA,wCAIA,mDAIA,+CAIA,gDAIA,gDAIA,gDAIA,0CAIA,2CAIA,uCAIA,uCAIA,mCAIA,kDAIA,kDAIA,kDAIA,4CAIA,sCAIA,kCAIA,0CAIA,sCAIA,6CAIA,yCAIA,2CAIA,uCAIA,yCAIA,qCAIA,uCAIA,mCAIA,yCAIA,qCAIA,yCAIA,qCAIA,uCAIA,4CAIA,mCAIA,gDAIA,4CAIA,kCAIA,iDAIA,iDAIA,iDAIA,2CAIA,qCAIA,wCAIA,uCAIA,mCAIA,oCAIA,4CAIA,wCAIA,kCAIA,6CAIA,qCAIA,sCAIA,yCAIA,yCAIA,yCAIA,yCAIA,yCAIA,yCAIA,yCAIA,0CAIA,wCAIA,0CAIA,mCAIA,0CAIA,0CAIA,0CAIA,0CAIA,0CAIA,0CAIA,2CAIA,oCAIA,yCAIA,qCAIA,+CAIA,uCAIA,uCAIA,8CAIA,4CAIA,yCAIA,yCAIA,8CAIA,gDAIA,2CAIA,0CAIA,qCAIA,oCAIA,kCAIA,oCAIA,0CAIA,4CAIA,mCAIA,sCAIA,sCAIA,wCAIA,yCAIA,uCAIA,wCAIA,wCAIA,yCAIA,0CAIA,yCAIA,mCAIA,qCAIA,uCAIA,sCAIA,sCAIA,qCAIA,mCAIA,oCAIA,qCAIA,uCAIA,iDAIA,uCAIA,yCAIA,oCAIA,oCAIA,yCAIA,yCAIA,oCAIA,qCAIA,oCAIA,0CAIA,8CAIA,yCAIA,0CAIA,0CAIA,2CAIA,wCAIA,wCAIA,0CAIA,kCAIA,sCAIA,6CAIA,mCAIA,uCAIA,yCAIA,6CAIA,0CAIA,sCAIA,qCAIA,qCAIA,mCAIA,uCAIA,sCAIA,4CAIA,uCAIA,yCAIA,sCAIA,0CAIA,qCAIA,wCAIA,yCAIA,kCAIA,iCAIA,yCAIA,qCAIA,qCAIA,kCAIA,sCAIA,2CAIA,oCAIA,oCAIA,uCAIA,wCAIA,sCAIA,uCAIA,yCAIA,sCAIA,6CAIA,6CAIA,oCAIA,0CAIA,qCAIA,yCAIA,uCAIA,qCAIA,qCAIA,qCAIA,qCAIA,sCAIA,oCAIA,uCAIA,oCAIA,sCAIA,oCAIA,mCAIA,mCAIA,yCAIA,iCAIA,qCAIA,oCAIA,uCAIA,mCAIA,oCAIA,mCAIA,oCAIA,sCAIA,sCAIA,+CAIA,uCAIA,yCAIA,8CAIA,yCAIA,4CAIA,yCAIA,yCAIA,mCAIA,0CAIA,sCAIA,oCAIA,2CAIA,uCAIA,qCAIA,wCAIA,oCAIA,2CAIA,gDAIA,uCAIA,mCAIA,0CAIA,mCAIA,uCAIA,uCAIA,wCAIA,yCAIA,mCAIA,qCAIA,qCAIA,yCAIA,qCAIA,wCAIA,yCAIA,qCAIA,sCAIA,mCAIA,kCAIA,2CAIA,0CAIA,sCAIA,2CAIA,sCAIA,sCAIA,2CAIA,oCAIA,yCAIA,8CAIA,0CAIA,4CAIA,sCAIA,4CAIA,2CAIA,yCAIA,2CAIA,oCAIA,2CAIA,2CAIA,qCAIA,0CAIA,yCAIA,gDAIA,0CAIA,uCAIA,wCAIA,yCAIA,sCAIA,2CAIA,uCAIA,mCAIA,4CAIA,qCAIA,uCAIA,yCAIA,qCAIA,6CAIA,8CAIA,yCAIA,2CAIA,0CAIA,sCAIA,yCAIA,2CAIA,yCAIA,0CAIA,uCAIA,mCAIA,oCAIA,yCAIA,uCAIA,2CAIA,2CAIA,0CAIA,mCAIA,kCAIA,yCAIA,uCAIA,yCAIA,mCAIA,sCAIA,qCAIA,yCAIA,qCAIA,0CAIA,6CAIA,2CAIA,4CAIA,0CAIA,sCAIA,yCAIA,wCAIA,kCAIA,sCAIA,mCAIA,uCAIA,mCAIA,wCAIA,6CAIA,0CAIA,wCAIA,0CAIA,oCAIA,0CAIA,yCAIA,oCAIA,wCAIA,mCAIA,0CAIA,2CAIA,uCAIA,gDAIA,0CAIA,4CAIA,4CAIA,4CAIA,sCAIA,wCAIA,wCAIA,wCAIA,kCAIA,kCAIA,wCAIA,wCAIA,wCAIA,wCAIA,wCAIA,kCAIA,4CAIA,4CAIA,6CAIA,yCAIA,4CAIA,yCAIA,6CAIA,yCAIA,0CAIA,wCAIA,uCAIA,2CAIA,2CAIA,qCAIA,8CAIA,8CAIA,wCAIA,sCAIA,wCAIA,uCAIA,mCAIA,yCAIA,mCAIA,sCAIA,yCAIA,0CAIA,mCAIA,wCAIA,2CAIA,oCAIA,sCAIA,kCAIA,oCAIA,2CAIA,yCAIA,wCAIA,oCAIA,2CAIA,6CAIA,wCAIA,mCAIA,oCAIA,yCAIA,qCAIA,6CAIA,2CAIA,yCAIA,wCAIA,sCAIA,qCAIA,qCAIA,mCAIA,sCAIA,yCAIA,0CAIA,yCAIA,yCAIA,yCAIA,+CAIA,+CAIA,yCAIA,yCAIA,iDAIA,iDAIA,2CAIA,mCAIA,yCAIA,yCAIA,wCAIA,qCAIA,oCAIA,0CAIA,0CAIA,4CAIA,oCAIA,uCAIA,yCAIA,wCAIA,mCAIA,yCAIA,+CAIA,gDAIA,0CAIA,0CAIA,+CAIA,gDAIA,0CAIA,kDAIA,kDAIA,4CAIA,gDAIA,gDAIA,0CAIA,oCAIA,sCAIA,uCAIA,sCAIA,kCAIA,6CAIA,oCAIA,4CAIA,sCAIA,2CAIA,uCAIA,sCAIA,mCAIA,2CAIA,2CAIA,4CAIA,4CAIA,4CAIA,2CAIA,2CAIA,2CAIA,2CAIA,2CAIA,2CAIA,2CAIA,2CAIA,yCAIA,mCAIA,yCAIA,0CAIA,4CAIA,0CAIA,oDAIA,4CAIA,oCAIA,qCAIA,2CAIA,qCAIA,oCAIA,qCAIA,sCAIA,iCAIA,yCAIA,oCAIA,yCAIA,oCAIA,sCAIA,kCAIA,kCAIA,uCAIA,mCAIA,qCAIA,4CAIA,2CAIA,2CAIA,0CAIA,qCAIA,oCAIA,kCAIA,mCAIA,uCAIA,mCAIA,kCAIA,qCAIA,yCAIA,wCAIA,mCAIA,wCAIA,kCAIA,wCAIA,qCAIA,qCAIA,sCAIA,sCAIA,kCAIA,uCAIA,uCAIA,qCAIA,uCAIA,uCAIA,uCAIA,yCAIA,qCAIA,mCAIA,uCAIA,mCAIA,iCAIA,uCAIA,mCAIA,wCAIA,4CAIA,oCAIA,sCAIA,4CAIA,mCAIA,yCAIA,4CAIA,iDAIA,qDAIA,iDAIA,yCAIA,gDAIA,4CAIA,oCAIA,6CAIA,4CAIA,2CAIA,oCAIA,+CAIA,mCAIA,sCAIA,0CAIA,sCAIA,uCAIA,yCAIA,sCAIA,uCAIA,uCAIA,wCAIA,0CAIA,mCAIA,oCAIA,mCAIA,oCAIA,4CAIA,wCAIA,mCAIA,2CAIA,8CAIA,8CAIA,uCAIA,qCAIA,sCAIA,4CAIA,mCAIA,mCAIA,uCAIA,8CAIA,2CAIA,uCAIA,yCAIA,mCAIA,oCAIA,oCAIA,oCAIA,oCAIA,oCAIA,mCAIA,oCAIA,oCAIA,4CAIA,uCAIA,qCAIA,oCAIA,wCAIA,uCAIA,iDAIA,iDAIA,kDAIA,0CAIA,mCAIA,qCAIA,4CAIA,uCAIA,sCAIA,0CAIA,0CAIA,kCAIA,wCAIA,kCAIA,wCAIA,mCAIA,qCAIA,uCAIA,wCAIA,mCAIA,yCAIA,yCAIA,mCAIA,0CAIA,0CAIA,oCAIA,oCAIA,oCAIA,0CAIA,qCAIA,yCAIA,sCAIA,uCAIA,mCAIA,oCAIA,mCAIA,oCAIA,oCAIA,uCAIA,sCAIA,mCAIA,qCAIA,wCAIA,wCAIA,oCAIA,sCAIA,mCAIA,mCAIA,yCAIA,iCAIA,oCAIA,oCAIA,uCAIA,0CAIA,0CAIA,mCAIA,0CAIA,wCAIA,wCAIA,qCAIA,kCAIA,sCAIA,qCAIA,uCAIA,kCAIA,oCAIA,mCAIA,qCAIA,qCAIA,mCAIA,sCAIA,oCAIA,mCAIA,mCAIA,qCAIA,wCAIA,sCAIA,sCAIA,wCAIA,wCAIA,0CAIA,wCAIA,yCAIA,sCAIA,4CAIA,mCAIA,0CAIA,uCAIA,mCAIA,mCAIA,wCAIA,2CAIA,0CAIA,6CAIA,2CAIA,6CAIA,2CAIA,mCAIA,oCAIA,qCAIA,uCAIA,yCAIA,mCAIA,mCAIA,sCAIA,oCAIA,oCAIA,wCAIA,oCAIA,qCAIA,uCAIA,mCAIA,mCAIA,uCAIA,kCAIA,uCAIA,sCAIA,uCAIA,yCAIA,4CAIA,wCAIA,uCAIA,0CAIA,uCAIA,kCAIA,uCAIA,mCAIA,2CAIA,2CAIA,oCAIA,2CAIA,uCAIA,oCAIA,mCAIA,kCAIA,qCAIA,uCAIA,8CAIA,yCAIA,4CAIA,sCAIA,mCAIA,wCAIA,yCAIA,0CAIA,uCAIA,sCAIA,2CAIA,uCAIA,uCAIA,oCAIA,sCAIA,sCAIA,mCAIA,oCAIA,0CAIA,wCAIA,qCAIA,kCAIA,4CAIA,qCAIA,2CAIA,oCAIA,sCAIA,mCAIA,qCAIA,qCAIA,0CAIA,0CAIA,mCAIA,wCAIA,oCAIA,oCAIA,oCAIA,qCAIA,sCAIA,oCAIA,8CAIA,8CAIA,uCAIA,yCAIA,0CAIA,qCAIA,sCAIA,sCAIA,qCAIA,wCAIA,oCAIA,qCAIA,yCAIA,sCAIA,mCAIA,oCAIA,oCAIA,uCAIA,qCAIA,4CAIA,wCAIA,wCAIA,qCAIA,2CAIA,uCAIA,wCAIA,0CAIA,oCAIA,qCAIA,4CAIA,sCAIA,uCAIA,qCAIA,uCAIA,0CAIA,qCAIA,uCAIA,mCAIA,oCAIA,sCAIA,8CAIA,0CAIA,4CAIA,4CAIA,4CAIA,4CAIA,4CAIA,4CAIA,sCAIA,0CAIA,qCAIA,2CAIA,yCAIA,yCAIA,mCAIA,0CAIA,0CAIA,uCAIA,kCAIA,mCAIA,wCAIA,oCAIA,wCAIA,wCAIA,uCAIA,0CAIA,wCAIA,yCAIA,wCAIA,qCAIA,kCAIA,yCAIA,wCAIA,0CAIA,oCAIA,oCAIA,4CAIA,0CAIA,mCAIA,0CAIA,qCAIA,uCAIA,yCAIA,qCAIA,wCAIA,kCAIA,0CAIA,iDAIA,yCAIA,mCAIA,qCAIA,0CAIA,sCAIA,yCAIA,kCAIA,yCAIA,uCAIA,mCAIA,oCAIA,qCAIA,qCAIA,2BAIA,4BAIA,6BAIA,4BAIA,0BAIA,0BAIA,0BAIA,0BAIA,0BAIA,0BAIA,0BAIA,0BAIA,0BAIA,4BAIA,2CAKA,8DAMA,iDAKA,mEAKA,uFAMA,8BAIA,gCAIA,6CAIA,6CAIA,6EAMA,oFAkBA,4EAYA,6GAMA,+GAMA,+GAMA,0HAMA,wHAMA,+IAMA,0KAUA,4BAIA,kHAWA,8HQn6QA,2vDQEA,wBAIA,0OAUA,sHAQA,qIAMA,oJAOA,qDAIA,sDAIE,yCAAyC,0DAM3C,+DAIE,yCAAyC,4BAK3C,qCAIA,+BAIA,oDAIA,qDAKA,+CAIA,8BAIA,0CAMA,+BAIA,mCAUA,8BAIA,eAIA,gCAIA,0BAIA,yFAMA,yJAQA,+BAIA,wFAOA,wBAIA,iDAKA,kCAGE,yCAAyC,qCAK3C,uGAKE,yCAAyC,wCAK3C,oCAIA,sDAKA,kIAOA,gFAKA,kGClMA,yCACE,6CAOF,wDACE,qDAKE,kDAIA,6EAKF,qCASF,gBAOE,oIAMA,8IAOE,yCAAyC,mHAMzC,wDAAwC,uFAb1C,8IAOE,yCAAyC,mHAMzC,wDAAwC,uFAM1C,yDAEE,oDAOJ,yDAIA,0Cf3EA,8HAOE,qIAQE,8VAgBE,gGAIE,wDAOJ,kIQ1CJ,qDQAA,kIAOE,sCjBPF,wDAIE,yCAAyC,yBAIzC,8HAOA,kEAAA,oEAMA,yCACE,wCAIA,0CAAA,6CQ1BJ,2HAME,yCAAyC,gEAS3C,0HLfA,mEAIE,sFAKE,0EAUJ,6MAQE,wGQ1BA,4BAIA,mCdJA,+FAAA,+FQAA,yCAKE,gEiBLF,2IlBDF,kIAME,+PAWE,4EAKA,gDAIA,gHAMA,0DAIA,sEAKA,kJAKE,gFQ9CN,8JAOE,mDAAmC,0CAKnC,wIAKE,qEAMA,iDAIA,gEAIE,mDAAmC,wDAInC,mJAOA,2EAKE,mDAAmC,6DAMrC,+EAKA,+DAOF,8CAIA,mHAKA,uGAKE,oGAMJ,0GCvFF,wKAKE,6CAIE,qDAIA,+EAKA,mmBAyBA,qCAKF,oJAOE,6CAKF,uKAOE,sDAIA,+DCpEJ,oGAKE,oCAAoC,sCAKpC,+FAME,mCAIA,2DAMA,8FAaJ,qEAKE,4FAOA,+HASE,iGAKE,wGAdJ,+HASE,iGAKE,wGAdJ,gIASE,kGAKE,yGAQJ,sEAIE,8DAGE,mEAMJ,sFAMA,qFAMI,oEAMJ,wDAAA,oDAIA,6HAOE,gBAAiB,uCAIjB,+DhBxHJ,6GAKE,8EQDA,qEAAA,wEAMA,8LAUA,kCAIA,mQAAA,kQAAA,oQAAA,2PAgBA,2HAAA,0HAAA,4HAAA,mHASA,yGAAA,wGAAA,0GAAA,iGAAA,+FASA,mDiB1DF,wEAKE,oCACE,6CAKF,4MAYA,2DAKA,6GAOI,0DAOA,6DAKA,2EAME,sGLpDN,mEAIE,2FAMA,6GAMF,sCAIE,yCAKF,2CCzBA,uEAMA,oCCNA,8CAIA,mFAAA,qFAMA,mDAIA,iDAIE,yCAAyC,kDAK3C,gDAIA,8CAIA,uJAKE,oCAAmC,oDAInC,4EAMF,wDAKA,oDACE,6KASE,mEAIA,+DCpEN","sources":["assets/styles/_combined-styles.css","assets/styles/reset.css","assets/styles/components/metadata.css","assets/styles/components/video.css","assets/styles/icofont.css","assets/styles/components/header.css","assets/styles/components/artefact-list.css","assets/styles/fonts.css","assets/styles/components/buttons.css","assets/styles/components/topic-overview.css","assets/styles/components/work-overview.css","assets/styles/components/details.css","assets/styles/variables.css","assets/styles/components/herotext.css","assets/styles/components/avatar.css","assets/styles/icons.css","assets/styles/layouts/simple.css","assets/styles/layouts/work.css","assets/styles/layouts/work-results.css","assets/styles/utilities.css","assets/styles/components/toc.css","assets/styles/components/state-of-work.css","assets/styles/components/slideshow.css","assets/styles/components/keywords.css","assets/styles/components/taglist.css","assets/styles/components/form.css","assets/styles/base.css","assets/styles/components/footer.css","assets/styles/composition.css"],"sourcesContent":["@import url(\"reset.css\");\n@import url(\"fonts.css\");\n@import url(\"icons.css\");\n@import url(\"icofont.css\");\n@import url(\"variables.css\");\n@import url(\"base.css\");\n@import url(\"composition.css\");\n\n/* Compontents \n############################################################################ */\n@import url(\"components/artefact-list.css\");\n@import url(\"components/avatar.css\");\n@import url(\"components/footer.css\");\n@import url(\"components/header.css\");\n@import url(\"components/herotext.css\");\n@import url(\"components/buttons.css\");\n@import url(\"components/keywords.css\");\n@import url(\"components/metadata.css\");\n@import url(\"components/taglist.css\");\n@import url(\"components/toc.css\");\n@import url(\"components/topic-overview.css\");\n@import url(\"components/work-overview.css\");\n@import url(\"components/details.css\");\n@import url(\"components/slideshow.css\");\n@import url(\"components/video.css\");\n@import url(\"components/form.css\");\n@import url(\"components/state-of-work.css\");\n\n/* Layouts \n############################################################################ */\n@import url(\"layouts/simple.css\");\n@import url(\"layouts/work.css\");\n@import url(\"layouts/work-results.css\");\n\n\n/* Utilities \n############################################################################ */\n@import url(\"utilities.css\");","/* http://meyerweb.com/eric/tools/css/reset/ \n v2.0 | 20110126\n License: none (public domain)\n*/\n\nhtml, body, div, span, applet, object, iframe,\nh1, h2, h3, h4, h5, h6, p, blockquote, pre,\na, abbr, acronym, address, big, cite, code,\ndel, dfn, em, img, ins, kbd, q, s, samp,\nsmall, strike, strong, sub, sup, tt, var,\nb, u, i, center,\ndl, dt, dd, ol, ul, li,\nfieldset, form, label, legend,\ntable, caption, tbody, tfoot, thead, tr, th, td,\narticle, aside, canvas, details, embed, \nfigure, figcaption, footer, header, hgroup, \nmenu, nav, output, ruby, section, summary,\ntime, mark, audio, video {\n\tpadding: 0;\n\tborder: 0;\n\tmargin: 0;\n\tfont: inherit;\n\tfont-size: 100%;\n\tvertical-align: baseline;\n}\n\n/* HTML5 display-role reset for older browsers */\narticle, aside, details, figcaption, figure, \nfooter, header, hgroup, menu, nav, section {\n\tdisplay: block;\n}\n\nbody {\n\tline-height: 1;\n}\n\nol, ul {\n\tlist-style: none;\n}\n\nblockquote, q {\n\tquotes: none;\n}\n\nblockquote::before, blockquote::after,\nq::before, q::after {\n\tcontent: '';\n\tcontent: none;\n}\n\ntable {\n\tborder-collapse: collapse;\n\tborder-spacing: 0;\n}\n\nbutton, input, textarea{\n padding: 0;\n border: none;\n margin: 0;\n background-color: transparent;\n\n &:active, &:focus{\n border: solid 1px transparent;\n box-shadow: none;\n outline-color: transparent;\n outline-style: none;\n }\n}","/* Metadata\n############################################################################ */\n.metadata {\n dt, dd {\n padding-top: var(--size-xs);\n border-top: solid var(--border-width) var(--color-green);\n }\n}","/* Video Container for YT Videos\n############################################################################ */\n.video-container{\n position: relative;\n max-width: calc(var(--size-image-thumbnail) * 3) !important; \n aspect-ratio: 16/9;\n\n iframe {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n }\n}\n","/*! \n* @package IcoFont \n* @version 1.0.1 \n* @author IcoFont https://icofont.com \n* @copyright Copyright (c) 2015 - 2018 IcoFont \n* @license - https://icofont.com/license/\n*/\n\n/* stylelint-disable */\n@font-face {\n font-family: IcoFont;\n font-style: \"Regular\";\n font-weight: normal;\n src: url(\"../fonts/Icofont/icofont.woff2\") format(\"woff2\"),\n url(\"../fonts/Icofont/icofont.woff\") format(\"woff\");\n}\n\n[class^=\"icofont-\"],\n[class*=\" icofont-\"] {\n direction: ltr;\n font-family: IcoFont !important;\n\n /* Better Font Rendering =========== */\n font-feature-settings: \"liga\";\n -webkit-font-smoothing: antialiased;\n font-style: normal;\n font-variant: normal;\n font-weight: normal;\n line-height: 1;\n text-transform: none;\n white-space: nowrap;\n word-wrap: normal;\n}\n\n\n.icofont-angry-monster::before {\n content: \"\\e800\";\n}\n\n.icofont-bathtub::before {\n content: \"\\e801\";\n}\n\n.icofont-bird-wings::before {\n content: \"\\e802\";\n}\n\n.icofont-bow::before {\n content: \"\\e803\";\n}\n\n.icofont-castle::before {\n content: \"\\e804\";\n}\n\n.icofont-circuit::before {\n content: \"\\e805\";\n}\n\n.icofont-crown-king::before {\n content: \"\\e806\";\n}\n\n.icofont-crown-queen::before {\n content: \"\\e807\";\n}\n\n.icofont-dart::before {\n content: \"\\e808\";\n}\n\n.icofont-disability-race::before {\n content: \"\\e809\";\n}\n\n.icofont-diving-goggle::before {\n content: \"\\e80a\";\n}\n\n.icofont-eye-open::before {\n content: \"\\e80b\";\n}\n\n.icofont-flora-flower::before {\n content: \"\\e80c\";\n}\n\n.icofont-flora::before {\n content: \"\\e80d\";\n}\n\n.icofont-gift-box::before {\n content: \"\\e80e\";\n}\n\n.icofont-halloween-pumpkin::before {\n content: \"\\e80f\";\n}\n\n.icofont-hand-power::before {\n content: \"\\e810\";\n}\n\n.icofont-hand-thunder::before {\n content: \"\\e811\";\n}\n\n.icofont-king-monster::before {\n content: \"\\e812\";\n}\n\n.icofont-love::before {\n content: \"\\e813\";\n}\n\n.icofont-magician-hat::before {\n content: \"\\e814\";\n}\n\n.icofont-native-american::before {\n content: \"\\e815\";\n}\n\n.icofont-owl-look::before {\n content: \"\\e816\";\n}\n\n.icofont-phoenix::before {\n content: \"\\e817\";\n}\n\n.icofont-robot-face::before {\n content: \"\\e818\";\n}\n\n.icofont-sand-clock::before {\n content: \"\\e819\";\n}\n\n.icofont-shield-alt::before {\n content: \"\\e81a\";\n}\n\n.icofont-ship-wheel::before {\n content: \"\\e81b\";\n}\n\n.icofont-skull-danger::before {\n content: \"\\e81c\";\n}\n\n.icofont-skull-face::before {\n content: \"\\e81d\";\n}\n\n.icofont-snowmobile::before {\n content: \"\\e81e\";\n}\n\n.icofont-space-shuttle::before {\n content: \"\\e81f\";\n}\n\n.icofont-star-shape::before {\n content: \"\\e820\";\n}\n\n.icofont-swirl::before {\n content: \"\\e821\";\n}\n\n.icofont-tattoo-wing::before {\n content: \"\\e822\";\n}\n\n.icofont-throne::before {\n content: \"\\e823\";\n}\n\n.icofont-tree-alt::before {\n content: \"\\e824\";\n}\n\n.icofont-triangle::before {\n content: \"\\e825\";\n}\n\n.icofont-unity-hand::before {\n content: \"\\e826\";\n}\n\n.icofont-weed::before {\n content: \"\\e827\";\n}\n\n.icofont-woman-bird::before {\n content: \"\\e828\";\n}\n\n.icofont-bat::before {\n content: \"\\e829\";\n}\n\n.icofont-bear-face::before {\n content: \"\\e82a\";\n}\n\n.icofont-bear-tracks::before {\n content: \"\\e82b\";\n}\n\n.icofont-bear::before {\n content: \"\\e82c\";\n}\n\n.icofont-bird-alt::before {\n content: \"\\e82d\";\n}\n\n.icofont-bird-flying::before {\n content: \"\\e82e\";\n}\n\n.icofont-bird::before {\n content: \"\\e82f\";\n}\n\n.icofont-birds::before {\n content: \"\\e830\";\n}\n\n.icofont-bone::before {\n content: \"\\e831\";\n}\n\n.icofont-bull::before {\n content: \"\\e832\";\n}\n\n.icofont-butterfly-alt::before {\n content: \"\\e833\";\n}\n\n.icofont-butterfly::before {\n content: \"\\e834\";\n}\n\n.icofont-camel-alt::before {\n content: \"\\e835\";\n}\n\n.icofont-camel-head::before {\n content: \"\\e836\";\n}\n\n.icofont-camel::before {\n content: \"\\e837\";\n}\n\n.icofont-cat-alt-1::before {\n content: \"\\e838\";\n}\n\n.icofont-cat-alt-2::before {\n content: \"\\e839\";\n}\n\n.icofont-cat-alt-3::before {\n content: \"\\e83a\";\n}\n\n.icofont-cat-dog::before {\n content: \"\\e83b\";\n}\n\n.icofont-cat-face::before {\n content: \"\\e83c\";\n}\n\n.icofont-cat::before {\n content: \"\\e83d\";\n}\n\n.icofont-cow-head::before {\n content: \"\\e83e\";\n}\n\n.icofont-cow::before {\n content: \"\\e83f\";\n}\n\n.icofont-crab::before {\n content: \"\\e840\";\n}\n\n.icofont-crocodile::before {\n content: \"\\e841\";\n}\n\n.icofont-deer-head::before {\n content: \"\\e842\";\n}\n\n.icofont-dog-alt::before {\n content: \"\\e843\";\n}\n\n.icofont-dog-barking::before {\n content: \"\\e844\";\n}\n\n.icofont-dog::before {\n content: \"\\e845\";\n}\n\n.icofont-dolphin::before {\n content: \"\\e846\";\n}\n\n.icofont-duck-tracks::before {\n content: \"\\e847\";\n}\n\n.icofont-eagle-head::before {\n content: \"\\e848\";\n}\n\n.icofont-eaten-fish::before {\n content: \"\\e849\";\n}\n\n.icofont-elephant-alt::before {\n content: \"\\e84a\";\n}\n\n.icofont-elephant-head-alt::before {\n content: \"\\e84b\";\n}\n\n.icofont-elephant-head::before {\n content: \"\\e84c\";\n}\n\n.icofont-elephant::before {\n content: \"\\e84d\";\n}\n\n.icofont-elk::before {\n content: \"\\e84e\";\n}\n\n.icofont-fish-1::before {\n content: \"\\e84f\";\n}\n\n.icofont-fish-2::before {\n content: \"\\e850\";\n}\n\n.icofont-fish-3::before {\n content: \"\\e851\";\n}\n\n.icofont-fish-4::before {\n content: \"\\e852\";\n}\n\n.icofont-fish-5::before {\n content: \"\\e853\";\n}\n\n.icofont-fish::before {\n content: \"\\e854\";\n}\n\n.icofont-fox-alt::before {\n content: \"\\e855\";\n}\n\n.icofont-fox::before {\n content: \"\\e856\";\n}\n\n.icofont-frog-tracks::before {\n content: \"\\e857\";\n}\n\n.icofont-frog::before {\n content: \"\\e858\";\n}\n\n.icofont-froggy::before {\n content: \"\\e859\";\n}\n\n.icofont-giraffe-head-1::before {\n content: \"\\e85a\";\n}\n\n.icofont-giraffe-head-2::before {\n content: \"\\e85b\";\n}\n\n.icofont-giraffe-head::before {\n content: \"\\e85c\";\n}\n\n.icofont-giraffe::before {\n content: \"\\e85d\";\n}\n\n.icofont-goat-head::before {\n content: \"\\e85e\";\n}\n\n.icofont-gorilla::before {\n content: \"\\e85f\";\n}\n\n.icofont-hen-tracks::before {\n content: \"\\e860\";\n}\n\n.icofont-horse-head-1::before {\n content: \"\\e861\";\n}\n\n.icofont-horse-head-2::before {\n content: \"\\e862\";\n}\n\n.icofont-horse-head::before {\n content: \"\\e863\";\n}\n\n.icofont-horse-tracks::before {\n content: \"\\e864\";\n}\n\n.icofont-jellyfish::before {\n content: \"\\e865\";\n}\n\n.icofont-kangaroo::before {\n content: \"\\e866\";\n}\n\n.icofont-lemur::before {\n content: \"\\e867\";\n}\n\n.icofont-lion-head-1::before {\n content: \"\\e868\";\n}\n\n.icofont-lion-head-2::before {\n content: \"\\e869\";\n}\n\n.icofont-lion-head::before {\n content: \"\\e86a\";\n}\n\n.icofont-lion::before {\n content: \"\\e86b\";\n}\n\n.icofont-monkey-2::before {\n content: \"\\e86c\";\n}\n\n.icofont-monkey-3::before {\n content: \"\\e86d\";\n}\n\n.icofont-monkey-face::before {\n content: \"\\e86e\";\n}\n\n.icofont-monkey::before {\n content: \"\\e86f\";\n}\n\n.icofont-octopus-alt::before {\n content: \"\\e870\";\n}\n\n.icofont-octopus::before {\n content: \"\\e871\";\n}\n\n.icofont-owl::before {\n content: \"\\e872\";\n}\n\n.icofont-panda-face::before {\n content: \"\\e873\";\n}\n\n.icofont-panda::before {\n content: \"\\e874\";\n}\n\n.icofont-panther::before {\n content: \"\\e875\";\n}\n\n.icofont-parrot-lip::before {\n content: \"\\e876\";\n}\n\n.icofont-parrot::before {\n content: \"\\e877\";\n}\n\n.icofont-paw::before {\n content: \"\\e878\";\n}\n\n.icofont-pelican::before {\n content: \"\\e879\";\n}\n\n.icofont-penguin::before {\n content: \"\\e87a\";\n}\n\n.icofont-pig-face::before {\n content: \"\\e87b\";\n}\n\n.icofont-pig::before {\n content: \"\\e87c\";\n}\n\n.icofont-pigeon-1::before {\n content: \"\\e87d\";\n}\n\n.icofont-pigeon-2::before {\n content: \"\\e87e\";\n}\n\n.icofont-pigeon::before {\n content: \"\\e87f\";\n}\n\n.icofont-rabbit::before {\n content: \"\\e880\";\n}\n\n.icofont-rat::before {\n content: \"\\e881\";\n}\n\n.icofont-rhino-head::before {\n content: \"\\e882\";\n}\n\n.icofont-rhino::before {\n content: \"\\e883\";\n}\n\n.icofont-rooster::before {\n content: \"\\e884\";\n}\n\n.icofont-seahorse::before {\n content: \"\\e885\";\n}\n\n.icofont-seal::before {\n content: \"\\e886\";\n}\n\n.icofont-shrimp-alt::before {\n content: \"\\e887\";\n}\n\n.icofont-shrimp::before {\n content: \"\\e888\";\n}\n\n.icofont-snail-1::before {\n content: \"\\e889\";\n}\n\n.icofont-snail-2::before {\n content: \"\\e88a\";\n}\n\n.icofont-snail-3::before {\n content: \"\\e88b\";\n}\n\n.icofont-snail::before {\n content: \"\\e88c\";\n}\n\n.icofont-snake::before {\n content: \"\\e88d\";\n}\n\n.icofont-squid::before {\n content: \"\\e88e\";\n}\n\n.icofont-squirrel::before {\n content: \"\\e88f\";\n}\n\n.icofont-tiger-face::before {\n content: \"\\e890\";\n}\n\n.icofont-tiger::before {\n content: \"\\e891\";\n}\n\n.icofont-turtle::before {\n content: \"\\e892\";\n}\n\n.icofont-whale::before {\n content: \"\\e893\";\n}\n\n.icofont-woodpecker::before {\n content: \"\\e894\";\n}\n\n.icofont-zebra::before {\n content: \"\\e895\";\n}\n\n.icofont-brand-acer::before {\n content: \"\\e896\";\n}\n\n.icofont-brand-adidas::before {\n content: \"\\e897\";\n}\n\n.icofont-brand-adobe::before {\n content: \"\\e898\";\n}\n\n.icofont-brand-air-new-zealand::before {\n content: \"\\e899\";\n}\n\n.icofont-brand-airbnb::before {\n content: \"\\e89a\";\n}\n\n.icofont-brand-aircell::before {\n content: \"\\e89b\";\n}\n\n.icofont-brand-airtel::before {\n content: \"\\e89c\";\n}\n\n.icofont-brand-alcatel::before {\n content: \"\\e89d\";\n}\n\n.icofont-brand-alibaba::before {\n content: \"\\e89e\";\n}\n\n.icofont-brand-aliexpress::before {\n content: \"\\e89f\";\n}\n\n.icofont-brand-alipay::before {\n content: \"\\e8a0\";\n}\n\n.icofont-brand-amazon::before {\n content: \"\\e8a1\";\n}\n\n.icofont-brand-amd::before {\n content: \"\\e8a2\";\n}\n\n.icofont-brand-american-airlines::before {\n content: \"\\e8a3\";\n}\n\n.icofont-brand-android-robot::before {\n content: \"\\e8a4\";\n}\n\n.icofont-brand-android::before {\n content: \"\\e8a5\";\n}\n\n.icofont-brand-aol::before {\n content: \"\\e8a6\";\n}\n\n.icofont-brand-apple::before {\n content: \"\\e8a7\";\n}\n\n.icofont-brand-appstore::before {\n content: \"\\e8a8\";\n}\n\n.icofont-brand-asus::before {\n content: \"\\e8a9\";\n}\n\n.icofont-brand-ati::before {\n content: \"\\e8aa\";\n}\n\n.icofont-brand-att::before {\n content: \"\\e8ab\";\n}\n\n.icofont-brand-audi::before {\n content: \"\\e8ac\";\n}\n\n.icofont-brand-axiata::before {\n content: \"\\e8ad\";\n}\n\n.icofont-brand-bada::before {\n content: \"\\e8ae\";\n}\n\n.icofont-brand-bbc::before {\n content: \"\\e8af\";\n}\n\n.icofont-brand-bing::before {\n content: \"\\e8b0\";\n}\n\n.icofont-brand-blackberry::before {\n content: \"\\e8b1\";\n}\n\n.icofont-brand-bmw::before {\n content: \"\\e8b2\";\n}\n\n.icofont-brand-box::before {\n content: \"\\e8b3\";\n}\n\n.icofont-brand-burger-king::before {\n content: \"\\e8b4\";\n}\n\n.icofont-brand-business-insider::before {\n content: \"\\e8b5\";\n}\n\n.icofont-brand-buzzfeed::before {\n content: \"\\e8b6\";\n}\n\n.icofont-brand-cannon::before {\n content: \"\\e8b7\";\n}\n\n.icofont-brand-casio::before {\n content: \"\\e8b8\";\n}\n\n.icofont-brand-china-mobile::before {\n content: \"\\e8b9\";\n}\n\n.icofont-brand-china-telecom::before {\n content: \"\\e8ba\";\n}\n\n.icofont-brand-china-unicom::before {\n content: \"\\e8bb\";\n}\n\n.icofont-brand-cisco::before {\n content: \"\\e8bc\";\n}\n\n.icofont-brand-citibank::before {\n content: \"\\e8bd\";\n}\n\n.icofont-brand-cnet::before {\n content: \"\\e8be\";\n}\n\n.icofont-brand-cnn::before {\n content: \"\\e8bf\";\n}\n\n.icofont-brand-cocal-cola::before {\n content: \"\\e8c0\";\n}\n\n.icofont-brand-compaq::before {\n content: \"\\e8c1\";\n}\n\n.icofont-brand-debian::before {\n content: \"\\e8c2\";\n}\n\n.icofont-brand-delicious::before {\n content: \"\\e8c3\";\n}\n\n.icofont-brand-dell::before {\n content: \"\\e8c4\";\n}\n\n.icofont-brand-designbump::before {\n content: \"\\e8c5\";\n}\n\n.icofont-brand-designfloat::before {\n content: \"\\e8c6\";\n}\n\n.icofont-brand-disney::before {\n content: \"\\e8c7\";\n}\n\n.icofont-brand-dodge::before {\n content: \"\\e8c8\";\n}\n\n.icofont-brand-dove::before {\n content: \"\\e8c9\";\n}\n\n.icofont-brand-drupal::before {\n content: \"\\e8ca\";\n}\n\n.icofont-brand-ebay::before {\n content: \"\\e8cb\";\n}\n\n.icofont-brand-eleven::before {\n content: \"\\e8cc\";\n}\n\n.icofont-brand-emirates::before {\n content: \"\\e8cd\";\n}\n\n.icofont-brand-espn::before {\n content: \"\\e8ce\";\n}\n\n.icofont-brand-etihad-airways::before {\n content: \"\\e8cf\";\n}\n\n.icofont-brand-etisalat::before {\n content: \"\\e8d0\";\n}\n\n.icofont-brand-etsy::before {\n content: \"\\e8d1\";\n}\n\n.icofont-brand-fastrack::before {\n content: \"\\e8d2\";\n}\n\n.icofont-brand-fedex::before {\n content: \"\\e8d3\";\n}\n\n.icofont-brand-ferrari::before {\n content: \"\\e8d4\";\n}\n\n.icofont-brand-fitbit::before {\n content: \"\\e8d5\";\n}\n\n.icofont-brand-flikr::before {\n content: \"\\e8d6\";\n}\n\n.icofont-brand-forbes::before {\n content: \"\\e8d7\";\n}\n\n.icofont-brand-foursquare::before {\n content: \"\\e8d8\";\n}\n\n.icofont-brand-foxconn::before {\n content: \"\\e8d9\";\n}\n\n.icofont-brand-fujitsu::before {\n content: \"\\e8da\";\n}\n\n.icofont-brand-general-electric::before {\n content: \"\\e8db\";\n}\n\n.icofont-brand-gillette::before {\n content: \"\\e8dc\";\n}\n\n.icofont-brand-gizmodo::before {\n content: \"\\e8dd\";\n}\n\n.icofont-brand-gnome::before {\n content: \"\\e8de\";\n}\n\n.icofont-brand-google::before {\n content: \"\\e8df\";\n}\n\n.icofont-brand-gopro::before {\n content: \"\\e8e0\";\n}\n\n.icofont-brand-gucci::before {\n content: \"\\e8e1\";\n}\n\n.icofont-brand-hallmark::before {\n content: \"\\e8e2\";\n}\n\n.icofont-brand-hi5::before {\n content: \"\\e8e3\";\n}\n\n.icofont-brand-honda::before {\n content: \"\\e8e4\";\n}\n\n.icofont-brand-hp::before {\n content: \"\\e8e5\";\n}\n\n.icofont-brand-hsbc::before {\n content: \"\\e8e6\";\n}\n\n.icofont-brand-htc::before {\n content: \"\\e8e7\";\n}\n\n.icofont-brand-huawei::before {\n content: \"\\e8e8\";\n}\n\n.icofont-brand-hulu::before {\n content: \"\\e8e9\";\n}\n\n.icofont-brand-hyundai::before {\n content: \"\\e8ea\";\n}\n\n.icofont-brand-ibm::before {\n content: \"\\e8eb\";\n}\n\n.icofont-brand-icofont::before {\n content: \"\\e8ec\";\n}\n\n.icofont-brand-icq::before {\n content: \"\\e8ed\";\n}\n\n.icofont-brand-ikea::before {\n content: \"\\e8ee\";\n}\n\n.icofont-brand-imdb::before {\n content: \"\\e8ef\";\n}\n\n.icofont-brand-indiegogo::before {\n content: \"\\e8f0\";\n}\n\n.icofont-brand-intel::before {\n content: \"\\e8f1\";\n}\n\n.icofont-brand-ipair::before {\n content: \"\\e8f2\";\n}\n\n.icofont-brand-jaguar::before {\n content: \"\\e8f3\";\n}\n\n.icofont-brand-java::before {\n content: \"\\e8f4\";\n}\n\n.icofont-brand-joomla::before {\n content: \"\\e8f5\";\n}\n\n.icofont-brand-kickstarter::before {\n content: \"\\e8f6\";\n}\n\n.icofont-brand-kik::before {\n content: \"\\e8f7\";\n}\n\n.icofont-brand-lastfm::before {\n content: \"\\e8f8\";\n}\n\n.icofont-brand-lego::before {\n content: \"\\e8f9\";\n}\n\n.icofont-brand-lenovo::before {\n content: \"\\e8fa\";\n}\n\n.icofont-brand-levis::before {\n content: \"\\e8fb\";\n}\n\n.icofont-brand-lexus::before {\n content: \"\\e8fc\";\n}\n\n.icofont-brand-lg::before {\n content: \"\\e8fd\";\n}\n\n.icofont-brand-life-hacker::before {\n content: \"\\e8fe\";\n}\n\n.icofont-brand-linux-mint::before {\n content: \"\\e8ff\";\n}\n\n.icofont-brand-linux::before {\n content: \"\\e900\";\n}\n\n.icofont-brand-lionix::before {\n content: \"\\e901\";\n}\n\n.icofont-brand-loreal::before {\n content: \"\\e902\";\n}\n\n.icofont-brand-louis-vuitton::before {\n content: \"\\e903\";\n}\n\n.icofont-brand-mac-os::before {\n content: \"\\e904\";\n}\n\n.icofont-brand-marvel-app::before {\n content: \"\\e905\";\n}\n\n.icofont-brand-mashable::before {\n content: \"\\e906\";\n}\n\n.icofont-brand-mazda::before {\n content: \"\\e907\";\n}\n\n.icofont-brand-mcdonals::before {\n content: \"\\e908\";\n}\n\n.icofont-brand-mercedes::before {\n content: \"\\e909\";\n}\n\n.icofont-brand-micromax::before {\n content: \"\\e90a\";\n}\n\n.icofont-brand-microsoft::before {\n content: \"\\e90b\";\n}\n\n.icofont-brand-mobileme::before {\n content: \"\\e90c\";\n}\n\n.icofont-brand-mobily::before {\n content: \"\\e90d\";\n}\n\n.icofont-brand-motorola::before {\n content: \"\\e90e\";\n}\n\n.icofont-brand-msi::before {\n content: \"\\e90f\";\n}\n\n.icofont-brand-mts::before {\n content: \"\\e910\";\n}\n\n.icofont-brand-myspace::before {\n content: \"\\e911\";\n}\n\n.icofont-brand-mytv::before {\n content: \"\\e912\";\n}\n\n.icofont-brand-nasa::before {\n content: \"\\e913\";\n}\n\n.icofont-brand-natgeo::before {\n content: \"\\e914\";\n}\n\n.icofont-brand-nbc::before {\n content: \"\\e915\";\n}\n\n.icofont-brand-nescafe::before {\n content: \"\\e916\";\n}\n\n.icofont-brand-nestle::before {\n content: \"\\e917\";\n}\n\n.icofont-brand-netflix::before {\n content: \"\\e918\";\n}\n\n.icofont-brand-nexus::before {\n content: \"\\e919\";\n}\n\n.icofont-brand-nike::before {\n content: \"\\e91a\";\n}\n\n.icofont-brand-nokia::before {\n content: \"\\e91b\";\n}\n\n.icofont-brand-nvidia::before {\n content: \"\\e91c\";\n}\n\n.icofont-brand-omega::before {\n content: \"\\e91d\";\n}\n\n.icofont-brand-opensuse::before {\n content: \"\\e91e\";\n}\n\n.icofont-brand-oracle::before {\n content: \"\\e91f\";\n}\n\n.icofont-brand-panasonic::before {\n content: \"\\e920\";\n}\n\n.icofont-brand-paypal::before {\n content: \"\\e921\";\n}\n\n.icofont-brand-pepsi::before {\n content: \"\\e922\";\n}\n\n.icofont-brand-philips::before {\n content: \"\\e923\";\n}\n\n.icofont-brand-pizza-hut::before {\n content: \"\\e924\";\n}\n\n.icofont-brand-playstation::before {\n content: \"\\e925\";\n}\n\n.icofont-brand-puma::before {\n content: \"\\e926\";\n}\n\n.icofont-brand-qatar-air::before {\n content: \"\\e927\";\n}\n\n.icofont-brand-qvc::before {\n content: \"\\e928\";\n}\n\n.icofont-brand-readernaut::before {\n content: \"\\e929\";\n}\n\n.icofont-brand-redbull::before {\n content: \"\\e92a\";\n}\n\n.icofont-brand-reebok::before {\n content: \"\\e92b\";\n}\n\n.icofont-brand-reuters::before {\n content: \"\\e92c\";\n}\n\n.icofont-brand-samsung::before {\n content: \"\\e92d\";\n}\n\n.icofont-brand-sap::before {\n content: \"\\e92e\";\n}\n\n.icofont-brand-saudia-airlines::before {\n content: \"\\e92f\";\n}\n\n.icofont-brand-scribd::before {\n content: \"\\e930\";\n}\n\n.icofont-brand-shell::before {\n content: \"\\e931\";\n}\n\n.icofont-brand-siemens::before {\n content: \"\\e932\";\n}\n\n.icofont-brand-sk-telecom::before {\n content: \"\\e933\";\n}\n\n.icofont-brand-slideshare::before {\n content: \"\\e934\";\n}\n\n.icofont-brand-smashing-magazine::before {\n content: \"\\e935\";\n}\n\n.icofont-brand-snapchat::before {\n content: \"\\e936\";\n}\n\n.icofont-brand-sony-ericsson::before {\n content: \"\\e937\";\n}\n\n.icofont-brand-sony::before {\n content: \"\\e938\";\n}\n\n.icofont-brand-soundcloud::before {\n content: \"\\e939\";\n}\n\n.icofont-brand-sprint::before {\n content: \"\\e93a\";\n}\n\n.icofont-brand-squidoo::before {\n content: \"\\e93b\";\n}\n\n.icofont-brand-starbucks::before {\n content: \"\\e93c\";\n}\n\n.icofont-brand-stc::before {\n content: \"\\e93d\";\n}\n\n.icofont-brand-steam::before {\n content: \"\\e93e\";\n}\n\n.icofont-brand-suzuki::before {\n content: \"\\e93f\";\n}\n\n.icofont-brand-symbian::before {\n content: \"\\e940\";\n}\n\n.icofont-brand-t-mobile::before {\n content: \"\\e941\";\n}\n\n.icofont-brand-tango::before {\n content: \"\\e942\";\n}\n\n.icofont-brand-target::before {\n content: \"\\e943\";\n}\n\n.icofont-brand-tata-indicom::before {\n content: \"\\e944\";\n}\n\n.icofont-brand-techcrunch::before {\n content: \"\\e945\";\n}\n\n.icofont-brand-telenor::before {\n content: \"\\e946\";\n}\n\n.icofont-brand-teliasonera::before {\n content: \"\\e947\";\n}\n\n.icofont-brand-tesla::before {\n content: \"\\e948\";\n}\n\n.icofont-brand-the-verge::before {\n content: \"\\e949\";\n}\n\n.icofont-brand-thenextweb::before {\n content: \"\\e94a\";\n}\n\n.icofont-brand-toshiba::before {\n content: \"\\e94b\";\n}\n\n.icofont-brand-toyota::before {\n content: \"\\e94c\";\n}\n\n.icofont-brand-tribenet::before {\n content: \"\\e94d\";\n}\n\n.icofont-brand-ubuntu::before {\n content: \"\\e94e\";\n}\n\n.icofont-brand-unilever::before {\n content: \"\\e94f\";\n}\n\n.icofont-brand-vaio::before {\n content: \"\\e950\";\n}\n\n.icofont-brand-verizon::before {\n content: \"\\e951\";\n}\n\n.icofont-brand-viber::before {\n content: \"\\e952\";\n}\n\n.icofont-brand-vodafone::before {\n content: \"\\e953\";\n}\n\n.icofont-brand-volkswagen::before {\n content: \"\\e954\";\n}\n\n.icofont-brand-walmart::before {\n content: \"\\e955\";\n}\n\n.icofont-brand-warnerbros::before {\n content: \"\\e956\";\n}\n\n.icofont-brand-whatsapp::before {\n content: \"\\e957\";\n}\n\n.icofont-brand-wikipedia::before {\n content: \"\\e958\";\n}\n\n.icofont-brand-windows::before {\n content: \"\\e959\";\n}\n\n.icofont-brand-wire::before {\n content: \"\\e95a\";\n}\n\n.icofont-brand-wordpress::before {\n content: \"\\e95b\";\n}\n\n.icofont-brand-xiaomi::before {\n content: \"\\e95c\";\n}\n\n.icofont-brand-yahoobuzz::before {\n content: \"\\e95d\";\n}\n\n.icofont-brand-yamaha::before {\n content: \"\\e95e\";\n}\n\n.icofont-brand-youtube::before {\n content: \"\\e95f\";\n}\n\n.icofont-brand-zain::before {\n content: \"\\e960\";\n}\n\n.icofont-bank-alt::before {\n content: \"\\e961\";\n}\n\n.icofont-bank::before {\n content: \"\\e962\";\n}\n\n.icofont-barcode::before {\n content: \"\\e963\";\n}\n\n.icofont-bill-alt::before {\n content: \"\\e964\";\n}\n\n.icofont-billboard::before {\n content: \"\\e965\";\n}\n\n.icofont-briefcase-1::before {\n content: \"\\e966\";\n}\n\n.icofont-briefcase-2::before {\n content: \"\\e967\";\n}\n\n.icofont-businessman::before {\n content: \"\\e968\";\n}\n\n.icofont-businesswoman::before {\n content: \"\\e969\";\n}\n\n.icofont-chair::before {\n content: \"\\e96a\";\n}\n\n.icofont-coins::before {\n content: \"\\e96b\";\n}\n\n.icofont-company::before {\n content: \"\\e96c\";\n}\n\n.icofont-contact-add::before {\n content: \"\\e96d\";\n}\n\n.icofont-files-stack::before {\n content: \"\\e96e\";\n}\n\n.icofont-handshake-deal::before {\n content: \"\\e96f\";\n}\n\n.icofont-id-card::before {\n content: \"\\e970\";\n}\n\n.icofont-meeting-add::before {\n content: \"\\e971\";\n}\n\n.icofont-money-bag::before {\n content: \"\\e972\";\n}\n\n.icofont-pie-chart::before {\n content: \"\\e973\";\n}\n\n.icofont-presentation-alt::before {\n content: \"\\e974\";\n}\n\n.icofont-presentation::before {\n content: \"\\e975\";\n}\n\n.icofont-stamp::before {\n content: \"\\e976\";\n}\n\n.icofont-stock-mobile::before {\n content: \"\\e977\";\n}\n\n.icofont-chart-arrows-axis::before {\n content: \"\\e978\";\n}\n\n.icofont-chart-bar-graph::before {\n content: \"\\e979\";\n}\n\n.icofont-chart-flow-1::before {\n content: \"\\e97a\";\n}\n\n.icofont-chart-flow-2::before {\n content: \"\\e97b\";\n}\n\n.icofont-chart-flow::before {\n content: \"\\e97c\";\n}\n\n.icofont-chart-growth::before {\n content: \"\\e97d\";\n}\n\n.icofont-chart-histogram-alt::before {\n content: \"\\e97e\";\n}\n\n.icofont-chart-histogram::before {\n content: \"\\e97f\";\n}\n\n.icofont-chart-line-alt::before {\n content: \"\\e980\";\n}\n\n.icofont-chart-line::before {\n content: \"\\e981\";\n}\n\n.icofont-chart-pie-alt::before {\n content: \"\\e982\";\n}\n\n.icofont-chart-pie::before {\n content: \"\\e983\";\n}\n\n.icofont-chart-radar-graph::before {\n content: \"\\e984\";\n}\n\n.icofont-architecture-alt::before {\n content: \"\\e985\";\n}\n\n.icofont-architecture::before {\n content: \"\\e986\";\n}\n\n.icofont-barricade::before {\n content: \"\\e987\";\n}\n\n.icofont-bolt::before {\n content: \"\\e988\";\n}\n\n.icofont-bricks::before {\n content: \"\\e989\";\n}\n\n.icofont-building-alt::before {\n content: \"\\e98a\";\n}\n\n.icofont-bull-dozer::before {\n content: \"\\e98b\";\n}\n\n.icofont-calculations::before {\n content: \"\\e98c\";\n}\n\n.icofont-cement-mix::before {\n content: \"\\e98d\";\n}\n\n.icofont-cement-mixer::before {\n content: \"\\e98e\";\n}\n\n.icofont-concrete-mixer::before {\n content: \"\\e98f\";\n}\n\n.icofont-danger-zone::before {\n content: \"\\e990\";\n}\n\n.icofont-drill::before {\n content: \"\\e991\";\n}\n\n.icofont-eco-energy::before {\n content: \"\\e992\";\n}\n\n.icofont-eco-environmen::before {\n content: \"\\e993\";\n}\n\n.icofont-energy-air::before {\n content: \"\\e994\";\n}\n\n.icofont-energy-oil::before {\n content: \"\\e995\";\n}\n\n.icofont-energy-savings::before {\n content: \"\\e996\";\n}\n\n.icofont-energy-solar::before {\n content: \"\\e997\";\n}\n\n.icofont-energy-water::before {\n content: \"\\e998\";\n}\n\n.icofont-engineer::before {\n content: \"\\e999\";\n}\n\n.icofont-fire-extinguisher-alt::before {\n content: \"\\e99a\";\n}\n\n.icofont-fire-extinguisher::before {\n content: \"\\e99b\";\n}\n\n.icofont-fix-tools::before {\n content: \"\\e99c\";\n}\n\n.icofont-fork-lift::before {\n content: \"\\e99d\";\n}\n\n.icofont-glue-oil::before {\n content: \"\\e99e\";\n}\n\n.icofont-hammer-alt::before {\n content: \"\\e99f\";\n}\n\n.icofont-hammer::before {\n content: \"\\e9a0\";\n}\n\n.icofont-help-robot::before {\n content: \"\\e9a1\";\n}\n\n.icofont-industries-1::before {\n content: \"\\e9a2\";\n}\n\n.icofont-industries-2::before {\n content: \"\\e9a3\";\n}\n\n.icofont-industries-3::before {\n content: \"\\e9a4\";\n}\n\n.icofont-industries-4::before {\n content: \"\\e9a5\";\n}\n\n.icofont-industries-5::before {\n content: \"\\e9a6\";\n}\n\n.icofont-industries::before {\n content: \"\\e9a7\";\n}\n\n.icofont-labour::before {\n content: \"\\e9a8\";\n}\n\n.icofont-mining::before {\n content: \"\\e9a9\";\n}\n\n.icofont-paint-brush::before {\n content: \"\\e9aa\";\n}\n\n.icofont-pollution::before {\n content: \"\\e9ab\";\n}\n\n.icofont-power-zone::before {\n content: \"\\e9ac\";\n}\n\n.icofont-radio-active::before {\n content: \"\\e9ad\";\n}\n\n.icofont-recycle-alt::before {\n content: \"\\e9ae\";\n}\n\n.icofont-recycling-man::before {\n content: \"\\e9af\";\n}\n\n.icofont-safety-hat-light::before {\n content: \"\\e9b0\";\n}\n\n.icofont-safety-hat::before {\n content: \"\\e9b1\";\n}\n\n.icofont-saw::before {\n content: \"\\e9b2\";\n}\n\n.icofont-screw-driver::before {\n content: \"\\e9b3\";\n}\n\n.icofont-tools-1::before {\n content: \"\\e9b4\";\n}\n\n.icofont-tools-bag::before {\n content: \"\\e9b5\";\n}\n\n.icofont-tow-truck::before {\n content: \"\\e9b6\";\n}\n\n.icofont-trolley::before {\n content: \"\\e9b7\";\n}\n\n.icofont-trowel::before {\n content: \"\\e9b8\";\n}\n\n.icofont-under-construction-alt::before {\n content: \"\\e9b9\";\n}\n\n.icofont-under-construction::before {\n content: \"\\e9ba\";\n}\n\n.icofont-vehicle-cement::before {\n content: \"\\e9bb\";\n}\n\n.icofont-vehicle-crane::before {\n content: \"\\e9bc\";\n}\n\n.icofont-vehicle-delivery-van::before {\n content: \"\\e9bd\";\n}\n\n.icofont-vehicle-dozer::before {\n content: \"\\e9be\";\n}\n\n.icofont-vehicle-excavator::before {\n content: \"\\e9bf\";\n}\n\n.icofont-vehicle-trucktor::before {\n content: \"\\e9c0\";\n}\n\n.icofont-vehicle-wrecking::before {\n content: \"\\e9c1\";\n}\n\n.icofont-worker::before {\n content: \"\\e9c2\";\n}\n\n.icofont-workers-group::before {\n content: \"\\e9c3\";\n}\n\n.icofont-wrench::before {\n content: \"\\e9c4\";\n}\n\n.icofont-afghani-false::before {\n content: \"\\e9c5\";\n}\n\n.icofont-afghani-minus::before {\n content: \"\\e9c6\";\n}\n\n.icofont-afghani-plus::before {\n content: \"\\e9c7\";\n}\n\n.icofont-afghani-true::before {\n content: \"\\e9c8\";\n}\n\n.icofont-afghani::before {\n content: \"\\e9c9\";\n}\n\n.icofont-baht-false::before {\n content: \"\\e9ca\";\n}\n\n.icofont-baht-minus::before {\n content: \"\\e9cb\";\n}\n\n.icofont-baht-plus::before {\n content: \"\\e9cc\";\n}\n\n.icofont-baht-true::before {\n content: \"\\e9cd\";\n}\n\n.icofont-baht::before {\n content: \"\\e9ce\";\n}\n\n.icofont-bitcoin-false::before {\n content: \"\\e9cf\";\n}\n\n.icofont-bitcoin-minus::before {\n content: \"\\e9d0\";\n}\n\n.icofont-bitcoin-plus::before {\n content: \"\\e9d1\";\n}\n\n.icofont-bitcoin-true::before {\n content: \"\\e9d2\";\n}\n\n.icofont-bitcoin::before {\n content: \"\\e9d3\";\n}\n\n.icofont-dollar-flase::before {\n content: \"\\e9d4\";\n}\n\n.icofont-dollar-minus::before {\n content: \"\\e9d5\";\n}\n\n.icofont-dollar-plus::before {\n content: \"\\e9d6\";\n}\n\n.icofont-dollar-true::before {\n content: \"\\e9d7\";\n}\n\n.icofont-dollar::before {\n content: \"\\e9d8\";\n}\n\n.icofont-dong-false::before {\n content: \"\\e9d9\";\n}\n\n.icofont-dong-minus::before {\n content: \"\\e9da\";\n}\n\n.icofont-dong-plus::before {\n content: \"\\e9db\";\n}\n\n.icofont-dong-true::before {\n content: \"\\e9dc\";\n}\n\n.icofont-dong::before {\n content: \"\\e9dd\";\n}\n\n.icofont-euro-false::before {\n content: \"\\e9de\";\n}\n\n.icofont-euro-minus::before {\n content: \"\\e9df\";\n}\n\n.icofont-euro-plus::before {\n content: \"\\e9e0\";\n}\n\n.icofont-euro-true::before {\n content: \"\\e9e1\";\n}\n\n.icofont-euro::before {\n content: \"\\e9e2\";\n}\n\n.icofont-frank-false::before {\n content: \"\\e9e3\";\n}\n\n.icofont-frank-minus::before {\n content: \"\\e9e4\";\n}\n\n.icofont-frank-plus::before {\n content: \"\\e9e5\";\n}\n\n.icofont-frank-true::before {\n content: \"\\e9e6\";\n}\n\n.icofont-frank::before {\n content: \"\\e9e7\";\n}\n\n.icofont-hryvnia-false::before {\n content: \"\\e9e8\";\n}\n\n.icofont-hryvnia-minus::before {\n content: \"\\e9e9\";\n}\n\n.icofont-hryvnia-plus::before {\n content: \"\\e9ea\";\n}\n\n.icofont-hryvnia-true::before {\n content: \"\\e9eb\";\n}\n\n.icofont-hryvnia::before {\n content: \"\\e9ec\";\n}\n\n.icofont-lira-false::before {\n content: \"\\e9ed\";\n}\n\n.icofont-lira-minus::before {\n content: \"\\e9ee\";\n}\n\n.icofont-lira-plus::before {\n content: \"\\e9ef\";\n}\n\n.icofont-lira-true::before {\n content: \"\\e9f0\";\n}\n\n.icofont-lira::before {\n content: \"\\e9f1\";\n}\n\n.icofont-peseta-false::before {\n content: \"\\e9f2\";\n}\n\n.icofont-peseta-minus::before {\n content: \"\\e9f3\";\n}\n\n.icofont-peseta-plus::before {\n content: \"\\e9f4\";\n}\n\n.icofont-peseta-true::before {\n content: \"\\e9f5\";\n}\n\n.icofont-peseta::before {\n content: \"\\e9f6\";\n}\n\n.icofont-peso-false::before {\n content: \"\\e9f7\";\n}\n\n.icofont-peso-minus::before {\n content: \"\\e9f8\";\n}\n\n.icofont-peso-plus::before {\n content: \"\\e9f9\";\n}\n\n.icofont-peso-true::before {\n content: \"\\e9fa\";\n}\n\n.icofont-peso::before {\n content: \"\\e9fb\";\n}\n\n.icofont-pound-false::before {\n content: \"\\e9fc\";\n}\n\n.icofont-pound-minus::before {\n content: \"\\e9fd\";\n}\n\n.icofont-pound-plus::before {\n content: \"\\e9fe\";\n}\n\n.icofont-pound-true::before {\n content: \"\\e9ff\";\n}\n\n.icofont-pound::before {\n content: \"\\ea00\";\n}\n\n.icofont-renminbi-false::before {\n content: \"\\ea01\";\n}\n\n.icofont-renminbi-minus::before {\n content: \"\\ea02\";\n}\n\n.icofont-renminbi-plus::before {\n content: \"\\ea03\";\n}\n\n.icofont-renminbi-true::before {\n content: \"\\ea04\";\n}\n\n.icofont-renminbi::before {\n content: \"\\ea05\";\n}\n\n.icofont-riyal-false::before {\n content: \"\\ea06\";\n}\n\n.icofont-riyal-minus::before {\n content: \"\\ea07\";\n}\n\n.icofont-riyal-plus::before {\n content: \"\\ea08\";\n}\n\n.icofont-riyal-true::before {\n content: \"\\ea09\";\n}\n\n.icofont-riyal::before {\n content: \"\\ea0a\";\n}\n\n.icofont-rouble-false::before {\n content: \"\\ea0b\";\n}\n\n.icofont-rouble-minus::before {\n content: \"\\ea0c\";\n}\n\n.icofont-rouble-plus::before {\n content: \"\\ea0d\";\n}\n\n.icofont-rouble-true::before {\n content: \"\\ea0e\";\n}\n\n.icofont-rouble::before {\n content: \"\\ea0f\";\n}\n\n.icofont-rupee-false::before {\n content: \"\\ea10\";\n}\n\n.icofont-rupee-minus::before {\n content: \"\\ea11\";\n}\n\n.icofont-rupee-plus::before {\n content: \"\\ea12\";\n}\n\n.icofont-rupee-true::before {\n content: \"\\ea13\";\n}\n\n.icofont-rupee::before {\n content: \"\\ea14\";\n}\n\n.icofont-taka-false::before {\n content: \"\\ea15\";\n}\n\n.icofont-taka-minus::before {\n content: \"\\ea16\";\n}\n\n.icofont-taka-plus::before {\n content: \"\\ea17\";\n}\n\n.icofont-taka-true::before {\n content: \"\\ea18\";\n}\n\n.icofont-taka::before {\n content: \"\\ea19\";\n}\n\n.icofont-turkish-lira-false::before {\n content: \"\\ea1a\";\n}\n\n.icofont-turkish-lira-minus::before {\n content: \"\\ea1b\";\n}\n\n.icofont-turkish-lira-plus::before {\n content: \"\\ea1c\";\n}\n\n.icofont-turkish-lira-true::before {\n content: \"\\ea1d\";\n}\n\n.icofont-turkish-lira::before {\n content: \"\\ea1e\";\n}\n\n.icofont-won-false::before {\n content: \"\\ea1f\";\n}\n\n.icofont-won-minus::before {\n content: \"\\ea20\";\n}\n\n.icofont-won-plus::before {\n content: \"\\ea21\";\n}\n\n.icofont-won-true::before {\n content: \"\\ea22\";\n}\n\n.icofont-won::before {\n content: \"\\ea23\";\n}\n\n.icofont-yen-false::before {\n content: \"\\ea24\";\n}\n\n.icofont-yen-minus::before {\n content: \"\\ea25\";\n}\n\n.icofont-yen-plus::before {\n content: \"\\ea26\";\n}\n\n.icofont-yen-true::before {\n content: \"\\ea27\";\n}\n\n.icofont-yen::before {\n content: \"\\ea28\";\n}\n\n.icofont-android-nexus::before {\n content: \"\\ea29\";\n}\n\n.icofont-android-tablet::before {\n content: \"\\ea2a\";\n}\n\n.icofont-apple-watch::before {\n content: \"\\ea2b\";\n}\n\n.icofont-drawing-tablet::before {\n content: \"\\ea2c\";\n}\n\n.icofont-earphone::before {\n content: \"\\ea2d\";\n}\n\n.icofont-flash-drive::before {\n content: \"\\ea2e\";\n}\n\n.icofont-game-console::before {\n content: \"\\ea2f\";\n}\n\n.icofont-game-controller::before {\n content: \"\\ea30\";\n}\n\n.icofont-game-pad::before {\n content: \"\\ea31\";\n}\n\n.icofont-game::before {\n content: \"\\ea32\";\n}\n\n.icofont-headphone-alt-1::before {\n content: \"\\ea33\";\n}\n\n.icofont-headphone-alt-2::before {\n content: \"\\ea34\";\n}\n\n.icofont-headphone-alt-3::before {\n content: \"\\ea35\";\n}\n\n.icofont-headphone-alt::before {\n content: \"\\ea36\";\n}\n\n.icofont-headphone::before {\n content: \"\\ea37\";\n}\n\n.icofont-htc-one::before {\n content: \"\\ea38\";\n}\n\n.icofont-imac::before {\n content: \"\\ea39\";\n}\n\n.icofont-ipad::before {\n content: \"\\ea3a\";\n}\n\n.icofont-iphone::before {\n content: \"\\ea3b\";\n}\n\n.icofont-ipod-nano::before {\n content: \"\\ea3c\";\n}\n\n.icofont-ipod-touch::before {\n content: \"\\ea3d\";\n}\n\n.icofont-keyboard-alt::before {\n content: \"\\ea3e\";\n}\n\n.icofont-keyboard-wireless::before {\n content: \"\\ea3f\";\n}\n\n.icofont-keyboard::before {\n content: \"\\ea40\";\n}\n\n.icofont-laptop-alt::before {\n content: \"\\ea41\";\n}\n\n.icofont-laptop::before {\n content: \"\\ea42\";\n}\n\n.icofont-macbook::before {\n content: \"\\ea43\";\n}\n\n.icofont-magic-mouse::before {\n content: \"\\ea44\";\n}\n\n.icofont-micro-chip::before {\n content: \"\\ea45\";\n}\n\n.icofont-microphone-alt::before {\n content: \"\\ea46\";\n}\n\n.icofont-microphone::before {\n content: \"\\ea47\";\n}\n\n.icofont-monitor::before {\n content: \"\\ea48\";\n}\n\n.icofont-mouse::before {\n content: \"\\ea49\";\n}\n\n.icofont-mp3-player::before {\n content: \"\\ea4a\";\n}\n\n.icofont-nintendo::before {\n content: \"\\ea4b\";\n}\n\n.icofont-playstation-alt::before {\n content: \"\\ea4c\";\n}\n\n.icofont-psvita::before {\n content: \"\\ea4d\";\n}\n\n.icofont-radio-mic::before {\n content: \"\\ea4e\";\n}\n\n.icofont-radio::before {\n content: \"\\ea4f\";\n}\n\n.icofont-refrigerator::before {\n content: \"\\ea50\";\n}\n\n.icofont-samsung-galaxy::before {\n content: \"\\ea51\";\n}\n\n.icofont-surface-tablet::before {\n content: \"\\ea52\";\n}\n\n.icofont-ui-head-phone::before {\n content: \"\\ea53\";\n}\n\n.icofont-ui-keyboard::before {\n content: \"\\ea54\";\n}\n\n.icofont-washing-machine::before {\n content: \"\\ea55\";\n}\n\n.icofont-wifi-router::before {\n content: \"\\ea56\";\n}\n\n.icofont-wii-u::before {\n content: \"\\ea57\";\n}\n\n.icofont-windows-lumia::before {\n content: \"\\ea58\";\n}\n\n.icofont-wireless-mouse::before {\n content: \"\\ea59\";\n}\n\n.icofont-xbox-360::before {\n content: \"\\ea5a\";\n}\n\n.icofont-arrow-down::before {\n content: \"\\ea5b\";\n}\n\n.icofont-arrow-left::before {\n content: \"\\ea5c\";\n}\n\n.icofont-arrow-right::before {\n content: \"\\ea5d\";\n}\n\n.icofont-arrow-up::before {\n content: \"\\ea5e\";\n}\n\n.icofont-block-down::before {\n content: \"\\ea5f\";\n}\n\n.icofont-block-left::before {\n content: \"\\ea60\";\n}\n\n.icofont-block-right::before {\n content: \"\\ea61\";\n}\n\n.icofont-block-up::before {\n content: \"\\ea62\";\n}\n\n.icofont-bubble-down::before {\n content: \"\\ea63\";\n}\n\n.icofont-bubble-left::before {\n content: \"\\ea64\";\n}\n\n.icofont-bubble-right::before {\n content: \"\\ea65\";\n}\n\n.icofont-bubble-up::before {\n content: \"\\ea66\";\n}\n\n.icofont-caret-down::before {\n content: \"\\ea67\";\n}\n\n.icofont-caret-left::before {\n content: \"\\ea68\";\n}\n\n.icofont-caret-right::before {\n content: \"\\ea69\";\n}\n\n.icofont-caret-up::before {\n content: \"\\ea6a\";\n}\n\n.icofont-circled-down::before {\n content: \"\\ea6b\";\n}\n\n.icofont-circled-left::before {\n content: \"\\ea6c\";\n}\n\n.icofont-circled-right::before {\n content: \"\\ea6d\";\n}\n\n.icofont-circled-up::before {\n content: \"\\ea6e\";\n}\n\n.icofont-collapse::before {\n content: \"\\ea6f\";\n}\n\n.icofont-cursor-drag::before {\n content: \"\\ea70\";\n}\n\n.icofont-curved-double-left::before {\n content: \"\\ea71\";\n}\n\n.icofont-curved-double-right::before {\n content: \"\\ea72\";\n}\n\n.icofont-curved-down::before {\n content: \"\\ea73\";\n}\n\n.icofont-curved-left::before {\n content: \"\\ea74\";\n}\n\n.icofont-curved-right::before {\n content: \"\\ea75\";\n}\n\n.icofont-curved-up::before {\n content: \"\\ea76\";\n}\n\n.icofont-dotted-down::before {\n content: \"\\ea77\";\n}\n\n.icofont-dotted-left::before {\n content: \"\\ea78\";\n}\n\n.icofont-dotted-right::before {\n content: \"\\ea79\";\n}\n\n.icofont-dotted-up::before {\n content: \"\\ea7a\";\n}\n\n.icofont-double-left::before {\n content: \"\\ea7b\";\n}\n\n.icofont-double-right::before {\n content: \"\\ea7c\";\n}\n\n.icofont-expand-alt::before {\n content: \"\\ea7d\";\n}\n\n.icofont-hand-down::before {\n content: \"\\ea7e\";\n}\n\n.icofont-hand-drag::before {\n content: \"\\ea7f\";\n}\n\n.icofont-hand-drag1::before {\n content: \"\\ea80\";\n}\n\n.icofont-hand-drag2::before {\n content: \"\\ea81\";\n}\n\n.icofont-hand-drawn-alt-down::before {\n content: \"\\ea82\";\n}\n\n.icofont-hand-drawn-alt-left::before {\n content: \"\\ea83\";\n}\n\n.icofont-hand-drawn-alt-right::before {\n content: \"\\ea84\";\n}\n\n.icofont-hand-drawn-alt-up::before {\n content: \"\\ea85\";\n}\n\n.icofont-hand-drawn-down::before {\n content: \"\\ea86\";\n}\n\n.icofont-hand-drawn-left::before {\n content: \"\\ea87\";\n}\n\n.icofont-hand-drawn-right::before {\n content: \"\\ea88\";\n}\n\n.icofont-hand-drawn-up::before {\n content: \"\\ea89\";\n}\n\n.icofont-hand-grippers::before {\n content: \"\\ea8a\";\n}\n\n.icofont-hand-left::before {\n content: \"\\ea8b\";\n}\n\n.icofont-hand-right::before {\n content: \"\\ea8c\";\n}\n\n.icofont-hand-up::before {\n content: \"\\ea8d\";\n}\n\n.icofont-line-block-down::before {\n content: \"\\ea8e\";\n}\n\n.icofont-line-block-left::before {\n content: \"\\ea8f\";\n}\n\n.icofont-line-block-right::before {\n content: \"\\ea90\";\n}\n\n.icofont-line-block-up::before {\n content: \"\\ea91\";\n}\n\n.icofont-long-arrow-down::before {\n content: \"\\ea92\";\n}\n\n.icofont-long-arrow-left::before {\n content: \"\\ea93\";\n}\n\n.icofont-long-arrow-right::before {\n content: \"\\ea94\";\n}\n\n.icofont-long-arrow-up::before {\n content: \"\\ea95\";\n}\n\n.icofont-rounded-collapse::before {\n content: \"\\ea96\";\n}\n\n.icofont-rounded-double-left::before {\n content: \"\\ea97\";\n}\n\n.icofont-rounded-double-right::before {\n content: \"\\ea98\";\n}\n\n.icofont-rounded-down::before {\n content: \"\\ea99\";\n}\n\n.icofont-rounded-expand::before {\n content: \"\\ea9a\";\n}\n\n.icofont-rounded-left-down::before {\n content: \"\\ea9b\";\n}\n\n.icofont-rounded-left-up::before {\n content: \"\\ea9c\";\n}\n\n.icofont-rounded-left::before {\n content: \"\\ea9d\";\n}\n\n.icofont-rounded-right-down::before {\n content: \"\\ea9e\";\n}\n\n.icofont-rounded-right-up::before {\n content: \"\\ea9f\";\n}\n\n.icofont-rounded-right::before {\n content: \"\\eaa0\";\n}\n\n.icofont-rounded-up::before {\n content: \"\\eaa1\";\n}\n\n.icofont-scroll-bubble-down::before {\n content: \"\\eaa2\";\n}\n\n.icofont-scroll-bubble-left::before {\n content: \"\\eaa3\";\n}\n\n.icofont-scroll-bubble-right::before {\n content: \"\\eaa4\";\n}\n\n.icofont-scroll-bubble-up::before {\n content: \"\\eaa5\";\n}\n\n.icofont-scroll-double-down::before {\n content: \"\\eaa6\";\n}\n\n.icofont-scroll-double-left::before {\n content: \"\\eaa7\";\n}\n\n.icofont-scroll-double-right::before {\n content: \"\\eaa8\";\n}\n\n.icofont-scroll-double-up::before {\n content: \"\\eaa9\";\n}\n\n.icofont-scroll-down::before {\n content: \"\\eaaa\";\n}\n\n.icofont-scroll-left::before {\n content: \"\\eaab\";\n}\n\n.icofont-scroll-long-down::before {\n content: \"\\eaac\";\n}\n\n.icofont-scroll-long-left::before {\n content: \"\\eaad\";\n}\n\n.icofont-scroll-long-right::before {\n content: \"\\eaae\";\n}\n\n.icofont-scroll-long-up::before {\n content: \"\\eaaf\";\n}\n\n.icofont-scroll-right::before {\n content: \"\\eab0\";\n}\n\n.icofont-scroll-up::before {\n content: \"\\eab1\";\n}\n\n.icofont-simple-down::before {\n content: \"\\eab2\";\n}\n\n.icofont-simple-left-down::before {\n content: \"\\eab3\";\n}\n\n.icofont-simple-left-up::before {\n content: \"\\eab4\";\n}\n\n.icofont-simple-left::before {\n content: \"\\eab5\";\n}\n\n.icofont-simple-right-down::before {\n content: \"\\eab6\";\n}\n\n.icofont-simple-right-up::before {\n content: \"\\eab7\";\n}\n\n.icofont-simple-right::before {\n content: \"\\eab8\";\n}\n\n.icofont-simple-up::before {\n content: \"\\eab9\";\n}\n\n.icofont-square-down::before {\n content: \"\\eaba\";\n}\n\n.icofont-square-left::before {\n content: \"\\eabb\";\n}\n\n.icofont-square-right::before {\n content: \"\\eabc\";\n}\n\n.icofont-square-up::before {\n content: \"\\eabd\";\n}\n\n.icofont-stylish-down::before {\n content: \"\\eabe\";\n}\n\n.icofont-stylish-left::before {\n content: \"\\eabf\";\n}\n\n.icofont-stylish-right::before {\n content: \"\\eac0\";\n}\n\n.icofont-stylish-up::before {\n content: \"\\eac1\";\n}\n\n.icofont-swoosh-down::before {\n content: \"\\eac2\";\n}\n\n.icofont-swoosh-left::before {\n content: \"\\eac3\";\n}\n\n.icofont-swoosh-right::before {\n content: \"\\eac4\";\n}\n\n.icofont-swoosh-up::before {\n content: \"\\eac5\";\n}\n\n.icofont-thin-double-left::before {\n content: \"\\eac6\";\n}\n\n.icofont-thin-double-right::before {\n content: \"\\eac7\";\n}\n\n.icofont-thin-down::before {\n content: \"\\eac8\";\n}\n\n.icofont-thin-left::before {\n content: \"\\eac9\";\n}\n\n.icofont-thin-right::before {\n content: \"\\eaca\";\n}\n\n.icofont-thin-up::before {\n content: \"\\eacb\";\n}\n\n.icofont-abc::before {\n content: \"\\eacc\";\n}\n\n.icofont-atom::before {\n content: \"\\eacd\";\n}\n\n.icofont-award::before {\n content: \"\\eace\";\n}\n\n.icofont-bell-alt::before {\n content: \"\\eacf\";\n}\n\n.icofont-black-board::before {\n content: \"\\ead0\";\n}\n\n.icofont-book-alt::before {\n content: \"\\ead1\";\n}\n\n.icofont-book::before {\n content: \"\\ead2\";\n}\n\n.icofont-brainstorming::before {\n content: \"\\ead3\";\n}\n\n.icofont-certificate-alt-1::before {\n content: \"\\ead4\";\n}\n\n.icofont-certificate-alt-2::before {\n content: \"\\ead5\";\n}\n\n.icofont-certificate::before {\n content: \"\\ead6\";\n}\n\n.icofont-education::before {\n content: \"\\ead7\";\n}\n\n.icofont-electron::before {\n content: \"\\ead8\";\n}\n\n.icofont-fountain-pen::before {\n content: \"\\ead9\";\n}\n\n.icofont-globe-alt::before {\n content: \"\\eada\";\n}\n\n.icofont-graduate-alt::before {\n content: \"\\eadb\";\n}\n\n.icofont-graduate::before {\n content: \"\\eadc\";\n}\n\n.icofont-group-students::before {\n content: \"\\eadd\";\n}\n\n.icofont-hat-alt::before {\n content: \"\\eade\";\n}\n\n.icofont-hat::before {\n content: \"\\eadf\";\n}\n\n.icofont-instrument::before {\n content: \"\\eae0\";\n}\n\n.icofont-lamp-light::before {\n content: \"\\eae1\";\n}\n\n.icofont-medal::before {\n content: \"\\eae2\";\n}\n\n.icofont-microscope-alt::before {\n content: \"\\eae3\";\n}\n\n.icofont-microscope::before {\n content: \"\\eae4\";\n}\n\n.icofont-paper::before {\n content: \"\\eae5\";\n}\n\n.icofont-pen-alt-4::before {\n content: \"\\eae6\";\n}\n\n.icofont-pen-nib::before {\n content: \"\\eae7\";\n}\n\n.icofont-pencil-alt-5::before {\n content: \"\\eae8\";\n}\n\n.icofont-quill-pen::before {\n content: \"\\eae9\";\n}\n\n.icofont-read-book-alt::before {\n content: \"\\eaea\";\n}\n\n.icofont-read-book::before {\n content: \"\\eaeb\";\n}\n\n.icofont-school-bag::before {\n content: \"\\eaec\";\n}\n\n.icofont-school-bus::before {\n content: \"\\eaed\";\n}\n\n.icofont-student-alt::before {\n content: \"\\eaee\";\n}\n\n.icofont-student::before {\n content: \"\\eaef\";\n}\n\n.icofont-teacher::before {\n content: \"\\eaf0\";\n}\n\n.icofont-test-bulb::before {\n content: \"\\eaf1\";\n}\n\n.icofont-test-tube-alt::before {\n content: \"\\eaf2\";\n}\n\n.icofont-university::before {\n content: \"\\eaf3\";\n}\n\n.icofont-angry::before {\n content: \"\\eaf4\";\n}\n\n.icofont-astonished::before {\n content: \"\\eaf5\";\n}\n\n.icofont-confounded::before {\n content: \"\\eaf6\";\n}\n\n.icofont-confused::before {\n content: \"\\eaf7\";\n}\n\n.icofont-crying::before {\n content: \"\\eaf8\";\n}\n\n.icofont-dizzy::before {\n content: \"\\eaf9\";\n}\n\n.icofont-expressionless::before {\n content: \"\\eafa\";\n}\n\n.icofont-heart-eyes::before {\n content: \"\\eafb\";\n}\n\n.icofont-laughing::before {\n content: \"\\eafc\";\n}\n\n.icofont-nerd-smile::before {\n content: \"\\eafd\";\n}\n\n.icofont-open-mouth::before {\n content: \"\\eafe\";\n}\n\n.icofont-rage::before {\n content: \"\\eaff\";\n}\n\n.icofont-rolling-eyes::before {\n content: \"\\eb00\";\n}\n\n.icofont-sad::before {\n content: \"\\eb01\";\n}\n\n.icofont-simple-smile::before {\n content: \"\\eb02\";\n}\n\n.icofont-slightly-smile::before {\n content: \"\\eb03\";\n}\n\n.icofont-smirk::before {\n content: \"\\eb04\";\n}\n\n.icofont-stuck-out-tongue::before {\n content: \"\\eb05\";\n}\n\n.icofont-wink-smile::before {\n content: \"\\eb06\";\n}\n\n.icofont-worried::before {\n content: \"\\eb07\";\n}\n\n.icofont-file-alt::before {\n content: \"\\eb08\";\n}\n\n.icofont-file-audio::before {\n content: \"\\eb09\";\n}\n\n.icofont-file-avi-mp4::before {\n content: \"\\eb0a\";\n}\n\n.icofont-file-bmp::before {\n content: \"\\eb0b\";\n}\n\n.icofont-file-code::before {\n content: \"\\eb0c\";\n}\n\n.icofont-file-css::before {\n content: \"\\eb0d\";\n}\n\n.icofont-file-document::before {\n content: \"\\eb0e\";\n}\n\n.icofont-file-eps::before {\n content: \"\\eb0f\";\n}\n\n.icofont-file-excel::before {\n content: \"\\eb10\";\n}\n\n.icofont-file-exe::before {\n content: \"\\eb11\";\n}\n\n.icofont-file-file::before {\n content: \"\\eb12\";\n}\n\n.icofont-file-flv::before {\n content: \"\\eb13\";\n}\n\n.icofont-file-gif::before {\n content: \"\\eb14\";\n}\n\n.icofont-file-html5::before {\n content: \"\\eb15\";\n}\n\n.icofont-file-image::before {\n content: \"\\eb16\";\n}\n\n.icofont-file-iso::before {\n content: \"\\eb17\";\n}\n\n.icofont-file-java::before {\n content: \"\\eb18\";\n}\n\n.icofont-file-javascript::before {\n content: \"\\eb19\";\n}\n\n.icofont-file-jpg::before {\n content: \"\\eb1a\";\n}\n\n.icofont-file-midi::before {\n content: \"\\eb1b\";\n}\n\n.icofont-file-mov::before {\n content: \"\\eb1c\";\n}\n\n.icofont-file-mp3::before {\n content: \"\\eb1d\";\n}\n\n.icofont-file-pdf::before {\n content: \"\\eb1e\";\n}\n\n.icofont-file-php::before {\n content: \"\\eb1f\";\n}\n\n.icofont-file-png::before {\n content: \"\\eb20\";\n}\n\n.icofont-file-powerpoint::before {\n content: \"\\eb21\";\n}\n\n.icofont-file-presentation::before {\n content: \"\\eb22\";\n}\n\n.icofont-file-psb::before {\n content: \"\\eb23\";\n}\n\n.icofont-file-psd::before {\n content: \"\\eb24\";\n}\n\n.icofont-file-python::before {\n content: \"\\eb25\";\n}\n\n.icofont-file-ruby::before {\n content: \"\\eb26\";\n}\n\n.icofont-file-spreadsheet::before {\n content: \"\\eb27\";\n}\n\n.icofont-file-sql::before {\n content: \"\\eb28\";\n}\n\n.icofont-file-svg::before {\n content: \"\\eb29\";\n}\n\n.icofont-file-text::before {\n content: \"\\eb2a\";\n}\n\n.icofont-file-tiff::before {\n content: \"\\eb2b\";\n}\n\n.icofont-file-video::before {\n content: \"\\eb2c\";\n}\n\n.icofont-file-wave::before {\n content: \"\\eb2d\";\n}\n\n.icofont-file-wmv::before {\n content: \"\\eb2e\";\n}\n\n.icofont-file-word::before {\n content: \"\\eb2f\";\n}\n\n.icofont-file-zip::before {\n content: \"\\eb30\";\n}\n\n.icofont-cycling-alt::before {\n content: \"\\eb31\";\n}\n\n.icofont-cycling::before {\n content: \"\\eb32\";\n}\n\n.icofont-dumbbell::before {\n content: \"\\eb33\";\n}\n\n.icofont-dumbbells::before {\n content: \"\\eb34\";\n}\n\n.icofont-gym-alt-1::before {\n content: \"\\eb35\";\n}\n\n.icofont-gym-alt-2::before {\n content: \"\\eb36\";\n}\n\n.icofont-gym-alt-3::before {\n content: \"\\eb37\";\n}\n\n.icofont-gym::before {\n content: \"\\eb38\";\n}\n\n.icofont-muscle-weight::before {\n content: \"\\eb39\";\n}\n\n.icofont-muscle::before {\n content: \"\\eb3a\";\n}\n\n.icofont-apple::before {\n content: \"\\eb3b\";\n}\n\n.icofont-arabian-coffee::before {\n content: \"\\eb3c\";\n}\n\n.icofont-artichoke::before {\n content: \"\\eb3d\";\n}\n\n.icofont-asparagus::before {\n content: \"\\eb3e\";\n}\n\n.icofont-avocado::before {\n content: \"\\eb3f\";\n}\n\n.icofont-baby-food::before {\n content: \"\\eb40\";\n}\n\n.icofont-banana::before {\n content: \"\\eb41\";\n}\n\n.icofont-bbq::before {\n content: \"\\eb42\";\n}\n\n.icofont-beans::before {\n content: \"\\eb43\";\n}\n\n.icofont-beer::before {\n content: \"\\eb44\";\n}\n\n.icofont-bell-pepper-capsicum::before {\n content: \"\\eb45\";\n}\n\n.icofont-birthday-cake::before {\n content: \"\\eb46\";\n}\n\n.icofont-bread::before {\n content: \"\\eb47\";\n}\n\n.icofont-broccoli::before {\n content: \"\\eb48\";\n}\n\n.icofont-burger::before {\n content: \"\\eb49\";\n}\n\n.icofont-cabbage::before {\n content: \"\\eb4a\";\n}\n\n.icofont-carrot::before {\n content: \"\\eb4b\";\n}\n\n.icofont-cauli-flower::before {\n content: \"\\eb4c\";\n}\n\n.icofont-cheese::before {\n content: \"\\eb4d\";\n}\n\n.icofont-chef::before {\n content: \"\\eb4e\";\n}\n\n.icofont-cherry::before {\n content: \"\\eb4f\";\n}\n\n.icofont-chicken-fry::before {\n content: \"\\eb50\";\n}\n\n.icofont-chicken::before {\n content: \"\\eb51\";\n}\n\n.icofont-cocktail::before {\n content: \"\\eb52\";\n}\n\n.icofont-coconut-water::before {\n content: \"\\eb53\";\n}\n\n.icofont-coconut::before {\n content: \"\\eb54\";\n}\n\n.icofont-coffee-alt::before {\n content: \"\\eb55\";\n}\n\n.icofont-coffee-cup::before {\n content: \"\\eb56\";\n}\n\n.icofont-coffee-mug::before {\n content: \"\\eb57\";\n}\n\n.icofont-coffee-pot::before {\n content: \"\\eb58\";\n}\n\n.icofont-cola::before {\n content: \"\\eb59\";\n}\n\n.icofont-corn::before {\n content: \"\\eb5a\";\n}\n\n.icofont-croissant::before {\n content: \"\\eb5b\";\n}\n\n.icofont-crop-plant::before {\n content: \"\\eb5c\";\n}\n\n.icofont-cucumber::before {\n content: \"\\eb5d\";\n}\n\n.icofont-culinary::before {\n content: \"\\eb5e\";\n}\n\n.icofont-cup-cake::before {\n content: \"\\eb5f\";\n}\n\n.icofont-dining-table::before {\n content: \"\\eb60\";\n}\n\n.icofont-donut::before {\n content: \"\\eb61\";\n}\n\n.icofont-egg-plant::before {\n content: \"\\eb62\";\n}\n\n.icofont-egg-poached::before {\n content: \"\\eb63\";\n}\n\n.icofont-farmer-alt::before {\n content: \"\\eb64\";\n}\n\n.icofont-farmer::before {\n content: \"\\eb65\";\n}\n\n.icofont-fast-food::before {\n content: \"\\eb66\";\n}\n\n.icofont-food-basket::before {\n content: \"\\eb67\";\n}\n\n.icofont-food-cart::before {\n content: \"\\eb68\";\n}\n\n.icofont-fork-and-knife::before {\n content: \"\\eb69\";\n}\n\n.icofont-french-fries::before {\n content: \"\\eb6a\";\n}\n\n.icofont-fruits::before {\n content: \"\\eb6b\";\n}\n\n.icofont-grapes::before {\n content: \"\\eb6c\";\n}\n\n.icofont-honey::before {\n content: \"\\eb6d\";\n}\n\n.icofont-hot-dog::before {\n content: \"\\eb6e\";\n}\n\n.icofont-ice-cream-alt::before {\n content: \"\\eb6f\";\n}\n\n.icofont-ice-cream::before {\n content: \"\\eb70\";\n}\n\n.icofont-juice::before {\n content: \"\\eb71\";\n}\n\n.icofont-ketchup::before {\n content: \"\\eb72\";\n}\n\n.icofont-kiwi::before {\n content: \"\\eb73\";\n}\n\n.icofont-layered-cake::before {\n content: \"\\eb74\";\n}\n\n.icofont-lemon-alt::before {\n content: \"\\eb75\";\n}\n\n.icofont-lemon::before {\n content: \"\\eb76\";\n}\n\n.icofont-lobster::before {\n content: \"\\eb77\";\n}\n\n.icofont-mango::before {\n content: \"\\eb78\";\n}\n\n.icofont-milk::before {\n content: \"\\eb79\";\n}\n\n.icofont-mushroom::before {\n content: \"\\eb7a\";\n}\n\n.icofont-noodles::before {\n content: \"\\eb7b\";\n}\n\n.icofont-onion::before {\n content: \"\\eb7c\";\n}\n\n.icofont-orange::before {\n content: \"\\eb7d\";\n}\n\n.icofont-pear::before {\n content: \"\\eb7e\";\n}\n\n.icofont-peas::before {\n content: \"\\eb7f\";\n}\n\n.icofont-pepper::before {\n content: \"\\eb80\";\n}\n\n.icofont-pie-alt::before {\n content: \"\\eb81\";\n}\n\n.icofont-pie::before {\n content: \"\\eb82\";\n}\n\n.icofont-pineapple::before {\n content: \"\\eb83\";\n}\n\n.icofont-pizza-slice::before {\n content: \"\\eb84\";\n}\n\n.icofont-pizza::before {\n content: \"\\eb85\";\n}\n\n.icofont-plant::before {\n content: \"\\eb86\";\n}\n\n.icofont-popcorn::before {\n content: \"\\eb87\";\n}\n\n.icofont-potato::before {\n content: \"\\eb88\";\n}\n\n.icofont-pumpkin::before {\n content: \"\\eb89\";\n}\n\n.icofont-raddish::before {\n content: \"\\eb8a\";\n}\n\n.icofont-restaurant-menu::before {\n content: \"\\eb8b\";\n}\n\n.icofont-restaurant::before {\n content: \"\\eb8c\";\n}\n\n.icofont-salt-and-pepper::before {\n content: \"\\eb8d\";\n}\n\n.icofont-sandwich::before {\n content: \"\\eb8e\";\n}\n\n.icofont-sausage::before {\n content: \"\\eb8f\";\n}\n\n.icofont-soft-drinks::before {\n content: \"\\eb90\";\n}\n\n.icofont-soup-bowl::before {\n content: \"\\eb91\";\n}\n\n.icofont-spoon-and-fork::before {\n content: \"\\eb92\";\n}\n\n.icofont-steak::before {\n content: \"\\eb93\";\n}\n\n.icofont-strawberry::before {\n content: \"\\eb94\";\n}\n\n.icofont-sub-sandwich::before {\n content: \"\\eb95\";\n}\n\n.icofont-sushi::before {\n content: \"\\eb96\";\n}\n\n.icofont-taco::before {\n content: \"\\eb97\";\n}\n\n.icofont-tea-pot::before {\n content: \"\\eb98\";\n}\n\n.icofont-tea::before {\n content: \"\\eb99\";\n}\n\n.icofont-tomato::before {\n content: \"\\eb9a\";\n}\n\n.icofont-watermelon::before {\n content: \"\\eb9b\";\n}\n\n.icofont-wheat::before {\n content: \"\\eb9c\";\n}\n\n.icofont-baby-backpack::before {\n content: \"\\eb9d\";\n}\n\n.icofont-baby-cloth::before {\n content: \"\\eb9e\";\n}\n\n.icofont-baby-milk-bottle::before {\n content: \"\\eb9f\";\n}\n\n.icofont-baby-trolley::before {\n content: \"\\eba0\";\n}\n\n.icofont-baby::before {\n content: \"\\eba1\";\n}\n\n.icofont-candy::before {\n content: \"\\eba2\";\n}\n\n.icofont-holding-hands::before {\n content: \"\\eba3\";\n}\n\n.icofont-infant-nipple::before {\n content: \"\\eba4\";\n}\n\n.icofont-kids-scooter::before {\n content: \"\\eba5\";\n}\n\n.icofont-safety-pin::before {\n content: \"\\eba6\";\n}\n\n.icofont-teddy-bear::before {\n content: \"\\eba7\";\n}\n\n.icofont-toy-ball::before {\n content: \"\\eba8\";\n}\n\n.icofont-toy-cat::before {\n content: \"\\eba9\";\n}\n\n.icofont-toy-duck::before {\n content: \"\\ebaa\";\n}\n\n.icofont-toy-elephant::before {\n content: \"\\ebab\";\n}\n\n.icofont-toy-hand::before {\n content: \"\\ebac\";\n}\n\n.icofont-toy-horse::before {\n content: \"\\ebad\";\n}\n\n.icofont-toy-lattu::before {\n content: \"\\ebae\";\n}\n\n.icofont-toy-train::before {\n content: \"\\ebaf\";\n}\n\n.icofont-burglar::before {\n content: \"\\ebb0\";\n}\n\n.icofont-cannon-firing::before {\n content: \"\\ebb1\";\n}\n\n.icofont-cc-camera::before {\n content: \"\\ebb2\";\n}\n\n.icofont-cop-badge::before {\n content: \"\\ebb3\";\n}\n\n.icofont-cop::before {\n content: \"\\ebb4\";\n}\n\n.icofont-court-hammer::before {\n content: \"\\ebb5\";\n}\n\n.icofont-court::before {\n content: \"\\ebb6\";\n}\n\n.icofont-finger-print::before {\n content: \"\\ebb7\";\n}\n\n.icofont-gavel::before {\n content: \"\\ebb8\";\n}\n\n.icofont-handcuff-alt::before {\n content: \"\\ebb9\";\n}\n\n.icofont-handcuff::before {\n content: \"\\ebba\";\n}\n\n.icofont-investigation::before {\n content: \"\\ebbb\";\n}\n\n.icofont-investigator::before {\n content: \"\\ebbc\";\n}\n\n.icofont-jail::before {\n content: \"\\ebbd\";\n}\n\n.icofont-judge::before {\n content: \"\\ebbe\";\n}\n\n.icofont-law-alt-1::before {\n content: \"\\ebbf\";\n}\n\n.icofont-law-alt-2::before {\n content: \"\\ebc0\";\n}\n\n.icofont-law-alt-3::before {\n content: \"\\ebc1\";\n}\n\n.icofont-law-book::before {\n content: \"\\ebc2\";\n}\n\n.icofont-law-document::before {\n content: \"\\ebc3\";\n}\n\n.icofont-law-order::before {\n content: \"\\ebc4\";\n}\n\n.icofont-law-protect::before {\n content: \"\\ebc5\";\n}\n\n.icofont-law-scales::before {\n content: \"\\ebc6\";\n}\n\n.icofont-law::before {\n content: \"\\ebc7\";\n}\n\n.icofont-lawyer-alt-1::before {\n content: \"\\ebc8\";\n}\n\n.icofont-lawyer-alt-2::before {\n content: \"\\ebc9\";\n}\n\n.icofont-lawyer::before {\n content: \"\\ebca\";\n}\n\n.icofont-legal::before {\n content: \"\\ebcb\";\n}\n\n.icofont-pistol::before {\n content: \"\\ebcc\";\n}\n\n.icofont-police-badge::before {\n content: \"\\ebcd\";\n}\n\n.icofont-police-cap::before {\n content: \"\\ebce\";\n}\n\n.icofont-police-car-alt-1::before {\n content: \"\\ebcf\";\n}\n\n.icofont-police-car-alt-2::before {\n content: \"\\ebd0\";\n}\n\n.icofont-police-car::before {\n content: \"\\ebd1\";\n}\n\n.icofont-police-hat::before {\n content: \"\\ebd2\";\n}\n\n.icofont-police-van::before {\n content: \"\\ebd3\";\n}\n\n.icofont-police::before {\n content: \"\\ebd4\";\n}\n\n.icofont-thief-alt::before {\n content: \"\\ebd5\";\n}\n\n.icofont-thief::before {\n content: \"\\ebd6\";\n}\n\n.icofont-abacus-alt::before {\n content: \"\\ebd7\";\n}\n\n.icofont-abacus::before {\n content: \"\\ebd8\";\n}\n\n.icofont-angle-180::before {\n content: \"\\ebd9\";\n}\n\n.icofont-angle-45::before {\n content: \"\\ebda\";\n}\n\n.icofont-angle-90::before {\n content: \"\\ebdb\";\n}\n\n.icofont-angle::before {\n content: \"\\ebdc\";\n}\n\n.icofont-calculator-alt-1::before {\n content: \"\\ebdd\";\n}\n\n.icofont-calculator-alt-2::before {\n content: \"\\ebde\";\n}\n\n.icofont-calculator::before {\n content: \"\\ebdf\";\n}\n\n.icofont-circle-ruler-alt::before {\n content: \"\\ebe0\";\n}\n\n.icofont-circle-ruler::before {\n content: \"\\ebe1\";\n}\n\n.icofont-compass-alt-1::before {\n content: \"\\ebe2\";\n}\n\n.icofont-compass-alt-2::before {\n content: \"\\ebe3\";\n}\n\n.icofont-compass-alt-3::before {\n content: \"\\ebe4\";\n}\n\n.icofont-compass-alt-4::before {\n content: \"\\ebe5\";\n}\n\n.icofont-golden-ratio::before {\n content: \"\\ebe6\";\n}\n\n.icofont-marker-alt-1::before {\n content: \"\\ebe7\";\n}\n\n.icofont-marker-alt-2::before {\n content: \"\\ebe8\";\n}\n\n.icofont-marker-alt-3::before {\n content: \"\\ebe9\";\n}\n\n.icofont-marker::before {\n content: \"\\ebea\";\n}\n\n.icofont-math::before {\n content: \"\\ebeb\";\n}\n\n.icofont-mathematical-alt-1::before {\n content: \"\\ebec\";\n}\n\n.icofont-mathematical-alt-2::before {\n content: \"\\ebed\";\n}\n\n.icofont-mathematical::before {\n content: \"\\ebee\";\n}\n\n.icofont-pen-alt-1::before {\n content: \"\\ebef\";\n}\n\n.icofont-pen-alt-2::before {\n content: \"\\ebf0\";\n}\n\n.icofont-pen-alt-3::before {\n content: \"\\ebf1\";\n}\n\n.icofont-pen-holder-alt-1::before {\n content: \"\\ebf2\";\n}\n\n.icofont-pen-holder::before {\n content: \"\\ebf3\";\n}\n\n.icofont-pen::before {\n content: \"\\ebf4\";\n}\n\n.icofont-pencil-alt-1::before {\n content: \"\\ebf5\";\n}\n\n.icofont-pencil-alt-2::before {\n content: \"\\ebf6\";\n}\n\n.icofont-pencil-alt-3::before {\n content: \"\\ebf7\";\n}\n\n.icofont-pencil-alt-4::before {\n content: \"\\ebf8\";\n}\n\n.icofont-pencil::before {\n content: \"\\ebf9\";\n}\n\n.icofont-ruler-alt-1::before {\n content: \"\\ebfa\";\n}\n\n.icofont-ruler-alt-2::before {\n content: \"\\ebfb\";\n}\n\n.icofont-ruler-compass-alt::before {\n content: \"\\ebfc\";\n}\n\n.icofont-ruler-compass::before {\n content: \"\\ebfd\";\n}\n\n.icofont-ruler-pencil-alt-1::before {\n content: \"\\ebfe\";\n}\n\n.icofont-ruler-pencil-alt-2::before {\n content: \"\\ebff\";\n}\n\n.icofont-ruler-pencil::before {\n content: \"\\ec00\";\n}\n\n.icofont-ruler::before {\n content: \"\\ec01\";\n}\n\n.icofont-rulers-alt::before {\n content: \"\\ec02\";\n}\n\n.icofont-rulers::before {\n content: \"\\ec03\";\n}\n\n.icofont-square-root::before {\n content: \"\\ec04\";\n}\n\n.icofont-ui-calculator::before {\n content: \"\\ec05\";\n}\n\n.icofont-aids::before {\n content: \"\\ec06\";\n}\n\n.icofont-ambulance-crescent::before {\n content: \"\\ec07\";\n}\n\n.icofont-ambulance-cross::before {\n content: \"\\ec08\";\n}\n\n.icofont-ambulance::before {\n content: \"\\ec09\";\n}\n\n.icofont-autism::before {\n content: \"\\ec0a\";\n}\n\n.icofont-bandage::before {\n content: \"\\ec0b\";\n}\n\n.icofont-blind::before {\n content: \"\\ec0c\";\n}\n\n.icofont-blood-drop::before {\n content: \"\\ec0d\";\n}\n\n.icofont-blood-test::before {\n content: \"\\ec0e\";\n}\n\n.icofont-blood::before {\n content: \"\\ec0f\";\n}\n\n.icofont-brain-alt::before {\n content: \"\\ec10\";\n}\n\n.icofont-brain::before {\n content: \"\\ec11\";\n}\n\n.icofont-capsule::before {\n content: \"\\ec12\";\n}\n\n.icofont-crutch::before {\n content: \"\\ec13\";\n}\n\n.icofont-disabled::before {\n content: \"\\ec14\";\n}\n\n.icofont-dna-alt-1::before {\n content: \"\\ec15\";\n}\n\n.icofont-dna-alt-2::before {\n content: \"\\ec16\";\n}\n\n.icofont-dna::before {\n content: \"\\ec17\";\n}\n\n.icofont-doctor-alt::before {\n content: \"\\ec18\";\n}\n\n.icofont-doctor::before {\n content: \"\\ec19\";\n}\n\n.icofont-drug-pack::before {\n content: \"\\ec1a\";\n}\n\n.icofont-drug::before {\n content: \"\\ec1b\";\n}\n\n.icofont-first-aid-alt::before {\n content: \"\\ec1c\";\n}\n\n.icofont-first-aid::before {\n content: \"\\ec1d\";\n}\n\n.icofont-heart-beat-alt::before {\n content: \"\\ec1e\";\n}\n\n.icofont-heart-beat::before {\n content: \"\\ec1f\";\n}\n\n.icofont-heartbeat::before {\n content: \"\\ec20\";\n}\n\n.icofont-herbal::before {\n content: \"\\ec21\";\n}\n\n.icofont-hospital::before {\n content: \"\\ec22\";\n}\n\n.icofont-icu::before {\n content: \"\\ec23\";\n}\n\n.icofont-injection-syringe::before {\n content: \"\\ec24\";\n}\n\n.icofont-laboratory::before {\n content: \"\\ec25\";\n}\n\n.icofont-medical-sign-alt::before {\n content: \"\\ec26\";\n}\n\n.icofont-medical-sign::before {\n content: \"\\ec27\";\n}\n\n.icofont-nurse-alt::before {\n content: \"\\ec28\";\n}\n\n.icofont-nurse::before {\n content: \"\\ec29\";\n}\n\n.icofont-nursing-home::before {\n content: \"\\ec2a\";\n}\n\n.icofont-operation-theater::before {\n content: \"\\ec2b\";\n}\n\n.icofont-paralysis-disability::before {\n content: \"\\ec2c\";\n}\n\n.icofont-patient-bed::before {\n content: \"\\ec2d\";\n}\n\n.icofont-patient-file::before {\n content: \"\\ec2e\";\n}\n\n.icofont-pills::before {\n content: \"\\ec2f\";\n}\n\n.icofont-prescription::before {\n content: \"\\ec30\";\n}\n\n.icofont-pulse::before {\n content: \"\\ec31\";\n}\n\n.icofont-stethoscope-alt::before {\n content: \"\\ec32\";\n}\n\n.icofont-stethoscope::before {\n content: \"\\ec33\";\n}\n\n.icofont-stretcher::before {\n content: \"\\ec34\";\n}\n\n.icofont-surgeon-alt::before {\n content: \"\\ec35\";\n}\n\n.icofont-surgeon::before {\n content: \"\\ec36\";\n}\n\n.icofont-tablets::before {\n content: \"\\ec37\";\n}\n\n.icofont-test-bottle::before {\n content: \"\\ec38\";\n}\n\n.icofont-test-tube::before {\n content: \"\\ec39\";\n}\n\n.icofont-thermometer-alt::before {\n content: \"\\ec3a\";\n}\n\n.icofont-thermometer::before {\n content: \"\\ec3b\";\n}\n\n.icofont-tooth::before {\n content: \"\\ec3c\";\n}\n\n.icofont-xray::before {\n content: \"\\ec3d\";\n}\n\n.icofont-ui-add::before {\n content: \"\\ec3e\";\n}\n\n.icofont-ui-alarm::before {\n content: \"\\ec3f\";\n}\n\n.icofont-ui-battery::before {\n content: \"\\ec40\";\n}\n\n.icofont-ui-block::before {\n content: \"\\ec41\";\n}\n\n.icofont-ui-bluetooth::before {\n content: \"\\ec42\";\n}\n\n.icofont-ui-brightness::before {\n content: \"\\ec43\";\n}\n\n.icofont-ui-browser::before {\n content: \"\\ec44\";\n}\n\n.icofont-ui-calendar::before {\n content: \"\\ec45\";\n}\n\n.icofont-ui-call::before {\n content: \"\\ec46\";\n}\n\n.icofont-ui-camera::before {\n content: \"\\ec47\";\n}\n\n.icofont-ui-cart::before {\n content: \"\\ec48\";\n}\n\n.icofont-ui-cell-phone::before {\n content: \"\\ec49\";\n}\n\n.icofont-ui-chat::before {\n content: \"\\ec4a\";\n}\n\n.icofont-ui-check::before {\n content: \"\\ec4b\";\n}\n\n.icofont-ui-clip-board::before {\n content: \"\\ec4c\";\n}\n\n.icofont-ui-clip::before {\n content: \"\\ec4d\";\n}\n\n.icofont-ui-clock::before {\n content: \"\\ec4e\";\n}\n\n.icofont-ui-close::before {\n content: \"\\ec4f\";\n}\n\n.icofont-ui-contact-list::before {\n content: \"\\ec50\";\n}\n\n.icofont-ui-copy::before {\n content: \"\\ec51\";\n}\n\n.icofont-ui-cut::before {\n content: \"\\ec52\";\n}\n\n.icofont-ui-delete::before {\n content: \"\\ec53\";\n}\n\n.icofont-ui-dial-phone::before {\n content: \"\\ec54\";\n}\n\n.icofont-ui-edit::before {\n content: \"\\ec55\";\n}\n\n.icofont-ui-email::before {\n content: \"\\ec56\";\n}\n\n.icofont-ui-file::before {\n content: \"\\ec57\";\n}\n\n.icofont-ui-fire-wall::before {\n content: \"\\ec58\";\n}\n\n.icofont-ui-flash-light::before {\n content: \"\\ec59\";\n}\n\n.icofont-ui-flight::before {\n content: \"\\ec5a\";\n}\n\n.icofont-ui-folder::before {\n content: \"\\ec5b\";\n}\n\n.icofont-ui-game::before {\n content: \"\\ec5c\";\n}\n\n.icofont-ui-handicapped::before {\n content: \"\\ec5d\";\n}\n\n.icofont-ui-home::before {\n content: \"\\ec5e\";\n}\n\n.icofont-ui-image::before {\n content: \"\\ec5f\";\n}\n\n.icofont-ui-laoding::before {\n content: \"\\ec60\";\n}\n\n.icofont-ui-lock::before {\n content: \"\\ec61\";\n}\n\n.icofont-ui-love-add::before {\n content: \"\\ec62\";\n}\n\n.icofont-ui-love-broken::before {\n content: \"\\ec63\";\n}\n\n.icofont-ui-love-remove::before {\n content: \"\\ec64\";\n}\n\n.icofont-ui-love::before {\n content: \"\\ec65\";\n}\n\n.icofont-ui-map::before {\n content: \"\\ec66\";\n}\n\n.icofont-ui-message::before {\n content: \"\\ec67\";\n}\n\n.icofont-ui-messaging::before {\n content: \"\\ec68\";\n}\n\n.icofont-ui-movie::before {\n content: \"\\ec69\";\n}\n\n.icofont-ui-music-player::before {\n content: \"\\ec6a\";\n}\n\n.icofont-ui-music::before {\n content: \"\\ec6b\";\n}\n\n.icofont-ui-mute::before {\n content: \"\\ec6c\";\n}\n\n.icofont-ui-network::before {\n content: \"\\ec6d\";\n}\n\n.icofont-ui-next::before {\n content: \"\\ec6e\";\n}\n\n.icofont-ui-note::before {\n content: \"\\ec6f\";\n}\n\n.icofont-ui-office::before {\n content: \"\\ec70\";\n}\n\n.icofont-ui-password::before {\n content: \"\\ec71\";\n}\n\n.icofont-ui-pause::before {\n content: \"\\ec72\";\n}\n\n.icofont-ui-play-stop::before {\n content: \"\\ec73\";\n}\n\n.icofont-ui-play::before {\n content: \"\\ec74\";\n}\n\n.icofont-ui-pointer::before {\n content: \"\\ec75\";\n}\n\n.icofont-ui-power::before {\n content: \"\\ec76\";\n}\n\n.icofont-ui-press::before {\n content: \"\\ec77\";\n}\n\n.icofont-ui-previous::before {\n content: \"\\ec78\";\n}\n\n.icofont-ui-rate-add::before {\n content: \"\\ec79\";\n}\n\n.icofont-ui-rate-blank::before {\n content: \"\\ec7a\";\n}\n\n.icofont-ui-rate-remove::before {\n content: \"\\ec7b\";\n}\n\n.icofont-ui-rating::before {\n content: \"\\ec7c\";\n}\n\n.icofont-ui-record::before {\n content: \"\\ec7d\";\n}\n\n.icofont-ui-remove::before {\n content: \"\\ec7e\";\n}\n\n.icofont-ui-reply::before {\n content: \"\\ec7f\";\n}\n\n.icofont-ui-rotation::before {\n content: \"\\ec80\";\n}\n\n.icofont-ui-rss::before {\n content: \"\\ec81\";\n}\n\n.icofont-ui-search::before {\n content: \"\\ec82\";\n}\n\n.icofont-ui-settings::before {\n content: \"\\ec83\";\n}\n\n.icofont-ui-social-link::before {\n content: \"\\ec84\";\n}\n\n.icofont-ui-tag::before {\n content: \"\\ec85\";\n}\n\n.icofont-ui-text-chat::before {\n content: \"\\ec86\";\n}\n\n.icofont-ui-text-loading::before {\n content: \"\\ec87\";\n}\n\n.icofont-ui-theme::before {\n content: \"\\ec88\";\n}\n\n.icofont-ui-timer::before {\n content: \"\\ec89\";\n}\n\n.icofont-ui-touch-phone::before {\n content: \"\\ec8a\";\n}\n\n.icofont-ui-travel::before {\n content: \"\\ec8b\";\n}\n\n.icofont-ui-unlock::before {\n content: \"\\ec8c\";\n}\n\n.icofont-ui-user-group::before {\n content: \"\\ec8d\";\n}\n\n.icofont-ui-user::before {\n content: \"\\ec8e\";\n}\n\n.icofont-ui-v-card::before {\n content: \"\\ec8f\";\n}\n\n.icofont-ui-video-chat::before {\n content: \"\\ec90\";\n}\n\n.icofont-ui-video-message::before {\n content: \"\\ec91\";\n}\n\n.icofont-ui-video-play::before {\n content: \"\\ec92\";\n}\n\n.icofont-ui-video::before {\n content: \"\\ec93\";\n}\n\n.icofont-ui-volume::before {\n content: \"\\ec94\";\n}\n\n.icofont-ui-weather::before {\n content: \"\\ec95\";\n}\n\n.icofont-ui-wifi::before {\n content: \"\\ec96\";\n}\n\n.icofont-ui-zoom-in::before {\n content: \"\\ec97\";\n}\n\n.icofont-ui-zoom-out::before {\n content: \"\\ec98\";\n}\n\n.icofont-cassette-player::before {\n content: \"\\ec99\";\n}\n\n.icofont-cassette::before {\n content: \"\\ec9a\";\n}\n\n.icofont-forward::before {\n content: \"\\ec9b\";\n}\n\n.icofont-guiter::before {\n content: \"\\ec9c\";\n}\n\n.icofont-movie::before {\n content: \"\\ec9d\";\n}\n\n.icofont-multimedia::before {\n content: \"\\ec9e\";\n}\n\n.icofont-music-alt::before {\n content: \"\\ec9f\";\n}\n\n.icofont-music-disk::before {\n content: \"\\eca0\";\n}\n\n.icofont-music-note::before {\n content: \"\\eca1\";\n}\n\n.icofont-music-notes::before {\n content: \"\\eca2\";\n}\n\n.icofont-music::before {\n content: \"\\eca3\";\n}\n\n.icofont-mute-volume::before {\n content: \"\\eca4\";\n}\n\n.icofont-pause::before {\n content: \"\\eca5\";\n}\n\n.icofont-play-alt-1::before {\n content: \"\\eca6\";\n}\n\n.icofont-play-alt-2::before {\n content: \"\\eca7\";\n}\n\n.icofont-play-alt-3::before {\n content: \"\\eca8\";\n}\n\n.icofont-play-pause::before {\n content: \"\\eca9\";\n}\n\n.icofont-play::before {\n content: \"\\ecaa\";\n}\n\n.icofont-record::before {\n content: \"\\ecab\";\n}\n\n.icofont-retro-music-disk::before {\n content: \"\\ecac\";\n}\n\n.icofont-rewind::before {\n content: \"\\ecad\";\n}\n\n.icofont-song-notes::before {\n content: \"\\ecae\";\n}\n\n.icofont-sound-wave-alt::before {\n content: \"\\ecaf\";\n}\n\n.icofont-sound-wave::before {\n content: \"\\ecb0\";\n}\n\n.icofont-stop::before {\n content: \"\\ecb1\";\n}\n\n.icofont-video-alt::before {\n content: \"\\ecb2\";\n}\n\n.icofont-video-cam::before {\n content: \"\\ecb3\";\n}\n\n.icofont-video-clapper::before {\n content: \"\\ecb4\";\n}\n\n.icofont-video::before {\n content: \"\\ecb5\";\n}\n\n.icofont-volume-bar::before {\n content: \"\\ecb6\";\n}\n\n.icofont-volume-down::before {\n content: \"\\ecb7\";\n}\n\n.icofont-volume-mute::before {\n content: \"\\ecb8\";\n}\n\n.icofont-volume-off::before {\n content: \"\\ecb9\";\n}\n\n.icofont-volume-up::before {\n content: \"\\ecba\";\n}\n\n.icofont-youtube-play::before {\n content: \"\\ecbb\";\n}\n\n.icofont-2checkout-alt::before {\n content: \"\\ecbc\";\n}\n\n.icofont-2checkout::before {\n content: \"\\ecbd\";\n}\n\n.icofont-amazon-alt::before {\n content: \"\\ecbe\";\n}\n\n.icofont-amazon::before {\n content: \"\\ecbf\";\n}\n\n.icofont-american-express-alt::before {\n content: \"\\ecc0\";\n}\n\n.icofont-american-express::before {\n content: \"\\ecc1\";\n}\n\n.icofont-apple-pay-alt::before {\n content: \"\\ecc2\";\n}\n\n.icofont-apple-pay::before {\n content: \"\\ecc3\";\n}\n\n.icofont-bank-transfer-alt::before {\n content: \"\\ecc4\";\n}\n\n.icofont-bank-transfer::before {\n content: \"\\ecc5\";\n}\n\n.icofont-braintree-alt::before {\n content: \"\\ecc6\";\n}\n\n.icofont-braintree::before {\n content: \"\\ecc7\";\n}\n\n.icofont-cash-on-delivery-alt::before {\n content: \"\\ecc8\";\n}\n\n.icofont-cash-on-delivery::before {\n content: \"\\ecc9\";\n}\n\n.icofont-diners-club-alt-1::before {\n content: \"\\ecca\";\n}\n\n.icofont-diners-club-alt-2::before {\n content: \"\\eccb\";\n}\n\n.icofont-diners-club-alt-3::before {\n content: \"\\eccc\";\n}\n\n.icofont-diners-club::before {\n content: \"\\eccd\";\n}\n\n.icofont-discover-alt::before {\n content: \"\\ecce\";\n}\n\n.icofont-discover::before {\n content: \"\\eccf\";\n}\n\n.icofont-eway-alt::before {\n content: \"\\ecd0\";\n}\n\n.icofont-eway::before {\n content: \"\\ecd1\";\n}\n\n.icofont-google-wallet-alt-1::before {\n content: \"\\ecd2\";\n}\n\n.icofont-google-wallet-alt-2::before {\n content: \"\\ecd3\";\n}\n\n.icofont-google-wallet-alt-3::before {\n content: \"\\ecd4\";\n}\n\n.icofont-google-wallet::before {\n content: \"\\ecd5\";\n}\n\n.icofont-jcb-alt::before {\n content: \"\\ecd6\";\n}\n\n.icofont-jcb::before {\n content: \"\\ecd7\";\n}\n\n.icofont-maestro-alt::before {\n content: \"\\ecd8\";\n}\n\n.icofont-maestro::before {\n content: \"\\ecd9\";\n}\n\n.icofont-mastercard-alt::before {\n content: \"\\ecda\";\n}\n\n.icofont-mastercard::before {\n content: \"\\ecdb\";\n}\n\n.icofont-payoneer-alt::before {\n content: \"\\ecdc\";\n}\n\n.icofont-payoneer::before {\n content: \"\\ecdd\";\n}\n\n.icofont-paypal-alt::before {\n content: \"\\ecde\";\n}\n\n.icofont-paypal::before {\n content: \"\\ecdf\";\n}\n\n.icofont-sage-alt::before {\n content: \"\\ece0\";\n}\n\n.icofont-sage::before {\n content: \"\\ece1\";\n}\n\n.icofont-skrill-alt::before {\n content: \"\\ece2\";\n}\n\n.icofont-skrill::before {\n content: \"\\ece3\";\n}\n\n.icofont-stripe-alt::before {\n content: \"\\ece4\";\n}\n\n.icofont-stripe::before {\n content: \"\\ece5\";\n}\n\n.icofont-visa-alt::before {\n content: \"\\ece6\";\n}\n\n.icofont-visa-electron::before {\n content: \"\\ece7\";\n}\n\n.icofont-visa::before {\n content: \"\\ece8\";\n}\n\n.icofont-western-union-alt::before {\n content: \"\\ece9\";\n}\n\n.icofont-western-union::before {\n content: \"\\ecea\";\n}\n\n.icofont-boy::before {\n content: \"\\eceb\";\n}\n\n.icofont-business-man-alt-1::before {\n content: \"\\ecec\";\n}\n\n.icofont-business-man-alt-2::before {\n content: \"\\eced\";\n}\n\n.icofont-business-man-alt-3::before {\n content: \"\\ecee\";\n}\n\n.icofont-business-man::before {\n content: \"\\ecef\";\n}\n\n.icofont-female::before {\n content: \"\\ecf0\";\n}\n\n.icofont-funky-man::before {\n content: \"\\ecf1\";\n}\n\n.icofont-girl-alt::before {\n content: \"\\ecf2\";\n}\n\n.icofont-girl::before {\n content: \"\\ecf3\";\n}\n\n.icofont-group::before {\n content: \"\\ecf4\";\n}\n\n.icofont-hotel-boy-alt::before {\n content: \"\\ecf5\";\n}\n\n.icofont-hotel-boy::before {\n content: \"\\ecf6\";\n}\n\n.icofont-kid::before {\n content: \"\\ecf7\";\n}\n\n.icofont-man-in-glasses::before {\n content: \"\\ecf8\";\n}\n\n.icofont-people::before {\n content: \"\\ecf9\";\n}\n\n.icofont-support::before {\n content: \"\\ecfa\";\n}\n\n.icofont-user-alt-1::before {\n content: \"\\ecfb\";\n}\n\n.icofont-user-alt-2::before {\n content: \"\\ecfc\";\n}\n\n.icofont-user-alt-3::before {\n content: \"\\ecfd\";\n}\n\n.icofont-user-alt-4::before {\n content: \"\\ecfe\";\n}\n\n.icofont-user-alt-5::before {\n content: \"\\ecff\";\n}\n\n.icofont-user-alt-6::before {\n content: \"\\ed00\";\n}\n\n.icofont-user-alt-7::before {\n content: \"\\ed01\";\n}\n\n.icofont-user-female::before {\n content: \"\\ed02\";\n}\n\n.icofont-user-male::before {\n content: \"\\ed03\";\n}\n\n.icofont-user-suited::before {\n content: \"\\ed04\";\n}\n\n.icofont-user::before {\n content: \"\\ed05\";\n}\n\n.icofont-users-alt-1::before {\n content: \"\\ed06\";\n}\n\n.icofont-users-alt-2::before {\n content: \"\\ed07\";\n}\n\n.icofont-users-alt-3::before {\n content: \"\\ed08\";\n}\n\n.icofont-users-alt-4::before {\n content: \"\\ed09\";\n}\n\n.icofont-users-alt-5::before {\n content: \"\\ed0a\";\n}\n\n.icofont-users-alt-6::before {\n content: \"\\ed0b\";\n}\n\n.icofont-users-social::before {\n content: \"\\ed0c\";\n}\n\n.icofont-users::before {\n content: \"\\ed0d\";\n}\n\n.icofont-waiter-alt::before {\n content: \"\\ed0e\";\n}\n\n.icofont-waiter::before {\n content: \"\\ed0f\";\n}\n\n.icofont-woman-in-glasses::before {\n content: \"\\ed10\";\n}\n\n.icofont-search-1::before {\n content: \"\\ed11\";\n}\n\n.icofont-search-2::before {\n content: \"\\ed12\";\n}\n\n.icofont-search-document::before {\n content: \"\\ed13\";\n}\n\n.icofont-search-folder::before {\n content: \"\\ed14\";\n}\n\n.icofont-search-job::before {\n content: \"\\ed15\";\n}\n\n.icofont-search-map::before {\n content: \"\\ed16\";\n}\n\n.icofont-search-property::before {\n content: \"\\ed17\";\n}\n\n.icofont-search-restaurant::before {\n content: \"\\ed18\";\n}\n\n.icofont-search-stock::before {\n content: \"\\ed19\";\n}\n\n.icofont-search-user::before {\n content: \"\\ed1a\";\n}\n\n.icofont-search::before {\n content: \"\\ed1b\";\n}\n\n.icofont-500px::before {\n content: \"\\ed1c\";\n}\n\n.icofont-aim::before {\n content: \"\\ed1d\";\n}\n\n.icofont-badoo::before {\n content: \"\\ed1e\";\n}\n\n.icofont-baidu-tieba::before {\n content: \"\\ed1f\";\n}\n\n.icofont-bbm-messenger::before {\n content: \"\\ed20\";\n}\n\n.icofont-bebo::before {\n content: \"\\ed21\";\n}\n\n.icofont-behance::before {\n content: \"\\ed22\";\n}\n\n.icofont-blogger::before {\n content: \"\\ed23\";\n}\n\n.icofont-bootstrap::before {\n content: \"\\ed24\";\n}\n\n.icofont-brightkite::before {\n content: \"\\ed25\";\n}\n\n.icofont-cloudapp::before {\n content: \"\\ed26\";\n}\n\n.icofont-concrete5::before {\n content: \"\\ed27\";\n}\n\n.icofont-delicious::before {\n content: \"\\ed28\";\n}\n\n.icofont-designbump::before {\n content: \"\\ed29\";\n}\n\n.icofont-designfloat::before {\n content: \"\\ed2a\";\n}\n\n.icofont-deviantart::before {\n content: \"\\ed2b\";\n}\n\n.icofont-digg::before {\n content: \"\\ed2c\";\n}\n\n.icofont-dotcms::before {\n content: \"\\ed2d\";\n}\n\n.icofont-dribbble::before {\n content: \"\\ed2e\";\n}\n\n.icofont-dribble::before {\n content: \"\\ed2f\";\n}\n\n.icofont-dropbox::before {\n content: \"\\ed30\";\n}\n\n.icofont-ebuddy::before {\n content: \"\\ed31\";\n}\n\n.icofont-ello::before {\n content: \"\\ed32\";\n}\n\n.icofont-ember::before {\n content: \"\\ed33\";\n}\n\n.icofont-envato::before {\n content: \"\\ed34\";\n}\n\n.icofont-evernote::before {\n content: \"\\ed35\";\n}\n\n.icofont-facebook-messenger::before {\n content: \"\\ed36\";\n}\n\n.icofont-facebook::before {\n content: \"\\ed37\";\n}\n\n.icofont-feedburner::before {\n content: \"\\ed38\";\n}\n\n.icofont-flikr::before {\n content: \"\\ed39\";\n}\n\n.icofont-folkd::before {\n content: \"\\ed3a\";\n}\n\n.icofont-foursquare::before {\n content: \"\\ed3b\";\n}\n\n.icofont-friendfeed::before {\n content: \"\\ed3c\";\n}\n\n.icofont-ghost::before {\n content: \"\\ed3d\";\n}\n\n.icofont-github::before {\n content: \"\\ed3e\";\n}\n\n.icofont-gnome::before {\n content: \"\\ed3f\";\n}\n\n.icofont-google-buzz::before {\n content: \"\\ed40\";\n}\n\n.icofont-google-hangouts::before {\n content: \"\\ed41\";\n}\n\n.icofont-google-map::before {\n content: \"\\ed42\";\n}\n\n.icofont-google-plus::before {\n content: \"\\ed43\";\n}\n\n.icofont-google-talk::before {\n content: \"\\ed44\";\n}\n\n.icofont-hype-machine::before {\n content: \"\\ed45\";\n}\n\n.icofont-instagram::before {\n content: \"\\ed46\";\n}\n\n.icofont-kakaotalk::before {\n content: \"\\ed47\";\n}\n\n.icofont-kickstarter::before {\n content: \"\\ed48\";\n}\n\n.icofont-kik::before {\n content: \"\\ed49\";\n}\n\n.icofont-kiwibox::before {\n content: \"\\ed4a\";\n}\n\n.icofont-line-messenger::before {\n content: \"\\ed4b\";\n}\n\n.icofont-line::before {\n content: \"\\ed4c\";\n}\n\n.icofont-linkedin::before {\n content: \"\\ed4d\";\n}\n\n.icofont-linux-mint::before {\n content: \"\\ed4e\";\n}\n\n.icofont-live-messenger::before {\n content: \"\\ed4f\";\n}\n\n.icofont-livejournal::before {\n content: \"\\ed50\";\n}\n\n.icofont-magento::before {\n content: \"\\ed51\";\n}\n\n.icofont-meetme::before {\n content: \"\\ed52\";\n}\n\n.icofont-meetup::before {\n content: \"\\ed53\";\n}\n\n.icofont-mixx::before {\n content: \"\\ed54\";\n}\n\n.icofont-newsvine::before {\n content: \"\\ed55\";\n}\n\n.icofont-nimbuss::before {\n content: \"\\ed56\";\n}\n\n.icofont-odnoklassniki::before {\n content: \"\\ed57\";\n}\n\n.icofont-opencart::before {\n content: \"\\ed58\";\n}\n\n.icofont-oscommerce::before {\n content: \"\\ed59\";\n}\n\n.icofont-pandora::before {\n content: \"\\ed5a\";\n}\n\n.icofont-photobucket::before {\n content: \"\\ed5b\";\n}\n\n.icofont-picasa::before {\n content: \"\\ed5c\";\n}\n\n.icofont-pinterest::before {\n content: \"\\ed5d\";\n}\n\n.icofont-prestashop::before {\n content: \"\\ed5e\";\n}\n\n.icofont-qik::before {\n content: \"\\ed5f\";\n}\n\n.icofont-qq::before {\n content: \"\\ed60\";\n}\n\n.icofont-readernaut::before {\n content: \"\\ed61\";\n}\n\n.icofont-reddit::before {\n content: \"\\ed62\";\n}\n\n.icofont-renren::before {\n content: \"\\ed63\";\n}\n\n.icofont-rss::before {\n content: \"\\ed64\";\n}\n\n.icofont-shopify::before {\n content: \"\\ed65\";\n}\n\n.icofont-silverstripe::before {\n content: \"\\ed66\";\n}\n\n.icofont-skype::before {\n content: \"\\ed67\";\n}\n\n.icofont-slack::before {\n content: \"\\ed68\";\n}\n\n.icofont-slashdot::before {\n content: \"\\ed69\";\n}\n\n.icofont-slidshare::before {\n content: \"\\ed6a\";\n}\n\n.icofont-smugmug::before {\n content: \"\\ed6b\";\n}\n\n.icofont-snapchat::before {\n content: \"\\ed6c\";\n}\n\n.icofont-soundcloud::before {\n content: \"\\ed6d\";\n}\n\n.icofont-spotify::before {\n content: \"\\ed6e\";\n}\n\n.icofont-stack-exchange::before {\n content: \"\\ed6f\";\n}\n\n.icofont-stack-overflow::before {\n content: \"\\ed70\";\n}\n\n.icofont-steam::before {\n content: \"\\ed71\";\n}\n\n.icofont-stumbleupon::before {\n content: \"\\ed72\";\n}\n\n.icofont-tagged::before {\n content: \"\\ed73\";\n}\n\n.icofont-technorati::before {\n content: \"\\ed74\";\n}\n\n.icofont-telegram::before {\n content: \"\\ed75\";\n}\n\n.icofont-tinder::before {\n content: \"\\ed76\";\n}\n\n.icofont-trello::before {\n content: \"\\ed77\";\n}\n\n.icofont-tumblr::before {\n content: \"\\ed78\";\n}\n\n.icofont-twitch::before {\n content: \"\\ed79\";\n}\n\n.icofont-twitter::before {\n content: \"\\ed7a\";\n}\n\n.icofont-typo3::before {\n content: \"\\ed7b\";\n}\n\n.icofont-ubercart::before {\n content: \"\\ed7c\";\n}\n\n.icofont-viber::before {\n content: \"\\ed7d\";\n}\n\n.icofont-viddler::before {\n content: \"\\ed7e\";\n}\n\n.icofont-vimeo::before {\n content: \"\\ed7f\";\n}\n\n.icofont-vine::before {\n content: \"\\ed80\";\n}\n\n.icofont-virb::before {\n content: \"\\ed81\";\n}\n\n.icofont-virtuemart::before {\n content: \"\\ed82\";\n}\n\n.icofont-vk::before {\n content: \"\\ed83\";\n}\n\n.icofont-wechat::before {\n content: \"\\ed84\";\n}\n\n.icofont-weibo::before {\n content: \"\\ed85\";\n}\n\n.icofont-whatsapp::before {\n content: \"\\ed86\";\n}\n\n.icofont-xing::before {\n content: \"\\ed87\";\n}\n\n.icofont-yahoo::before {\n content: \"\\ed88\";\n}\n\n.icofont-yelp::before {\n content: \"\\ed89\";\n}\n\n.icofont-youku::before {\n content: \"\\ed8a\";\n}\n\n.icofont-youtube::before {\n content: \"\\ed8b\";\n}\n\n.icofont-zencart::before {\n content: \"\\ed8c\";\n}\n\n.icofont-badminton-birdie::before {\n content: \"\\ed8d\";\n}\n\n.icofont-baseball::before {\n content: \"\\ed8e\";\n}\n\n.icofont-baseballer::before {\n content: \"\\ed8f\";\n}\n\n.icofont-basketball-hoop::before {\n content: \"\\ed90\";\n}\n\n.icofont-basketball::before {\n content: \"\\ed91\";\n}\n\n.icofont-billiard-ball::before {\n content: \"\\ed92\";\n}\n\n.icofont-boot-alt-1::before {\n content: \"\\ed93\";\n}\n\n.icofont-boot-alt-2::before {\n content: \"\\ed94\";\n}\n\n.icofont-boot::before {\n content: \"\\ed95\";\n}\n\n.icofont-bowling-alt::before {\n content: \"\\ed96\";\n}\n\n.icofont-bowling::before {\n content: \"\\ed97\";\n}\n\n.icofont-canoe::before {\n content: \"\\ed98\";\n}\n\n.icofont-cheer-leader::before {\n content: \"\\ed99\";\n}\n\n.icofont-climbing::before {\n content: \"\\ed9a\";\n}\n\n.icofont-corner::before {\n content: \"\\ed9b\";\n}\n\n.icofont-field-alt::before {\n content: \"\\ed9c\";\n}\n\n.icofont-field::before {\n content: \"\\ed9d\";\n}\n\n.icofont-football-alt::before {\n content: \"\\ed9e\";\n}\n\n.icofont-football-american::before {\n content: \"\\ed9f\";\n}\n\n.icofont-football::before {\n content: \"\\eda0\";\n}\n\n.icofont-foul::before {\n content: \"\\eda1\";\n}\n\n.icofont-goal-keeper::before {\n content: \"\\eda2\";\n}\n\n.icofont-goal::before {\n content: \"\\eda3\";\n}\n\n.icofont-golf-alt::before {\n content: \"\\eda4\";\n}\n\n.icofont-golf-bag::before {\n content: \"\\eda5\";\n}\n\n.icofont-golf-cart::before {\n content: \"\\eda6\";\n}\n\n.icofont-golf-field::before {\n content: \"\\eda7\";\n}\n\n.icofont-golf::before {\n content: \"\\eda8\";\n}\n\n.icofont-golfer::before {\n content: \"\\eda9\";\n}\n\n.icofont-helmet::before {\n content: \"\\edaa\";\n}\n\n.icofont-hockey-alt::before {\n content: \"\\edab\";\n}\n\n.icofont-hockey::before {\n content: \"\\edac\";\n}\n\n.icofont-ice-skate::before {\n content: \"\\edad\";\n}\n\n.icofont-jersey-alt::before {\n content: \"\\edae\";\n}\n\n.icofont-jersey::before {\n content: \"\\edaf\";\n}\n\n.icofont-jumping::before {\n content: \"\\edb0\";\n}\n\n.icofont-kick::before {\n content: \"\\edb1\";\n}\n\n.icofont-leg::before {\n content: \"\\edb2\";\n}\n\n.icofont-match-review::before {\n content: \"\\edb3\";\n}\n\n.icofont-medal-sport::before {\n content: \"\\edb4\";\n}\n\n.icofont-offside::before {\n content: \"\\edb5\";\n}\n\n.icofont-olympic-logo::before {\n content: \"\\edb6\";\n}\n\n.icofont-olympic::before {\n content: \"\\edb7\";\n}\n\n.icofont-padding::before {\n content: \"\\edb8\";\n}\n\n.icofont-penalty-card::before {\n content: \"\\edb9\";\n}\n\n.icofont-racer::before {\n content: \"\\edba\";\n}\n\n.icofont-racing-car::before {\n content: \"\\edbb\";\n}\n\n.icofont-racing-flag-alt::before {\n content: \"\\edbc\";\n}\n\n.icofont-racing-flag::before {\n content: \"\\edbd\";\n}\n\n.icofont-racings-wheel::before {\n content: \"\\edbe\";\n}\n\n.icofont-referee::before {\n content: \"\\edbf\";\n}\n\n.icofont-refree-jersey::before {\n content: \"\\edc0\";\n}\n\n.icofont-result-sport::before {\n content: \"\\edc1\";\n}\n\n.icofont-rugby-ball::before {\n content: \"\\edc2\";\n}\n\n.icofont-rugby-player::before {\n content: \"\\edc3\";\n}\n\n.icofont-rugby::before {\n content: \"\\edc4\";\n}\n\n.icofont-runner-alt-1::before {\n content: \"\\edc5\";\n}\n\n.icofont-runner-alt-2::before {\n content: \"\\edc6\";\n}\n\n.icofont-runner::before {\n content: \"\\edc7\";\n}\n\n.icofont-score-board::before {\n content: \"\\edc8\";\n}\n\n.icofont-skiing-man::before {\n content: \"\\edc9\";\n}\n\n.icofont-skydiving-goggles::before {\n content: \"\\edca\";\n}\n\n.icofont-snow-mobile::before {\n content: \"\\edcb\";\n}\n\n.icofont-steering::before {\n content: \"\\edcc\";\n}\n\n.icofont-stopwatch::before {\n content: \"\\edcd\";\n}\n\n.icofont-substitute::before {\n content: \"\\edce\";\n}\n\n.icofont-swimmer::before {\n content: \"\\edcf\";\n}\n\n.icofont-table-tennis::before {\n content: \"\\edd0\";\n}\n\n.icofont-team-alt::before {\n content: \"\\edd1\";\n}\n\n.icofont-team::before {\n content: \"\\edd2\";\n}\n\n.icofont-tennis-player::before {\n content: \"\\edd3\";\n}\n\n.icofont-tennis::before {\n content: \"\\edd4\";\n}\n\n.icofont-tracking::before {\n content: \"\\edd5\";\n}\n\n.icofont-trophy-alt::before {\n content: \"\\edd6\";\n}\n\n.icofont-trophy::before {\n content: \"\\edd7\";\n}\n\n.icofont-volleyball-alt::before {\n content: \"\\edd8\";\n}\n\n.icofont-volleyball-fire::before {\n content: \"\\edd9\";\n}\n\n.icofont-volleyball::before {\n content: \"\\edda\";\n}\n\n.icofont-water-bottle::before {\n content: \"\\eddb\";\n}\n\n.icofont-whistle-alt::before {\n content: \"\\eddc\";\n}\n\n.icofont-whistle::before {\n content: \"\\eddd\";\n}\n\n.icofont-win-trophy::before {\n content: \"\\edde\";\n}\n\n.icofont-align-center::before {\n content: \"\\eddf\";\n}\n\n.icofont-align-left::before {\n content: \"\\ede0\";\n}\n\n.icofont-align-right::before {\n content: \"\\ede1\";\n}\n\n.icofont-all-caps::before {\n content: \"\\ede2\";\n}\n\n.icofont-bold::before {\n content: \"\\ede3\";\n}\n\n.icofont-brush::before {\n content: \"\\ede4\";\n}\n\n.icofont-clip-board::before {\n content: \"\\ede5\";\n}\n\n.icofont-code-alt::before {\n content: \"\\ede6\";\n}\n\n.icofont-color-bucket::before {\n content: \"\\ede7\";\n}\n\n.icofont-color-picker::before {\n content: \"\\ede8\";\n}\n\n.icofont-copy-invert::before {\n content: \"\\ede9\";\n}\n\n.icofont-copy::before {\n content: \"\\edea\";\n}\n\n.icofont-cut::before {\n content: \"\\edeb\";\n}\n\n.icofont-delete-alt::before {\n content: \"\\edec\";\n}\n\n.icofont-edit-alt::before {\n content: \"\\eded\";\n}\n\n.icofont-eraser-alt::before {\n content: \"\\edee\";\n}\n\n.icofont-font::before {\n content: \"\\edef\";\n}\n\n.icofont-heading::before {\n content: \"\\edf0\";\n}\n\n.icofont-indent::before {\n content: \"\\edf1\";\n}\n\n.icofont-italic-alt::before {\n content: \"\\edf2\";\n}\n\n.icofont-italic::before {\n content: \"\\edf3\";\n}\n\n.icofont-justify-all::before {\n content: \"\\edf4\";\n}\n\n.icofont-justify-center::before {\n content: \"\\edf5\";\n}\n\n.icofont-justify-left::before {\n content: \"\\edf6\";\n}\n\n.icofont-justify-right::before {\n content: \"\\edf7\";\n}\n\n.icofont-link-broken::before {\n content: \"\\edf8\";\n}\n\n.icofont-outdent::before {\n content: \"\\edf9\";\n}\n\n.icofont-paper-clip::before {\n content: \"\\edfa\";\n}\n\n.icofont-paragraph::before {\n content: \"\\edfb\";\n}\n\n.icofont-pin::before {\n content: \"\\edfc\";\n}\n\n.icofont-printer::before {\n content: \"\\edfd\";\n}\n\n.icofont-redo::before {\n content: \"\\edfe\";\n}\n\n.icofont-rotation::before {\n content: \"\\edff\";\n}\n\n.icofont-save::before {\n content: \"\\ee00\";\n}\n\n.icofont-small-cap::before {\n content: \"\\ee01\";\n}\n\n.icofont-strike-through::before {\n content: \"\\ee02\";\n}\n\n.icofont-sub-listing::before {\n content: \"\\ee03\";\n}\n\n.icofont-subscript::before {\n content: \"\\ee04\";\n}\n\n.icofont-superscript::before {\n content: \"\\ee05\";\n}\n\n.icofont-table::before {\n content: \"\\ee06\";\n}\n\n.icofont-text-height::before {\n content: \"\\ee07\";\n}\n\n.icofont-text-width::before {\n content: \"\\ee08\";\n}\n\n.icofont-trash::before {\n content: \"\\ee09\";\n}\n\n.icofont-underline::before {\n content: \"\\ee0a\";\n}\n\n.icofont-undo::before {\n content: \"\\ee0b\";\n}\n\n.icofont-air-balloon::before {\n content: \"\\ee0c\";\n}\n\n.icofont-airplane-alt::before {\n content: \"\\ee0d\";\n}\n\n.icofont-airplane::before {\n content: \"\\ee0e\";\n}\n\n.icofont-articulated-truck::before {\n content: \"\\ee0f\";\n}\n\n.icofont-auto-mobile::before {\n content: \"\\ee10\";\n}\n\n.icofont-auto-rickshaw::before {\n content: \"\\ee11\";\n}\n\n.icofont-bicycle-alt-1::before {\n content: \"\\ee12\";\n}\n\n.icofont-bicycle-alt-2::before {\n content: \"\\ee13\";\n}\n\n.icofont-bicycle::before {\n content: \"\\ee14\";\n}\n\n.icofont-bus-alt-1::before {\n content: \"\\ee15\";\n}\n\n.icofont-bus-alt-2::before {\n content: \"\\ee16\";\n}\n\n.icofont-bus-alt-3::before {\n content: \"\\ee17\";\n}\n\n.icofont-bus::before {\n content: \"\\ee18\";\n}\n\n.icofont-cab::before {\n content: \"\\ee19\";\n}\n\n.icofont-cable-car::before {\n content: \"\\ee1a\";\n}\n\n.icofont-car-alt-1::before {\n content: \"\\ee1b\";\n}\n\n.icofont-car-alt-2::before {\n content: \"\\ee1c\";\n}\n\n.icofont-car-alt-3::before {\n content: \"\\ee1d\";\n}\n\n.icofont-car-alt-4::before {\n content: \"\\ee1e\";\n}\n\n.icofont-car::before {\n content: \"\\ee1f\";\n}\n\n.icofont-delivery-time::before {\n content: \"\\ee20\";\n}\n\n.icofont-fast-delivery::before {\n content: \"\\ee21\";\n}\n\n.icofont-fire-truck-alt::before {\n content: \"\\ee22\";\n}\n\n.icofont-fire-truck::before {\n content: \"\\ee23\";\n}\n\n.icofont-free-delivery::before {\n content: \"\\ee24\";\n}\n\n.icofont-helicopter::before {\n content: \"\\ee25\";\n}\n\n.icofont-motor-bike-alt::before {\n content: \"\\ee26\";\n}\n\n.icofont-motor-bike::before {\n content: \"\\ee27\";\n}\n\n.icofont-motor-biker::before {\n content: \"\\ee28\";\n}\n\n.icofont-oil-truck::before {\n content: \"\\ee29\";\n}\n\n.icofont-rickshaw::before {\n content: \"\\ee2a\";\n}\n\n.icofont-rocket-alt-1::before {\n content: \"\\ee2b\";\n}\n\n.icofont-rocket-alt-2::before {\n content: \"\\ee2c\";\n}\n\n.icofont-rocket::before {\n content: \"\\ee2d\";\n}\n\n.icofont-sail-boat-alt-1::before {\n content: \"\\ee2e\";\n}\n\n.icofont-sail-boat-alt-2::before {\n content: \"\\ee2f\";\n}\n\n.icofont-sail-boat::before {\n content: \"\\ee30\";\n}\n\n.icofont-scooter::before {\n content: \"\\ee31\";\n}\n\n.icofont-sea-plane::before {\n content: \"\\ee32\";\n}\n\n.icofont-ship-alt::before {\n content: \"\\ee33\";\n}\n\n.icofont-ship::before {\n content: \"\\ee34\";\n}\n\n.icofont-speed-boat::before {\n content: \"\\ee35\";\n}\n\n.icofont-taxi::before {\n content: \"\\ee36\";\n}\n\n.icofont-tractor::before {\n content: \"\\ee37\";\n}\n\n.icofont-train-line::before {\n content: \"\\ee38\";\n}\n\n.icofont-train-steam::before {\n content: \"\\ee39\";\n}\n\n.icofont-tram::before {\n content: \"\\ee3a\";\n}\n\n.icofont-truck-alt::before {\n content: \"\\ee3b\";\n}\n\n.icofont-truck-loaded::before {\n content: \"\\ee3c\";\n}\n\n.icofont-truck::before {\n content: \"\\ee3d\";\n}\n\n.icofont-van-alt::before {\n content: \"\\ee3e\";\n}\n\n.icofont-van::before {\n content: \"\\ee3f\";\n}\n\n.icofont-yacht::before {\n content: \"\\ee40\";\n}\n\n.icofont-5-star-hotel::before {\n content: \"\\ee41\";\n}\n\n.icofont-air-ticket::before {\n content: \"\\ee42\";\n}\n\n.icofont-beach-bed::before {\n content: \"\\ee43\";\n}\n\n.icofont-beach::before {\n content: \"\\ee44\";\n}\n\n.icofont-camping-vest::before {\n content: \"\\ee45\";\n}\n\n.icofont-direction-sign::before {\n content: \"\\ee46\";\n}\n\n.icofont-hill-side::before {\n content: \"\\ee47\";\n}\n\n.icofont-hill::before {\n content: \"\\ee48\";\n}\n\n.icofont-hotel::before {\n content: \"\\ee49\";\n}\n\n.icofont-island-alt::before {\n content: \"\\ee4a\";\n}\n\n.icofont-island::before {\n content: \"\\ee4b\";\n}\n\n.icofont-sandals-female::before {\n content: \"\\ee4c\";\n}\n\n.icofont-sandals-male::before {\n content: \"\\ee4d\";\n}\n\n.icofont-travelling::before {\n content: \"\\ee4e\";\n}\n\n.icofont-breakdown::before {\n content: \"\\ee4f\";\n}\n\n.icofont-celsius::before {\n content: \"\\ee50\";\n}\n\n.icofont-clouds::before {\n content: \"\\ee51\";\n}\n\n.icofont-cloudy::before {\n content: \"\\ee52\";\n}\n\n.icofont-dust::before {\n content: \"\\ee53\";\n}\n\n.icofont-eclipse::before {\n content: \"\\ee54\";\n}\n\n.icofont-fahrenheit::before {\n content: \"\\ee55\";\n}\n\n.icofont-forest-fire::before {\n content: \"\\ee56\";\n}\n\n.icofont-full-night::before {\n content: \"\\ee57\";\n}\n\n.icofont-full-sunny::before {\n content: \"\\ee58\";\n}\n\n.icofont-hail-night::before {\n content: \"\\ee59\";\n}\n\n.icofont-hail-rainy-night::before {\n content: \"\\ee5a\";\n}\n\n.icofont-hail-rainy-sunny::before {\n content: \"\\ee5b\";\n}\n\n.icofont-hail-rainy::before {\n content: \"\\ee5c\";\n}\n\n.icofont-hail-sunny::before {\n content: \"\\ee5d\";\n}\n\n.icofont-hail-thunder-night::before {\n content: \"\\ee5e\";\n}\n\n.icofont-hail-thunder-sunny::before {\n content: \"\\ee5f\";\n}\n\n.icofont-hail-thunder::before {\n content: \"\\ee60\";\n}\n\n.icofont-hail::before {\n content: \"\\ee61\";\n}\n\n.icofont-hill-night::before {\n content: \"\\ee62\";\n}\n\n.icofont-hill-sunny::before {\n content: \"\\ee63\";\n}\n\n.icofont-hurricane::before {\n content: \"\\ee64\";\n}\n\n.icofont-meteor::before {\n content: \"\\ee65\";\n}\n\n.icofont-night::before {\n content: \"\\ee66\";\n}\n\n.icofont-rainy-night::before {\n content: \"\\ee67\";\n}\n\n.icofont-rainy-sunny::before {\n content: \"\\ee68\";\n}\n\n.icofont-rainy-thunder::before {\n content: \"\\ee69\";\n}\n\n.icofont-rainy::before {\n content: \"\\ee6a\";\n}\n\n.icofont-snow-alt::before {\n content: \"\\ee6b\";\n}\n\n.icofont-snow-flake::before {\n content: \"\\ee6c\";\n}\n\n.icofont-snow-temp::before {\n content: \"\\ee6d\";\n}\n\n.icofont-snow::before {\n content: \"\\ee6e\";\n}\n\n.icofont-snowy-hail::before {\n content: \"\\ee6f\";\n}\n\n.icofont-snowy-night-hail::before {\n content: \"\\ee70\";\n}\n\n.icofont-snowy-night-rainy::before {\n content: \"\\ee71\";\n}\n\n.icofont-snowy-night::before {\n content: \"\\ee72\";\n}\n\n.icofont-snowy-rainy::before {\n content: \"\\ee73\";\n}\n\n.icofont-snowy-sunny-hail::before {\n content: \"\\ee74\";\n}\n\n.icofont-snowy-sunny-rainy::before {\n content: \"\\ee75\";\n}\n\n.icofont-snowy-sunny::before {\n content: \"\\ee76\";\n}\n\n.icofont-snowy-thunder-night::before {\n content: \"\\ee77\";\n}\n\n.icofont-snowy-thunder-sunny::before {\n content: \"\\ee78\";\n}\n\n.icofont-snowy-thunder::before {\n content: \"\\ee79\";\n}\n\n.icofont-snowy-windy-night::before {\n content: \"\\ee7a\";\n}\n\n.icofont-snowy-windy-sunny::before {\n content: \"\\ee7b\";\n}\n\n.icofont-snowy-windy::before {\n content: \"\\ee7c\";\n}\n\n.icofont-snowy::before {\n content: \"\\ee7d\";\n}\n\n.icofont-sun-alt::before {\n content: \"\\ee7e\";\n}\n\n.icofont-sun-rise::before {\n content: \"\\ee7f\";\n}\n\n.icofont-sun-set::before {\n content: \"\\ee80\";\n}\n\n.icofont-sun::before {\n content: \"\\ee81\";\n}\n\n.icofont-sunny-day-temp::before {\n content: \"\\ee82\";\n}\n\n.icofont-sunny::before {\n content: \"\\ee83\";\n}\n\n.icofont-thunder-light::before {\n content: \"\\ee84\";\n}\n\n.icofont-tornado::before {\n content: \"\\ee85\";\n}\n\n.icofont-umbrella-alt::before {\n content: \"\\ee86\";\n}\n\n.icofont-umbrella::before {\n content: \"\\ee87\";\n}\n\n.icofont-volcano::before {\n content: \"\\ee88\";\n}\n\n.icofont-wave::before {\n content: \"\\ee89\";\n}\n\n.icofont-wind-scale-0::before {\n content: \"\\ee8a\";\n}\n\n.icofont-wind-scale-1::before {\n content: \"\\ee8b\";\n}\n\n.icofont-wind-scale-10::before {\n content: \"\\ee8c\";\n}\n\n.icofont-wind-scale-11::before {\n content: \"\\ee8d\";\n}\n\n.icofont-wind-scale-12::before {\n content: \"\\ee8e\";\n}\n\n.icofont-wind-scale-2::before {\n content: \"\\ee8f\";\n}\n\n.icofont-wind-scale-3::before {\n content: \"\\ee90\";\n}\n\n.icofont-wind-scale-4::before {\n content: \"\\ee91\";\n}\n\n.icofont-wind-scale-5::before {\n content: \"\\ee92\";\n}\n\n.icofont-wind-scale-6::before {\n content: \"\\ee93\";\n}\n\n.icofont-wind-scale-7::before {\n content: \"\\ee94\";\n}\n\n.icofont-wind-scale-8::before {\n content: \"\\ee95\";\n}\n\n.icofont-wind-scale-9::before {\n content: \"\\ee96\";\n}\n\n.icofont-wind-waves::before {\n content: \"\\ee97\";\n}\n\n.icofont-wind::before {\n content: \"\\ee98\";\n}\n\n.icofont-windy-hail::before {\n content: \"\\ee99\";\n}\n\n.icofont-windy-night::before {\n content: \"\\ee9a\";\n}\n\n.icofont-windy-raining::before {\n content: \"\\ee9b\";\n}\n\n.icofont-windy-sunny::before {\n content: \"\\ee9c\";\n}\n\n.icofont-windy-thunder-raining::before {\n content: \"\\ee9d\";\n}\n\n.icofont-windy-thunder::before {\n content: \"\\ee9e\";\n}\n\n.icofont-windy::before {\n content: \"\\ee9f\";\n}\n\n.icofont-addons::before {\n content: \"\\eea0\";\n}\n\n.icofont-address-book::before {\n content: \"\\eea1\";\n}\n\n.icofont-adjust::before {\n content: \"\\eea2\";\n}\n\n.icofont-alarm::before {\n content: \"\\eea3\";\n}\n\n.icofont-anchor::before {\n content: \"\\eea4\";\n}\n\n.icofont-archive::before {\n content: \"\\eea5\";\n}\n\n.icofont-at::before {\n content: \"\\eea6\";\n}\n\n.icofont-attachment::before {\n content: \"\\eea7\";\n}\n\n.icofont-audio::before {\n content: \"\\eea8\";\n}\n\n.icofont-automation::before {\n content: \"\\eea9\";\n}\n\n.icofont-badge::before {\n content: \"\\eeaa\";\n}\n\n.icofont-bag-alt::before {\n content: \"\\eeab\";\n}\n\n.icofont-bag::before {\n content: \"\\eeac\";\n}\n\n.icofont-ban::before {\n content: \"\\eead\";\n}\n\n.icofont-bar-code::before {\n content: \"\\eeae\";\n}\n\n.icofont-bars::before {\n content: \"\\eeaf\";\n}\n\n.icofont-basket::before {\n content: \"\\eeb0\";\n}\n\n.icofont-battery-empty::before {\n content: \"\\eeb1\";\n}\n\n.icofont-battery-full::before {\n content: \"\\eeb2\";\n}\n\n.icofont-battery-half::before {\n content: \"\\eeb3\";\n}\n\n.icofont-battery-low::before {\n content: \"\\eeb4\";\n}\n\n.icofont-beaker::before {\n content: \"\\eeb5\";\n}\n\n.icofont-beard::before {\n content: \"\\eeb6\";\n}\n\n.icofont-bed::before {\n content: \"\\eeb7\";\n}\n\n.icofont-bell::before {\n content: \"\\eeb8\";\n}\n\n.icofont-beverage::before {\n content: \"\\eeb9\";\n}\n\n.icofont-bill::before {\n content: \"\\eeba\";\n}\n\n.icofont-bin::before {\n content: \"\\eebb\";\n}\n\n.icofont-binary::before {\n content: \"\\eebc\";\n}\n\n.icofont-binoculars::before {\n content: \"\\eebd\";\n}\n\n.icofont-bluetooth::before {\n content: \"\\eebe\";\n}\n\n.icofont-bomb::before {\n content: \"\\eebf\";\n}\n\n.icofont-book-mark::before {\n content: \"\\eec0\";\n}\n\n.icofont-box::before {\n content: \"\\eec1\";\n}\n\n.icofont-briefcase::before {\n content: \"\\eec2\";\n}\n\n.icofont-broken::before {\n content: \"\\eec3\";\n}\n\n.icofont-bucket::before {\n content: \"\\eec4\";\n}\n\n.icofont-bucket1::before {\n content: \"\\eec5\";\n}\n\n.icofont-bucket2::before {\n content: \"\\eec6\";\n}\n\n.icofont-bug::before {\n content: \"\\eec7\";\n}\n\n.icofont-building::before {\n content: \"\\eec8\";\n}\n\n.icofont-bulb-alt::before {\n content: \"\\eec9\";\n}\n\n.icofont-bullet::before {\n content: \"\\eeca\";\n}\n\n.icofont-bullhorn::before {\n content: \"\\eecb\";\n}\n\n.icofont-bullseye::before {\n content: \"\\eecc\";\n}\n\n.icofont-calendar::before {\n content: \"\\eecd\";\n}\n\n.icofont-camera-alt::before {\n content: \"\\eece\";\n}\n\n.icofont-camera::before {\n content: \"\\eecf\";\n}\n\n.icofont-card::before {\n content: \"\\eed0\";\n}\n\n.icofont-cart-alt::before {\n content: \"\\eed1\";\n}\n\n.icofont-cart::before {\n content: \"\\eed2\";\n}\n\n.icofont-cc::before {\n content: \"\\eed3\";\n}\n\n.icofont-charging::before {\n content: \"\\eed4\";\n}\n\n.icofont-chat::before {\n content: \"\\eed5\";\n}\n\n.icofont-check-alt::before {\n content: \"\\eed6\";\n}\n\n.icofont-check-circled::before {\n content: \"\\eed7\";\n}\n\n.icofont-check::before {\n content: \"\\eed8\";\n}\n\n.icofont-checked::before {\n content: \"\\eed9\";\n}\n\n.icofont-children-care::before {\n content: \"\\eeda\";\n}\n\n.icofont-clip::before {\n content: \"\\eedb\";\n}\n\n.icofont-clock-time::before {\n content: \"\\eedc\";\n}\n\n.icofont-close-circled::before {\n content: \"\\eedd\";\n}\n\n.icofont-close-line-circled::before {\n content: \"\\eede\";\n}\n\n.icofont-close-line-squared-alt::before {\n content: \"\\eedf\";\n}\n\n.icofont-close-line-squared::before {\n content: \"\\eee0\";\n}\n\n.icofont-close-line::before {\n content: \"\\eee1\";\n}\n\n.icofont-close-squared-alt::before {\n content: \"\\eee2\";\n}\n\n.icofont-close-squared::before {\n content: \"\\eee3\";\n}\n\n.icofont-close::before {\n content: \"\\eee4\";\n}\n\n.icofont-cloud-download::before {\n content: \"\\eee5\";\n}\n\n.icofont-cloud-refresh::before {\n content: \"\\eee6\";\n}\n\n.icofont-cloud-upload::before {\n content: \"\\eee7\";\n}\n\n.icofont-cloud::before {\n content: \"\\eee8\";\n}\n\n.icofont-code-not-allowed::before {\n content: \"\\eee9\";\n}\n\n.icofont-code::before {\n content: \"\\eeea\";\n}\n\n.icofont-comment::before {\n content: \"\\eeeb\";\n}\n\n.icofont-compass-alt::before {\n content: \"\\eeec\";\n}\n\n.icofont-compass::before {\n content: \"\\eeed\";\n}\n\n.icofont-computer::before {\n content: \"\\eeee\";\n}\n\n.icofont-connection::before {\n content: \"\\eeef\";\n}\n\n.icofont-console::before {\n content: \"\\eef0\";\n}\n\n.icofont-contacts::before {\n content: \"\\eef1\";\n}\n\n.icofont-contrast::before {\n content: \"\\eef2\";\n}\n\n.icofont-copyright::before {\n content: \"\\eef3\";\n}\n\n.icofont-credit-card::before {\n content: \"\\eef4\";\n}\n\n.icofont-crop::before {\n content: \"\\eef5\";\n}\n\n.icofont-crown::before {\n content: \"\\eef6\";\n}\n\n.icofont-cube::before {\n content: \"\\eef7\";\n}\n\n.icofont-cubes::before {\n content: \"\\eef8\";\n}\n\n.icofont-dashboard-web::before {\n content: \"\\eef9\";\n}\n\n.icofont-dashboard::before {\n content: \"\\eefa\";\n}\n\n.icofont-data::before {\n content: \"\\eefb\";\n}\n\n.icofont-database-add::before {\n content: \"\\eefc\";\n}\n\n.icofont-database-locked::before {\n content: \"\\eefd\";\n}\n\n.icofont-database-remove::before {\n content: \"\\eefe\";\n}\n\n.icofont-database::before {\n content: \"\\eeff\";\n}\n\n.icofont-delete::before {\n content: \"\\ef00\";\n}\n\n.icofont-diamond::before {\n content: \"\\ef01\";\n}\n\n.icofont-dice-multiple::before {\n content: \"\\ef02\";\n}\n\n.icofont-dice::before {\n content: \"\\ef03\";\n}\n\n.icofont-disc::before {\n content: \"\\ef04\";\n}\n\n.icofont-diskette::before {\n content: \"\\ef05\";\n}\n\n.icofont-document-folder::before {\n content: \"\\ef06\";\n}\n\n.icofont-download-alt::before {\n content: \"\\ef07\";\n}\n\n.icofont-download::before {\n content: \"\\ef08\";\n}\n\n.icofont-downloaded::before {\n content: \"\\ef09\";\n}\n\n.icofont-drag::before {\n content: \"\\ef0a\";\n}\n\n.icofont-drag1::before {\n content: \"\\ef0b\";\n}\n\n.icofont-drag2::before {\n content: \"\\ef0c\";\n}\n\n.icofont-drag3::before {\n content: \"\\ef0d\";\n}\n\n.icofont-earth::before {\n content: \"\\ef0e\";\n}\n\n.icofont-ebook::before {\n content: \"\\ef0f\";\n}\n\n.icofont-edit::before {\n content: \"\\ef10\";\n}\n\n.icofont-eject::before {\n content: \"\\ef11\";\n}\n\n.icofont-email::before {\n content: \"\\ef12\";\n}\n\n.icofont-envelope-open::before {\n content: \"\\ef13\";\n}\n\n.icofont-envelope::before {\n content: \"\\ef14\";\n}\n\n.icofont-eraser::before {\n content: \"\\ef15\";\n}\n\n.icofont-error::before {\n content: \"\\ef16\";\n}\n\n.icofont-excavator::before {\n content: \"\\ef17\";\n}\n\n.icofont-exchange::before {\n content: \"\\ef18\";\n}\n\n.icofont-exclamation-circle::before {\n content: \"\\ef19\";\n}\n\n.icofont-exclamation-square::before {\n content: \"\\ef1a\";\n}\n\n.icofont-exclamation-tringle::before {\n content: \"\\ef1b\";\n}\n\n.icofont-exclamation::before {\n content: \"\\ef1c\";\n}\n\n.icofont-exit::before {\n content: \"\\ef1d\";\n}\n\n.icofont-expand::before {\n content: \"\\ef1e\";\n}\n\n.icofont-external-link::before {\n content: \"\\ef1f\";\n}\n\n.icofont-external::before {\n content: \"\\ef20\";\n}\n\n.icofont-eye-alt::before {\n content: \"\\ef21\";\n}\n\n.icofont-eye-blocked::before {\n content: \"\\ef22\";\n}\n\n.icofont-eye-dropper::before {\n content: \"\\ef23\";\n}\n\n.icofont-eye::before {\n content: \"\\ef24\";\n}\n\n.icofont-favourite::before {\n content: \"\\ef25\";\n}\n\n.icofont-fax::before {\n content: \"\\ef26\";\n}\n\n.icofont-file-fill::before {\n content: \"\\ef27\";\n}\n\n.icofont-film::before {\n content: \"\\ef28\";\n}\n\n.icofont-filter::before {\n content: \"\\ef29\";\n}\n\n.icofont-fire-alt::before {\n content: \"\\ef2a\";\n}\n\n.icofont-fire-burn::before {\n content: \"\\ef2b\";\n}\n\n.icofont-fire::before {\n content: \"\\ef2c\";\n}\n\n.icofont-flag-alt-1::before {\n content: \"\\ef2d\";\n}\n\n.icofont-flag-alt-2::before {\n content: \"\\ef2e\";\n}\n\n.icofont-flag::before {\n content: \"\\ef2f\";\n}\n\n.icofont-flame-torch::before {\n content: \"\\ef30\";\n}\n\n.icofont-flash-light::before {\n content: \"\\ef31\";\n}\n\n.icofont-flash::before {\n content: \"\\ef32\";\n}\n\n.icofont-flask::before {\n content: \"\\ef33\";\n}\n\n.icofont-focus::before {\n content: \"\\ef34\";\n}\n\n.icofont-folder-open::before {\n content: \"\\ef35\";\n}\n\n.icofont-folder::before {\n content: \"\\ef36\";\n}\n\n.icofont-foot-print::before {\n content: \"\\ef37\";\n}\n\n.icofont-garbage::before {\n content: \"\\ef38\";\n}\n\n.icofont-gear-alt::before {\n content: \"\\ef39\";\n}\n\n.icofont-gear::before {\n content: \"\\ef3a\";\n}\n\n.icofont-gears::before {\n content: \"\\ef3b\";\n}\n\n.icofont-gift::before {\n content: \"\\ef3c\";\n}\n\n.icofont-glass::before {\n content: \"\\ef3d\";\n}\n\n.icofont-globe::before {\n content: \"\\ef3e\";\n}\n\n.icofont-graffiti::before {\n content: \"\\ef3f\";\n}\n\n.icofont-grocery::before {\n content: \"\\ef40\";\n}\n\n.icofont-hand::before {\n content: \"\\ef41\";\n}\n\n.icofont-hanger::before {\n content: \"\\ef42\";\n}\n\n.icofont-hard-disk::before {\n content: \"\\ef43\";\n}\n\n.icofont-heart-alt::before {\n content: \"\\ef44\";\n}\n\n.icofont-heart::before {\n content: \"\\ef45\";\n}\n\n.icofont-history::before {\n content: \"\\ef46\";\n}\n\n.icofont-home::before {\n content: \"\\ef47\";\n}\n\n.icofont-horn::before {\n content: \"\\ef48\";\n}\n\n.icofont-hour-glass::before {\n content: \"\\ef49\";\n}\n\n.icofont-id::before {\n content: \"\\ef4a\";\n}\n\n.icofont-image::before {\n content: \"\\ef4b\";\n}\n\n.icofont-inbox::before {\n content: \"\\ef4c\";\n}\n\n.icofont-infinite::before {\n content: \"\\ef4d\";\n}\n\n.icofont-info-circle::before {\n content: \"\\ef4e\";\n}\n\n.icofont-info-square::before {\n content: \"\\ef4f\";\n}\n\n.icofont-info::before {\n content: \"\\ef50\";\n}\n\n.icofont-institution::before {\n content: \"\\ef51\";\n}\n\n.icofont-interface::before {\n content: \"\\ef52\";\n}\n\n.icofont-invisible::before {\n content: \"\\ef53\";\n}\n\n.icofont-jacket::before {\n content: \"\\ef54\";\n}\n\n.icofont-jar::before {\n content: \"\\ef55\";\n}\n\n.icofont-jewlery::before {\n content: \"\\ef56\";\n}\n\n.icofont-karate::before {\n content: \"\\ef57\";\n}\n\n.icofont-key-hole::before {\n content: \"\\ef58\";\n}\n\n.icofont-key::before {\n content: \"\\ef59\";\n}\n\n.icofont-label::before {\n content: \"\\ef5a\";\n}\n\n.icofont-lamp::before {\n content: \"\\ef5b\";\n}\n\n.icofont-layers::before {\n content: \"\\ef5c\";\n}\n\n.icofont-layout::before {\n content: \"\\ef5d\";\n}\n\n.icofont-leaf::before {\n content: \"\\ef5e\";\n}\n\n.icofont-leaflet::before {\n content: \"\\ef5f\";\n}\n\n.icofont-learn::before {\n content: \"\\ef60\";\n}\n\n.icofont-lego::before {\n content: \"\\ef61\";\n}\n\n.icofont-lens::before {\n content: \"\\ef62\";\n}\n\n.icofont-letter::before {\n content: \"\\ef63\";\n}\n\n.icofont-letterbox::before {\n content: \"\\ef64\";\n}\n\n.icofont-library::before {\n content: \"\\ef65\";\n}\n\n.icofont-license::before {\n content: \"\\ef66\";\n}\n\n.icofont-life-bouy::before {\n content: \"\\ef67\";\n}\n\n.icofont-life-buoy::before {\n content: \"\\ef68\";\n}\n\n.icofont-life-jacket::before {\n content: \"\\ef69\";\n}\n\n.icofont-life-ring::before {\n content: \"\\ef6a\";\n}\n\n.icofont-light-bulb::before {\n content: \"\\ef6b\";\n}\n\n.icofont-lighter::before {\n content: \"\\ef6c\";\n}\n\n.icofont-lightning-ray::before {\n content: \"\\ef6d\";\n}\n\n.icofont-like::before {\n content: \"\\ef6e\";\n}\n\n.icofont-line-height::before {\n content: \"\\ef6f\";\n}\n\n.icofont-link-alt::before {\n content: \"\\ef70\";\n}\n\n.icofont-link::before {\n content: \"\\ef71\";\n}\n\n.icofont-list::before {\n content: \"\\ef72\";\n}\n\n.icofont-listening::before {\n content: \"\\ef73\";\n}\n\n.icofont-listine-dots::before {\n content: \"\\ef74\";\n}\n\n.icofont-listing-box::before {\n content: \"\\ef75\";\n}\n\n.icofont-listing-number::before {\n content: \"\\ef76\";\n}\n\n.icofont-live-support::before {\n content: \"\\ef77\";\n}\n\n.icofont-location-arrow::before {\n content: \"\\ef78\";\n}\n\n.icofont-location-pin::before {\n content: \"\\ef79\";\n}\n\n.icofont-lock::before {\n content: \"\\ef7a\";\n}\n\n.icofont-login::before {\n content: \"\\ef7b\";\n}\n\n.icofont-logout::before {\n content: \"\\ef7c\";\n}\n\n.icofont-lollipop::before {\n content: \"\\ef7d\";\n}\n\n.icofont-long-drive::before {\n content: \"\\ef7e\";\n}\n\n.icofont-look::before {\n content: \"\\ef7f\";\n}\n\n.icofont-loop::before {\n content: \"\\ef80\";\n}\n\n.icofont-luggage::before {\n content: \"\\ef81\";\n}\n\n.icofont-lunch::before {\n content: \"\\ef82\";\n}\n\n.icofont-lungs::before {\n content: \"\\ef83\";\n}\n\n.icofont-magic-alt::before {\n content: \"\\ef84\";\n}\n\n.icofont-magic::before {\n content: \"\\ef85\";\n}\n\n.icofont-magnet::before {\n content: \"\\ef86\";\n}\n\n.icofont-mail-box::before {\n content: \"\\ef87\";\n}\n\n.icofont-mail::before {\n content: \"\\ef88\";\n}\n\n.icofont-male::before {\n content: \"\\ef89\";\n}\n\n.icofont-map-pins::before {\n content: \"\\ef8a\";\n}\n\n.icofont-map::before {\n content: \"\\ef8b\";\n}\n\n.icofont-maximize::before {\n content: \"\\ef8c\";\n}\n\n.icofont-measure::before {\n content: \"\\ef8d\";\n}\n\n.icofont-medicine::before {\n content: \"\\ef8e\";\n}\n\n.icofont-mega-phone::before {\n content: \"\\ef8f\";\n}\n\n.icofont-megaphone-alt::before {\n content: \"\\ef90\";\n}\n\n.icofont-megaphone::before {\n content: \"\\ef91\";\n}\n\n.icofont-memorial::before {\n content: \"\\ef92\";\n}\n\n.icofont-memory-card::before {\n content: \"\\ef93\";\n}\n\n.icofont-mic-mute::before {\n content: \"\\ef94\";\n}\n\n.icofont-mic::before {\n content: \"\\ef95\";\n}\n\n.icofont-military::before {\n content: \"\\ef96\";\n}\n\n.icofont-mill::before {\n content: \"\\ef97\";\n}\n\n.icofont-minus-circle::before {\n content: \"\\ef98\";\n}\n\n.icofont-minus-square::before {\n content: \"\\ef99\";\n}\n\n.icofont-minus::before {\n content: \"\\ef9a\";\n}\n\n.icofont-mobile-phone::before {\n content: \"\\ef9b\";\n}\n\n.icofont-molecule::before {\n content: \"\\ef9c\";\n}\n\n.icofont-money::before {\n content: \"\\ef9d\";\n}\n\n.icofont-moon::before {\n content: \"\\ef9e\";\n}\n\n.icofont-mop::before {\n content: \"\\ef9f\";\n}\n\n.icofont-muffin::before {\n content: \"\\efa0\";\n}\n\n.icofont-mustache::before {\n content: \"\\efa1\";\n}\n\n.icofont-navigation-menu::before {\n content: \"\\efa2\";\n}\n\n.icofont-navigation::before {\n content: \"\\efa3\";\n}\n\n.icofont-network-tower::before {\n content: \"\\efa4\";\n}\n\n.icofont-network::before {\n content: \"\\efa5\";\n}\n\n.icofont-news::before {\n content: \"\\efa6\";\n}\n\n.icofont-newspaper::before {\n content: \"\\efa7\";\n}\n\n.icofont-no-smoking::before {\n content: \"\\efa8\";\n}\n\n.icofont-not-allowed::before {\n content: \"\\efa9\";\n}\n\n.icofont-notebook::before {\n content: \"\\efaa\";\n}\n\n.icofont-notepad::before {\n content: \"\\efab\";\n}\n\n.icofont-notification::before {\n content: \"\\efac\";\n}\n\n.icofont-numbered::before {\n content: \"\\efad\";\n}\n\n.icofont-opposite::before {\n content: \"\\efae\";\n}\n\n.icofont-optic::before {\n content: \"\\efaf\";\n}\n\n.icofont-options::before {\n content: \"\\efb0\";\n}\n\n.icofont-package::before {\n content: \"\\efb1\";\n}\n\n.icofont-page::before {\n content: \"\\efb2\";\n}\n\n.icofont-paint::before {\n content: \"\\efb3\";\n}\n\n.icofont-paper-plane::before {\n content: \"\\efb4\";\n}\n\n.icofont-paperclip::before {\n content: \"\\efb5\";\n}\n\n.icofont-papers::before {\n content: \"\\efb6\";\n}\n\n.icofont-pay::before {\n content: \"\\efb7\";\n}\n\n.icofont-penguin-linux::before {\n content: \"\\efb8\";\n}\n\n.icofont-pestle::before {\n content: \"\\efb9\";\n}\n\n.icofont-phone-circle::before {\n content: \"\\efba\";\n}\n\n.icofont-phone::before {\n content: \"\\efbb\";\n}\n\n.icofont-picture::before {\n content: \"\\efbc\";\n}\n\n.icofont-pine::before {\n content: \"\\efbd\";\n}\n\n.icofont-pixels::before {\n content: \"\\efbe\";\n}\n\n.icofont-plugin::before {\n content: \"\\efbf\";\n}\n\n.icofont-plus-circle::before {\n content: \"\\efc0\";\n}\n\n.icofont-plus-square::before {\n content: \"\\efc1\";\n}\n\n.icofont-plus::before {\n content: \"\\efc2\";\n}\n\n.icofont-polygonal::before {\n content: \"\\efc3\";\n}\n\n.icofont-power::before {\n content: \"\\efc4\";\n}\n\n.icofont-price::before {\n content: \"\\efc5\";\n}\n\n.icofont-print::before {\n content: \"\\efc6\";\n}\n\n.icofont-puzzle::before {\n content: \"\\efc7\";\n}\n\n.icofont-qr-code::before {\n content: \"\\efc8\";\n}\n\n.icofont-queen::before {\n content: \"\\efc9\";\n}\n\n.icofont-question-circle::before {\n content: \"\\efca\";\n}\n\n.icofont-question-square::before {\n content: \"\\efcb\";\n}\n\n.icofont-question::before {\n content: \"\\efcc\";\n}\n\n.icofont-quote-left::before {\n content: \"\\efcd\";\n}\n\n.icofont-quote-right::before {\n content: \"\\efce\";\n}\n\n.icofont-random::before {\n content: \"\\efcf\";\n}\n\n.icofont-recycle::before {\n content: \"\\efd0\";\n}\n\n.icofont-refresh::before {\n content: \"\\efd1\";\n}\n\n.icofont-repair::before {\n content: \"\\efd2\";\n}\n\n.icofont-reply-all::before {\n content: \"\\efd3\";\n}\n\n.icofont-reply::before {\n content: \"\\efd4\";\n}\n\n.icofont-resize::before {\n content: \"\\efd5\";\n}\n\n.icofont-responsive::before {\n content: \"\\efd6\";\n}\n\n.icofont-retweet::before {\n content: \"\\efd7\";\n}\n\n.icofont-road::before {\n content: \"\\efd8\";\n}\n\n.icofont-robot::before {\n content: \"\\efd9\";\n}\n\n.icofont-royal::before {\n content: \"\\efda\";\n}\n\n.icofont-rss-feed::before {\n content: \"\\efdb\";\n}\n\n.icofont-safety::before {\n content: \"\\efdc\";\n}\n\n.icofont-sale-discount::before {\n content: \"\\efdd\";\n}\n\n.icofont-satellite::before {\n content: \"\\efde\";\n}\n\n.icofont-send-mail::before {\n content: \"\\efdf\";\n}\n\n.icofont-server::before {\n content: \"\\efe0\";\n}\n\n.icofont-settings-alt::before {\n content: \"\\efe1\";\n}\n\n.icofont-settings::before {\n content: \"\\efe2\";\n}\n\n.icofont-share-alt::before {\n content: \"\\efe3\";\n}\n\n.icofont-share-boxed::before {\n content: \"\\efe4\";\n}\n\n.icofont-share::before {\n content: \"\\efe5\";\n}\n\n.icofont-shield::before {\n content: \"\\efe6\";\n}\n\n.icofont-shopping-cart::before {\n content: \"\\efe7\";\n}\n\n.icofont-sign-in::before {\n content: \"\\efe8\";\n}\n\n.icofont-sign-out::before {\n content: \"\\efe9\";\n}\n\n.icofont-signal::before {\n content: \"\\efea\";\n}\n\n.icofont-site-map::before {\n content: \"\\efeb\";\n}\n\n.icofont-smart-phone::before {\n content: \"\\efec\";\n}\n\n.icofont-soccer::before {\n content: \"\\efed\";\n}\n\n.icofont-sort-alt::before {\n content: \"\\efee\";\n}\n\n.icofont-sort::before {\n content: \"\\efef\";\n}\n\n.icofont-space::before {\n content: \"\\eff0\";\n}\n\n.icofont-spanner::before {\n content: \"\\eff1\";\n}\n\n.icofont-speech-comments::before {\n content: \"\\eff2\";\n}\n\n.icofont-speed-meter::before {\n content: \"\\eff3\";\n}\n\n.icofont-spinner-alt-1::before {\n content: \"\\eff4\";\n}\n\n.icofont-spinner-alt-2::before {\n content: \"\\eff5\";\n}\n\n.icofont-spinner-alt-3::before {\n content: \"\\eff6\";\n}\n\n.icofont-spinner-alt-4::before {\n content: \"\\eff7\";\n}\n\n.icofont-spinner-alt-5::before {\n content: \"\\eff8\";\n}\n\n.icofont-spinner-alt-6::before {\n content: \"\\eff9\";\n}\n\n.icofont-spinner::before {\n content: \"\\effa\";\n}\n\n.icofont-spreadsheet::before {\n content: \"\\effb\";\n}\n\n.icofont-square::before {\n content: \"\\effc\";\n}\n\n.icofont-ssl-security::before {\n content: \"\\effd\";\n}\n\n.icofont-star-alt-1::before {\n content: \"\\effe\";\n}\n\n.icofont-star-alt-2::before {\n content: \"\\efff\";\n}\n\n.icofont-star::before {\n content: \"\\f000\";\n}\n\n.icofont-street-view::before {\n content: \"\\f001\";\n}\n\n.icofont-support-faq::before {\n content: \"\\f002\";\n}\n\n.icofont-tack-pin::before {\n content: \"\\f003\";\n}\n\n.icofont-tag::before {\n content: \"\\f004\";\n}\n\n.icofont-tags::before {\n content: \"\\f005\";\n}\n\n.icofont-tasks-alt::before {\n content: \"\\f006\";\n}\n\n.icofont-tasks::before {\n content: \"\\f007\";\n}\n\n.icofont-telephone::before {\n content: \"\\f008\";\n}\n\n.icofont-telescope::before {\n content: \"\\f009\";\n}\n\n.icofont-terminal::before {\n content: \"\\f00a\";\n}\n\n.icofont-thumbs-down::before {\n content: \"\\f00b\";\n}\n\n.icofont-thumbs-up::before {\n content: \"\\f00c\";\n}\n\n.icofont-tick-boxed::before {\n content: \"\\f00d\";\n}\n\n.icofont-tick-mark::before {\n content: \"\\f00e\";\n}\n\n.icofont-ticket::before {\n content: \"\\f00f\";\n}\n\n.icofont-tie::before {\n content: \"\\f010\";\n}\n\n.icofont-toggle-off::before {\n content: \"\\f011\";\n}\n\n.icofont-toggle-on::before {\n content: \"\\f012\";\n}\n\n.icofont-tools-alt-2::before {\n content: \"\\f013\";\n}\n\n.icofont-tools::before {\n content: \"\\f014\";\n}\n\n.icofont-touch::before {\n content: \"\\f015\";\n}\n\n.icofont-traffic-light::before {\n content: \"\\f016\";\n}\n\n.icofont-transparent::before {\n content: \"\\f017\";\n}\n\n.icofont-tree::before {\n content: \"\\f018\";\n}\n\n.icofont-unique-idea::before {\n content: \"\\f019\";\n}\n\n.icofont-unlock::before {\n content: \"\\f01a\";\n}\n\n.icofont-unlocked::before {\n content: \"\\f01b\";\n}\n\n.icofont-upload-alt::before {\n content: \"\\f01c\";\n}\n\n.icofont-upload::before {\n content: \"\\f01d\";\n}\n\n.icofont-usb-drive::before {\n content: \"\\f01e\";\n}\n\n.icofont-usb::before {\n content: \"\\f01f\";\n}\n\n.icofont-vector-path::before {\n content: \"\\f020\";\n}\n\n.icofont-verification-check::before {\n content: \"\\f021\";\n}\n\n.icofont-wall-clock::before {\n content: \"\\f022\";\n}\n\n.icofont-wall::before {\n content: \"\\f023\";\n}\n\n.icofont-wallet::before {\n content: \"\\f024\";\n}\n\n.icofont-warning-alt::before {\n content: \"\\f025\";\n}\n\n.icofont-warning::before {\n content: \"\\f026\";\n}\n\n.icofont-water-drop::before {\n content: \"\\f027\";\n}\n\n.icofont-web::before {\n content: \"\\f028\";\n}\n\n.icofont-wheelchair::before {\n content: \"\\f029\";\n}\n\n.icofont-wifi-alt::before {\n content: \"\\f02a\";\n}\n\n.icofont-wifi::before {\n content: \"\\f02b\";\n}\n\n.icofont-world::before {\n content: \"\\f02c\";\n}\n\n.icofont-zigzag::before {\n content: \"\\f02d\";\n}\n\n.icofont-zipped::before {\n content: \"\\f02e\";\n}\n\n.icofont-xs {\n font-size: .5em;\n}\n\n.icofont-sm {\n font-size: .75em;\n}\n\n.icofont-md {\n font-size: 1.25em;\n}\n\n.icofont-lg {\n font-size: 1.5em;\n}\n\n.icofont-1x {\n font-size: 1em;\n}\n\n.icofont-2x {\n font-size: 2em;\n}\n\n.icofont-3x {\n font-size: 3em;\n}\n\n.icofont-4x {\n font-size: 4em;\n}\n\n.icofont-5x {\n font-size: 5em;\n}\n\n.icofont-6x {\n font-size: 6em;\n}\n\n.icofont-7x {\n font-size: 7em;\n}\n\n.icofont-8x {\n font-size: 8em;\n}\n\n.icofont-9x {\n font-size: 9em;\n}\n\n.icofont-10x {\n font-size: 10em;\n}\n\n.icofont-fw {\n width: 1.25em;\n text-align: center;\n}\n\n.icofont-ul {\n padding-left: 0;\n margin-left: 0;\n list-style-type: none;\n}\n\n.icofont-ul>li {\n position: relative;\n line-height: 2em;\n}\n\n.icofont-ul>li .icofont {\n display: inline-block;\n vertical-align: middle;\n}\n\n.icofont-border {\n padding: .2em .25em .15em;\n border: solid 0.08em #f1f1f1;\n border-radius: .1em;\n}\n\n.icofont-pull-left {\n float: left;\n}\n\n.icofont-pull-right {\n float: right;\n}\n\n.icofont.icofont-pull-left {\n margin-right: .3em;\n}\n\n.icofont.icofont-pull-right {\n margin-left: .3em;\n}\n\n.icofont-spin {\n display: inline-block;\n animation: icofont-spin 2s infinite linear;\n animation: icofont-spin 2s infinite linear;\n}\n\n.icofont-pulse {\n display: inline-block;\n animation: icofont-spin 1s infinite steps(8);\n animation: icofont-spin 1s infinite steps(8);\n}\n\n@keyframes icofont-spin {\n 0% {\n transform: rotate(0deg);\n transform: rotate(0deg);\n }\n\n 100% {\n transform: rotate(360deg);\n transform: rotate(360deg);\n }\n}\n\n@keyframes icofont-spin {\n 0% {\n transform: rotate(0deg);\n transform: rotate(0deg);\n }\n\n 100% {\n transform: rotate(360deg);\n transform: rotate(360deg);\n }\n}\n\n.icofont-rotate-90 {\n filter: \"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)\";\n transform: rotate(90deg);\n transform: rotate(90deg);\n}\n\n.icofont-rotate-180 {\n filter: \"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)\";\n transform: rotate(180deg);\n transform: rotate(180deg);\n}\n\n.icofont-rotate-270 {\n filter: \"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)\";\n transform: rotate(270deg);\n transform: rotate(270deg);\n}\n\n.icofont-flip-horizontal {\n filter: \"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)\";\n transform: scale(-1, 1);\n transform: scale(-1, 1);\n}\n\n.icofont-flip-vertical {\n filter: \"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)\";\n transform: scale(1, -1);\n transform: scale(1, -1);\n}\n\n.icofont-flip-horizontal.icofont-flip-vertical {\n filter: \"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)\";\n transform: scale(-1, -1);\n transform: scale(-1, -1);\n}\n\n:root .icofont-rotate-90,\n:root .icofont-rotate-180,\n:root .icofont-rotate-270,\n:root .icofont-flip-horizontal,\n:root .icofont-flip-vertical {\n display: inline-block;\n filter: none;\n filter: none;\n}\n\n.icofont-inverse {\n color: #fff;\n}\n\n.sr-only {\n position: absolute;\n overflow: hidden;\n width: 1px;\n height: 1px;\n padding: 0;\n border: 0;\n margin: -1px;\n clip: rect(0, 0, 0, 0);\n}\n\n.sr-only-focusable:active,\n.sr-only-focusable:focus {\n position: static;\n overflow: visible;\n width: auto;\n height: auto;\n margin: 0;\n clip: auto;\n}","/* Header\n############################################################################ */\n.header {\n padding-bottom: var(--size-xl);\n text-align: center;\n \n @media only screen and (width >= 40rem) {\n text-align: left;\n }\n\n .title {\n margin-bottom: var(--size-m);\n color: var(--decoration-color);\n font-size: var(--size-l);\n font-weight: var(--fw-medium);\n }\n \n .subtitle,\n .subtitle a {\n color: var(--color-dark);\n font-size: var(--size-m);\n }\n\n @media only screen and (width >= 40rem) {\n .title {\n font-size: var(--size-xl);\n }\n \n .subtitle, .subtitle a {\n font-size: var(--size-l);\n }\n }\n}","/* Artefact list\n############################################################################ */\n.artefact-list {\n display: grid;\n margin-top: 1em;\n margin-bottom: 1em;\n gap: 1em;\n grid-template-columns: repeat(auto-fill, minmax(12em, 1fr));\n\n li {\n overflow: hidden;\n font-weight: var(--fw-medium);\n text-align: center;\n transition: all var(--tr-fast);\n vertical-align: middle;\n \n /* stylelint-disable-next-line no-descending-specificity */\n a {\n display: flex;\n height: 100%;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 2em;\n border: none;\n border: solid 1px var(--color-darken);\n border-radius: var(--radius-s);\n aspect-ratio: 3/2;\n background-color: rgb(0 0 0 / 3%);\n hyphens: auto;\n line-height: var(--lh-tight);\n text-decoration: none;\n \n &:hover {\n background-color: var(--interaction-color);\n color: var(--color-lightest);\n\n i {\n color: var(--color-lightest);\n }\n }\n }\n\n /* stylelint-disable-next-line no-descending-specificity */\n i {\n display: block;\n margin-top: 1ch !important;\n margin-bottom: 0.5ch !important;\n color: var(--color-pink);\n text-align: center;\n }\n }\n}\n","@font-face {\n font-family: Barlow;\n font-style: normal;\n font-weight: 300;\n src: url(\"../fonts/Barlow/Barlow-Light.ttf\");\n}\n\n@font-face {\n font-family: Barlow;\n font-style: normal;\n font-weight: 400;\n src: url(\"../fonts/Barlow/Barlow-Regular.ttf\");\n}\n\n@font-face {\n font-family: Barlow;\n font-style: normal;\n font-weight: 500;\n src: url(\"../fonts/Barlow/Barlow-Medium.ttf\");\n}\n\n@font-face {\n font-family: Barlow;\n font-style: normal;\n font-weight: 600;\n src: url(\"../fonts/Barlow/Barlow-Bold.ttf\");\n}\n\n\n@font-face {\n font-family: 'Material Icons';\n font-style: normal;\n font-weight: 400;\n src: url('../fonts/MaterialIcons/MaterialIcons-Regular.eot'); /* For IE6-8 */\n src: local('Material Icons'),\n local('MaterialIcons-Regular'),\n url('../fonts/MaterialIcons/MaterialIcons-Regular.woff2') format('woff2'),\n url('../fonts/MaterialIcons/MaterialIcons-Regular.woff') format('woff'),\n url('../fonts/MaterialIcons/MaterialIcons-Regular.ttf') format('truetype');\n}","/* Home Button\n############################################################################ */\n.home-button {\n margin-top: var(--size-xl);\n margin-bottom: var(--size-l);\n\n & > a {\n border: none;\n text-decoration: none;\n transition: transform var(--tr-medium);\n\n &:hover {\n background-color: transparent;\n transform: rotate(60deg);\n }\n }\n}\n\n/* More Button\n############################################################################ */\n\n.simple-button{\n padding: var(--size-s) var(--size-m);\n border-radius: var(--radius-xs);\n background-color: var(--interaction-color);\n color: var(--color-lightest);\n font-size: var(--size-m);\n transition: all var(--tr-fast);\n\n &:hover{\n background-color: var(--color-darkblue);\n box-shadow: var(--box-shadow);\n cursor: pointer;\n \n }\n}","/* Topic Overview\n############################################################################ */\n.topic-overview {\n display: grid;\n margin-top: var(--size-xl);\n gap: var(--size-s);\n grid-template-columns: repeat(auto-fill, minmax(16em, 1fr));\n \n .topic-item {\n display: flex;\n height: 100%;\n flex-direction: column;\n padding-bottom: var(--size-m);\n border-bottom: solid 3px var(--color-pink);\n margin-left: 0;\n background-color: var(--color-lighten);\n justify-items: center;\n transition: transform var(--tr-fast);\n\n & > * {\n padding-right: 2em;\n color: var(--color-darkblue);\n }\n\n &::before {\n content: none;\n }\n \n h3 {\n padding-top: var(--size-m);\n margin-bottom: var(--size-s);\n color: var(--color-darkest);\n }\n\n p {\n line-height: var(--lh-tight);\n }\n\n &:hover{\n z-index: 1000;\n transform: rotate(2deg);\n }\n\n &.with-light-background{\n padding: var(--size-s);\n padding-bottom: var(--size-m);\n background-color: var(--color-lighten-strong);\n\n h3{\n padding-top: var(--size-xs);\n }\n }\n }\n}","/* Work Overview\n############################################################################ */\n.work-overview {\n display: grid;\n margin-top: var(--size-xl);\n margin-bottom: var(--size-l);\n gap: var(--size-s);\n grid-template-columns: repeat(auto-fill, minmax(32rem, 1fr));\n\n @media screen and (width < 32rem) {\n grid-template-columns: 1fr;\n \n }\n \n .work-item {\n border-bottom: solid 3px var(--color-pink);\n background-color: var(--color-lighten);\n transition: all var(--tr-fast);\n\n .wrap{\n display: block;\n width: 100%;\n height: 100%;\n }\n\n &.is-hidden{\n display: none;\n }\n\n figure{\n display: flex;\n gap: var(--size-s);\n\n @media screen and (width < 32rem) {\n flex-direction: column;\n }\n \n h3 {\n padding-top: 0;\n margin-bottom: var(--size-s);\n hyphens: auto;\n text-wrap: balance;\n }\n \n img{\n width: 6em;\n height: 5em;\n object-fit: cover;\n\n @media screen and (width < 32rem) {\n width: 100%;\n height: auto;\n }\n }\n \n .meta{\n flex-grow: 2;\n margin-bottom: var(--size-m);\n }\n \n p {\n line-height: var(--lh-tight);\n }\n \n }\n\n\n &::before {\n content: none;\n }\n\n &.with-light-background{\n padding: var(--size-s);\n background-color: var(--color-lighten-strong);\n }\n\n &:has(a):hover{\n z-index: 1000;\n box-shadow: var(--box-shadow);\n transform: scale(1.02);\n\n &.with-light-background{\n background-color: var(--color-lightest);\n }\n }\n }\n\n .more-button{\n display: flex;\n width: 100%;\n height: 100%;\n align-items: center;\n justify-content: center;\n }\n}","details{\n margin-left: calc(var(--size-m) * -0.5);\n transition: padding var(--tr-slow),margin var(--tr-slow),opacity var(--tr-medium);\n transition: grid-template-rows 0.5s ease-out;\n \n summary {\n display: flex;\n list-style: none;\n\n &::-webkit-details-marker {\n display: none;\n }\n\n h3{\n color: var(--color-darkest);\n font-size: calc(var(--size-l) * 0.7);\n }\n\n &::before {\n display: inline-block;\n width: var(--size-l);\n height: var(--size-l);\n padding-right: var(--size-xxs);\n color: var(--interaction-color);\n content: \"chevron_right\";\n direction: ltr;\n font-family: var(--font-icons);\n font-feature-settings: \"liga\";\n font-size: var(--size-l);\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n font-style: normal;\n font-variation-settings: \"FILL\" 0,\"wght\" 200,\"GRAD\" -25,\"opsz\" 48;\n font-weight: var(--fw-bold);\n letter-spacing: normal;\n line-height: 80%;\n text-rendering: optimizelegibility;\n text-transform: none;\n transition: transform .2s ease-in-out;\n white-space: nowrap;\n word-wrap: normal;\n }\n\n &:hover {\n cursor: pointer;\n }\n }\n\n .details-content{\n display: grid;\n margin-left: var(--size-l);\n grid-template-rows: 0fr;\n overflow-y: hidden;\n transition: grid-template-rows 0.5s ease-out;\n\n div{\n overflow: hidden;\n }\n }\n\n &[open] {\n padding-bottom: var(--size-l);\n border-bottom: solid var(--border-width-l)var(--dark);\n margin-bottom: var(--size-l);\n grid-template-rows: 1fr;\n opacity: 1 !important;\n \n .details-content{\n grid-template-rows: 1fr;\n }\n\n summary::before{\n transform: rotate(90deg) !important;\n }\n }\n\n}\n",":root {\n /* Faktor */\n --scaling-factor: 1.1;\n\n /* Sizes */\n --size-xxs: calc(4px * var(--scaling-factor));\n --size-xs: calc(7px * var(--scaling-factor));\n --size-s: calc(11px * var(--scaling-factor));\n --size-m: calc(18px * var(--scaling-factor));\n --size-l: calc(29px * var(--scaling-factor));\n --size-xl: calc(47px * var(--scaling-factor));\n --size-xxl: calc(76px * var(--scaling-factor));\n\n /* Font Properties */\n --font-family-serif: \"PTserif\", georgia, serif;\n --font-family-sans: \"Barlow\", arial, sans-serif;\n --base-font-size: var(--size-m);\n --font-icons: \"Material Icons\";\n\n /* Font Weights */\n --fw-light: 300;\n --fw-normal: 400;\n --fw-medium: 500;\n --fw-bold: 600;\n\n /* Line Heights */\n --lh-tight: 110%;\n --lh-default: 130%;\n --lh-loose: 150%;\n\n /* Opacity */\n --op-medium: 0.6;\n\n /* Base Colors */\n --color-steingrau: hsl(42deg 3% 55% / 60%);\n --color-lichtgrau: hsl(100deg 3% 77% / 100%);\n --color-hellgrau: #BBBAB7;\n --color-blaugrau: #82899A;\n --color-pink: #d16;\n --color-green: #10CFA3;\n --color-blue: #28C0DE;\n --color-darkblue: #047A91;\n --color-yellow: #DECC28;\n --color-light: #E6DED1;\n --color-lightest: #fff;\n --color-lighten: rgb(255 255 255 / 20%);\n --color-lighten-strong: rgb(255 255 255 / 50%);\n --color-dark: #57544F;\n --color-darker: #000;\n --color-darkest: #000;\n --color-darken: rgb(0 0 0 / 20%);\n --color-darken-strong: rgb(0 0 0 / 70%);\n --color-darken-light: rgb(20 20 0 / 5%);\n\n /* Functional Colors */\n --interaction-color: var(--color-pink);\n --decoration-color: var(--color-green);\n --icon-color: var(--color-blue);\n --text-color: var(--color-darker);\n --headline-color: var(--color-darkblue);\n --headline-color-light: var(--color-steingrau);\n --aside-color: var(--color-lichtgrau);\n --border-color: var(--color-lichtgrau);\n --seperator-color: var(--color-light);\n --background-color: var(--color-lightest);\n\n /* Transitions */\n --tr-fast: 0.2s;\n --tr-medium: 0.6s;\n --tr-slow: 1s;\n\n /* Misc */\n --bw: 2px;\n --text-shadow: 0 0 20px rgb(0 0 0 / 90%);\n --box-shadow: 0 0 20px rgb(0 0 0 / 10%);\n --max-width-content: 50rem;\n --aside-width: 20rem;\n --border-width: 2px;\n --radius-xs: 3px;\n --radius-s: 0.5rem;\n --shadow-m: 0 0 10px rgb(0 0 0 / 20%);\n --size-image-thumbnail: 12.5rem;\n}\n","/* Herotext\n############################################################################ */\n.herotext {\n margin-bottom: var(--size-xxl );\n font-size: var(--size-m);\n font-weight: var(--fw-normal);\n line-height: var(--lh-default);\n \n @media only screen and (width >= 40rem) {\n font-size: var(--size-l);\n font-weight: var(--fw-normal);\n }\n}\n\n/* Mini Hero\n############################################################################ */\n\n.mini-hero{\n max-width: calc(var(--max-width-content) * 0.66) !important;\n padding-top: var(--size-l);\n padding-bottom: var(--size-xl);\n}","/* Avatar\n############################################################################ */\n.avatar {\n width: 100%;\n max-width: 300px;\n border-radius: 50%;\n}",".icon {\n display: inline-block;\n width: auto;\n height: auto;\n margin-right: var(--size-xxs);\n direction: ltr;\n font-family: var(--font-icons);\n font-feature-settings: 'liga';\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n font-style: normal;\n font-weight: normal;\n letter-spacing: normal;\n line-height: inherit;\n text-rendering: optimizelegibility;\n text-transform: none;\n vertical-align: middle;\n white-space: nowrap;\n word-wrap: normal;\n\n &.red {\n color: red;\n }\n\n &.md-dark {\n color: var(--dark);\n }\n\n &.md-light {\n color: var(--light);\n }\n}\n\n.icon-s {\n font-size: var(--size-s);\n line-height: var(--size-s);\n}\n\n.icon-m {\n font-size: var(--size-m);\n line-height: var(--size-m);\n}\n\n.icon-l {\n font-size: var(--size-l);\n line-height: var(--size-l);\n}\n\n.icon-xl {\n font-size: var(--size-xl);\n line-height: var(--size-xl);\n}\n\n.icon::before {\n content: attr(data-icon);\n}\n\n\n.icon-inline {\n margin-right: 0.4em;\n font-size: var(--size-m);\n}\n\n[class^=\"icofont-\"],\n[class^=\"material-\"],\n[class*=\" icofont-\"],\n.icon {\n color: var(--icon-color);\n\n &.is-large {\n margin-top: var(--size-l);\n margin-bottom: var(--size-xl);\n font-size: var(--size-l);\n }\n\n &.is-inline{\n margin-right: 0.25em;\n color: var(--color-darken-strong);\n }\n}","/* Simple\n############################################################################ */\n.simple {\n table {\n margin-top: var(--size-l);\n margin-bottom: var(--size-l);\n\n th {\n padding-bottom: var(--size-s);\n font-weight: var(--fw-medium);\n text-align: left;\n }\n\n tr td {\n padding: var(--size-s) var(--size-s) var(--size-s) 0;\n border-top: solid 1px var(--color-green);\n }\n }\n\n h3 {\n margin-top: var(--size-xxl);\n\n\n i {\n margin-right: var(--size-xs);\n }\n }\n\n .page{\n margin-bottom: var(--size-xl);\n }\n}","/* Work \n############################################################################ */\n.work {\n hr {\n margin: 0;\n margin-top: var(--size-l);\n margin-bottom: var(--size-l);\n }\n\n p {\n margin-bottom: var(--size-m);\n }\n}","/* Work Result\n############################################################################ */\n.work-result {\n h1.title{\n font-size: var(--size-m);\n }\n\n h2.subtitle,\n h2.subtitle a{\n margin-top: calc(var(--size-m) * -1);\n font-size: var(--size-m);\n }\n\n h2.title{\n font-weight: var(--fw-medium);\n }\n\n h3.subtitle{\n color: var(--color-dark);\n\n\n @media only screen and (width >= 40rem) {\n font-size: var(--size-l);\n }\n }\n\n main{\n padding-bottom: var(--size-xl);\n }\n\n dl.metadata a{\n border-bottom: none;\n }\n\n .work-result-thumbnail{\n max-width: calc(var(--max-width-content) /2);\n margin-bottom: var(--size-xl);\n background-color: var(--color-darken-light);\n \n @media screen and (width <= 40rem){\n max-width: 100%;\n }\n\n img{\n display: block;\n mix-blend-mode: darken;\n }\n }\n\n .work-result-avatar{\n display: none;\n width: 50%;\n }\n\n @media screen and (width > 100rem){\n .work-result-main{\n display: grid;\n gap: var(--size-xl);\n grid-row: auto;\n grid-template-areas: \n \"title title\"\n \"left right\";\n grid-template-columns: var(--max-width-content) 1fr;\n\n .work-result-header{\n grid-area: title;\n }\n\n .metadata-wrap{\n grid-area: right;\n }\n\n }\n }\n}",".grow{\n flex-grow: 1;\n}","/* Toc\n############################################################################ */\n.toc {\n &__item {\n max-width: var(--vp-medium);\n padding-top: var(--size-xs);\n padding-bottom: var(--size-xs);\n border-top: solid 1px var(--seperator-color);\n }\n}","/* State of Work\n############################################################################ */\n.state-of-work {\n margin-top: var(--size-xxl);\n margin-bottom: var(--size-xxl);\n\n\n @media screen and (width <= 768px){\n .hide-on-mobile{\n display: none;\n }\n }\n\n .capacity-item{\n display: inline-flex;\n width: 2.5em;\n height: 2.5em;\n align-items: center;\n justify-content: center;\n border-radius: 50%; /* Macht es rund */\n aspect-ratio: 1/1;\n background-color: var(--color-light);\n text-align: center;\n }\n\n .table-container{\n width: 100%;\n overflow-x: auto;\n }\n\n table{\n width: 100%;\n max-width: var(--max-width-content);\n border-collapse: collapse;\n border-spacing: 0;\n\n thead{\n th{\n min-width: 12ch;\n padding: 1rem;\n }\n }\n\n tbody{\n th{\n min-width: 12ch;\n text-align: left;\n }\n\n td{\n font-weight: var(--fw-bold);\n text-align: center;\n }\n\n tr{\n *{\n padding: 1rem;\n border-top: dotted var(--border-width)var(--border-color);\n }\n }\n }\n\n\n }\n\n}","/* Slideshow\n############################################################################ */\n\n.slideshow {\n display: grid;\n gap: 1;\n grid-template-columns: repeat(auto-fill, var(--size-image-thumbnail));\n\n @media screen and (width <= 40rem) {\n grid-template-columns: 1fr;\n \n }\n\n li{\n width: 100%;\n height: 100%;\n aspect-ratio: 1/1;\n background-color: var(--color-darken-light);\n\n &:hover{\n cursor: pointer;\n }\n\n button{\n width: 100%;\n height: 100%;\n aspect-ratio: 1/1;\n }\n\n img{\n display: block;\n width: 100%;\n height: 100%;\n mix-blend-mode: darken ;\n object-fit: cover;\n }\n }\n}\n\n/* Image Popover\n############################################################################ */\n\n.image-popover{\n width: 100vw;\n height: 100vh;\n background-color: transparent;\n\n .image-popover-content{\n display: block;\n width: 90%;\n height: 90%;\n object-fit: contain;\n }\n\n .next-btn,\n .prev-btn,\n .close-btn{\n position: absolute;\n border: none;\n color: var(--color-lightest);\n line-height: 0;\n transition: all var(--tr-fast);\n\n span{\n border: none;\n color: var(--interaction-color);\n font-size: var(--size-l);\n\n &:hover{\n color: var(--color-lightest);\n cursor: pointer;\n transform: translateX(15%);\n }\n }\n }\n\n button.close-btn{\n top: var(--size-m);\n right: var(--size-m);\n \n span{\n font-size: var(--size-xl);\n\n &:hover{\n transform: rotate(90deg);\n }\n }\n }\n\n button.next-btn{\n top: 50%;\n right: var(--size-m);\n transform: translateY(-50%);\n }\n\n button.prev-btn{\n top: 50%;\n left: var(--size-m);\n transform: translateY(-50%);\n\n span{\n &:hover{\n transform: translateX(-15%);\n }\n }\n }\n \n &::backdrop {\n background: rgb(0 0 0 / 95%);\n }\n \n &:popover-open {\n display: flex;\n align-items: center;\n justify-content: center;\n opacity: 1;\n transition: all var(--tr-medium);\n\n @starting-style {\n opacity: 0;\n }\n\n .close-btn{\n transform: rotate(90deg);\n }\n }\n\n\n}","/* Keywords\n############################################################################ */\n.keywords {\n li {\n display: inline;\n }\n\n li + li::before {\n content: \",\";\n }\n}","/* Taglist \n############################################################################ */\n.taglist {\n &--linear li {\n display: inline-block;\n }\n \n &__item {\n &::before {\n color: var(--decoration-color);\n content: '#';\n }\n }\n}","/* stylelint-disable no-descending-specificity */\n\n\n/* Form\n############################################################################ */\n.form{\n input,\n textarea {\n color: var(--color-lighten);\n font-family: var(--ff-primary);\n }\n\n label {\n position: relative;\n z-index: 10;\n display: inline-block;\n color: var(--color-darkest);\n font-size: var(--s);\n transform: translateY(calc(var(--size-m) * -1.75));\n transition: all var(--tr-fast) ease;\n }\n\n .form-row {\n position: relative;\n }\n\n input[type=\"text\"],\n input[type=\"tel\"],\n input[type=\"email\"],\n textarea {\n position: relative;\n z-index: 20;\n display: inline-block;\n width: 100%;\n padding: var(--size-s) var(--size-s) var(--size-s) 0;\n border: none;\n border-bottom: solid 1px var(--decoration-color);\n background-color: transparent;\n font-size: var(--size-m);\n outline: none;\n }\n\n input[type=\"text\"]:focus,\n input[type=\"fon\"]:focus,\n input[type=\"email\"]:focus,\n textarea:focus{\n padding: var(--size-s);\n border-bottom-color: var(--darker);\n background-color: var(--color-lighten);\n }\n\n input[type=\"text\"]:focus~label,\n input[type=\"tel\"]:focus~label,\n input[type=\"email\"]:focus~label,\n textarea:focus~label,\n input.filled + label {\n font-size: var(--size-s);\n transform: translateY(calc(var(--size-m) * -0.1));\n }\n\n button[type=\"submit\"] {\n margin-top: var(--size-l);\n }\n\n}","/* stylelint-disable CssSyntaxError */\n/* stylelint-disable no-descending-specificity */\n* {\n box-sizing: border-box;\n}\n\nhtml, body {\n color: var(--text-color);\n font-family: var(--font-family-sans);\n font-size: var(--base-font-size);\n font-weight: var(--fw-light); \n hyphens: auto;\n line-height: var(--lh-default);\n scroll-behavior: smooth;\n}\n\nbody {\n display: flex;\n min-height: 100vh;\n flex-direction: column;\n align-items: stretch;\n background-color: var(--background-color);\n}\n\nblockquote {\n padding: var(--size-m);\n border-left: solid var(--border-width) var(--color-yellow);\n background-color: var(--color-darken-light);\n}\n\nh1, h2, h3, h4 {\n color: var(--headline-color);\n font-weight: var(--fw-medium);\n hyphens: none;\n line-height: var(--lh-tight);\n}\n\nh1, h2, h3, h4, p, blockquote {\n margin-bottom: var(--size-m);\n}\n\nh1 {\n font-size: var(--size-l);\n font-weight: var(--fw-bold);\n\n @media only screen and (width >= 40rem) {\n font-size: var(--size-xl);\n font-weight: var(--fw-normal);\n }\n}\n\nh2 {\n color: var(--color-darker);\n font-size: calc(var(--size-m) * 1.2);\n\n @media only screen and (width >= 40rem) {\n font-size: var(--size-l);\n }\n}\n\nh3 {\n font-size: calc(var(--size-m) * 1.2);\n}\n\nh2 + h3 {\n margin-top: var(--size-l);\n}\n\nh3 i[class^=\"icofont-\"] {\n margin-bottom: calc(1em * -0.2) !important;\n}\n\nh3:has(i[class^=\"icofont-\"]) {\n margin-top: var(--size-xl);\n}\n\n\n.highlighter-rouge + h3{\n margin-top: var(--size-l);\n}\n\nh4{\n color: var(--color-darkest);\n}\n\nul + p,\nul + h3,\nul + h4{\n margin-top: var(--size-l);\n}\n\np {\n margin-bottom: var(--size-xs);\n}\n\np + h2 {\n margin-top: var(--size-l);\n}\n\n\np + h3 {\n margin-top: var(--size-l);\n}\n\n\np + h4 {\n margin-top: var(--size-m);\n}\n\nimg {\n width: 100%;\n}\n\nem {\n font-weight: var(--fw-normal);\n}\n\nul:not([class]) {\n padding: 0;\n}\n\nul:not([class]) li {\n display: block;\n margin-bottom: var(--size-xxs);\n margin-left: var(--size-m);\n}\n\nul:not([class]) li::before {\n padding-right: var(--size-s);\n margin-left: calc(var(--size-m) * -1);\n color: var(--icon-color);\n content: \"»\";\n font-weight: var(--fw-bold);\n}\n\ndl {\n margin-bottom: var(--size-l);\n}\n\ndl dt {\n display: block;\n margin-right: var(--size-xs);\n float: left;\n font-weight: var(--fw-medium);\n}\n\ndl dt::after {\n content: \":\";\n}\n\ndl dd {\n display: block;\n margin-bottom: var(--size-xs);\n}\n\n.title {\n font-weight: var(--fw-bold);\n\n @media only screen and (width >= 40rem) {\n font-weight: var(--fw-normal);\n }\n}\n\n.subtitle {\n margin-top: calc(var(--size-s) * -1);\n font-weight: var(--fw-medium);\n line-height: var(--lh-default);\n\n @media only screen and (width >= 40rem) {\n font-weight: var(--fw-normal);\n }\n}\n\nstrong {\n font-weight: var(--fw-medium);\n}\n\na {\n color: var(--interaction-color);\n text-decoration: none;\n}\n\na:not(.wrap) {\n border-bottom: solid 2px var(--decoration-color);\n font-weight: var(--fw-medium);\n text-decoration: none;\n transition: all 0.3s;\n}\n\na:not(.wrap).extern::before {\n color: var(--interaction-color);\n content: \"open_in_new\";\n}\n\na:not(.wrap):hover {\n background-color: var(--decoration-color);\n color: var(--color-lightest) !important;\n}\n\n\n/* .layout-wrap {\n display: grid;\n grid-template-columns: 0 1fr;\n transition: all 0.3s;\n\n @media only screen and (width >= 90rem) {\n grid-template-columns: 200px 1fr;\n }\n\n @media only screen and (width >= 120rem) {\n grid-template-columns: 400px 1fr;\n }\n} */\n","/* Footer\n############################################################################ */\n.footer {\n padding-top: var(--size-m);\n padding-bottom: var(--size-xl);\n background-color: var(--color-darkest);\n color: var(--color-lightest);\n\n /* stylelint-disable-next-line no-descending-specificity */\n a {\n color: var(--color-lightest);\n }\n}","@media only screen and (width <= 40rem) {\n .header,\n .page,\n .footer {\n padding: var(--size-m);\n }\n}\n\n@media only screen and (width > 40rem) {\n .header,\n .page {\n flex: 0 1 auto;\n margin-left: var(--size-xl);\n\n & > * {\n padding-right: var(--size-xl);\n }\n\n & > * > *:not(.is-full-width) {\n max-width: var(--max-width-content);\n }\n }\n\n .footer {\n padding-left: var(--size-xl);\n }\n}\n\n\n\n/* Page\n############################################################################ */\n.page {\n flex: 1 1 auto;\n}\n\n/* Section\n############################################################################ */\n.section {\n &.has-seperator {\n padding-top: var(--size-l);\n border-top: dotted var(--border-width) var(--border-color);\n margin-top: var(--size-xl);\n }\n\n &.with-bg-gray,\n &.with-bg-dark{\n padding-top: var(--size-xl);\n padding-bottom: var(--size-xxl);\n margin-top: var(--size-xl);\n background-color: var(--color-light);\n\n @media only screen and (width <= 40rem) {\n padding: var(--size-xl) var(--size-m);\n margin: calc(var(--size-m) * -1);\n margin-top: var(--size-xl) ;\n }\n\n @media only screen and (width > 40rem) {\n padding-left: var(--size-xl);\n margin-left: calc(var(--size-xl) * -1);\n }\n }\n\n &.with-bg-dark{\n background-color: var(--color-dark);\n * { color: var(--color-lightest) }\n }\n\n\n\n}\n\n.section.with-bg-gray + .section.with-bg-dark{\n margin-top: 0;\n}\n\nsection + section{\n margin-top: var(--size-xl);\n}\n"],"names":[]} \ No newline at end of file diff --git a/evaluation/abschlussarbeiten-und-praxisprojekte.html b/evaluation/abschlussarbeiten-und-praxisprojekte.html deleted file mode 100755 index c0e366b..0000000 --- a/evaluation/abschlussarbeiten-und-praxisprojekte.html +++ /dev/null @@ -1,41 +0,0 @@ ---- - -layout: simple -title: Bewertung von Praxisprojekten und Abschlussarbeiten - ---- - -**Die Bewertung erfolgt entlang folgender Kriterien und Leitfragen. Die Gewichtung hängt von der Art der Arbeit und dem konkreten Thema ab.** - -### Problemstellung, Kontext & Inhalt - -- **Relevanz & Praxisbezug:** Für welche Personengruppen ist die Arbeit von Interesse oder wer zieht Nutzen daraus? Werden Relevanz und Zielgruppe in der Arbeit thematisiert? Besteht ein Bezug zur Praxis und wird dieser aufgezeigt? -- **Komplexität:** Wie komplex sind Thema, Problemstellung und Kontext? Gibt es Abhängigkeiten zu anderen Projekten oder Personen? Sind empirische Untersuchungen erforderlich? Findet die Arbeit in einem größeren Kontext statt, z.B. einer Organisation? -- **Innovation & Wirkung:** Welche Entwicklung innerhalb der Domäne wurde aufgegriffen, weitergeführt oder gar initiiert? Was kann die Zielgruppe von dieser Arbeit lernen? Inwieweit kann die Arbeit die Domäne bereichern oder die Zielgruppe voran bringen? -- **Recherche, Durchdringung & Substanz:** Wurde für die Aufgabenstellung in ausreichendem Maße recherchiert? Nimmt der/die Studierende eine kritische und objektive Perspektive ein? Hat der/die Studierende das Problemfeld ausreichend tief durchdrungen und das Problem in angemessenem Umfang gelöst? -- **Klarheit, Verständlichkeit & Richtigkeit:** Ist die Arbeit logisch aufgebaut und verständlich formuliert? Sind Sachverhalte korrekt dargestellt? Sind Gedankengänge und Schlussfolgerungen nachvollziehbar und begründet? - -### Vorgehen & Methodik - -- **Zielsetzung & Lösungsstrategie:** Wird das zugrunde liegende Problemfeld dargestellt? Ist die Definition eines Arbeitszieles präzise und dem Rahmen der Arbeit angemessen? Wird ein geeigneter Lösungsweg angestrebt und wird dieser begründet? -- **Arbeitsprozess & Wiederholbarkeit:** Wie zielsicher wurde das zugrunde liegende Problem gelöst, so dass eine vergleichbare Ergebnisqualität in anderen Zusammenhängen und Projekten prinzipiell wiederholbar wäre? Werden wesentliche Entscheidungen thematisiert und diskutiert? -- **Reflexion & Konklusion:** Wird das eigene Vorgehen, sowie der Grad der Zielerreichung am Ende kritisch reflektiert? Werden am Ende die richtigen Schlussfolgerungen gezogen und wesentliche offene Fragen gestellt? - -### Kompetenzen & Persönlichkeit -- **Eigenständige Entscheidungs- und Handlungsfähigkeit:** Wie eigenständig ist der/die Studierende bei dem Vorhaben? Werden bei Problemen oder bei schwierigen Entscheidungspunkten mögliche Vorgehensweisen oder Alternativen vorgeschlagen? -- **Artikulationsfähigkeit & Eloquenz:** Wie verständlich kann sich der/die Studierende ausdrücken und komplexe Sachverhalte durch Wort, Ton und/oder Bild veranschaulichen? Ist die Darstellung bzw. Präsentation klar, nachvollziehbar, glaubhaft und zielsicher? Kann der/die Studierende das eigene Thema im Bezug zu anderen (übergreifenden) Themen darstellen? -- **Kritik- & Diskursfähigkeit:** Wird mit kritischen und schwierigen Aspekten der Arbeit offensiv und sachlich umgegangen? Findet eine ausreichende Differenzierung zwischen Person und Sache statt? Ist der/die Studierende in der Lage, auf angemessenem fachlichen und wissenschaftlichen Niveau über die Arbeit zu diskutieren? -- **Kooperationsfähigkeit (bei Gruppenarbeiten oder Kooperationsprojekten):** Hat der/die Studierende ein hohes Interesse am gemeinsamen Erfolg und ist bereit sich einzubringen? Inwieweit werden professionelle Werkzeuge und Techniken eingesetzt, um gemeinsames Handeln unabhängig von zeitlichen und räumlichen Faktoren zu organisieren und zu koordinieren? Werden Informationen und Dokumente in geeigneter Form der Gruppe bereit gestellt? -- **Kenntnisse und Fertigkeiten:** Wie groß ist das fachliche Repertoire des/der Studierenden und wie reflektiert wird es im Sinne der Aufgabenstellung eingesetzt? Inwieweit wurden im Rahmen der Arbeit neue Kenntnisse und Fertigkeiten erworben oder wurde die Lösungsstrategie ausschließlich auf bereits erworbene Kenntnisse zugeschnitten? -- **Ökonomie:** Kann der/die Studierende ökonomische Maßstäbe bezüglich der Umsetzung einschätzen? Gibt es eine realistische Einschätzung zum Aufwand-Nutzen-Verhältnis? - -### Formale & pragmatische Qualität -- **Form, Sprache & Stil:** Wird eine verständliche und angemessene (Fach-)sprache verwendet? Wie ausdrucksstark sind die Artefakte im Ganzen? Werden verschiedene Darstellungsformen wie Tabellen, Übersichten und Bilder genutzt und sinnvoll eingesetzt? Sind die Artefakte sprachlich, gestalterisch, orthographisch und grammatikalisch angemessen? -- **Nutz- & Anwendbarkeit:** Sind die Ergebnisse und Artefakte so aufbereitet, dass sie in der Praxis oder durch die Community nutzbar sind? Wurden verständliche und sinnvolle Strukturen für die Artefakte gewählt? Werden die Ergebnisse nachhaltig bereit gestellt. Werden Nutzungsbedingungen, z.B. Lizenzen der verschiedenen Artefakte aufgezeigt? Ist die Urheberschaft der einzelnen Artefakte und des gesamten Projekts erkennbar? -- **Quellcode & Dokumentation:** Wurde Quellcode verständlich dokumentiert? Gibt es eine Übersicht über die verschiedenen Artefakte und Komponenten? Wird klar, wie die verschiedenen Einzelteile zusammenhängen? Werden notwendige Voraussetzungen explizit gemacht? Werden technologische Entscheidungen mit Hilfe von [Architectural Decision Records](https://adr.github.io) dokumentiert? - -### Medienkompetenz und handwerkliche Qualität - -- **Bild- und Tonqualität:** Sind Fotos und Videos angemessen aufgenommen, z.B. gut ausgeleuchtet? Ist der Ton gut und verständlich. Wurde ein professionelles Ambiente gewählt? Sind die Bildunterschriften in den Bildern im [IPTC Header](https://de.wikipedia.org/wiki/IPTC-IIM-Standard#IPTC-Felder) hinterlegt? Sind die Dateinamen sinnvoll gewählt. Haben die Artefakte eine angemessene Dateigröße? -- **Mediengestaltung:** Sind Bilder, Videos und weitere Materialien angemessen gestaltet? Gibt es einen gestalterischen Rahmen und eine gleichbleibende Qualität in der Gestaltung der Medien? Werden visuelle Hilfsmittel wie Skizzen oder Diagramme effektiv eingesetzt? -- **Medienadäquatheit & Authentizität:** Werden die verschiedenen Medien sinnvoll und entsprechend ihrer Vorzüge eingesetzt? Sind die Artefakte lebendig, interessant und authentisch? Wirkt die Präsentation authentisch und persönlich? Werden sowohl der Prozess als auch die Ergebnisse ausreichend dokumentiert? Sind die Bildunterschriften informativ und haben die Bilder Bezug zur Arbeit? \ No newline at end of file diff --git a/index.html b/index.html deleted file mode 100755 index b8e023a..0000000 --- a/index.html +++ /dev/null @@ -1,79 +0,0 @@ ---- - -layout: default -title: Christian Noss -class: grid - ---- - -
    -{% capture content %}{% include intro.html %}{% endcapture %} -{{ content | markdownify }} -
    - -
    -

    Aktuelle Themenvorschläge

    - {% capture content %}{% include fields-of-interest.html %}{% endcapture %} - {{ content }} -
    - -
    -

    Meine aktuelle Auslastung

    - {% capture content %}{% include state-of-work.html %}{% endcapture %} - {{ content | markdownify }} -
    - -
    -

    Neue Spielregeln ab dem Sommersemester 2024

    - {% capture content %}{% include shift-2024.html %}{% endcapture %} - {{ content | markdownify }} -
    - -
    -

    Ablauf

    - -
    -

    Vor der Arbeit

    -
    -
    - {% capture content %}{% include preparing-the-thesis.html %}{% endcapture %} - {{ content | markdownify }} -
    -
    -
    - -
    -

    Während der Arbeit

    -
    -
    - {% capture content %}{% include working-on-the-thesis.html %}{% endcapture %} - {{ content | markdownify }} -
    -
    -
    - -
    -

    Abschluss der Arbeit

    -
    -
    - {% capture content %}{% include after-finishing.html %}{% endcapture %} - {{ content | markdownify }} -
    -
    -
    - -
    - -
    - -

    Artefakte und Bewertung

    - {% capture content %}{% include artefacts-and-evaluation.html %}{% endcapture %} - {{ content | markdownify }} - -
    - -
    -

    Abgeschlossene Arbeiten

    - -
    - diff --git a/information-on-the-colloquium.html b/information-on-the-colloquium.html deleted file mode 100755 index 72c7175..0000000 --- a/information-on-the-colloquium.html +++ /dev/null @@ -1,34 +0,0 @@ ---- - -layout: simple -title: Tipps & Informationen zum Kolloquium - ---- - -Hier finden Soe einige Hinweise zum Kolloquium, die ich mir im Wesentlichen bei [Prof. Dr. Mario Winter](https://www.th-koeln.de/personen/mario.winter/) entliehen habe. - -Das Kolloquium selbst dauert 30-45 Minuten und beginnt mit einem **20 Min** langen Vortrag des Prüflings über die Arbeit. Hierzu können (mit Zustimmung des Prüflings) neben den Prüfer:innen auch weitere Zuhörer eingeladen werden. Danach wird ein Fachgespräch über die Arbeit und deren Kontext geführt. - -In der Prüfungsordnung steht zum Kolloquium, dessen Note mit 3CP, bzw. 6CP in die Gesamtnote eingeht: - -### Bachelor Kolloquium -> Das Kolloquium ergänzt die Bachelorarbeit, ist selbständig zu bewerten und soll innerhalb von sechs Wochen nach Abgabe der Bachelorarbeit stattfinden. -> Das Kolloquium dient der Feststellung, ob der Prüfling befähigt ist, die Ergebnisse der Bachelorarbeit, ihre fachlichen Grundlagen, ihre fachübergreifenden Zusammenhänge und ihre außerfachlichen Bezüge mündlich darzustellen und selbständig zu begründen und ihre Bedeutung für die Praxis einzuschätzen. Dabei soll auch die Bearbeitung des Themas der Bachelorarbeit mit dem Prüfling erör- -> Das Kolloquium wird als mündliche Prüfung durchgeführt und in der Regel von den Prüferinnen oder Prüfern der Bachelorarbeit gemeinsam abgenommen und bewertet. Das Kolloquium dauert etwa 30 bis 45 Minuten. Für die Durchführung des Kolloquiums finden im Übrigen die für -mündliche Modulprüfungen geltenden Vorschriften entsprechende Anwendung. -> Für das bestandene Kolloquium werden drei Leistungspunkte vergeben. - -### Master Kolloquium -> Das Kolloquium ergänzt die Masterarbeit, ist selbständig zu bewerten und soll innerhalb von sechs Wochen nach Abgabe der Masterarbeit stattfinden. Es dient der Feststellung, ob der Student oder die Studentin befähigt ist, die Ergebnisse der Masterarbeit, ihre fachlichen und methodischen Grundlagen, fachübergreifende Zusammenhänge und außerfachlichen Bezüge mündlich darzustellen, selbständig zu begründen und ihre Bedeutung für die Praxis einzuschätzen. -> Das Kolloquium wird in der Regel von den Prüferinnen und Prüfern der Masterarbeit abgenommen und bewertet. -> Das Kolloquium wird als mündliche Prüfung von etwa 30 Minuten Dauer durchgeführt. -> Für die bestandene Masterarbeit und das bestandene Kolloquium werden zusammen 30 Leistungspunkte im Sinne von § 12 vergeben. Die Gewichtung der schriftlichen Leistung (Masterarbeit) erfolgt mit 24 Leistungspunkten. Die Gewichtung der mündlichen Leistung (Kolloquium) erfolgt mit 6 Leistungspunkten. - -### Was heißt das für Sie als Prüfling? - -Der Kolloquiumsvortrag gibt Ihnen Gelegenheit, unter Bezugnahme auf die oben angegebenen Kolloquiumsziele die wichtigen Aspekte Ihrer Abschlussarbeit herauszustellen. Was waren die wirklichen Probleme und Fallstricke? Was ist der von Ihnen originär geleistete (konzeptuelle und praktische) Anteil? Salopp: Sie versuchen, Ihre Abschlussarbeit optimal zu *verkaufen* und zeigen, dass Sie die wesentlichen Inhalte der Arbeit wirklich durchdrungen und kritisch reflektiert haben. - -Darüber hinaus bereitet Ihr Vortrag sozusagen die *Frageeinheit* vor - hier können Sie also bewusst bestimmte Dinge etwas *offen* lassen oder überspitzt darzustellen und so Fragen *provozieren* (auf die Sie sich dann aber auch vorbereitet haben sollten). - -### Veröffentlichung Ihrer Arbeit im Hochschulschriftensystem -Ich würde es begrüßen, wenn Sie Ihre Arbeit anderen öffentlich zur Verfügung stellen würden. Dazu müssten Sie die Arbeit auf dem [Open Access-Hochschulschriftenserver](https://www.th-koeln.de/hochschulbibliothek/epublications_61467.php) einstellen, verschlagworten und die ausgefüllte Einverständniserklärung mitbringen. Ich würde Sie nach Bekanntgabe der Bewertung danach fragen und würde die Erklärung dann unterschreiben. Die permanente URI für Ihre Arbeit wird Ihnen dann im Nachgang mitgeteilt, so dass Sie sie zum Zitieren und als Referenz verwenden können. Bitte tragen Sie die URI auch im [Thesis Repo](https://github.com/cnoss/thesis) ein. diff --git a/notes-on-code.html b/notes-on-code.html deleted file mode 100755 index d728525..0000000 --- a/notes-on-code.html +++ /dev/null @@ -1,39 +0,0 @@ ---- - -layout: simple -title: Bewertung von Code Repositories - ---- - -Bei der Bewertung von Projekten, die Code enthalten, schaue ich mir die unten aufgeführten Aspekte an. Diese Auflistung ist nicht abschließend, sondern dient als Anhaltspunkt. - -### Repo und Kooperation - -- Repo enthält eine aussagekräftige ReadMe Datei. -- [ADRs](https://adr.github.io) sind vorhanden, nachvollziehbar und fachlich angemessen -- Commits haben sinnvolle Größe und Beschreibung -- alle Projektteilnehmer haben Code beigesteuert -- Nutzung von Issues zur Organisation -- Nutzung eines sinnvollen Branching Konzepts -- Pull Requests werden genutzt, sowie sinnvoll und verantwortungsvoll eingesetzt -- ggf. Nutzung von Conventional Commits -- ggf. Nutzung von Projects o.Ä. - -### Code - -- Technologie, Sprachen, Architektur sind fachlich angemessen ausgewählt und die Auswahl ist begründet -- Code ist sinnvoll strukturiert und nachvollziehbar -- Drittanbietercode wird explizit gemacht und der Einsatz begründet -- Code ist lokal ausführbar -- Anwendung ist deployed und jenseits von localhost erreichbar -- sinnvoller Einsatz von Modulen/ Komponenten, Klassen und Funktionen -- Nutzung sinnvoller Bezeichnungen für Module/ Komponenten, Klassen, Funktionen, Variablen, etc. -- keine Magic Numbers/ Words/ Urls -- Code ist schlank und aufgeräumt -- Code ist robust -- Implementierung ist angemessen (kein Over- oder Underengineering) - - - - - diff --git a/package-lock.json b/package-lock.json deleted file mode 100644 index 21d3c99..0000000 --- a/package-lock.json +++ /dev/null @@ -1,8620 +0,0 @@ -{ - "name": "cnoss-thesis-website", - "version": "1.0.0", - "lockfileVersion": 3, - "requires": true, - "packages": { - "": { - "name": "cnoss-thesis-website", - "version": "1.0.0", - "dependencies": { - "decap-cms-app": "^3.1.1" - }, - "devDependencies": { - "lightningcss": "^1.24.1", - "lightningcss-cli": "^1.24.1", - "npm-run-all": "^4.1.5", - "onchange": "^7.1.0", - "recursive-copy-cli": "^1.0.20", - "stylelint": "^16.4.0", - "stylelint-config-idiomatic-order": "^10.0.0", - "stylelint-config-standard": "^36.0.0", - "stylelint-order": "^6.0.4" - } - }, - "node_modules/@babel/code-frame": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.7.tgz", - "integrity": "sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==", - "dependencies": { - "@babel/highlight": "^7.24.7", - "picocolors": "^1.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/generator": { - "version": "7.25.5", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.25.5.tgz", - "integrity": "sha512-abd43wyLfbWoxC6ahM8xTkqLpGB2iWBVyuKC9/srhFunCd1SDNrV1s72bBpK4hLj8KLzHBBcOblvLQZBNw9r3w==", - "dependencies": { - "@babel/types": "^7.25.4", - "@jridgewell/gen-mapping": "^0.3.5", - "@jridgewell/trace-mapping": "^0.3.25", - "jsesc": "^2.5.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-module-imports": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.24.7.tgz", - "integrity": "sha512-8AyH3C+74cgCVVXow/myrynrAGv+nTVg5vKu2nZph9x7RcRwzmh0VFallJuFTZ9mx6u4eSdXZfcOzSqTUm0HCA==", - "dependencies": { - "@babel/traverse": "^7.24.7", - "@babel/types": "^7.24.7" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-string-parser": { - "version": "7.24.8", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.24.8.tgz", - "integrity": "sha512-pO9KhhRcuUyGnJWwyEgnRJTSIZHiT+vMD0kPeD+so0l7mxkMT19g3pjY9GTnHySck/hDzq+dtW/4VgnMkippsQ==", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-validator-identifier": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.7.tgz", - "integrity": "sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/highlight": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.7.tgz", - "integrity": "sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==", - "dependencies": { - "@babel/helper-validator-identifier": "^7.24.7", - "chalk": "^2.4.2", - "js-tokens": "^4.0.0", - "picocolors": "^1.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/parser": { - "version": "7.25.4", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.25.4.tgz", - "integrity": "sha512-nq+eWrOgdtu3jG5Os4TQP3x3cLA8hR8TvJNjD8vnPa20WGycimcparWnLK4jJhElTK6SDyuJo1weMKO/5LpmLA==", - "dependencies": { - "@babel/types": "^7.25.4" - }, - "bin": { - "parser": "bin/babel-parser.js" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@babel/runtime": { - "version": "7.25.4", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.25.4.tgz", - "integrity": "sha512-DSgLeL/FNcpXuzav5wfYvHCGvynXkJbn3Zvc3823AEe9nPwW9IK4UoCSS5yGymmQzN0pCPvivtgS6/8U2kkm1w==", - "dependencies": { - "regenerator-runtime": "^0.14.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/template": { - "version": "7.25.0", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.25.0.tgz", - "integrity": "sha512-aOOgh1/5XzKvg1jvVz7AVrx2piJ2XBi227DHmbY6y+bM9H2FlN+IfecYu4Xl0cNiiVejlsCri89LUsbj8vJD9Q==", - "dependencies": { - "@babel/code-frame": "^7.24.7", - "@babel/parser": "^7.25.0", - "@babel/types": "^7.25.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/traverse": { - "version": "7.25.4", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.25.4.tgz", - "integrity": "sha512-VJ4XsrD+nOvlXyLzmLzUs/0qjFS4sK30te5yEFlvbbUNEgKaVb2BHZUpAL+ttLPQAHNrsI3zZisbfha5Cvr8vg==", - "dependencies": { - "@babel/code-frame": "^7.24.7", - "@babel/generator": "^7.25.4", - "@babel/parser": "^7.25.4", - "@babel/template": "^7.25.0", - "@babel/types": "^7.25.4", - "debug": "^4.3.1", - "globals": "^11.1.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/types": { - "version": "7.25.4", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.25.4.tgz", - "integrity": "sha512-zQ1ijeeCXVEh+aNL0RlmkPkG8HUiDcU2pzQQFjtbntgAczRASFzj4H+6+bV+dy1ntKR14I/DypeuRG1uma98iQ==", - "dependencies": { - "@babel/helper-string-parser": "^7.24.8", - "@babel/helper-validator-identifier": "^7.24.7", - "to-fast-properties": "^2.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@blakeembrey/deque": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/@blakeembrey/deque/-/deque-1.0.5.tgz", - "integrity": "sha512-6xnwtvp9DY1EINIKdTfvfeAtCYw4OqBZJhtiqkT3ivjnEfa25VQ3TsKvaFfKm8MyGIEfE95qLe+bNEt3nB0Ylg==", - "dev": true - }, - "node_modules/@blakeembrey/template": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@blakeembrey/template/-/template-1.1.0.tgz", - "integrity": "sha512-iZf+UWfL+DogJVpd/xMQyP6X6McYd6ArdYoPMiv/zlOTzeXXfQbYxBNJJBF6tThvsjLMbA8tLjkCdm9RWMFCCw==", - "dev": true - }, - "node_modules/@csstools/css-parser-algorithms": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@csstools/css-parser-algorithms/-/css-parser-algorithms-3.0.1.tgz", - "integrity": "sha512-lSquqZCHxDfuTg/Sk2hiS0mcSFCEBuj49JfzPHJogDBT0mGCyY5A1AQzBWngitrp7i1/HAZpIgzF/VjhOEIJIg==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/csstools" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - } - ], - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@csstools/css-tokenizer": "^3.0.1" - } - }, - "node_modules/@csstools/css-tokenizer": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@csstools/css-tokenizer/-/css-tokenizer-3.0.1.tgz", - "integrity": "sha512-UBqaiu7kU0lfvaP982/o3khfXccVlHPWp0/vwwiIgDF0GmqqqxoiXC/6FCjlS9u92f7CoEz6nXKQnrn1kIAkOw==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/csstools" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - } - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@csstools/media-query-list-parser": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@csstools/media-query-list-parser/-/media-query-list-parser-3.0.1.tgz", - "integrity": "sha512-HNo8gGD02kHmcbX6PvCoUuOQvn4szyB9ca63vZHKX5A81QytgDG4oxG4IaEfHTlEZSZ6MjPEMWIVU+zF2PZcgw==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/csstools" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - } - ], - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@csstools/css-parser-algorithms": "^3.0.1", - "@csstools/css-tokenizer": "^3.0.1" - } - }, - "node_modules/@csstools/selector-specificity": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@csstools/selector-specificity/-/selector-specificity-4.0.0.tgz", - "integrity": "sha512-189nelqtPd8++phaHNwYovKZI0FOzH1vQEE3QhHHkNIGrg5fSs9CbYP3RvfEH5geztnIA9Jwq91wyOIwAW5JIQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/csstools" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - } - ], - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "postcss-selector-parser": "^6.1.0" - } - }, - "node_modules/@dnd-kit/accessibility": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@dnd-kit/accessibility/-/accessibility-3.1.0.tgz", - "integrity": "sha512-ea7IkhKvlJUv9iSHJOnxinBcoOI3ppGnnL+VDJ75O45Nss6HtZd8IdN8touXPDtASfeI2T2LImb8VOZcL47wjQ==", - "dependencies": { - "tslib": "^2.0.0" - }, - "peerDependencies": { - "react": ">=16.8.0" - } - }, - "node_modules/@dnd-kit/accessibility/node_modules/tslib": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", - "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==" - }, - "node_modules/@dnd-kit/core": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/@dnd-kit/core/-/core-6.1.0.tgz", - "integrity": "sha512-J3cQBClB4TVxwGo3KEjssGEXNJqGVWx17aRTZ1ob0FliR5IjYgTxl5YJbKTzA6IzrtelotH19v6y7uoIRUZPSg==", - "dependencies": { - "@dnd-kit/accessibility": "^3.1.0", - "@dnd-kit/utilities": "^3.2.2", - "tslib": "^2.0.0" - }, - "peerDependencies": { - "react": ">=16.8.0", - "react-dom": ">=16.8.0" - } - }, - "node_modules/@dnd-kit/core/node_modules/tslib": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", - "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==" - }, - "node_modules/@dnd-kit/modifiers": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/@dnd-kit/modifiers/-/modifiers-6.0.1.tgz", - "integrity": "sha512-rbxcsg3HhzlcMHVHWDuh9LCjpOVAgqbV78wLGI8tziXY3+qcMQ61qVXIvNKQFuhj75dSfD+o+PYZQ/NUk2A23A==", - "dependencies": { - "@dnd-kit/utilities": "^3.2.1", - "tslib": "^2.0.0" - }, - "peerDependencies": { - "@dnd-kit/core": "^6.0.6", - "react": ">=16.8.0" - } - }, - "node_modules/@dnd-kit/modifiers/node_modules/tslib": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", - "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==" - }, - "node_modules/@dnd-kit/sortable": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/@dnd-kit/sortable/-/sortable-7.0.2.tgz", - "integrity": "sha512-wDkBHHf9iCi1veM834Gbk1429bd4lHX4RpAwT0y2cHLf246GAvU2sVw/oxWNpPKQNQRQaeGXhAVgrOl1IT+iyA==", - "dependencies": { - "@dnd-kit/utilities": "^3.2.0", - "tslib": "^2.0.0" - }, - "peerDependencies": { - "@dnd-kit/core": "^6.0.7", - "react": ">=16.8.0" - } - }, - "node_modules/@dnd-kit/sortable/node_modules/tslib": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", - "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==" - }, - "node_modules/@dnd-kit/utilities": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/@dnd-kit/utilities/-/utilities-3.2.2.tgz", - "integrity": "sha512-+MKAJEOfaBe5SmV6t34p80MMKhjvUz0vRrvVJbPT0WElzaOJ/1xs+D+KDv+tD/NE5ujfrChEcshd4fLn0wpiqg==", - "dependencies": { - "tslib": "^2.0.0" - }, - "peerDependencies": { - "react": ">=16.8.0" - } - }, - "node_modules/@dnd-kit/utilities/node_modules/tslib": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", - "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==" - }, - "node_modules/@dual-bundle/import-meta-resolve": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/@dual-bundle/import-meta-resolve/-/import-meta-resolve-4.1.0.tgz", - "integrity": "sha512-+nxncfwHM5SgAtrVzgpzJOI1ol0PkumhVo469KCf9lUi21IGcY90G98VuHm9VRrUypmAzawAHO9bs6hqeADaVg==", - "dev": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/@emotion/babel-plugin": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/@emotion/babel-plugin/-/babel-plugin-11.12.0.tgz", - "integrity": "sha512-y2WQb+oP8Jqvvclh8Q55gLUyb7UFvgv7eJfsj7td5TToBrIUtPay2kMrZi4xjq9qw2vD0ZR5fSho0yqoFgX7Rw==", - "dependencies": { - "@babel/helper-module-imports": "^7.16.7", - "@babel/runtime": "^7.18.3", - "@emotion/hash": "^0.9.2", - "@emotion/memoize": "^0.9.0", - "@emotion/serialize": "^1.2.0", - "babel-plugin-macros": "^3.1.0", - "convert-source-map": "^1.5.0", - "escape-string-regexp": "^4.0.0", - "find-root": "^1.1.0", - "source-map": "^0.5.7", - "stylis": "4.2.0" - } - }, - "node_modules/@emotion/cache": { - "version": "11.13.1", - "resolved": "https://registry.npmjs.org/@emotion/cache/-/cache-11.13.1.tgz", - "integrity": "sha512-iqouYkuEblRcXmylXIwwOodiEK5Ifl7JcX7o6V4jI3iW4mLXX3dmt5xwBtIkJiQEXFAI+pC8X0i67yiPkH9Ucw==", - "dependencies": { - "@emotion/memoize": "^0.9.0", - "@emotion/sheet": "^1.4.0", - "@emotion/utils": "^1.4.0", - "@emotion/weak-memoize": "^0.4.0", - "stylis": "4.2.0" - } - }, - "node_modules/@emotion/hash": { - "version": "0.9.2", - "resolved": "https://registry.npmjs.org/@emotion/hash/-/hash-0.9.2.tgz", - "integrity": "sha512-MyqliTZGuOm3+5ZRSaaBGP3USLw6+EGykkwZns2EPC5g8jJ4z9OrdZY9apkl3+UP9+sdz76YYkwCKP5gh8iY3g==" - }, - "node_modules/@emotion/is-prop-valid": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-1.3.0.tgz", - "integrity": "sha512-SHetuSLvJDzuNbOdtPVbq6yMMMlLoW5Q94uDqJZqy50gcmAjxFkVqmzqSGEFq9gT2iMuIeKV1PXVWmvUhuZLlQ==", - "dependencies": { - "@emotion/memoize": "^0.9.0" - } - }, - "node_modules/@emotion/memoize": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.9.0.tgz", - "integrity": "sha512-30FAj7/EoJ5mwVPOWhAyCX+FPfMDrVecJAM+Iw9NRoSl4BBAQeqj4cApHHUXOVvIPgLVDsCFoz/hGD+5QQD1GQ==" - }, - "node_modules/@emotion/react": { - "version": "11.13.3", - "resolved": "https://registry.npmjs.org/@emotion/react/-/react-11.13.3.tgz", - "integrity": "sha512-lIsdU6JNrmYfJ5EbUCf4xW1ovy5wKQ2CkPRM4xogziOxH1nXxBSjpC9YqbFAP7circxMfYp+6x676BqWcEiixg==", - "dependencies": { - "@babel/runtime": "^7.18.3", - "@emotion/babel-plugin": "^11.12.0", - "@emotion/cache": "^11.13.0", - "@emotion/serialize": "^1.3.1", - "@emotion/use-insertion-effect-with-fallbacks": "^1.1.0", - "@emotion/utils": "^1.4.0", - "@emotion/weak-memoize": "^0.4.0", - "hoist-non-react-statics": "^3.3.1" - }, - "peerDependencies": { - "react": ">=16.8.0" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, - "node_modules/@emotion/serialize": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/@emotion/serialize/-/serialize-1.3.1.tgz", - "integrity": "sha512-dEPNKzBPU+vFPGa+z3axPRn8XVDetYORmDC0wAiej+TNcOZE70ZMJa0X7JdeoM6q/nWTMZeLpN/fTnD9o8MQBA==", - "dependencies": { - "@emotion/hash": "^0.9.2", - "@emotion/memoize": "^0.9.0", - "@emotion/unitless": "^0.10.0", - "@emotion/utils": "^1.4.0", - "csstype": "^3.0.2" - } - }, - "node_modules/@emotion/sheet": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/@emotion/sheet/-/sheet-1.4.0.tgz", - "integrity": "sha512-fTBW9/8r2w3dXWYM4HCB1Rdp8NLibOw2+XELH5m5+AkWiL/KqYX6dc0kKYlaYyKjrQ6ds33MCdMPEwgs2z1rqg==" - }, - "node_modules/@emotion/styled": { - "version": "11.13.0", - "resolved": "https://registry.npmjs.org/@emotion/styled/-/styled-11.13.0.tgz", - "integrity": "sha512-tkzkY7nQhW/zC4hztlwucpT8QEZ6eUzpXDRhww/Eej4tFfO0FxQYWRyg/c5CCXa4d/f174kqeXYjuQRnhzf6dA==", - "dependencies": { - "@babel/runtime": "^7.18.3", - "@emotion/babel-plugin": "^11.12.0", - "@emotion/is-prop-valid": "^1.3.0", - "@emotion/serialize": "^1.3.0", - "@emotion/use-insertion-effect-with-fallbacks": "^1.1.0", - "@emotion/utils": "^1.4.0" - }, - "peerDependencies": { - "@emotion/react": "^11.0.0-rc.0", - "react": ">=16.8.0" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, - "node_modules/@emotion/unitless": { - "version": "0.10.0", - "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.10.0.tgz", - "integrity": "sha512-dFoMUuQA20zvtVTuxZww6OHoJYgrzfKM1t52mVySDJnMSEa08ruEvdYQbhvyu6soU+NeLVd3yKfTfT0NeV6qGg==" - }, - "node_modules/@emotion/use-insertion-effect-with-fallbacks": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@emotion/use-insertion-effect-with-fallbacks/-/use-insertion-effect-with-fallbacks-1.1.0.tgz", - "integrity": "sha512-+wBOcIV5snwGgI2ya3u99D7/FJquOIniQT1IKyDsBmEgwvpxMNeS65Oib7OnE2d2aY+3BU4OiH+0Wchf8yk3Hw==", - "peerDependencies": { - "react": ">=16.8.0" - } - }, - "node_modules/@emotion/utils": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/@emotion/utils/-/utils-1.4.0.tgz", - "integrity": "sha512-spEnrA1b6hDR/C68lC2M7m6ALPUHZC0lIY7jAS/B/9DuuO1ZP04eov8SMv/6fwRd8pzmsn2AuJEznRREWlQrlQ==" - }, - "node_modules/@emotion/weak-memoize": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/@emotion/weak-memoize/-/weak-memoize-0.4.0.tgz", - "integrity": "sha512-snKqtPW01tN0ui7yu9rGv69aJXr/a/Ywvl11sUjNtEcRc+ng/mQriFL0wLXMef74iHa/EkftbDzU9F8iFbH+zg==" - }, - "node_modules/@iarna/toml": { - "version": "2.2.5", - "resolved": "https://registry.npmjs.org/@iarna/toml/-/toml-2.2.5.tgz", - "integrity": "sha512-trnsAYxU3xnS1gPHPyU961coFyLkh4gAD/0zQ5mymY4yOZ+CYvsPqUbOFSw0aDM4y0tV7tiFxL/1XfXPNC6IPg==" - }, - "node_modules/@icons/material": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/@icons/material/-/material-0.2.4.tgz", - "integrity": "sha512-QPcGmICAPbGLGb6F/yNf/KzKqvFx8z5qx3D1yFqVAjoFmXK35EgyW+cJ57Te3CNsmzblwtzakLGFqHPqrfb4Tw==", - "peerDependencies": { - "react": "*" - } - }, - "node_modules/@jridgewell/gen-mapping": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", - "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", - "dependencies": { - "@jridgewell/set-array": "^1.2.1", - "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.24" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/resolve-uri": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", - "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/set-array": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", - "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", - "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==" - }, - "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.25", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", - "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", - "dependencies": { - "@jridgewell/resolve-uri": "^3.1.0", - "@jridgewell/sourcemap-codec": "^1.4.14" - } - }, - "node_modules/@juggle/resize-observer": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/@juggle/resize-observer/-/resize-observer-3.4.0.tgz", - "integrity": "sha512-dfLbk+PwWvFzSxwk3n5ySL0hfBog779o8h68wK/7/APo/7cgyWp5jcXockbxdk5kFRkbeXWm4Fbi9FrdN381sA==" - }, - "node_modules/@mapbox/jsonlint-lines-primitives": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@mapbox/jsonlint-lines-primitives/-/jsonlint-lines-primitives-2.0.2.tgz", - "integrity": "sha512-rY0o9A5ECsTQRVhv7tL/OyDpGAoUB4tTvLiW1DSzQGq4bvTPhNw1VpSNjDJc5GFZ2XuyOtSWSVN05qOtcD71qQ==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/@mapbox/mapbox-gl-style-spec": { - "version": "13.28.0", - "resolved": "https://registry.npmjs.org/@mapbox/mapbox-gl-style-spec/-/mapbox-gl-style-spec-13.28.0.tgz", - "integrity": "sha512-B8xM7Fp1nh5kejfIl4SWeY0gtIeewbuRencqO3cJDrCHZpaPg7uY+V8abuR+esMeuOjRl5cLhVTP40v+1ywxbg==", - "dependencies": { - "@mapbox/jsonlint-lines-primitives": "~2.0.2", - "@mapbox/point-geometry": "^0.1.0", - "@mapbox/unitbezier": "^0.0.0", - "csscolorparser": "~1.0.2", - "json-stringify-pretty-compact": "^2.0.0", - "minimist": "^1.2.6", - "rw": "^1.3.3", - "sort-object": "^0.3.2" - }, - "bin": { - "gl-style-composite": "bin/gl-style-composite.js", - "gl-style-format": "bin/gl-style-format.js", - "gl-style-migrate": "bin/gl-style-migrate.js", - "gl-style-validate": "bin/gl-style-validate.js" - } - }, - "node_modules/@mapbox/point-geometry": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/@mapbox/point-geometry/-/point-geometry-0.1.0.tgz", - "integrity": "sha512-6j56HdLTwWGO0fJPlrZtdU/B13q8Uwmo18Ck2GnGgN9PCFyKTZ3UbXeEdRFh18i9XQ92eH2VdtpJHpBD3aripQ==" - }, - "node_modules/@mapbox/unitbezier": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/@mapbox/unitbezier/-/unitbezier-0.0.0.tgz", - "integrity": "sha512-HPnRdYO0WjFjRTSwO3frz1wKaU649OBFPX3Zo/2WZvuRi6zMiRGui8SnPQiQABgqCf8YikDe5t3HViTVw1WUzA==" - }, - "node_modules/@nodelib/fs.scandir": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", - "dev": true, - "dependencies": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.stat": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", - "dev": true, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.walk": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", - "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", - "dev": true, - "dependencies": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@petamoriken/float16": { - "version": "3.8.7", - "resolved": "https://registry.npmjs.org/@petamoriken/float16/-/float16-3.8.7.tgz", - "integrity": "sha512-/Ri4xDDpe12NT6Ex/DRgHzLlobiQXEW/hmG08w1wj/YU7hLemk97c+zHQFp0iZQ9r7YqgLEXZR2sls4HxBf9NA==" - }, - "node_modules/@react-dnd/asap": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@react-dnd/asap/-/asap-4.0.1.tgz", - "integrity": "sha512-kLy0PJDDwvwwTXxqTFNAAllPHD73AycE9ypWeln/IguoGBEbvFcPDbCV03G52bEcC5E+YgupBE0VzHGdC8SIXg==" - }, - "node_modules/@react-dnd/invariant": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@react-dnd/invariant/-/invariant-2.0.0.tgz", - "integrity": "sha512-xL4RCQBCBDJ+GRwKTFhGUW8GXa4yoDfJrPbLblc3U09ciS+9ZJXJ3Qrcs/x2IODOdIE5kQxvMmE2UKyqUictUw==" - }, - "node_modules/@react-dnd/shallowequal": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@react-dnd/shallowequal/-/shallowequal-2.0.0.tgz", - "integrity": "sha512-Pc/AFTdwZwEKJxFJvlxrSmGe/di+aAOBn60sremrpLo6VI/6cmiUYNNwlI5KNYttg7uypzA3ILPMPgxB2GYZEg==" - }, - "node_modules/@reduxjs/toolkit": { - "version": "1.9.7", - "resolved": "https://registry.npmjs.org/@reduxjs/toolkit/-/toolkit-1.9.7.tgz", - "integrity": "sha512-t7v8ZPxhhKgOKtU+uyJT13lu4vL7az5aFi4IdoDs/eS548edn2M8Ik9h8fxgvMjGoAUVFSt6ZC1P5cWmQ014QQ==", - "dependencies": { - "immer": "^9.0.21", - "redux": "^4.2.1", - "redux-thunk": "^2.4.2", - "reselect": "^4.1.8" - }, - "peerDependencies": { - "react": "^16.9.0 || ^17.0.0 || ^18", - "react-redux": "^7.2.1 || ^8.0.2" - }, - "peerDependenciesMeta": { - "react": { - "optional": true - }, - "react-redux": { - "optional": true - } - } - }, - "node_modules/@types/escape-html": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@types/escape-html/-/escape-html-1.0.4.tgz", - "integrity": "sha512-qZ72SFTgUAZ5a7Tj6kf2SHLetiH5S6f8G5frB2SPQ3EyF02kxdyBFf4Tz4banE3xCgGnKgWLt//a6VuYHKYJTg==" - }, - "node_modules/@types/hast": { - "version": "2.3.10", - "resolved": "https://registry.npmjs.org/@types/hast/-/hast-2.3.10.tgz", - "integrity": "sha512-McWspRw8xx8J9HurkVBfYj0xKoE25tOFlHGdx4MJ5xORQrMGZNqJhVQWaIbm6Oyla5kYOXtDiopzKRJzEOkwJw==", - "dependencies": { - "@types/unist": "^2" - } - }, - "node_modules/@types/hoist-non-react-statics": { - "version": "3.3.5", - "resolved": "https://registry.npmjs.org/@types/hoist-non-react-statics/-/hoist-non-react-statics-3.3.5.tgz", - "integrity": "sha512-SbcrWzkKBw2cdwRTwQAswfpB9g9LJWfjtUeW/jvNwbhC8cpmmNYVePa+ncbUe0rGTQ7G3Ff6mYUN2VMfLVr+Sg==", - "dependencies": { - "@types/react": "*", - "hoist-non-react-statics": "^3.3.0" - } - }, - "node_modules/@types/is-hotkey": { - "version": "0.1.10", - "resolved": "https://registry.npmjs.org/@types/is-hotkey/-/is-hotkey-0.1.10.tgz", - "integrity": "sha512-RvC8KMw5BCac1NvRRyaHgMMEtBaZ6wh0pyPTBu7izn4Sj/AX9Y4aXU5c7rX8PnM/knsuUpC1IeoBkANtxBypsQ==" - }, - "node_modules/@types/lodash": { - "version": "4.17.7", - "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.17.7.tgz", - "integrity": "sha512-8wTvZawATi/lsmNu10/j2hk1KEP0IvjubqPE3cu1Xz7xfXXt5oCq3SNUz4fMIP4XGF9Ky+Ue2tBA3hcS7LSBlA==" - }, - "node_modules/@types/mdast": { - "version": "3.0.15", - "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-3.0.15.tgz", - "integrity": "sha512-LnwD+mUEfxWMa1QpDraczIn6k0Ee3SMicuYSSzS6ZYl2gKS09EClnJYGd8Du6rfc5r/GZEk5o1mRb8TaTj03sQ==", - "dependencies": { - "@types/unist": "^2" - } - }, - "node_modules/@types/node": { - "version": "22.5.0", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.5.0.tgz", - "integrity": "sha512-DkFrJOe+rfdHTqqMg0bSNlGlQ85hSoh2TPzZyhHsXnMtligRWpxUySiyw8FY14ITt24HVCiQPWxS3KO/QlGmWg==", - "dependencies": { - "undici-types": "~6.19.2" - } - }, - "node_modules/@types/parse-json": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.2.tgz", - "integrity": "sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==" - }, - "node_modules/@types/prop-types": { - "version": "15.7.12", - "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.12.tgz", - "integrity": "sha512-5zvhXYtRNRluoE/jAp4GVsSduVUzNWKkOZrCDBWYtE7biZywwdC2AcEzg+cSMLFRfVgeAFqpfNabiPjxFddV1Q==" - }, - "node_modules/@types/react": { - "version": "18.3.4", - "resolved": "https://registry.npmjs.org/@types/react/-/react-18.3.4.tgz", - "integrity": "sha512-J7W30FTdfCxDDjmfRM+/JqLHBIyl7xUIp9kwK637FGmY7+mkSFSe6L4jpZzhj5QMfLssSDP4/i75AKkrdC7/Jw==", - "dependencies": { - "@types/prop-types": "*", - "csstype": "^3.0.2" - } - }, - "node_modules/@types/react-redux": { - "version": "7.1.33", - "resolved": "https://registry.npmjs.org/@types/react-redux/-/react-redux-7.1.33.tgz", - "integrity": "sha512-NF8m5AjWCkert+fosDsN3hAlHzpjSiXlVy9EgQEmLoBhaNXbmyeGs/aj5dQzKuF+/q+S7JQagorGDW8pJ28Hmg==", - "dependencies": { - "@types/hoist-non-react-statics": "^3.3.0", - "@types/react": "*", - "hoist-non-react-statics": "^3.3.0", - "redux": "^4.0.0" - } - }, - "node_modules/@types/unist": { - "version": "2.0.11", - "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.11.tgz", - "integrity": "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==" - }, - "node_modules/@types/zen-observable": { - "version": "0.8.7", - "resolved": "https://registry.npmjs.org/@types/zen-observable/-/zen-observable-0.8.7.tgz", - "integrity": "sha512-LKzNTjj+2j09wAo/vvVjzgw5qckJJzhdGgWHW7j69QIGdq/KnZrMAMIHQiWGl3Ccflh5/CudBAntTPYdprPltA==" - }, - "node_modules/@wry/context": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/@wry/context/-/context-0.4.4.tgz", - "integrity": "sha512-LrKVLove/zw6h2Md/KZyWxIkFM6AoyKp71OqpH9Hiip1csjPVoD3tPxlbQUNxEnHENks3UGgNpSBCAfq9KWuag==", - "dependencies": { - "@types/node": ">=6", - "tslib": "^1.9.3" - } - }, - "node_modules/@wry/equality": { - "version": "0.1.11", - "resolved": "https://registry.npmjs.org/@wry/equality/-/equality-0.1.11.tgz", - "integrity": "sha512-mwEVBDUVODlsQQ5dfuLUS5/Tf7jqUKyhKYHmVi4fPB6bDMOfWvUPJmKgS1Z7Za/sOI3vzWt4+O7yCiL/70MogA==", - "dependencies": { - "tslib": "^1.9.3" - } - }, - "node_modules/ajv": { - "version": "8.12.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", - "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", - "dependencies": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/ajv-errors": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ajv-errors/-/ajv-errors-3.0.0.tgz", - "integrity": "sha512-V3wD15YHfHz6y0KdhYFjyy9vWtEVALT9UrxfN3zqlI6dMioHnJrqOYfyPKol3oqrnCM9uwkcdCwkJ0WUcbLMTQ==", - "peerDependencies": { - "ajv": "^8.0.1" - } - }, - "node_modules/ajv-keywords": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", - "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", - "dependencies": { - "fast-deep-equal": "^3.1.3" - }, - "peerDependencies": { - "ajv": "^8.8.2" - } - }, - "node_modules/ansi-regex": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", - "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" - } - }, - "node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/anymatch": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", - "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", - "dev": true, - "dependencies": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/apollo-cache": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/apollo-cache/-/apollo-cache-1.3.5.tgz", - "integrity": "sha512-1XoDy8kJnyWY/i/+gLTEbYLnoiVtS8y7ikBr/IfmML4Qb+CM7dEEbIUOjnY716WqmZ/UpXIxTfJsY7rMcqiCXA==", - "dependencies": { - "apollo-utilities": "^1.3.4", - "tslib": "^1.10.0" - }, - "peerDependencies": { - "graphql": "^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0" - } - }, - "node_modules/apollo-cache-inmemory": { - "version": "1.6.6", - "resolved": "https://registry.npmjs.org/apollo-cache-inmemory/-/apollo-cache-inmemory-1.6.6.tgz", - "integrity": "sha512-L8pToTW/+Xru2FFAhkZ1OA9q4V4nuvfoPecBM34DecAugUZEBhI2Hmpgnzq2hTKZ60LAMrlqiASm0aqAY6F8/A==", - "dependencies": { - "apollo-cache": "^1.3.5", - "apollo-utilities": "^1.3.4", - "optimism": "^0.10.0", - "ts-invariant": "^0.4.0", - "tslib": "^1.10.0" - }, - "peerDependencies": { - "graphql": "^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0" - } - }, - "node_modules/apollo-client": { - "version": "2.6.10", - "resolved": "https://registry.npmjs.org/apollo-client/-/apollo-client-2.6.10.tgz", - "integrity": "sha512-jiPlMTN6/5CjZpJOkGeUV0mb4zxx33uXWdj/xQCfAMkuNAC3HN7CvYDyMHHEzmcQ5GV12LszWoQ/VlxET24CtA==", - "dependencies": { - "@types/zen-observable": "^0.8.0", - "apollo-cache": "1.3.5", - "apollo-link": "^1.0.0", - "apollo-utilities": "1.3.4", - "symbol-observable": "^1.0.2", - "ts-invariant": "^0.4.0", - "tslib": "^1.10.0", - "zen-observable": "^0.8.0" - }, - "peerDependencies": { - "graphql": "^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0" - } - }, - "node_modules/apollo-link": { - "version": "1.2.14", - "resolved": "https://registry.npmjs.org/apollo-link/-/apollo-link-1.2.14.tgz", - "integrity": "sha512-p67CMEFP7kOG1JZ0ZkYZwRDa369w5PIjtMjvrQd/HnIV8FRsHRqLqK+oAZQnFa1DDdZtOtHTi+aMIW6EatC2jg==", - "dependencies": { - "apollo-utilities": "^1.3.0", - "ts-invariant": "^0.4.0", - "tslib": "^1.9.3", - "zen-observable-ts": "^0.8.21" - }, - "peerDependencies": { - "graphql": "^0.11.3 || ^0.12.3 || ^0.13.0 || ^14.0.0 || ^15.0.0" - } - }, - "node_modules/apollo-link-context": { - "version": "1.0.20", - "resolved": "https://registry.npmjs.org/apollo-link-context/-/apollo-link-context-1.0.20.tgz", - "integrity": "sha512-MLLPYvhzNb8AglNsk2NcL9AvhO/Vc9hn2ZZuegbhRHGet3oGr0YH9s30NS9+ieoM0sGT11p7oZ6oAILM/kiRBA==", - "dependencies": { - "apollo-link": "^1.2.14", - "tslib": "^1.9.3" - } - }, - "node_modules/apollo-link-http": { - "version": "1.5.17", - "resolved": "https://registry.npmjs.org/apollo-link-http/-/apollo-link-http-1.5.17.tgz", - "integrity": "sha512-uWcqAotbwDEU/9+Dm9e1/clO7hTB2kQ/94JYcGouBVLjoKmTeJTUPQKcJGpPwUjZcSqgYicbFqQSoJIW0yrFvg==", - "dependencies": { - "apollo-link": "^1.2.14", - "apollo-link-http-common": "^0.2.16", - "tslib": "^1.9.3" - }, - "peerDependencies": { - "graphql": "^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0" - } - }, - "node_modules/apollo-link-http-common": { - "version": "0.2.16", - "resolved": "https://registry.npmjs.org/apollo-link-http-common/-/apollo-link-http-common-0.2.16.tgz", - "integrity": "sha512-2tIhOIrnaF4UbQHf7kjeQA/EmSorB7+HyJIIrUjJOKBgnXwuexi8aMecRlqTIDWcyVXCeqLhUnztMa6bOH/jTg==", - "dependencies": { - "apollo-link": "^1.2.14", - "ts-invariant": "^0.4.0", - "tslib": "^1.9.3" - }, - "peerDependencies": { - "graphql": "^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0" - } - }, - "node_modules/apollo-utilities": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/apollo-utilities/-/apollo-utilities-1.3.4.tgz", - "integrity": "sha512-pk2hiWrCXMAy2fRPwEyhvka+mqwzeP60Jr1tRYi5xru+3ko94HI9o6lK0CT33/w4RDlxWchmdhDCrvdr+pHCig==", - "dependencies": { - "@wry/equality": "^0.1.2", - "fast-json-stable-stringify": "^2.0.0", - "ts-invariant": "^0.4.0", - "tslib": "^1.10.0" - }, - "peerDependencies": { - "graphql": "^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0" - } - }, - "node_modules/arg": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", - "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", - "dev": true - }, - "node_modules/argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dependencies": { - "sprintf-js": "~1.0.2" - } - }, - "node_modules/array-buffer-byte-length": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz", - "integrity": "sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.5", - "is-array-buffer": "^3.0.4" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array-differ": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/array-differ/-/array-differ-1.0.0.tgz", - "integrity": "sha512-LeZY+DZDRnvP7eMuQ6LHfCzUGxAAIViUBliK24P3hWXL6y4SortgR6Nim6xrkfSLlmH0+k+9NYNwVC2s53ZrYQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/array-move": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/array-move/-/array-move-4.0.0.tgz", - "integrity": "sha512-+RY54S8OuVvg94THpneQvFRmqWdAHeqtMzgMW6JNurHxe8rsS07cHQdfGkXnTUXiBcyZ0j3SiDIxxj0RPiqCkQ==", - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/array-union": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", - "integrity": "sha512-Dxr6QJj/RdU/hCaBjOfxW+q6lyuVE6JFWIrAUpuOOhoJJoQ99cUn3igRaHVB5P9WrgFVN0FfArM3x0cueOU8ng==", - "dev": true, - "dependencies": { - "array-uniq": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/array-uniq": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", - "integrity": "sha512-MNha4BWQ6JbwhFhj03YK552f7cb3AzoE8SzeljgChvL1dl3IcvggXVz1DilzySZkCja+CXuZbdW7yATchWn8/Q==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/arraybuffer.prototype.slice": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.3.tgz", - "integrity": "sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==", - "dev": true, - "dependencies": { - "array-buffer-byte-length": "^1.0.1", - "call-bind": "^1.0.5", - "define-properties": "^1.2.1", - "es-abstract": "^1.22.3", - "es-errors": "^1.2.1", - "get-intrinsic": "^1.2.3", - "is-array-buffer": "^3.0.4", - "is-shared-array-buffer": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/arrify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", - "integrity": "sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/asap": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", - "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==", - "dev": true - }, - "node_modules/astral-regex": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", - "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/available-typed-arrays": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.6.tgz", - "integrity": "sha512-j1QzY8iPNPG4o4xmO3ptzpRxTciqD3MgEHtifP/YnJpIo58Xu+ne4BejlbkuaLfXn/nz6HFiw29bLpj2PNMdGg==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/babel-plugin-macros": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/babel-plugin-macros/-/babel-plugin-macros-3.1.0.tgz", - "integrity": "sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==", - "dependencies": { - "@babel/runtime": "^7.12.5", - "cosmiconfig": "^7.0.0", - "resolve": "^1.19.0" - }, - "engines": { - "node": ">=10", - "npm": ">=6" - } - }, - "node_modules/bail": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/bail/-/bail-2.0.2.tgz", - "integrity": "sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==", - "peer": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" - }, - "node_modules/binary-extensions": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", - "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/braces": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", - "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", - "dev": true, - "dependencies": { - "fill-range": "^7.1.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/call-bind": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", - "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", - "dependencies": { - "es-define-property": "^1.0.0", - "es-errors": "^1.3.0", - "function-bind": "^1.1.2", - "get-intrinsic": "^1.2.4", - "set-function-length": "^1.2.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "engines": { - "node": ">=6" - } - }, - "node_modules/ccount": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/ccount/-/ccount-1.1.0.tgz", - "integrity": "sha512-vlNK021QdI7PNeiUh/lKkC/mNHHfV0m/Ad5JoI0TYtlBnJAslM/JIkm/tGC88bkLIwO6OQ5uV6ztS6kVAtCDlg==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/chain-function": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/chain-function/-/chain-function-1.0.1.tgz", - "integrity": "sha512-SxltgMwL9uCko5/ZCLiyG2B7R9fY4pDZUw7hJ4MhirdjBLosoDqkWABi3XMucddHdLiFJMb7PD2MZifZriuMTg==" - }, - "node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/chalk/node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/character-entities": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-1.2.4.tgz", - "integrity": "sha512-iBMyeEHxfVnIakwOuDXpVkc54HijNgCyQB2w0VfGQThle6NXn50zU6V/u+LDhxHcDUPojn6Kpga3PTAD8W1bQw==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/character-entities-html4": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/character-entities-html4/-/character-entities-html4-1.1.4.tgz", - "integrity": "sha512-HRcDxZuZqMx3/a+qrzxdBKBPUpxWEq9xw2OPZ3a/174ihfrQKVsFhqtthBInFy1zZ9GgZyFXOatNujm8M+El3g==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/character-entities-legacy": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-1.1.4.tgz", - "integrity": "sha512-3Xnr+7ZFS1uxeiUDvV02wQ+QDbc55o97tIV5zHScSPJpcLm/r0DFPcoY3tYRp+VZukxuMeKgXYmsXQHO05zQeA==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/character-reference-invalid": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-1.1.4.tgz", - "integrity": "sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/chokidar": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", - "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", - "dev": true, - "dependencies": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "glob-parent": "~5.1.2", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.6.0" - }, - "engines": { - "node": ">= 8.10.0" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" - } - }, - "node_modules/clean-stack": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-4.2.0.tgz", - "integrity": "sha512-LYv6XPxoyODi36Dp976riBtSY27VmFo+MKqEU9QCCWyTrdEPDog+RWA7xQWHi6Vbp61j5c4cdzzX1NidnwtUWg==", - "dependencies": { - "escape-string-regexp": "5.0.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/clean-stack/node_modules/escape-string-regexp": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz", - "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/cliui": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", - "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", - "dev": true, - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.1", - "wrap-ansi": "^7.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/cliui/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/cliui/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/clsx": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/clsx/-/clsx-1.2.1.tgz", - "integrity": "sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg==", - "engines": { - "node": ">=6" - } - }, - "node_modules/codemirror": { - "version": "5.65.17", - "resolved": "https://registry.npmjs.org/codemirror/-/codemirror-5.65.17.tgz", - "integrity": "sha512-1zOsUx3lzAOu/gnMAZkQ9kpIHcPYOc9y1Fbm2UVk5UBPkdq380nhkelG0qUwm1f7wPvTbndu9ZYlug35EwAZRQ==" - }, - "node_modules/collapse-white-space": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/collapse-white-space/-/collapse-white-space-1.0.6.tgz", - "integrity": "sha512-jEovNnrhMuqyCcjfEJA56v0Xq8SkIoPKDyaHahwo3POf4qcSXqMYuwNcOTzp74vTsR9Tn08z4MxWqAhcekogkQ==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" - }, - "node_modules/colord": { - "version": "2.9.3", - "resolved": "https://registry.npmjs.org/colord/-/colord-2.9.3.tgz", - "integrity": "sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==", - "dev": true - }, - "node_modules/comma-separated-tokens": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-1.0.8.tgz", - "integrity": "sha512-GHuDRO12Sypu2cV70d1dkA2EUmXHgntrzbpvOB+Qy+49ypNfGgFQIC2fhhXbnyrJRynDCAARsT7Ou0M6hirpfw==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/common-tags": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/common-tags/-/common-tags-1.8.2.tgz", - "integrity": "sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA==", - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/compute-scroll-into-view": { - "version": "1.0.20", - "resolved": "https://registry.npmjs.org/compute-scroll-into-view/-/compute-scroll-into-view-1.0.20.tgz", - "integrity": "sha512-UCB0ioiyj8CRjtrvaceBLqqhZCVP+1B8+NWQhmdsm0VXOJtobBCf1dBQmebCCo34qZmUwZfIH2MZLqNHazrfjg==" - }, - "node_modules/concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" - }, - "node_modules/consolidated-events": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/consolidated-events/-/consolidated-events-2.0.2.tgz", - "integrity": "sha512-2/uRVMdRypf5z/TW/ncD/66l75P5hH2vM/GR8Jf8HLc2xnfJtmina6F6du8+v4Z2vTrMo7jC+W1tmEEuuELgkQ==" - }, - "node_modules/convert-source-map": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", - "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==" - }, - "node_modules/copy-text-to-clipboard": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/copy-text-to-clipboard/-/copy-text-to-clipboard-3.2.0.tgz", - "integrity": "sha512-RnJFp1XR/LOBDckxTib5Qjr/PMfkatD0MUCQgdpqS8MdKiNUzBjAQBEN6oUy+jW7LI93BBG3DtMB2KOOKpGs2Q==", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/cosmiconfig": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz", - "integrity": "sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==", - "dependencies": { - "@types/parse-json": "^4.0.0", - "import-fresh": "^3.2.1", - "parse-json": "^5.0.0", - "path-type": "^4.0.0", - "yaml": "^1.10.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/create-react-class": { - "version": "15.7.0", - "resolved": "https://registry.npmjs.org/create-react-class/-/create-react-class-15.7.0.tgz", - "integrity": "sha512-QZv4sFWG9S5RUvkTYWbflxeZX+JG7Cz0Tn33rQBJ+WFQTqTfUTjMjiv9tnfXazjsO5r0KhPs+AqCjyrQX6h2ng==", - "dependencies": { - "loose-envify": "^1.3.1", - "object-assign": "^4.1.1" - } - }, - "node_modules/cross-spawn": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", - "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", - "dev": true, - "dependencies": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - }, - "engines": { - "node": ">=4.8" - } - }, - "node_modules/css-functions-list": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/css-functions-list/-/css-functions-list-3.2.2.tgz", - "integrity": "sha512-c+N0v6wbKVxTu5gOBBFkr9BEdBWaqqjQeiJ8QvSRIJOf+UxlJh930m8e6/WNeODIK0mYLFkoONrnj16i2EcvfQ==", - "dev": true, - "engines": { - "node": ">=12 || >=16" - } - }, - "node_modules/css-tree": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-2.3.1.tgz", - "integrity": "sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==", - "dev": true, - "dependencies": { - "mdn-data": "2.0.30", - "source-map-js": "^1.0.1" - }, - "engines": { - "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0" - } - }, - "node_modules/csscolorparser": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/csscolorparser/-/csscolorparser-1.0.3.tgz", - "integrity": "sha512-umPSgYwZkdFoUrH5hIq5kf0wPSXiro51nPw0j2K/c83KflkPSTBGMz6NJvMB+07VlL0y7VPo6QJcDjcgKTTm3w==" - }, - "node_modules/cssesc": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", - "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", - "dev": true, - "bin": { - "cssesc": "bin/cssesc" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/csstype": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", - "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==" - }, - "node_modules/dayjs": { - "version": "1.11.13", - "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.13.tgz", - "integrity": "sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg==" - }, - "node_modules/debug": { - "version": "4.3.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.6.tgz", - "integrity": "sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==", - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/decap-cms-app": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/decap-cms-app/-/decap-cms-app-3.3.2.tgz", - "integrity": "sha512-dz4ap58IOgYbd4mRMfzhzE5o9x6OsEjycPzL/rKtLHgbzwi3Wl6jSlHH+1vbuQ0ETWwPSuEVbN0s8gCm82/OPQ==", - "dependencies": { - "@emotion/react": "^11.11.1", - "@emotion/styled": "^11.11.0", - "codemirror": "^5.46.0", - "dayjs": "^1.11.10", - "decap-cms-backend-aws-cognito-github-proxy": "^3.2.2", - "decap-cms-backend-azure": "^3.1.3", - "decap-cms-backend-bitbucket": "^3.1.4", - "decap-cms-backend-git-gateway": "^3.2.2", - "decap-cms-backend-github": "^3.2.2", - "decap-cms-backend-gitlab": "^3.2.2", - "decap-cms-backend-proxy": "^3.1.4", - "decap-cms-backend-test": "^3.1.3", - "decap-cms-core": "^3.4.2", - "decap-cms-editor-component-image": "^3.1.3", - "decap-cms-lib-auth": "^3.0.5", - "decap-cms-lib-util": "^3.1.0", - "decap-cms-lib-widgets": "^3.0.2", - "decap-cms-locales": "^3.2.0", - "decap-cms-ui-default": "^3.1.4", - "decap-cms-widget-boolean": "^3.1.3", - "decap-cms-widget-code": "^3.1.4", - "decap-cms-widget-colorstring": "^3.1.3", - "decap-cms-widget-datetime": "^3.2.2", - "decap-cms-widget-file": "^3.1.3", - "decap-cms-widget-image": "^3.1.3", - "decap-cms-widget-list": "^3.2.2", - "decap-cms-widget-map": "^3.1.4", - "decap-cms-widget-markdown": "^3.1.6", - "decap-cms-widget-number": "^3.1.3", - "decap-cms-widget-object": "^3.1.4", - "decap-cms-widget-relation": "^3.3.2", - "decap-cms-widget-select": "^3.2.2", - "decap-cms-widget-string": "^3.1.3", - "decap-cms-widget-text": "^3.1.3", - "immutable": "^3.7.6", - "lodash": "^4.17.11", - "prop-types": "^15.7.2", - "react-immutable-proptypes": "^2.1.0", - "uuid": "^8.3.2" - }, - "peerDependencies": { - "react": "^18.2.0", - "react-dom": "^18.2.0" - } - }, - "node_modules/decap-cms-backend-aws-cognito-github-proxy": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/decap-cms-backend-aws-cognito-github-proxy/-/decap-cms-backend-aws-cognito-github-proxy-3.2.2.tgz", - "integrity": "sha512-4CajbaWOSd1fL2NUq/1LcFvlfQLjIPsI6mgc/05APGhJKR2Net9BQvW5G5hVc4aZRF/zLmsFwKhOstEsx4uPzw==", - "dependencies": { - "apollo-cache-inmemory": "^1.6.2", - "apollo-client": "^2.6.3", - "apollo-link-context": "^1.0.18", - "apollo-link-http": "^1.5.15", - "common-tags": "^1.8.0", - "graphql": "^15.0.0", - "graphql-tag": "^2.10.1", - "js-base64": "^3.0.0", - "semaphore": "^1.1.0" - }, - "peerDependencies": { - "@emotion/react": "^11.11.1", - "@emotion/styled": "^11.11.0", - "decap-cms-backend-github": "^3.0.0", - "decap-cms-lib-auth": "^3.0.0", - "decap-cms-lib-util": "^3.0.0", - "decap-cms-ui-default": "^3.0.0", - "lodash": "^4.17.11", - "prop-types": "^15.7.2", - "react": "^18.2.0" - } - }, - "node_modules/decap-cms-backend-azure": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/decap-cms-backend-azure/-/decap-cms-backend-azure-3.1.3.tgz", - "integrity": "sha512-aakOVHEzpzAbGq6JegA6roEoV0PI9TTjRIxS6oHjZ9dxmhyedFI4UEfmmWli3EPOj5fM0ZkoskggSzlzSXWP8g==", - "dependencies": { - "js-base64": "^3.0.0", - "semaphore": "^1.1.0" - }, - "peerDependencies": { - "@emotion/react": "^11.11.1", - "@emotion/styled": "^11.11.0", - "decap-cms-lib-auth": "^3.0.0", - "decap-cms-lib-util": "^3.0.0", - "decap-cms-ui-default": "^3.0.0", - "immutable": "^3.7.6", - "lodash": "^4.17.11", - "prop-types": "^15.7.2", - "react": "^18.2.0" - } - }, - "node_modules/decap-cms-backend-bitbucket": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/decap-cms-backend-bitbucket/-/decap-cms-backend-bitbucket-3.1.4.tgz", - "integrity": "sha512-OCV2bdRGVCaSjMr6jOaaZCz4mrfdSPnGo4ETlJ0ey1cPJGPu7norvHjQ6ZQAgSDJMxPJbQe9iOZ3tc4hVgLTBQ==", - "dependencies": { - "common-tags": "^1.8.0", - "js-base64": "^3.0.0", - "semaphore": "^1.1.0", - "what-the-diff": "^0.6.0" - }, - "peerDependencies": { - "@emotion/react": "^11.11.1", - "@emotion/styled": "^11.11.0", - "decap-cms-lib-auth": "^3.0.0", - "decap-cms-lib-util": "^3.0.0", - "decap-cms-ui-default": "^3.0.0", - "immutable": "^3.7.6", - "lodash": "^4.17.11", - "prop-types": "^15.7.2", - "react": "^18.2.0" - } - }, - "node_modules/decap-cms-backend-git-gateway": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/decap-cms-backend-git-gateway/-/decap-cms-backend-git-gateway-3.2.2.tgz", - "integrity": "sha512-oEtRJSI9i+8fSoVquLsthdPEVjnJFrw8vMxcZUqf8JjGv8oKetNLH3N0CbUUGP7EVUMqo7xTG2j2je9KqCZatA==", - "dependencies": { - "gotrue-js": "^0.9.24", - "ini": "^2.0.0", - "jwt-decode": "^3.0.0", - "minimatch": "^3.0.4" - }, - "peerDependencies": { - "@emotion/react": "^11.11.1", - "@emotion/styled": "^11.11.0", - "decap-cms-backend-bitbucket": "^3.0.0", - "decap-cms-backend-github": "^3.0.0", - "decap-cms-backend-gitlab": "^3.0.0", - "decap-cms-lib-auth": "^3.0.0", - "decap-cms-lib-util": "^3.0.0", - "decap-cms-ui-default": "^3.0.0", - "lodash": "^4.17.11", - "prop-types": "^15.7.2", - "react": "^18.2.0" - } - }, - "node_modules/decap-cms-backend-github": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/decap-cms-backend-github/-/decap-cms-backend-github-3.2.2.tgz", - "integrity": "sha512-8cPmjy54zPxqzc4NaXyHPk68P/eajCV+RNeYcR0QjBVMQv5DLjbYBHnW9s0z42W/T5nPqrFLC5thRqMsmuq2Lg==", - "dependencies": { - "apollo-cache-inmemory": "^1.6.2", - "apollo-client": "^2.6.3", - "apollo-link-context": "^1.0.18", - "apollo-link-http": "^1.5.15", - "common-tags": "^1.8.0", - "graphql": "^15.0.0", - "graphql-tag": "^2.10.1", - "js-base64": "^3.0.0", - "semaphore": "^1.1.0" - }, - "peerDependencies": { - "@emotion/react": "^11.11.1", - "@emotion/styled": "^11.11.0", - "decap-cms-lib-auth": "^3.0.0", - "decap-cms-lib-util": "^3.0.0", - "decap-cms-ui-default": "^3.0.0", - "lodash": "^4.17.11", - "prop-types": "^15.7.2", - "react": "^18.2.0" - } - }, - "node_modules/decap-cms-backend-gitlab": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/decap-cms-backend-gitlab/-/decap-cms-backend-gitlab-3.2.2.tgz", - "integrity": "sha512-VcTHoDlXMsPL5jaPaxYk8dkXiXjle9CbL92BKny4xRxkJhC3VYo6lZfVh09WpbUyAtwZfBIpX4p5dkZNKqVQ6A==", - "dependencies": { - "apollo-cache-inmemory": "^1.6.2", - "apollo-client": "^2.6.3", - "apollo-link-context": "^1.0.18", - "apollo-link-http": "^1.5.15", - "js-base64": "^3.0.0", - "semaphore": "^1.1.0" - }, - "peerDependencies": { - "@emotion/react": "^11.11.1", - "@emotion/styled": "^11.11.0", - "decap-cms-lib-auth": "^3.0.0", - "decap-cms-lib-util": "^3.0.0", - "decap-cms-ui-default": "^3.0.0", - "immutable": "^3.7.6", - "lodash": "^4.17.11", - "prop-types": "^15.7.2", - "react": "^18.2.0" - } - }, - "node_modules/decap-cms-backend-proxy": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/decap-cms-backend-proxy/-/decap-cms-backend-proxy-3.1.4.tgz", - "integrity": "sha512-5gowbsVSZdKbw3GoufYxdSe/WnL5zOUR2t0oo4wpx9ogYPMSKXo6DPbKacBGUYceCAh/15Ya32J8G9fpwGgPrg==", - "peerDependencies": { - "@emotion/react": "^11.11.1", - "@emotion/styled": "^11.11.0", - "decap-cms-lib-util": "^3.0.0", - "decap-cms-ui-default": "^3.0.0", - "prop-types": "^15.7.2", - "react": "^18.2.0" - } - }, - "node_modules/decap-cms-backend-test": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/decap-cms-backend-test/-/decap-cms-backend-test-3.1.3.tgz", - "integrity": "sha512-SsUzvljOnQYFqbFKshajKSPlzY8O8xzE0nWI4GqUAugXx5mxD1lNov0WgtO/5UPXr2zNEtxyQzF+gz6A4XhHrA==", - "peerDependencies": { - "@emotion/react": "^11.11.1", - "@emotion/styled": "^11.11.0", - "decap-cms-lib-util": "^3.0.0", - "decap-cms-ui-default": "^3.0.0", - "lodash": "^4.17.11", - "prop-types": "^15.7.2", - "react": "^18.2.0", - "uuid": "^8.3.2" - } - }, - "node_modules/decap-cms-core": { - "version": "3.4.2", - "resolved": "https://registry.npmjs.org/decap-cms-core/-/decap-cms-core-3.4.2.tgz", - "integrity": "sha512-ngT5Zp5Vk4VlYKRJtEwRrz9bCVvjYG+wY2sXod09JCT6Is4cRCD1viwmZPVH+AJDESGCmgcC58YKduUpOr6tDQ==", - "dependencies": { - "@iarna/toml": "2.2.5", - "@reduxjs/toolkit": "^1.9.1", - "ajv": "8.12.0", - "ajv-errors": "^3.0.0", - "ajv-keywords": "^5.0.0", - "clean-stack": "^4.1.0", - "copy-text-to-clipboard": "^3.0.0", - "dayjs": "^1.11.10", - "deepmerge": "^4.2.2", - "diacritics": "^1.3.0", - "fuzzy": "^0.1.1", - "gotrue-js": "^0.9.24", - "gray-matter": "^4.0.2", - "history": "^4.7.2", - "immer": "^9.0.0", - "js-base64": "^3.0.0", - "jwt-decode": "^3.0.0", - "node-polyglot": "^2.3.0", - "prop-types": "^15.7.2", - "react": "^18.2.0", - "react-dnd": "^14.0.0", - "react-dnd-html5-backend": "^14.0.0", - "react-dom": "^18.2.0", - "react-frame-component": "^5.2.1", - "react-immutable-proptypes": "^2.1.0", - "react-is": "16.13.1", - "react-markdown": "^6.0.2", - "react-modal": "^3.8.1", - "react-polyglot": "^0.7.0", - "react-redux": "^7.2.0", - "react-router-dom": "^5.2.0", - "react-scroll-sync": "^0.9.0", - "react-split-pane": "^0.1.85", - "react-toastify": "^9.1.1", - "react-topbar-progress-indicator": "^4.0.0", - "react-virtualized-auto-sizer": "^1.0.2", - "react-waypoint": "^10.0.0", - "react-window": "^1.8.5", - "redux": "^4.0.5", - "redux-devtools-extension": "^2.13.8", - "redux-notifications": "^4.0.1", - "redux-thunk": "^2.3.0", - "remark-gfm": "1.0.0", - "sanitize-filename": "^1.6.1", - "semaphore": "^1.0.5", - "tomlify-j0.4": "^3.0.0-alpha.0", - "url": "^0.11.0", - "url-join": "^4.0.1", - "what-input": "^5.1.4", - "yaml": "^1.8.3" - }, - "peerDependencies": { - "@emotion/react": "^11.11.1", - "@emotion/styled": "^11.11.0", - "decap-cms-editor-component-image": "^3.0.0", - "decap-cms-lib-auth": "^3.0.0", - "decap-cms-lib-util": "^3.0.0", - "decap-cms-lib-widgets": "^3.0.0", - "decap-cms-ui-default": "^3.0.0", - "immutable": "^3.7.6", - "lodash": "^4.17.11", - "prop-types": "^15.7.2", - "react": "^18.2.0", - "react-dom": "^18.2.0", - "react-immutable-proptypes": "^2.1.0" - } - }, - "node_modules/decap-cms-editor-component-image": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/decap-cms-editor-component-image/-/decap-cms-editor-component-image-3.1.3.tgz", - "integrity": "sha512-XOLY+VkV42/SmpUimvYIMRY337cGFUaVA9aSvK//plBpxZSmIPhs4NzgaCHojb6GI9nPyAS0WtmA8/Jx0teVng==", - "peerDependencies": { - "react": "^18.2.0" - } - }, - "node_modules/decap-cms-lib-auth": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/decap-cms-lib-auth/-/decap-cms-lib-auth-3.0.5.tgz", - "integrity": "sha512-NG+dI1Pg0UBoxRQfuI0zeRLZAtPU23R3qUOA1mDUJ4OpKmX6/lsznmvu0l+e3TzGUhCkOXyz2fl/9HctsMjTXw==", - "peerDependencies": { - "immutable": "^3.7.6", - "lodash": "^4.17.11", - "uuid": "^8.3.2" - } - }, - "node_modules/decap-cms-lib-util": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/decap-cms-lib-util/-/decap-cms-lib-util-3.1.0.tgz", - "integrity": "sha512-lrEwLDN46x2Jiu+bCN70P9vhd/5nvP9tL793ovJiI06SylrM0wVfVZPQGgRH/p8bDJBenaxgFwaA2E7mH7u3sQ==", - "dependencies": { - "js-sha256": "^0.9.0", - "localforage": "^1.7.3", - "semaphore": "^1.1.0" - }, - "peerDependencies": { - "immutable": "^3.7.6", - "lodash": "^4.17.11" - } - }, - "node_modules/decap-cms-lib-widgets": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/decap-cms-lib-widgets/-/decap-cms-lib-widgets-3.0.2.tgz", - "integrity": "sha512-bb53ZKh98XnmBWXhvyyc9vXn6Nw4RCcS465V1bhI3AI+ec22feGg0G5dWb61NONj0j9XPbZKaqFxL7dcO9/S8Q==", - "dependencies": { - "dayjs": "^1.11.10" - }, - "peerDependencies": { - "immutable": "^3.7.6", - "lodash": "^4.17.11" - } - }, - "node_modules/decap-cms-locales": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/decap-cms-locales/-/decap-cms-locales-3.2.0.tgz", - "integrity": "sha512-En/jFGRK0noXVGVuZk+pTl51v1mJAO4rBK3R3BuTxR/X83Pq66C3KPtRpv/qPvNfC23Y5LztPXDYai2x8DST5A==" - }, - "node_modules/decap-cms-ui-default": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/decap-cms-ui-default/-/decap-cms-ui-default-3.1.4.tgz", - "integrity": "sha512-C034TIwUU8X+JNR6SmFhyWxHYzCArMONVMXoTaU6Y4SQr3appR+bwNesb9s0Q3SMmehTRyTMrIZ2lAd4ppymqw==", - "dependencies": { - "react-aria-menubutton": "^7.0.0", - "react-transition-group": "^4.4.5" - }, - "peerDependencies": { - "@emotion/react": "^11.11.1", - "@emotion/styled": "^11.11.0", - "lodash": "^4.17.11", - "prop-types": "^15.7.2", - "react": "^18.2.0" - } - }, - "node_modules/decap-cms-widget-boolean": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/decap-cms-widget-boolean/-/decap-cms-widget-boolean-3.1.3.tgz", - "integrity": "sha512-lQuIahHiPpGr3J0YRhqFpdUQqB8ljmE7a19+Kq2m7cgZC3biKR2BQRGkoSeAsYIjPM42n1pBCQezsaIUd32eiw==", - "peerDependencies": { - "@emotion/react": "^11.11.1", - "decap-cms-ui-default": "^3.0.0", - "lodash": "^4.17.11", - "prop-types": "^15.7.2", - "react": "^18.2.0", - "react-immutable-proptypes": "^2.1.0" - } - }, - "node_modules/decap-cms-widget-code": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/decap-cms-widget-code/-/decap-cms-widget-code-3.1.4.tgz", - "integrity": "sha512-AUQL3+B3pQT9/86wMKAOpPrTkwtuUqHRDLkQjh/vIn10ZE829PpQVGe3HSDhgOQch4b/RoPoR8k0vjJK+Dubsg==", - "dependencies": { - "react-codemirror2": "^7.0.0", - "react-select": "^4.0.0" - }, - "peerDependencies": { - "@emotion/react": "^11.11.1", - "codemirror": "^5.46.0", - "decap-cms-ui-default": "^3.0.0", - "lodash": "^4.17.11", - "react": "^18.2.0" - } - }, - "node_modules/decap-cms-widget-code/node_modules/react-dom": { - "version": "17.0.2", - "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-17.0.2.tgz", - "integrity": "sha512-s4h96KtLDUQlsENhMn1ar8t2bEa+q/YAtj8pPPdIjPDGBDIVNsrD9aXNWqspUe6AzKCIG0C1HZZLqLV7qpOBGA==", - "peer": true, - "dependencies": { - "loose-envify": "^1.1.0", - "object-assign": "^4.1.1", - "scheduler": "^0.20.2" - }, - "peerDependencies": { - "react": "17.0.2" - } - }, - "node_modules/decap-cms-widget-code/node_modules/react-select": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/react-select/-/react-select-4.3.1.tgz", - "integrity": "sha512-HBBd0dYwkF5aZk1zP81Wx5UsLIIT2lSvAY2JiJo199LjoLHoivjn9//KsmvQMEFGNhe58xyuOITjfxKCcGc62Q==", - "dependencies": { - "@babel/runtime": "^7.12.0", - "@emotion/cache": "^11.4.0", - "@emotion/react": "^11.1.1", - "memoize-one": "^5.0.0", - "prop-types": "^15.6.0", - "react-input-autosize": "^3.0.0", - "react-transition-group": "^4.3.0" - }, - "peerDependencies": { - "react": "^16.8.0 || ^17.0.0", - "react-dom": "^16.8.0 || ^17.0.0" - } - }, - "node_modules/decap-cms-widget-code/node_modules/react-select/node_modules/react-input-autosize": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/react-input-autosize/-/react-input-autosize-3.0.0.tgz", - "integrity": "sha512-nL9uS7jEs/zu8sqwFE5MAPx6pPkNAriACQ2rGLlqmKr2sPGtN7TXTyDdQt4lbNXVx7Uzadb40x8qotIuru6Rhg==", - "dependencies": { - "prop-types": "^15.5.8" - }, - "peerDependencies": { - "react": "^16.3.0 || ^17.0.0" - } - }, - "node_modules/decap-cms-widget-code/node_modules/scheduler": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.20.2.tgz", - "integrity": "sha512-2eWfGgAqqWFGqtdMmcL5zCMK1U8KlXv8SQFGglL3CEtd0aDVDWgeF/YoCmvln55m5zSk3J/20hTaSBeSObsQDQ==", - "peer": true, - "dependencies": { - "loose-envify": "^1.1.0", - "object-assign": "^4.1.1" - } - }, - "node_modules/decap-cms-widget-colorstring": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/decap-cms-widget-colorstring/-/decap-cms-widget-colorstring-3.1.3.tgz", - "integrity": "sha512-Wk1poRQ0+OoLBmt4/4DaIr4Ap9jZRD+tnFyDgNVbOsH8YiilPKZAyhbTPdjUy72wgq3vbdr3hYUiF5Tfzskw7Q==", - "dependencies": { - "react-color": "^2.18.1", - "tinycolor2": "^1.4.1" - }, - "peerDependencies": { - "@emotion/react": "^11.11.1", - "@emotion/styled": "^11.11.0", - "decap-cms-ui-default": "^3.0.0", - "prop-types": "^15.7.2", - "react": "^18.2.0" - } - }, - "node_modules/decap-cms-widget-datetime": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/decap-cms-widget-datetime/-/decap-cms-widget-datetime-3.2.2.tgz", - "integrity": "sha512-1XnnnJ4XWDJeieOusepnyIiKcxeK89WE5rNXnMKCBOJSui3PKmURySqJHEe+f2W4g2TbI7Jf/WCz3fNlUOicqQ==", - "dependencies": { - "dayjs": "^1.11.10" - }, - "peerDependencies": { - "@emotion/react": "^11.11.1", - "react": "^18.2.0" - } - }, - "node_modules/decap-cms-widget-file": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/decap-cms-widget-file/-/decap-cms-widget-file-3.1.3.tgz", - "integrity": "sha512-ldyJA3rCreYtVaakdtULCDZXxHGXtDpEls2fvWKwUAtfb29hnoYR3pOUfK6e09aPREcY2KMdrGz4ewNHL7U1Cg==", - "dependencies": { - "@dnd-kit/core": "^6.0.8", - "@dnd-kit/modifiers": "^6.0.1", - "@dnd-kit/sortable": "^7.0.2", - "array-move": "4.0.0", - "common-tags": "^1.8.0" - }, - "peerDependencies": { - "@emotion/react": "^11.11.1", - "@emotion/styled": "^11.11.0", - "decap-cms-ui-default": "^3.0.0", - "immutable": "^3.7.6", - "prop-types": "^15.7.2", - "react": "^18.2.0", - "react-immutable-proptypes": "^2.1.0", - "uuid": "^8.3.2" - } - }, - "node_modules/decap-cms-widget-image": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/decap-cms-widget-image/-/decap-cms-widget-image-3.1.3.tgz", - "integrity": "sha512-5wIIWP7OwbuWRljVV4XDcl3hx19Lp6KyQDZ1frlXfZXxgwu2xeOOw/D/ri2Nb5zIGZjG9DUp7bgBYBF92dXy5A==", - "peerDependencies": { - "@emotion/react": "^11.11.1", - "@emotion/styled": "^11.11.0", - "decap-cms-ui-default": "^3.0.0", - "decap-cms-widget-file": "^3.0.0", - "immutable": "^3.7.6", - "prop-types": "^15.7.2", - "react": "^18.2.0" - } - }, - "node_modules/decap-cms-widget-list": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/decap-cms-widget-list/-/decap-cms-widget-list-3.2.2.tgz", - "integrity": "sha512-tMb8K6aJh0vjTKbkhk8HYJfV6fkJkuUYhtLRWiPP2hhAmta+TZ8oI1Ue0bRBM7+G5WfWMB82wGLGm0psnwSkRA==", - "dependencies": { - "@dnd-kit/core": "^6.0.8", - "@dnd-kit/modifiers": "^6.0.1", - "@dnd-kit/sortable": "^7.0.2" - }, - "peerDependencies": { - "@emotion/react": "^11.11.1", - "@emotion/styled": "^11.11.0", - "decap-cms-lib-widgets": "^3.0.0", - "decap-cms-ui-default": "^3.0.0", - "decap-cms-widget-object": "^3.0.0", - "immutable": "^3.7.6", - "lodash": "^4.17.11", - "prop-types": "^15.7.2", - "react": "^18.2.0", - "react-immutable-proptypes": "^2.1.0" - } - }, - "node_modules/decap-cms-widget-map": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/decap-cms-widget-map/-/decap-cms-widget-map-3.1.4.tgz", - "integrity": "sha512-fJAc0L6KSXWfO91DZ3bXuUkSgRIvszg2fyJG45Ub6L3i1BnT28dOSnyHXeUAtRj1Qm3nqyiwneFnFwV91wMhhg==", - "dependencies": { - "ol": "^6.9.0" - }, - "peerDependencies": { - "@emotion/react": "^11.11.1", - "decap-cms-ui-default": "^3.0.0", - "lodash": "^4.17.11", - "prop-types": "^15.7.2", - "react": "^18.2.0", - "react-immutable-proptypes": "^2.1.0" - } - }, - "node_modules/decap-cms-widget-markdown": { - "version": "3.1.6", - "resolved": "https://registry.npmjs.org/decap-cms-widget-markdown/-/decap-cms-widget-markdown-3.1.6.tgz", - "integrity": "sha512-ctpDlXd/ViyNt3C2VWjqNbSwnxBl6yjXqb+8dH+AXfy4Db4LOVIqoYLhrZcHxQ+e2Am9brB/7P48QQvyM+Eeag==", - "dependencies": { - "dompurify": "^2.2.6", - "is-hotkey": "^0.2.0", - "is-url": "^1.2.4", - "mdast-util-definitions": "^1.2.3", - "mdast-util-to-string": "^1.0.5", - "rehype-parse": "^6.0.0", - "rehype-remark": "^8.0.0", - "rehype-stringify": "^7.0.0", - "remark-parse": "^6.0.3", - "remark-rehype": "^4.0.0", - "remark-slate": "^1.8.6", - "remark-slate-transformer": "^0.7.4", - "remark-stringify": "^6.0.4", - "slate": "^0.91.1", - "slate-base64-serializer": "^0.2.107", - "slate-history": "^0.93.0", - "slate-plain-serializer": "^0.7.1", - "slate-react": "^0.91.2", - "slate-soft-break": "^0.9.0", - "unified": "^9.2.0", - "unist-builder": "^1.0.3", - "unist-util-visit-parents": "^2.0.1" - }, - "peerDependencies": { - "@emotion/react": "^11.11.1", - "@emotion/styled": "^11.11.0", - "decap-cms-ui-default": "^3.0.0", - "immutable": "^3.7.6", - "lodash": "^4.17.11", - "prop-types": "^15.7.2", - "react": "^18.2.0", - "react-dom": "^18.2.0", - "react-immutable-proptypes": "^2.1.0" - } - }, - "node_modules/decap-cms-widget-markdown/node_modules/bail": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/bail/-/bail-1.0.5.tgz", - "integrity": "sha512-xFbRxM1tahm08yHBP16MMjVUAvDaBMD38zsM9EMAUN61omwLmKlOpB/Zku5QkjZ8TZ4vn53pj+t518cH0S03RQ==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/decap-cms-widget-markdown/node_modules/is-plain-obj": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", - "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", - "engines": { - "node": ">=8" - } - }, - "node_modules/decap-cms-widget-markdown/node_modules/trough": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/trough/-/trough-1.0.5.tgz", - "integrity": "sha512-rvuRbTarPXmMb79SmzEp8aqXNKcK+y0XaB298IXueQ8I2PsrATcPBCSPyK/dDNa2iWOhKlfNnOjdAOTBU/nkFA==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/decap-cms-widget-markdown/node_modules/unified": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/unified/-/unified-9.2.2.tgz", - "integrity": "sha512-Sg7j110mtefBD+qunSLO1lqOEKdrwBFBrR6Qd8f4uwkhWNlbkaqwHse6e7QvD3AP/MNoJdEDLaf8OxYyoWgorQ==", - "dependencies": { - "bail": "^1.0.0", - "extend": "^3.0.0", - "is-buffer": "^2.0.0", - "is-plain-obj": "^2.0.0", - "trough": "^1.0.0", - "vfile": "^4.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/decap-cms-widget-number": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/decap-cms-widget-number/-/decap-cms-widget-number-3.1.3.tgz", - "integrity": "sha512-fcncjNvAjfIYDg/jnUVQSre3jwb9JTaylPRiTMZa41zhwQVvH2XL98lzkPyPQU6nXGPnlN7p/hV8wNqbklm/wg==", - "peerDependencies": { - "decap-cms-ui-default": "^3.0.0", - "prop-types": "^15.7.2", - "react": "^18.2.0" - } - }, - "node_modules/decap-cms-widget-object": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/decap-cms-widget-object/-/decap-cms-widget-object-3.1.4.tgz", - "integrity": "sha512-7nckihnmU4UNzwmX+H9+xYrlX9tZmvPLAqBQzLmkoMUcz0eMRwZ3vcvH0AfUYVawtiw4C5AxnuBh2yg4zc2guQ==", - "peerDependencies": { - "@emotion/react": "^11.11.1", - "@emotion/styled": "^11.11.0", - "decap-cms-ui-default": "^3.0.0", - "immutable": "^3.7.6", - "lodash": "^4.17.11", - "prop-types": "^15.7.2", - "react": "^18.2.0", - "react-immutable-proptypes": "^2.1.0" - } - }, - "node_modules/decap-cms-widget-relation": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/decap-cms-widget-relation/-/decap-cms-widget-relation-3.3.2.tgz", - "integrity": "sha512-NrOhkfSuXOt7dhhTSsjnttmYidHgqGMpjB7bQ8Cs2iT+n8Rd5aXCvVn6/8Fv9G5Obu3XZ06sjqSlNBoS0itDLQ==", - "dependencies": { - "@dnd-kit/core": "^6.0.8", - "@dnd-kit/modifiers": "^6.0.1", - "@dnd-kit/sortable": "^7.0.2", - "react-select": "^4.0.0", - "react-window": "^1.8.5" - }, - "peerDependencies": { - "@emotion/react": "^11.11.1", - "@emotion/styled": "^11.11.0", - "decap-cms-lib-widgets": "^3.0.0", - "decap-cms-ui-default": "^3.0.0", - "immutable": "^3.7.6", - "lodash": "^4.17.11", - "prop-types": "^15.7.2", - "react": "^18.2.0", - "uuid": "^8.3.2" - } - }, - "node_modules/decap-cms-widget-relation/node_modules/react-dom": { - "version": "17.0.2", - "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-17.0.2.tgz", - "integrity": "sha512-s4h96KtLDUQlsENhMn1ar8t2bEa+q/YAtj8pPPdIjPDGBDIVNsrD9aXNWqspUe6AzKCIG0C1HZZLqLV7qpOBGA==", - "peer": true, - "dependencies": { - "loose-envify": "^1.1.0", - "object-assign": "^4.1.1", - "scheduler": "^0.20.2" - }, - "peerDependencies": { - "react": "17.0.2" - } - }, - "node_modules/decap-cms-widget-relation/node_modules/react-select": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/react-select/-/react-select-4.3.1.tgz", - "integrity": "sha512-HBBd0dYwkF5aZk1zP81Wx5UsLIIT2lSvAY2JiJo199LjoLHoivjn9//KsmvQMEFGNhe58xyuOITjfxKCcGc62Q==", - "dependencies": { - "@babel/runtime": "^7.12.0", - "@emotion/cache": "^11.4.0", - "@emotion/react": "^11.1.1", - "memoize-one": "^5.0.0", - "prop-types": "^15.6.0", - "react-input-autosize": "^3.0.0", - "react-transition-group": "^4.3.0" - }, - "peerDependencies": { - "react": "^16.8.0 || ^17.0.0", - "react-dom": "^16.8.0 || ^17.0.0" - } - }, - "node_modules/decap-cms-widget-relation/node_modules/react-select/node_modules/react-input-autosize": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/react-input-autosize/-/react-input-autosize-3.0.0.tgz", - "integrity": "sha512-nL9uS7jEs/zu8sqwFE5MAPx6pPkNAriACQ2rGLlqmKr2sPGtN7TXTyDdQt4lbNXVx7Uzadb40x8qotIuru6Rhg==", - "dependencies": { - "prop-types": "^15.5.8" - }, - "peerDependencies": { - "react": "^16.3.0 || ^17.0.0" - } - }, - "node_modules/decap-cms-widget-relation/node_modules/scheduler": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.20.2.tgz", - "integrity": "sha512-2eWfGgAqqWFGqtdMmcL5zCMK1U8KlXv8SQFGglL3CEtd0aDVDWgeF/YoCmvln55m5zSk3J/20hTaSBeSObsQDQ==", - "peer": true, - "dependencies": { - "loose-envify": "^1.1.0", - "object-assign": "^4.1.1" - } - }, - "node_modules/decap-cms-widget-select": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/decap-cms-widget-select/-/decap-cms-widget-select-3.2.2.tgz", - "integrity": "sha512-D06doa3G6NUDwH4Bx7rrx8bwYxa0ZrE4QQalh7AhCBQpup5mvxu95KrlYhij1q28Fg7WqlqteEKofPzGRIQh4Q==", - "dependencies": { - "react-select": "^4.0.0" - }, - "peerDependencies": { - "decap-cms-lib-widgets": "^3.0.0", - "decap-cms-ui-default": "^3.0.0", - "immutable": "^3.7.6", - "prop-types": "^15.7.2", - "react": "^18.2.0", - "react-immutable-proptypes": "^2.1.0" - } - }, - "node_modules/decap-cms-widget-select/node_modules/react-dom": { - "version": "17.0.2", - "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-17.0.2.tgz", - "integrity": "sha512-s4h96KtLDUQlsENhMn1ar8t2bEa+q/YAtj8pPPdIjPDGBDIVNsrD9aXNWqspUe6AzKCIG0C1HZZLqLV7qpOBGA==", - "peer": true, - "dependencies": { - "loose-envify": "^1.1.0", - "object-assign": "^4.1.1", - "scheduler": "^0.20.2" - }, - "peerDependencies": { - "react": "17.0.2" - } - }, - "node_modules/decap-cms-widget-select/node_modules/react-select": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/react-select/-/react-select-4.3.1.tgz", - "integrity": "sha512-HBBd0dYwkF5aZk1zP81Wx5UsLIIT2lSvAY2JiJo199LjoLHoivjn9//KsmvQMEFGNhe58xyuOITjfxKCcGc62Q==", - "dependencies": { - "@babel/runtime": "^7.12.0", - "@emotion/cache": "^11.4.0", - "@emotion/react": "^11.1.1", - "memoize-one": "^5.0.0", - "prop-types": "^15.6.0", - "react-input-autosize": "^3.0.0", - "react-transition-group": "^4.3.0" - }, - "peerDependencies": { - "react": "^16.8.0 || ^17.0.0", - "react-dom": "^16.8.0 || ^17.0.0" - } - }, - "node_modules/decap-cms-widget-select/node_modules/react-select/node_modules/react-input-autosize": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/react-input-autosize/-/react-input-autosize-3.0.0.tgz", - "integrity": "sha512-nL9uS7jEs/zu8sqwFE5MAPx6pPkNAriACQ2rGLlqmKr2sPGtN7TXTyDdQt4lbNXVx7Uzadb40x8qotIuru6Rhg==", - "dependencies": { - "prop-types": "^15.5.8" - }, - "peerDependencies": { - "react": "^16.3.0 || ^17.0.0" - } - }, - "node_modules/decap-cms-widget-select/node_modules/scheduler": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.20.2.tgz", - "integrity": "sha512-2eWfGgAqqWFGqtdMmcL5zCMK1U8KlXv8SQFGglL3CEtd0aDVDWgeF/YoCmvln55m5zSk3J/20hTaSBeSObsQDQ==", - "peer": true, - "dependencies": { - "loose-envify": "^1.1.0", - "object-assign": "^4.1.1" - } - }, - "node_modules/decap-cms-widget-string": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/decap-cms-widget-string/-/decap-cms-widget-string-3.1.3.tgz", - "integrity": "sha512-Kx+s4smxk7pHvFecAnDN9MTFLDyIZUuY1c9yKkxzo/NdGRO1cedlUXSWoICP5N2I8cbBYwTV/6aIg+StIRjntg==", - "peerDependencies": { - "decap-cms-ui-default": "^3.0.0", - "prop-types": "^15.7.2", - "react": "^18.2.0" - } - }, - "node_modules/decap-cms-widget-text": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/decap-cms-widget-text/-/decap-cms-widget-text-3.1.3.tgz", - "integrity": "sha512-1qbKEn1oNu09CriZDirmMO3hVSHMoeYqURZvz9ynJZkgFMTsUrakkobAEMp88aqSxBu3chMCjnPJKocObWRIfA==", - "dependencies": { - "react-textarea-autosize": "^8.0.0" - }, - "peerDependencies": { - "decap-cms-ui-default": "^3.0.0", - "prop-types": "^15.7.2", - "react": "^18.2.0" - } - }, - "node_modules/decode-named-character-reference": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/decode-named-character-reference/-/decode-named-character-reference-1.0.2.tgz", - "integrity": "sha512-O8x12RzrUF8xyVcY0KJowWsmaJxQbmy0/EtnNtHRpsOcT7dFk5W598coHqBVpmWo1oQQfsCqfCmkZN5DJrZVdg==", - "dependencies": { - "character-entities": "^2.0.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/decode-named-character-reference/node_modules/character-entities": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-2.0.2.tgz", - "integrity": "sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/deep-extend": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", - "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", - "dev": true, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/deepmerge": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", - "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/define-data-property": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.2.tgz", - "integrity": "sha512-SRtsSqsDbgpJBbW3pABMCOt6rQyeM8s8RiyeSN8jYG8sYmt/kGJejbydttUsnDs1tadr19tvhT4ShwMyoqAm4g==", - "dependencies": { - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.2", - "gopd": "^1.0.1", - "has-property-descriptors": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/define-properties": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", - "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", - "dependencies": { - "define-data-property": "^1.0.1", - "has-property-descriptors": "^1.0.0", - "object-keys": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/dequal": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", - "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", - "peer": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/detab": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/detab/-/detab-2.0.4.tgz", - "integrity": "sha512-8zdsQA5bIkoRECvCrNKPla84lyoR7DSAyf7p0YgXzBO9PDJx8KntPUay7NS6yp+KdxdVtiE5SpHKtbp2ZQyA9g==", - "dependencies": { - "repeat-string": "^1.5.4" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/detect-libc": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", - "integrity": "sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==", - "dev": true, - "bin": { - "detect-libc": "bin/detect-libc.js" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/devlop": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/devlop/-/devlop-1.1.0.tgz", - "integrity": "sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==", - "peer": true, - "dependencies": { - "dequal": "^2.0.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/diacritics": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/diacritics/-/diacritics-1.3.0.tgz", - "integrity": "sha512-wlwEkqcsaxvPJML+rDh/2iS824jbREk6DUMUKkEaSlxdYHeS43cClJtsWglvw2RfeXGm6ohKDqsXteJ5sP5enA==" - }, - "node_modules/dir-glob": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", - "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", - "dev": true, - "dependencies": { - "path-type": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/direction": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/direction/-/direction-1.0.4.tgz", - "integrity": "sha512-GYqKi1aH7PJXxdhTeZBFrg8vUBeKXi+cNprXsC1kpJcbcVnV9wBsrOu1cQEdG0WeQwlfHiy3XvnKfIrJ2R0NzQ==", - "bin": { - "direction": "cli.js" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/dnd-core": { - "version": "14.0.1", - "resolved": "https://registry.npmjs.org/dnd-core/-/dnd-core-14.0.1.tgz", - "integrity": "sha512-+PVS2VPTgKFPYWo3vAFEA8WPbTf7/xo43TifH9G8S1KqnrQu0o77A3unrF5yOugy4mIz7K5wAVFHUcha7wsz6A==", - "dependencies": { - "@react-dnd/asap": "^4.0.0", - "@react-dnd/invariant": "^2.0.0", - "redux": "^4.1.1" - } - }, - "node_modules/dom-helpers": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-5.2.1.tgz", - "integrity": "sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==", - "dependencies": { - "@babel/runtime": "^7.8.7", - "csstype": "^3.0.2" - } - }, - "node_modules/dompurify": { - "version": "2.5.6", - "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-2.5.6.tgz", - "integrity": "sha512-zUTaUBO8pY4+iJMPE1B9XlO2tXVYIcEA4SNGtvDELzTSCQO7RzH+j7S180BmhmJId78lqGU2z19vgVx2Sxs/PQ==" - }, - "node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true - }, - "node_modules/env-paths": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", - "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/errno": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz", - "integrity": "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==", - "dev": true, - "dependencies": { - "prr": "~1.0.1" - }, - "bin": { - "errno": "cli.js" - } - }, - "node_modules/error-ex": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", - "dependencies": { - "is-arrayish": "^0.2.1" - } - }, - "node_modules/es-abstract": { - "version": "1.22.3", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.22.3.tgz", - "integrity": "sha512-eiiY8HQeYfYH2Con2berK+To6GrK2RxbPawDkGq4UiCQQfZHb6wX9qQqkbpPqaxQFcl8d9QzZqo0tGE0VcrdwA==", - "dev": true, - "dependencies": { - "array-buffer-byte-length": "^1.0.0", - "arraybuffer.prototype.slice": "^1.0.2", - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.5", - "es-set-tostringtag": "^2.0.1", - "es-to-primitive": "^1.2.1", - "function.prototype.name": "^1.1.6", - "get-intrinsic": "^1.2.2", - "get-symbol-description": "^1.0.0", - "globalthis": "^1.0.3", - "gopd": "^1.0.1", - "has-property-descriptors": "^1.0.0", - "has-proto": "^1.0.1", - "has-symbols": "^1.0.3", - "hasown": "^2.0.0", - "internal-slot": "^1.0.5", - "is-array-buffer": "^3.0.2", - "is-callable": "^1.2.7", - "is-negative-zero": "^2.0.2", - "is-regex": "^1.1.4", - "is-shared-array-buffer": "^1.0.2", - "is-string": "^1.0.7", - "is-typed-array": "^1.1.12", - "is-weakref": "^1.0.2", - "object-inspect": "^1.13.1", - "object-keys": "^1.1.1", - "object.assign": "^4.1.4", - "regexp.prototype.flags": "^1.5.1", - "safe-array-concat": "^1.0.1", - "safe-regex-test": "^1.0.0", - "string.prototype.trim": "^1.2.8", - "string.prototype.trimend": "^1.0.7", - "string.prototype.trimstart": "^1.0.7", - "typed-array-buffer": "^1.0.0", - "typed-array-byte-length": "^1.0.0", - "typed-array-byte-offset": "^1.0.0", - "typed-array-length": "^1.0.4", - "unbox-primitive": "^1.0.2", - "which-typed-array": "^1.1.13" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/es-define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", - "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", - "dependencies": { - "get-intrinsic": "^1.2.4" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-errors": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", - "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-object-atoms": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.0.0.tgz", - "integrity": "sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==", - "dependencies": { - "es-errors": "^1.3.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-set-tostringtag": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.2.tgz", - "integrity": "sha512-BuDyupZt65P9D2D2vA/zqcI3G5xRsklm5N3xCwuiy+/vKy8i0ifdsQP1sLgO4tZDSCaQUSnmC48khknGMV3D2Q==", - "dev": true, - "dependencies": { - "get-intrinsic": "^1.2.2", - "has-tostringtag": "^1.0.0", - "hasown": "^2.0.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-to-primitive": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", - "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", - "dev": true, - "dependencies": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/escalade": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz", - "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/escape-html": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==" - }, - "node_modules/escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "bin": { - "esparse": "bin/esparse.js", - "esvalidate": "bin/esvalidate.js" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/exenv": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/exenv/-/exenv-1.2.2.tgz", - "integrity": "sha512-Z+ktTxTwv9ILfgKCk32OX3n/doe+OcLTRtqK9pcL+JsP3J1/VW8Uvl4ZjLlKqeW4rzK4oesDOGMEMRIZqtP4Iw==" - }, - "node_modules/extend": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" - }, - "node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", - "dependencies": { - "is-extendable": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" - }, - "node_modules/fast-glob": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", - "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", - "dev": true, - "dependencies": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", - "micromatch": "^4.0.4" - }, - "engines": { - "node": ">=8.6.0" - } - }, - "node_modules/fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" - }, - "node_modules/fastest-levenshtein": { - "version": "1.0.16", - "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz", - "integrity": "sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==", - "dev": true, - "engines": { - "node": ">= 4.9.1" - } - }, - "node_modules/fastq": { - "version": "1.17.1", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", - "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==", - "dev": true, - "dependencies": { - "reusify": "^1.0.4" - } - }, - "node_modules/file-entry-cache": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-9.0.0.tgz", - "integrity": "sha512-6MgEugi8p2tiUhqO7GnPsmbCCzj0YRCwwaTbpGRyKZesjRSzkqkAE9fPp7V2yMs5hwfgbQLgdvSSkGNg1s5Uvw==", - "dev": true, - "dependencies": { - "flat-cache": "^5.0.0" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/fill-range": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", - "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", - "dev": true, - "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/find-root": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/find-root/-/find-root-1.1.0.tgz", - "integrity": "sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==" - }, - "node_modules/flat-cache": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-5.0.0.tgz", - "integrity": "sha512-JrqFmyUl2PnPi1OvLyTVHnQvwQ0S+e6lGSwu8OkAZlSaNIZciTY2H/cOOROxsBA1m/LZNHDsqAgDZt6akWcjsQ==", - "dev": true, - "dependencies": { - "flatted": "^3.3.1", - "keyv": "^4.5.4" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/flatted": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.1.tgz", - "integrity": "sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==", - "dev": true - }, - "node_modules/focus-group": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/focus-group/-/focus-group-0.3.1.tgz", - "integrity": "sha512-IA01dzk2cStQso/qnt2rWhXCFBZlBfjZmohB9mXUx9feEaJcORAK0FQGvwaApsNNGwzEnqrp/2qTR4lq8PXfnQ==" - }, - "node_modules/for-each": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", - "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", - "dev": true, - "dependencies": { - "is-callable": "^1.1.3" - } - }, - "node_modules/fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", - "dev": true - }, - "node_modules/fsevents": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", - "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", - "dev": true, - "hasInstallScript": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, - "node_modules/function-bind": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", - "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/function.prototype.name": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.6.tgz", - "integrity": "sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "functions-have-names": "^1.2.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/functions-have-names": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", - "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/fuzzy": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/fuzzy/-/fuzzy-0.1.3.tgz", - "integrity": "sha512-/gZffu4ykarLrCiP3Ygsa86UAo1E5vEVlvTrpkKywXSbP9Xhln3oSp9QSV57gEq3JFFpGJ4GZ+5zdEp3FcUh4w==", - "engines": { - "node": ">= 0.6.0" - } - }, - "node_modules/geotiff": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/geotiff/-/geotiff-2.0.4.tgz", - "integrity": "sha512-aG8h9bJccGusioPsEWsEqx8qdXpZN71A20WCvRKGxcnHSOWLKmC5ZmsAmodfxb9TRQvs+89KikGuPzxchhA+Uw==", - "dependencies": { - "@petamoriken/float16": "^3.4.7", - "lerc": "^3.0.0", - "lru-cache": "^6.0.0", - "pako": "^2.0.4", - "parse-headers": "^2.0.2", - "web-worker": "^1.2.0", - "xml-utils": "^1.0.2" - }, - "engines": { - "browsers": "defaults", - "node": ">=10.19" - } - }, - "node_modules/get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "dev": true, - "engines": { - "node": "6.* || 8.* || >= 10.*" - } - }, - "node_modules/get-intrinsic": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", - "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", - "dependencies": { - "es-errors": "^1.3.0", - "function-bind": "^1.1.2", - "has-proto": "^1.0.1", - "has-symbols": "^1.0.3", - "hasown": "^2.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/get-symbol-description": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.2.tgz", - "integrity": "sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.5", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.4" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "deprecated": "Glob versions prior to v9 are no longer supported", - "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/global-modules": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-2.0.0.tgz", - "integrity": "sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==", - "dev": true, - "dependencies": { - "global-prefix": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/global-prefix": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-3.0.0.tgz", - "integrity": "sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==", - "dev": true, - "dependencies": { - "ini": "^1.3.5", - "kind-of": "^6.0.2", - "which": "^1.3.1" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/global-prefix/node_modules/ini": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", - "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", - "dev": true - }, - "node_modules/globals": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", - "engines": { - "node": ">=4" - } - }, - "node_modules/globalthis": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz", - "integrity": "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==", - "dev": true, - "dependencies": { - "define-properties": "^1.1.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/globby": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", - "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", - "dev": true, - "dependencies": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.2.9", - "ignore": "^5.2.0", - "merge2": "^1.4.1", - "slash": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/globby/node_modules/array-union": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", - "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/globby/node_modules/slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/globjoin": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/globjoin/-/globjoin-0.1.4.tgz", - "integrity": "sha512-xYfnw62CKG8nLkZBfWbhWwDw02CHty86jfPcc2cr3ZfeuK9ysoVPPEUxf21bAD/rWAgk52SuBrLJlefNy8mvFg==", - "dev": true - }, - "node_modules/gopd": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", - "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", - "dependencies": { - "get-intrinsic": "^1.1.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/gotrue-js": { - "version": "0.9.29", - "resolved": "https://registry.npmjs.org/gotrue-js/-/gotrue-js-0.9.29.tgz", - "integrity": "sha512-NSFwJlFfWxHd1zHDitysbh+amFPHBAyQG1YmecZJTaSe8TlC7Wja1ewdUBikfJBblN3SqghS6aViMd+Q/pPzGQ==", - "dependencies": { - "micro-api-client": "^3.2.1" - } - }, - "node_modules/graceful-fs": { - "version": "4.2.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", - "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", - "dev": true - }, - "node_modules/graphql": { - "version": "15.9.0", - "resolved": "https://registry.npmjs.org/graphql/-/graphql-15.9.0.tgz", - "integrity": "sha512-GCOQdvm7XxV1S4U4CGrsdlEN37245eC8P9zaYCMr6K1BG0IPGy5lUwmJsEOGyl1GD6HXjOtl2keCP9asRBwNvA==", - "engines": { - "node": ">= 10.x" - } - }, - "node_modules/graphql-tag": { - "version": "2.12.6", - "resolved": "https://registry.npmjs.org/graphql-tag/-/graphql-tag-2.12.6.tgz", - "integrity": "sha512-FdSNcu2QQcWnM2VNvSCCDCVS5PpPqpzgFT8+GXzqJuoDd0CBncxCY278u4mhRO7tMgo2JjgJA5aZ+nWSQ/Z+xg==", - "dependencies": { - "tslib": "^2.1.0" - }, - "engines": { - "node": ">=10" - }, - "peerDependencies": { - "graphql": "^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0" - } - }, - "node_modules/graphql-tag/node_modules/tslib": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", - "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==" - }, - "node_modules/gray-matter": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/gray-matter/-/gray-matter-4.0.3.tgz", - "integrity": "sha512-5v6yZd4JK3eMI3FqqCouswVqwugaA9r4dNZB1wwcmrD02QkV5H0y7XBQW8QwQqEaZY1pM9aqORSORhJRdNK44Q==", - "dependencies": { - "js-yaml": "^3.13.1", - "kind-of": "^6.0.2", - "section-matter": "^1.0.0", - "strip-bom-string": "^1.0.0" - }, - "engines": { - "node": ">=6.0" - } - }, - "node_modules/has-bigints": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", - "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "engines": { - "node": ">=4" - } - }, - "node_modules/has-property-descriptors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.1.tgz", - "integrity": "sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==", - "dependencies": { - "get-intrinsic": "^1.2.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-proto": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", - "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-symbols": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", - "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-tostringtag": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", - "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", - "dev": true, - "dependencies": { - "has-symbols": "^1.0.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/hasown": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", - "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", - "dependencies": { - "function-bind": "^1.1.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/hast-util-embedded": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/hast-util-embedded/-/hast-util-embedded-1.0.6.tgz", - "integrity": "sha512-JQMW+TJe0UAIXZMjCJ4Wf6ayDV9Yv3PBDPsHD4ExBpAspJ6MOcCX+nzVF+UJVv7OqPcg852WEMSHQPoRA+FVSw==", - "dependencies": { - "hast-util-is-element": "^1.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/hast-util-from-parse5": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/hast-util-from-parse5/-/hast-util-from-parse5-5.0.3.tgz", - "integrity": "sha512-gOc8UB99F6eWVWFtM9jUikjN7QkWxB3nY0df5Z0Zq1/Nkwl5V4hAAsl0tmwlgWl/1shlTF8DnNYLO8X6wRV9pA==", - "dependencies": { - "ccount": "^1.0.3", - "hastscript": "^5.0.0", - "property-information": "^5.0.0", - "web-namespaces": "^1.1.2", - "xtend": "^4.0.1" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/hast-util-has-property": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/hast-util-has-property/-/hast-util-has-property-1.0.4.tgz", - "integrity": "sha512-ghHup2voGfgFoHMGnaLHOjbYFACKrRh9KFttdCzMCbFoBMJXiNi2+XTrPP8+q6cDJM/RSqlCfVWrjp1H201rZg==", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/hast-util-is-element": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/hast-util-is-element/-/hast-util-is-element-1.1.0.tgz", - "integrity": "sha512-oUmNua0bFbdrD/ELDSSEadRVtWZOf3iF6Lbv81naqsIV99RnSCieTbWuWCY8BAeEfKJTKl0gRdokv+dELutHGQ==", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/hast-util-parse-selector": { - "version": "2.2.5", - "resolved": "https://registry.npmjs.org/hast-util-parse-selector/-/hast-util-parse-selector-2.2.5.tgz", - "integrity": "sha512-7j6mrk/qqkSehsM92wQjdIgWM2/BW61u/53G6xmC8i1OmEdKLHbk419QKQUjz6LglWsfqoiHmyMRkP1BGjecNQ==", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/hast-util-to-html": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/hast-util-to-html/-/hast-util-to-html-7.1.3.tgz", - "integrity": "sha512-yk2+1p3EJTEE9ZEUkgHsUSVhIpCsL/bvT8E5GzmWc+N1Po5gBw+0F8bo7dpxXR0nu0bQVxVZGX2lBGF21CmeDw==", - "dependencies": { - "ccount": "^1.0.0", - "comma-separated-tokens": "^1.0.0", - "hast-util-is-element": "^1.0.0", - "hast-util-whitespace": "^1.0.0", - "html-void-elements": "^1.0.0", - "property-information": "^5.0.0", - "space-separated-tokens": "^1.0.0", - "stringify-entities": "^3.0.1", - "unist-util-is": "^4.0.0", - "xtend": "^4.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/hast-util-to-mdast": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/hast-util-to-mdast/-/hast-util-to-mdast-7.1.3.tgz", - "integrity": "sha512-3vER9p8B8mCs5b2qzoBiWlC9VnTkFmr8Ufb1eKdcvhVY+nipt52YfMRshk5r9gOE1IZ9/xtlSxebGCv1ig9uKA==", - "dependencies": { - "extend": "^3.0.0", - "hast-util-has-property": "^1.0.0", - "hast-util-is-element": "^1.1.0", - "hast-util-to-text": "^2.0.0", - "mdast-util-phrasing": "^2.0.0", - "mdast-util-to-string": "^1.0.0", - "rehype-minify-whitespace": "^4.0.3", - "repeat-string": "^1.6.1", - "trim-trailing-lines": "^1.1.0", - "unist-util-is": "^4.0.0", - "unist-util-visit": "^2.0.0", - "xtend": "^4.0.1" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/hast-util-to-mdast/node_modules/unist-util-visit": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-2.0.3.tgz", - "integrity": "sha512-iJ4/RczbJMkD0712mGktuGpm/U4By4FfDonL7N/9tATGIF4imikjOuagyMY53tnZq3NP6BcmlrHhEKAfGWjh7Q==", - "dependencies": { - "@types/unist": "^2.0.0", - "unist-util-is": "^4.0.0", - "unist-util-visit-parents": "^3.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/hast-util-to-mdast/node_modules/unist-util-visit-parents": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-3.1.1.tgz", - "integrity": "sha512-1KROIZWo6bcMrZEwiH2UrXDyalAa0uqzWCxCJj6lPOvTve2WkfgCytoDTPaMnodXh1WrXOq0haVYHj99ynJlsg==", - "dependencies": { - "@types/unist": "^2.0.0", - "unist-util-is": "^4.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/hast-util-to-text": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/hast-util-to-text/-/hast-util-to-text-2.0.1.tgz", - "integrity": "sha512-8nsgCARfs6VkwH2jJU9b8LNTuR4700na+0h3PqCaEk4MAnMDeu5P0tP8mjk9LLNGxIeQRLbiDbZVw6rku+pYsQ==", - "dependencies": { - "hast-util-is-element": "^1.0.0", - "repeat-string": "^1.0.0", - "unist-util-find-after": "^3.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/hast-util-whitespace": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/hast-util-whitespace/-/hast-util-whitespace-1.0.4.tgz", - "integrity": "sha512-I5GTdSfhYfAPNztx2xJRQpG8cuDSNt599/7YUn7Gx/WxNMsG+a835k97TDkFgk123cwjfwINaZknkKkphx/f2A==", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/hastscript": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/hastscript/-/hastscript-5.1.2.tgz", - "integrity": "sha512-WlztFuK+Lrvi3EggsqOkQ52rKbxkXL3RwB6t5lwoa8QLMemoWfBuL43eDrwOamJyR7uKQKdmKYaBH1NZBiIRrQ==", - "dependencies": { - "comma-separated-tokens": "^1.0.0", - "hast-util-parse-selector": "^2.0.0", - "property-information": "^5.0.0", - "space-separated-tokens": "^1.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/highland": { - "version": "2.13.5", - "resolved": "https://registry.npmjs.org/highland/-/highland-2.13.5.tgz", - "integrity": "sha512-dn2flPapIIAa4BtkB2ahjshg8iSJtrJtdhEb9/oiOrS5HMQTR/GuhFpqJ+11YBdtnl3AwWKvbZd1Uxr8uAmA7A==", - "dev": true, - "dependencies": { - "util-deprecate": "^1.0.2" - } - }, - "node_modules/history": { - "version": "4.10.1", - "resolved": "https://registry.npmjs.org/history/-/history-4.10.1.tgz", - "integrity": "sha512-36nwAD620w12kuzPAsyINPWJqlNbij+hpK1k9XRloDtym8mxzGYl2c17LnV6IAGB2Dmg4tEa7G7DlawS0+qjew==", - "dependencies": { - "@babel/runtime": "^7.1.2", - "loose-envify": "^1.2.0", - "resolve-pathname": "^3.0.0", - "tiny-invariant": "^1.0.2", - "tiny-warning": "^1.0.0", - "value-equal": "^1.0.1" - } - }, - "node_modules/hoist-non-react-statics": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz", - "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==", - "dependencies": { - "react-is": "^16.7.0" - } - }, - "node_modules/hosted-git-info": { - "version": "2.8.9", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", - "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", - "dev": true - }, - "node_modules/html-tags": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-3.3.1.tgz", - "integrity": "sha512-ztqyC3kLto0e9WbNp0aeP+M3kTt+nbaIveGmUxAtZa+8iFgKLUOD4YKM5j+f3QD89bra7UeumolZHKuOXnTmeQ==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/html-void-elements": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/html-void-elements/-/html-void-elements-1.0.5.tgz", - "integrity": "sha512-uE/TxKuyNIcx44cIWnjr/rfIATDH7ZaOMmstu0CwhFG1Dunhlp4OC6/NMbhiwoq5BpW0ubi303qnEk/PZj614w==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/ieee754": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/ignore": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", - "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", - "dev": true, - "engines": { - "node": ">= 4" - } - }, - "node_modules/immediate": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz", - "integrity": "sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==" - }, - "node_modules/immer": { - "version": "9.0.21", - "resolved": "https://registry.npmjs.org/immer/-/immer-9.0.21.tgz", - "integrity": "sha512-bc4NBHqOqSfRW7POMkHd51LvClaeMXpm8dx0e8oE2GORbq5aRK7Bxl4FyzVLdGtLmvLKL7BTDBG5ACQm4HWjTA==", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/immer" - } - }, - "node_modules/immutable": { - "version": "3.8.2", - "resolved": "https://registry.npmjs.org/immutable/-/immutable-3.8.2.tgz", - "integrity": "sha512-15gZoQ38eYjEjxkorfbcgBKBL6R7T459OuK+CpcWt7O3KF4uPCx2tD0uFETlUDIyo+1789crbMhTvQBSR5yBMg==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/import-fresh": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", - "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", - "dependencies": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", - "dev": true, - "engines": { - "node": ">=0.8.19" - } - }, - "node_modules/inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", - "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", - "dev": true, - "dependencies": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" - }, - "node_modules/ini": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ini/-/ini-2.0.0.tgz", - "integrity": "sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==", - "engines": { - "node": ">=10" - } - }, - "node_modules/inline-style-parser": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/inline-style-parser/-/inline-style-parser-0.1.1.tgz", - "integrity": "sha512-7NXolsK4CAS5+xvdj5OMMbI962hU/wvwoxk+LWR9Ek9bVtyuuYScDN6eS0rUm6TxApFpw7CX1o4uJzcd4AyD3Q==" - }, - "node_modules/internal-slot": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.7.tgz", - "integrity": "sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==", - "dev": true, - "dependencies": { - "es-errors": "^1.3.0", - "hasown": "^2.0.0", - "side-channel": "^1.0.4" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/invariant": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", - "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", - "dependencies": { - "loose-envify": "^1.0.0" - } - }, - "node_modules/is-alphabetical": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-1.0.4.tgz", - "integrity": "sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/is-alphanumeric": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-alphanumeric/-/is-alphanumeric-1.0.0.tgz", - "integrity": "sha512-ZmRL7++ZkcMOfDuWZuMJyIVLr2keE1o/DeNWh1EmgqGhUcV+9BIVsx0BcSBOHTZqzjs4+dISzr2KAeBEWGgXeA==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-alphanumerical": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-1.0.4.tgz", - "integrity": "sha512-UzoZUr+XfVz3t3v4KyGEniVL9BDRoQtY7tOyrRybkVNjDFWyo1yhXNGrrBTQxp3ib9BLAWs7k2YKBQsFRkZG9A==", - "dependencies": { - "is-alphabetical": "^1.0.0", - "is-decimal": "^1.0.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/is-array-buffer": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.4.tgz", - "integrity": "sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.2.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==" - }, - "node_modules/is-bigint": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", - "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", - "dev": true, - "dependencies": { - "has-bigints": "^1.0.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-binary-path": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", - "dev": true, - "dependencies": { - "binary-extensions": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-boolean-object": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", - "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-buffer": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz", - "integrity": "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "engines": { - "node": ">=4" - } - }, - "node_modules/is-callable": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", - "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-core-module": { - "version": "2.13.1", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", - "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", - "dependencies": { - "hasown": "^2.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-date-object": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", - "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", - "dev": true, - "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-decimal": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-1.0.4.tgz", - "integrity": "sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "dev": true, - "dependencies": { - "is-extglob": "^2.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-hexadecimal": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-1.0.4.tgz", - "integrity": "sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/is-hotkey": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/is-hotkey/-/is-hotkey-0.2.0.tgz", - "integrity": "sha512-UknnZK4RakDmTgz4PI1wIph5yxSs/mvChWs9ifnlXsKuXgWmOkY/hAE0H/k2MIqH0RlRye0i1oC07MCRSD28Mw==" - }, - "node_modules/is-negative-zero": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", - "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true, - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/is-number-object": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", - "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", - "dev": true, - "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-plain-obj": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz", - "integrity": "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==", - "peer": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-plain-object": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", - "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-regex": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", - "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-shared-array-buffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", - "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-string": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", - "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", - "dev": true, - "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-symbol": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", - "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", - "dev": true, - "dependencies": { - "has-symbols": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-typed-array": { - "version": "1.1.13", - "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.13.tgz", - "integrity": "sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==", - "dev": true, - "dependencies": { - "which-typed-array": "^1.1.14" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-url": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/is-url/-/is-url-1.2.4.tgz", - "integrity": "sha512-ITvGim8FhRiYe4IQ5uHSkj7pVaPDrCTkNd3yq3cV7iZAcJdHTUMPMEHcqSOy9xZ9qFenQCvi+2wjH9a1nXqHww==" - }, - "node_modules/is-weakref": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", - "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-whitespace-character": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-whitespace-character/-/is-whitespace-character-1.0.4.tgz", - "integrity": "sha512-SDweEzfIZM0SJV0EUga669UTKlmL0Pq8Lno0QDQsPnvECB3IM2aP0gdx5TrU0A01MAPfViaZiI2V1QMZLaKK5w==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/is-word-character": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-word-character/-/is-word-character-1.0.4.tgz", - "integrity": "sha512-5SMO8RVennx3nZrqtKwCGyyetPE9VDba5ugvKLaD4KopPG5kR4mQ7tNt/r7feL5yt5h3lpuBbIUmCOG2eSzXHA==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==" - }, - "node_modules/isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "dev": true - }, - "node_modules/isomorphic-base64": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/isomorphic-base64/-/isomorphic-base64-1.0.2.tgz", - "integrity": "sha512-pQFyLwShVPA1Qr0dE1ZPguJkbOsFGDfSq6Wzz6XaO33v74X6/iQjgYPozwkeKGQxOI1/H3Fz7+ROtnV1veyKEg==" - }, - "node_modules/js-base64": { - "version": "3.7.7", - "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-3.7.7.tgz", - "integrity": "sha512-7rCnleh0z2CkXhH67J8K1Ytz0b2Y+yxTPL+/KOJoa20hfnVQ/3/T6W/KflYI4bRHRagNeXeU2bkNGI3v1oS/lw==" - }, - "node_modules/js-sha256": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/js-sha256/-/js-sha256-0.9.0.tgz", - "integrity": "sha512-sga3MHh9sgQN2+pJ9VYZ+1LPwXOxuBJBA5nrR5/ofPfuiJBE2hnjsaN8se8JznOmGLN2p49Pe5U/ttafcs/apA==" - }, - "node_modules/js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" - }, - "node_modules/js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", - "dependencies": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/jsesc": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", - "bin": { - "jsesc": "bin/jsesc" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/json-buffer": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", - "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", - "dev": true - }, - "node_modules/json-parse-better-errors": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", - "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", - "dev": true - }, - "node_modules/json-parse-even-better-errors": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", - "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==" - }, - "node_modules/json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==" - }, - "node_modules/json-stringify-pretty-compact": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/json-stringify-pretty-compact/-/json-stringify-pretty-compact-2.0.0.tgz", - "integrity": "sha512-WRitRfs6BGq4q8gTgOy4ek7iPFXjbra0H3PmDLKm2xnZ+Gh1HUhiKGgCZkSPNULlP7mvfu6FV/mOLhCarspADQ==" - }, - "node_modules/junk": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/junk/-/junk-1.0.3.tgz", - "integrity": "sha512-3KF80UaaSSxo8jVnRYtMKNGFOoVPBdkkVPsw+Ad0y4oxKXPduS6G6iHkrf69yJVff/VAaYXkV42rtZ7daJxU3w==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/jwt-decode": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/jwt-decode/-/jwt-decode-3.1.2.tgz", - "integrity": "sha512-UfpWE/VZn0iP50d8cz9NrZLM9lSWhcJ+0Gt/nm4by88UL+J1SiKN8/5dkjMmbEzwL2CAe+67GsegCbIKtbp75A==" - }, - "node_modules/keyv": { - "version": "4.5.4", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", - "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", - "dev": true, - "dependencies": { - "json-buffer": "3.0.1" - } - }, - "node_modules/kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/known-css-properties": { - "version": "0.34.0", - "resolved": "https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.34.0.tgz", - "integrity": "sha512-tBECoUqNFbyAY4RrbqsBQqDFpGXAEbdD5QKr8kACx3+rnArmuuR22nKQWKazvp07N9yjTyDZaw/20UIH8tL9DQ==", - "dev": true - }, - "node_modules/lerc": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/lerc/-/lerc-3.0.0.tgz", - "integrity": "sha512-Rm4J/WaHhRa93nCN2mwWDZFoRVF18G1f47C+kvQWyHGEZxFpTUi73p7lMVSAndyxGt6lJ2/CFbOcf9ra5p8aww==" - }, - "node_modules/lie": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/lie/-/lie-3.1.1.tgz", - "integrity": "sha512-RiNhHysUjhrDQntfYSfY4MU24coXXdEOgw9WGcKHNeEwffDYbF//u87M1EWaMGzuFoSbqW0C9C6lEEhDOAswfw==", - "dependencies": { - "immediate": "~3.0.5" - } - }, - "node_modules/lightningcss": { - "version": "1.26.0", - "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.26.0.tgz", - "integrity": "sha512-a/XZ5hdgifrofQJUArr5AiJjx26SwMam3SJUSMjgebZbESZ96i+6Qsl8tLi0kaUsdMzBWXh9sN1Oe6hp2/dkQw==", - "dev": true, - "dependencies": { - "detect-libc": "^1.0.3" - }, - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - }, - "optionalDependencies": { - "lightningcss-darwin-arm64": "1.26.0", - "lightningcss-darwin-x64": "1.26.0", - "lightningcss-freebsd-x64": "1.26.0", - "lightningcss-linux-arm-gnueabihf": "1.26.0", - "lightningcss-linux-arm64-gnu": "1.26.0", - "lightningcss-linux-arm64-musl": "1.26.0", - "lightningcss-linux-x64-gnu": "1.26.0", - "lightningcss-linux-x64-musl": "1.26.0", - "lightningcss-win32-arm64-msvc": "1.26.0", - "lightningcss-win32-x64-msvc": "1.26.0" - } - }, - "node_modules/lightningcss-cli": { - "version": "1.26.0", - "resolved": "https://registry.npmjs.org/lightningcss-cli/-/lightningcss-cli-1.26.0.tgz", - "integrity": "sha512-guvqLilK/ptQwqBDR6MNZLAp0yAyDe/Uomf+NOu1VsmR7QaDVILiDKPpcr33dsaSSqKVH3Uhv35j6EPdvohS4Q==", - "dev": true, - "hasInstallScript": true, - "dependencies": { - "detect-libc": "^1.0.3" - }, - "bin": { - "lightningcss": "lightningcss" - }, - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - }, - "optionalDependencies": { - "lightningcss-cli-darwin-arm64": "1.26.0", - "lightningcss-cli-darwin-x64": "1.26.0", - "lightningcss-cli-freebsd-x64": "1.26.0", - "lightningcss-cli-linux-arm-gnueabihf": "1.26.0", - "lightningcss-cli-linux-arm64-gnu": "1.26.0", - "lightningcss-cli-linux-arm64-musl": "1.26.0", - "lightningcss-cli-linux-x64-gnu": "1.26.0", - "lightningcss-cli-linux-x64-musl": "1.26.0", - "lightningcss-cli-win32-arm64-msvc": "1.26.0", - "lightningcss-cli-win32-x64-msvc": "1.26.0" - } - }, - "node_modules/lightningcss-cli-darwin-arm64": { - "version": "1.26.0", - "resolved": "https://registry.npmjs.org/lightningcss-cli-darwin-arm64/-/lightningcss-cli-darwin-arm64-1.26.0.tgz", - "integrity": "sha512-ztlxASFVcIhShPM7f7nwgz7SUv9wXfRHUhGk4/ACaTn18wm8gw7TG3WKF36NQ1zYJyhLEar7+Vd/SClKYTCrpg==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/lightningcss-cli-darwin-x64": { - "version": "1.26.0", - "resolved": "https://registry.npmjs.org/lightningcss-cli-darwin-x64/-/lightningcss-cli-darwin-x64-1.26.0.tgz", - "integrity": "sha512-qL2LO4dn4wBAlnNiJspojKZXxJqIvddLfmgH3rA6A7Q27qHt01LIOB9WMxriApLpTThYGH4c2fOd2oTFF17/5w==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/lightningcss-cli-freebsd-x64": { - "version": "1.26.0", - "resolved": "https://registry.npmjs.org/lightningcss-cli-freebsd-x64/-/lightningcss-cli-freebsd-x64-1.26.0.tgz", - "integrity": "sha512-kKCL5zTgxcaqZMjXTG2Zj8br9pVlC8kF4Zj6tg/bQp/dEJ2cYWQ/Y2ZLYwulnMqyU/jN+mI6x0Z9a5RbjQ0iQw==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/lightningcss-cli-linux-arm-gnueabihf": { - "version": "1.26.0", - "resolved": "https://registry.npmjs.org/lightningcss-cli-linux-arm-gnueabihf/-/lightningcss-cli-linux-arm-gnueabihf-1.26.0.tgz", - "integrity": "sha512-ZX54fDqvyMUGuIZjv+bUth3O23g62Y7H33fKuDTHMi8z7F067gI40gjbC3BeCxpYbiOjbbE/6kHPibcGUy+xsQ==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/lightningcss-cli-linux-arm64-gnu": { - "version": "1.26.0", - "resolved": "https://registry.npmjs.org/lightningcss-cli-linux-arm64-gnu/-/lightningcss-cli-linux-arm64-gnu-1.26.0.tgz", - "integrity": "sha512-URhW35aInLYXiM5oYcYTl8vSnUer1fBP+sx5pzgPHmwGRFbuwY+KaUj8s0cIKulOoW1n3d/6/k2GrgYDIgrPmg==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/lightningcss-cli-linux-arm64-musl": { - "version": "1.26.0", - "resolved": "https://registry.npmjs.org/lightningcss-cli-linux-arm64-musl/-/lightningcss-cli-linux-arm64-musl-1.26.0.tgz", - "integrity": "sha512-qaR+U4mdNSYsSaW/bqmWgSM7582i7iH/ShrJw1ut7dq7VeMxY44jZzacBjMVVyVZnlbNkhhiAtz9Ksj01gl8Bw==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/lightningcss-cli-linux-x64-gnu": { - "version": "1.26.0", - "resolved": "https://registry.npmjs.org/lightningcss-cli-linux-x64-gnu/-/lightningcss-cli-linux-x64-gnu-1.26.0.tgz", - "integrity": "sha512-6EXxjBdE8xrHf7hearDq0xpmpK2IG8Ure7Cex70fxwVa24ISVxu08ifnftyrSOtmwJngp7PutRIJxCeMempy6Q==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/lightningcss-cli-linux-x64-musl": { - "version": "1.26.0", - "resolved": "https://registry.npmjs.org/lightningcss-cli-linux-x64-musl/-/lightningcss-cli-linux-x64-musl-1.26.0.tgz", - "integrity": "sha512-/0OrCqCGrb1yTKmkKpD5TS6pLzaRo1nfdqQSdj3ljtjePLSLZ4zmlSy8jQzWLj0Rd4neZrn5GTXes1IXeXKCZg==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/lightningcss-cli-win32-arm64-msvc": { - "version": "1.26.0", - "resolved": "https://registry.npmjs.org/lightningcss-cli-win32-arm64-msvc/-/lightningcss-cli-win32-arm64-msvc-1.26.0.tgz", - "integrity": "sha512-n33pwvOKZuqcbvwWPezH5A1Rsn+N1jNUXhdtXIldtuBqRhroPFixm2ryHht86A3cVPfmCdbFx3wxWXVwG1azUw==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/lightningcss-cli-win32-x64-msvc": { - "version": "1.26.0", - "resolved": "https://registry.npmjs.org/lightningcss-cli-win32-x64-msvc/-/lightningcss-cli-win32-x64-msvc-1.26.0.tgz", - "integrity": "sha512-RrB10En50bq5V2eb8ZvO+miSpDsJZIGRzFjNAejEvpuaaIWibLcItXhuxbuAb3JWWJewRjX0wQlaG4ftXf+eVg==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/lightningcss-darwin-arm64": { - "version": "1.26.0", - "resolved": "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.26.0.tgz", - "integrity": "sha512-n4TIvHO1NY1ondKFYpL2ZX0bcC2y6yjXMD6JfyizgR8BCFNEeArINDzEaeqlfX9bXz73Bpz/Ow0nu+1qiDrBKg==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/lightningcss-darwin-x64": { - "version": "1.26.0", - "resolved": "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.26.0.tgz", - "integrity": "sha512-Rf9HuHIDi1R6/zgBkJh25SiJHF+dm9axUZW/0UoYCW1/8HV0gMI0blARhH4z+REmWiU1yYT/KyNF3h7tHyRXUg==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/lightningcss-freebsd-x64": { - "version": "1.26.0", - "resolved": "https://registry.npmjs.org/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.26.0.tgz", - "integrity": "sha512-C/io7POAxp6sZxFSVGezjajMlCKQ8KSwISLLGRq8xLQpQMokYrUoqYEwmIX8mLmF6C/CZPk0gFmRSzd8biWM0g==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/lightningcss-linux-arm-gnueabihf": { - "version": "1.26.0", - "resolved": "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.26.0.tgz", - "integrity": "sha512-Aag9kqXqkyPSW+dXMgyWk66C984Nay2pY8Nws+67gHlDzV3cWh7TvFlzuaTaVFMVqdDTzN484LSK3u39zFBnzg==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/lightningcss-linux-arm64-gnu": { - "version": "1.26.0", - "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.26.0.tgz", - "integrity": "sha512-iJmZM7fUyVjH+POtdiCtExG+67TtPUTer7K/5A8DIfmPfrmeGvzfRyBltGhQz13Wi15K1lf2cPYoRaRh6vcwNA==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/lightningcss-linux-arm64-musl": { - "version": "1.26.0", - "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.26.0.tgz", - "integrity": "sha512-XxoEL++tTkyuvu+wq/QS8bwyTXZv2y5XYCMcWL45b8XwkiS8eEEEej9BkMGSRwxa5J4K+LDeIhLrS23CpQyfig==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/lightningcss-linux-x64-gnu": { - "version": "1.26.0", - "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.26.0.tgz", - "integrity": "sha512-1dkTfZQAYLj8MUSkd6L/+TWTG8V6Kfrzfa0T1fSlXCXQHrt1HC1/UepXHtKHDt/9yFwyoeayivxXAsApVxn6zA==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/lightningcss-linux-x64-musl": { - "version": "1.26.0", - "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.26.0.tgz", - "integrity": "sha512-yX3Rk9m00JGCUzuUhFEojY+jf/6zHs3XU8S8Vk+FRbnr4St7cjyMXdNjuA2LjiT8e7j8xHRCH8hyZ4H/btRE4A==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/lightningcss-win32-arm64-msvc": { - "version": "1.26.0", - "resolved": "https://registry.npmjs.org/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.26.0.tgz", - "integrity": "sha512-X/597/cFnCogy9VItj/+7Tgu5VLbAtDF7KZDPdSw0MaL6FL940th1y3HiOzFIlziVvAtbo0RB3NAae1Oofr+Tw==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/lightningcss-win32-x64-msvc": { - "version": "1.26.0", - "resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.26.0.tgz", - "integrity": "sha512-pYS3EyGP3JRhfqEFYmfFDiZ9/pVNfy8jVIYtrx9TVNusVyDK3gpW1w/rbvroQ4bDJi7grdUtyrYU6V2xkY/bBw==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/lines-and-columns": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", - "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==" - }, - "node_modules/load-json-file": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", - "integrity": "sha512-Kx8hMakjX03tiGTLAIdJ+lL0htKnXjEZN6hk/tozf/WOuYGdZBJrZ+rCJRbVCugsjB3jMLn9746NsQIf5VjBMw==", - "dev": true, - "dependencies": { - "graceful-fs": "^4.1.2", - "parse-json": "^4.0.0", - "pify": "^3.0.0", - "strip-bom": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/load-json-file/node_modules/parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==", - "dev": true, - "dependencies": { - "error-ex": "^1.3.1", - "json-parse-better-errors": "^1.0.1" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/localforage": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/localforage/-/localforage-1.10.0.tgz", - "integrity": "sha512-14/H1aX7hzBBmmh7sGPd+AOMkkIrHM3Z1PAyGgZigA1H1p5O5ANnMyWzvpAETtG68/dC4pC0ncy3+PPGzXZHPg==", - "dependencies": { - "lie": "3.1.1" - } - }, - "node_modules/lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" - }, - "node_modules/lodash-es": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz", - "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==" - }, - "node_modules/lodash.truncate": { - "version": "4.4.2", - "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz", - "integrity": "sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==", - "dev": true - }, - "node_modules/longest-streak": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/longest-streak/-/longest-streak-2.0.4.tgz", - "integrity": "sha512-vM6rUVCVUJJt33bnmHiZEvr7wPT78ztX7rojL+LW51bHtLh6HTjx84LA5W4+oa6aKEJA7jJu5LR6vQRBpA5DVg==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/loose-envify": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", - "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", - "dependencies": { - "js-tokens": "^3.0.0 || ^4.0.0" - }, - "bin": { - "loose-envify": "cli.js" - } - }, - "node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/mapbox-to-css-font": { - "version": "2.4.5", - "resolved": "https://registry.npmjs.org/mapbox-to-css-font/-/mapbox-to-css-font-2.4.5.tgz", - "integrity": "sha512-VJ6nB8emkO9VODI0Fk+TQ/0zKBTqmf/Pkt8Xv0kHstoc0iXRajA00DAid4Kc3K5xeFIOoiZrVxijEzj0GLVO2w==" - }, - "node_modules/markdown-escapes": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/markdown-escapes/-/markdown-escapes-1.0.4.tgz", - "integrity": "sha512-8z4efJYk43E0upd0NbVXwgSTQs6cT3T06etieCMEg7dRbzCbxUCK/GHlX8mhHRDcp+OLlHkPKsvqQTCvsRl2cg==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/markdown-table": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/markdown-table/-/markdown-table-2.0.0.tgz", - "integrity": "sha512-Ezda85ToJUBhM6WGaG6veasyym+Tbs3cMAw/ZhOPqXiYsr0jgocBV3j3nx+4lk47plLlIqjwuTm/ywVI+zjJ/A==", - "dependencies": { - "repeat-string": "^1.0.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/material-colors": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/material-colors/-/material-colors-1.2.6.tgz", - "integrity": "sha512-6qE4B9deFBIa9YSpOc9O0Sgc43zTeVYbgDT5veRKSlB2+ZuHNoVVxA1L/ckMUayV9Ay9y7Z/SZCLcGteW9i7bg==" - }, - "node_modules/mathml-tag-names": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/mathml-tag-names/-/mathml-tag-names-2.1.3.tgz", - "integrity": "sha512-APMBEanjybaPzUrfqU0IMU5I0AswKMH7k8OTLs0vvV4KZpExkTkY87nR/zpbuTPj+gARop7aGUbl11pnDfW6xg==", - "dev": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/maximatch": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/maximatch/-/maximatch-0.1.0.tgz", - "integrity": "sha512-9ORVtDUFk4u/NFfo0vG/ND/z7UQCVZBL539YW0+U1I7H1BkZwizcPx5foFv7LCPcBnm2U6RjFnQOsIvN4/Vm2A==", - "dev": true, - "dependencies": { - "array-differ": "^1.0.0", - "array-union": "^1.0.1", - "arrify": "^1.0.0", - "minimatch": "^3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/mdast-util-compact": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mdast-util-compact/-/mdast-util-compact-1.0.4.tgz", - "integrity": "sha512-3YDMQHI5vRiS2uygEFYaqckibpJtKq5Sj2c8JioeOQBU6INpKbdWzfyLqFFnDwEcEnRFIdMsguzs5pC1Jp4Isg==", - "dependencies": { - "unist-util-visit": "^1.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-definitions": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/mdast-util-definitions/-/mdast-util-definitions-1.2.5.tgz", - "integrity": "sha512-CJXEdoLfiISCDc2JB6QLb79pYfI6+GcIH+W2ox9nMc7od0Pz+bovcHsiq29xAQY6ayqe/9CsK2VzkSJdg1pFYA==", - "dependencies": { - "unist-util-visit": "^1.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-find-and-replace": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/mdast-util-find-and-replace/-/mdast-util-find-and-replace-1.1.1.tgz", - "integrity": "sha512-9cKl33Y21lyckGzpSmEQnIDjEfeeWelN5s1kUW1LwdB0Fkuq2u+4GdqcGEygYxJE8GVqCl0741bYXHgamfWAZA==", - "dependencies": { - "escape-string-regexp": "^4.0.0", - "unist-util-is": "^4.0.0", - "unist-util-visit-parents": "^3.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-find-and-replace/node_modules/unist-util-visit-parents": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-3.1.1.tgz", - "integrity": "sha512-1KROIZWo6bcMrZEwiH2UrXDyalAa0uqzWCxCJj6lPOvTve2WkfgCytoDTPaMnodXh1WrXOq0haVYHj99ynJlsg==", - "dependencies": { - "@types/unist": "^2.0.0", - "unist-util-is": "^4.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-from-markdown": { - "version": "0.8.5", - "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-0.8.5.tgz", - "integrity": "sha512-2hkTXtYYnr+NubD/g6KGBS/0mFmBcifAsI0yIWRiRo0PjVs6SSOSOdtzbp6kSGnShDN6G5aWZpKQ2lWRy27mWQ==", - "dependencies": { - "@types/mdast": "^3.0.0", - "mdast-util-to-string": "^2.0.0", - "micromark": "~2.11.0", - "parse-entities": "^2.0.0", - "unist-util-stringify-position": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-from-markdown/node_modules/mdast-util-to-string": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-2.0.0.tgz", - "integrity": "sha512-AW4DRS3QbBayY/jJmD8437V1Gombjf8RSOUCMFBuo5iHi58AGEgVCKQ+ezHkZZDpAQS75hcBMpLqjpJTjtUL7w==", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-gfm": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/mdast-util-gfm/-/mdast-util-gfm-0.1.2.tgz", - "integrity": "sha512-NNkhDx/qYcuOWB7xHUGWZYVXvjPFFd6afg6/e2g+SV4r9q5XUcCbV4Wfa3DLYIiD+xAEZc6K4MGaE/m0KDcPwQ==", - "dependencies": { - "mdast-util-gfm-autolink-literal": "^0.1.0", - "mdast-util-gfm-strikethrough": "^0.2.0", - "mdast-util-gfm-table": "^0.1.0", - "mdast-util-gfm-task-list-item": "^0.1.0", - "mdast-util-to-markdown": "^0.6.1" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-gfm-autolink-literal": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/mdast-util-gfm-autolink-literal/-/mdast-util-gfm-autolink-literal-0.1.3.tgz", - "integrity": "sha512-GjmLjWrXg1wqMIO9+ZsRik/s7PLwTaeCHVB7vRxUwLntZc8mzmTsLVr6HW1yLokcnhfURsn5zmSVdi3/xWWu1A==", - "dependencies": { - "ccount": "^1.0.0", - "mdast-util-find-and-replace": "^1.1.0", - "micromark": "^2.11.3" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-gfm-strikethrough": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/mdast-util-gfm-strikethrough/-/mdast-util-gfm-strikethrough-0.2.3.tgz", - "integrity": "sha512-5OQLXpt6qdbttcDG/UxYY7Yjj3e8P7X16LzvpX8pIQPYJ/C2Z1qFGMmcw+1PZMUM3Z8wt8NRfYTvCni93mgsgA==", - "dependencies": { - "mdast-util-to-markdown": "^0.6.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-gfm-table": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/mdast-util-gfm-table/-/mdast-util-gfm-table-0.1.6.tgz", - "integrity": "sha512-j4yDxQ66AJSBwGkbpFEp9uG/LS1tZV3P33fN1gkyRB2LoRL+RR3f76m0HPHaby6F4Z5xr9Fv1URmATlRRUIpRQ==", - "dependencies": { - "markdown-table": "^2.0.0", - "mdast-util-to-markdown": "~0.6.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-gfm-task-list-item": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/mdast-util-gfm-task-list-item/-/mdast-util-gfm-task-list-item-0.1.6.tgz", - "integrity": "sha512-/d51FFIfPsSmCIRNp7E6pozM9z1GYPIkSy1urQ8s/o4TC22BZ7DqfHFWiqBD23bc7J3vV1Fc9O4QIHBlfuit8A==", - "dependencies": { - "mdast-util-to-markdown": "~0.6.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-math": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/mdast-util-math/-/mdast-util-math-2.0.2.tgz", - "integrity": "sha512-8gmkKVp9v6+Tgjtq6SYx9kGPpTf6FVYRa53/DLh479aldR9AyP48qeVOgNZ5X7QUK7nOy4yw7vg6mbiGcs9jWQ==", - "dependencies": { - "@types/mdast": "^3.0.0", - "longest-streak": "^3.0.0", - "mdast-util-to-markdown": "^1.3.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-math/node_modules/longest-streak": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/longest-streak/-/longest-streak-3.1.0.tgz", - "integrity": "sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/mdast-util-math/node_modules/mdast-util-phrasing": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/mdast-util-phrasing/-/mdast-util-phrasing-3.0.1.tgz", - "integrity": "sha512-WmI1gTXUBJo4/ZmSk79Wcb2HcjPJBzM1nlI/OUWA8yk2X9ik3ffNbBGsU+09BFmXaL1IBb9fiuvq6/KMiNycSg==", - "dependencies": { - "@types/mdast": "^3.0.0", - "unist-util-is": "^5.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-math/node_modules/mdast-util-to-markdown": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-1.5.0.tgz", - "integrity": "sha512-bbv7TPv/WC49thZPg3jXuqzuvI45IL2EVAr/KxF0BSdHsU0ceFHOmwQn6evxAh1GaoK/6GQ1wp4R4oW2+LFL/A==", - "dependencies": { - "@types/mdast": "^3.0.0", - "@types/unist": "^2.0.0", - "longest-streak": "^3.0.0", - "mdast-util-phrasing": "^3.0.0", - "mdast-util-to-string": "^3.0.0", - "micromark-util-decode-string": "^1.0.0", - "unist-util-visit": "^4.0.0", - "zwitch": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-math/node_modules/mdast-util-to-string": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-3.2.0.tgz", - "integrity": "sha512-V4Zn/ncyN1QNSqSBxTrMOLpjr+IKdHl2v3KVLoWmDPscP4r9GcCi71gjgvUV1SFSKh92AjAG4peFuBl2/YgCJg==", - "dependencies": { - "@types/mdast": "^3.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-math/node_modules/unist-util-is": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-5.2.1.tgz", - "integrity": "sha512-u9njyyfEh43npf1M+yGKDGVPbY/JWEemg5nH05ncKPfi+kBbKBJoTdsogMu33uhytuLlv9y0O7GH7fEdwLdLQw==", - "dependencies": { - "@types/unist": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-math/node_modules/unist-util-visit": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-4.1.2.tgz", - "integrity": "sha512-MSd8OUGISqHdVvfY9TPhyK2VdUrPgxkUtWSuMHF6XAAFuL4LokseigBnZtPnJMu+FbynTkFNnFlyjxpVKujMRg==", - "dependencies": { - "@types/unist": "^2.0.0", - "unist-util-is": "^5.0.0", - "unist-util-visit-parents": "^5.1.1" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-math/node_modules/unist-util-visit-parents": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-5.1.3.tgz", - "integrity": "sha512-x6+y8g7wWMyQhL1iZfhIPhDAs7Xwbn9nRosDXl7qoPTSCy0yNxnKc+hWokFifWQIDGi154rdUqKvbCa4+1kLhg==", - "dependencies": { - "@types/unist": "^2.0.0", - "unist-util-is": "^5.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-math/node_modules/zwitch": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-2.0.4.tgz", - "integrity": "sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/mdast-util-phrasing": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/mdast-util-phrasing/-/mdast-util-phrasing-2.0.0.tgz", - "integrity": "sha512-G1rNlW/sViwzbBYD7+k3mKGtoWV2v4GBFky66OYHfktHe7Hg9R+hH4xpeoOtjYiwTvle8C8wlKMpgqPCkaeK8Q==", - "dependencies": { - "unist-util-is": "^4.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-to-hast": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-4.0.0.tgz", - "integrity": "sha512-yOTZSxR1aPvWRUxVeLaLZ1sCYrK87x2Wusp1bDM/Ao2jETBhYUKITI3nHvgy+HkZW54HuCAhHnS0mTcbECD5Ig==", - "dependencies": { - "collapse-white-space": "^1.0.0", - "detab": "^2.0.0", - "mdast-util-definitions": "^1.2.0", - "mdurl": "^1.0.1", - "trim": "0.0.1", - "trim-lines": "^1.0.0", - "unist-builder": "^1.0.1", - "unist-util-generated": "^1.1.0", - "unist-util-position": "^3.0.0", - "unist-util-visit": "^1.1.0", - "xtend": "^4.0.1" - } - }, - "node_modules/mdast-util-to-markdown": { - "version": "0.6.5", - "resolved": "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-0.6.5.tgz", - "integrity": "sha512-XeV9sDE7ZlOQvs45C9UKMtfTcctcaj/pGwH8YLbMHoMOXNNCn2LsqVQOqrF1+/NU8lKDAqozme9SCXWyo9oAcQ==", - "dependencies": { - "@types/unist": "^2.0.0", - "longest-streak": "^2.0.0", - "mdast-util-to-string": "^2.0.0", - "parse-entities": "^2.0.0", - "repeat-string": "^1.0.0", - "zwitch": "^1.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-to-markdown/node_modules/mdast-util-to-string": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-2.0.0.tgz", - "integrity": "sha512-AW4DRS3QbBayY/jJmD8437V1Gombjf8RSOUCMFBuo5iHi58AGEgVCKQ+ezHkZZDpAQS75hcBMpLqjpJTjtUL7w==", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-to-string": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-1.1.0.tgz", - "integrity": "sha512-jVU0Nr2B9X3MU4tSK7JP1CMkSvOj7X5l/GboG1tKRw52lLF1x2Ju92Ms9tNetCcbfX3hzlM73zYo2NKkWSfF/A==", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdn-data": { - "version": "2.0.30", - "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.30.tgz", - "integrity": "sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==", - "dev": true - }, - "node_modules/mdurl": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz", - "integrity": "sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g==" - }, - "node_modules/memoize-one": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/memoize-one/-/memoize-one-5.2.1.tgz", - "integrity": "sha512-zYiwtZUcYyXKo/np96AGZAckk+FWWsUdJ3cHGGmld7+AhvcWmQyGCYUh1hc4Q/pkOhb65dQR/pqCyK0cOaHz4Q==" - }, - "node_modules/memorystream": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/memorystream/-/memorystream-0.3.1.tgz", - "integrity": "sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw==", - "dev": true, - "engines": { - "node": ">= 0.10.0" - } - }, - "node_modules/meow": { - "version": "13.2.0", - "resolved": "https://registry.npmjs.org/meow/-/meow-13.2.0.tgz", - "integrity": "sha512-pxQJQzB6djGPXh08dacEloMFopsOqGVRKFPYvPOt9XDZ1HasbgDZA74CJGreSU4G3Ak7EFJGoiH2auq+yXISgA==", - "dev": true, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/merge2": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", - "dev": true, - "engines": { - "node": ">= 8" - } - }, - "node_modules/micro-api-client": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/micro-api-client/-/micro-api-client-3.3.0.tgz", - "integrity": "sha512-y0y6CUB9RLVsy3kfgayU28746QrNMpSm9O/AYGNsBgOkJr/X/Jk0VLGoO8Ude7Bpa8adywzF+MzXNZRFRsNPhg==" - }, - "node_modules/micromark": { - "version": "2.11.4", - "resolved": "https://registry.npmjs.org/micromark/-/micromark-2.11.4.tgz", - "integrity": "sha512-+WoovN/ppKolQOFIAajxi7Lu9kInbPxFuTBVEavFcL8eAfVstoc5MocPmqBeAdBOJV00uaVjegzH4+MA0DN/uA==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "debug": "^4.0.0", - "parse-entities": "^2.0.0" - } - }, - "node_modules/micromark-extension-gfm": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/micromark-extension-gfm/-/micromark-extension-gfm-0.3.3.tgz", - "integrity": "sha512-oVN4zv5/tAIA+l3GbMi7lWeYpJ14oQyJ3uEim20ktYFAcfX1x3LNlFGGlmrZHt7u9YlKExmyJdDGaTt6cMSR/A==", - "dependencies": { - "micromark": "~2.11.0", - "micromark-extension-gfm-autolink-literal": "~0.5.0", - "micromark-extension-gfm-strikethrough": "~0.6.5", - "micromark-extension-gfm-table": "~0.4.0", - "micromark-extension-gfm-tagfilter": "~0.3.0", - "micromark-extension-gfm-task-list-item": "~0.3.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/micromark-extension-gfm-autolink-literal": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/micromark-extension-gfm-autolink-literal/-/micromark-extension-gfm-autolink-literal-0.5.7.tgz", - "integrity": "sha512-ePiDGH0/lhcngCe8FtH4ARFoxKTUelMp4L7Gg2pujYD5CSMb9PbblnyL+AAMud/SNMyusbS2XDSiPIRcQoNFAw==", - "dependencies": { - "micromark": "~2.11.3" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/micromark-extension-gfm-strikethrough": { - "version": "0.6.5", - "resolved": "https://registry.npmjs.org/micromark-extension-gfm-strikethrough/-/micromark-extension-gfm-strikethrough-0.6.5.tgz", - "integrity": "sha512-PpOKlgokpQRwUesRwWEp+fHjGGkZEejj83k9gU5iXCbDG+XBA92BqnRKYJdfqfkrRcZRgGuPuXb7DaK/DmxOhw==", - "dependencies": { - "micromark": "~2.11.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/micromark-extension-gfm-table": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/micromark-extension-gfm-table/-/micromark-extension-gfm-table-0.4.3.tgz", - "integrity": "sha512-hVGvESPq0fk6ALWtomcwmgLvH8ZSVpcPjzi0AjPclB9FsVRgMtGZkUcpE0zgjOCFAznKepF4z3hX8z6e3HODdA==", - "dependencies": { - "micromark": "~2.11.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/micromark-extension-gfm-tagfilter": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/micromark-extension-gfm-tagfilter/-/micromark-extension-gfm-tagfilter-0.3.0.tgz", - "integrity": "sha512-9GU0xBatryXifL//FJH+tAZ6i240xQuFrSL7mYi8f4oZSbc+NvXjkrHemeYP0+L4ZUT+Ptz3b95zhUZnMtoi/Q==", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/micromark-extension-gfm-task-list-item": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/micromark-extension-gfm-task-list-item/-/micromark-extension-gfm-task-list-item-0.3.3.tgz", - "integrity": "sha512-0zvM5iSLKrc/NQl84pZSjGo66aTGd57C1idmlWmE87lkMcXrTxg1uXa/nXomxJytoje9trP0NDLvw4bZ/Z/XCQ==", - "dependencies": { - "micromark": "~2.11.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/micromark-util-character": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-1.2.0.tgz", - "integrity": "sha512-lXraTwcX3yH/vMDaFWCQJP1uIszLVebzUa3ZHdrgxr7KEU/9mL4mVgCpGbyhvNLNlauROiNUq7WN5u7ndbY6xg==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "micromark-util-symbol": "^1.0.0", - "micromark-util-types": "^1.0.0" - } - }, - "node_modules/micromark-util-decode-numeric-character-reference": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/micromark-util-decode-numeric-character-reference/-/micromark-util-decode-numeric-character-reference-1.1.0.tgz", - "integrity": "sha512-m9V0ExGv0jB1OT21mrWcuf4QhP46pH1KkfWy9ZEezqHKAxkj4mPCy3nIH1rkbdMlChLHX531eOrymlwyZIf2iw==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "micromark-util-symbol": "^1.0.0" - } - }, - "node_modules/micromark-util-decode-string": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/micromark-util-decode-string/-/micromark-util-decode-string-1.1.0.tgz", - "integrity": "sha512-YphLGCK8gM1tG1bd54azwyrQRjCFcmgj2S2GoJDNnh4vYtnL38JS8M4gpxzOPNyHdNEpheyWXCTnnTDY3N+NVQ==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "decode-named-character-reference": "^1.0.0", - "micromark-util-character": "^1.0.0", - "micromark-util-decode-numeric-character-reference": "^1.0.0", - "micromark-util-symbol": "^1.0.0" - } - }, - "node_modules/micromark-util-symbol": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-1.1.0.tgz", - "integrity": "sha512-uEjpEYY6KMs1g7QfJ2eX1SQEV+ZT4rUD3UcF6l57acZvLNK7PBZL+ty82Z1qhK1/yXIY4bdx04FKMgR0g4IAag==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ] - }, - "node_modules/micromark-util-types": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-1.1.0.tgz", - "integrity": "sha512-ukRBgie8TIAcacscVHSiddHjO4k/q3pnedmzMQ4iwDcK0FtFCohKOlFbaOL/mPgfnPsL3C1ZyxJa4sbWrBl3jg==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ] - }, - "node_modules/micromatch": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", - "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", - "dev": true, - "dependencies": { - "braces": "^3.0.3", - "picomatch": "^2.3.1" - }, - "engines": { - "node": ">=8.6" - } - }, - "node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/minimist": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", - "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/mkdirp": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", - "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", - "dev": true, - "dependencies": { - "minimist": "^1.2.6" - }, - "bin": { - "mkdirp": "bin/cmd.js" - } - }, - "node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - }, - "node_modules/nanoid": { - "version": "3.3.7", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", - "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "bin": { - "nanoid": "bin/nanoid.cjs" - }, - "engines": { - "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" - } - }, - "node_modules/nested-error-stacks": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/nested-error-stacks/-/nested-error-stacks-2.0.1.tgz", - "integrity": "sha512-SrQrok4CATudVzBS7coSz26QRSmlK9TzzoFbeKfcPBUFPjcQM9Rqvr/DlJkOrwI/0KcgvMub1n1g5Jt9EgRn4A==", - "dev": true - }, - "node_modules/nice-try": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", - "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", - "dev": true - }, - "node_modules/node-polyglot": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/node-polyglot/-/node-polyglot-2.6.0.tgz", - "integrity": "sha512-ZZFkaYzIfGfBvSM6QhA9dM8EEaUJOVewzGSRcXWbJELXDj0lajAtKaENCYxvF5yE+TgHg6NQb0CmgYMsMdcNJQ==", - "dependencies": { - "hasown": "^2.0.2", - "object.entries": "^1.1.8", - "warning": "^4.0.3" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/normalize-package-data": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", - "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", - "dev": true, - "dependencies": { - "hosted-git-info": "^2.1.4", - "resolve": "^1.10.0", - "semver": "2 || 3 || 4 || 5", - "validate-npm-package-license": "^3.0.1" - } - }, - "node_modules/normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/npm-run-all": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/npm-run-all/-/npm-run-all-4.1.5.tgz", - "integrity": "sha512-Oo82gJDAVcaMdi3nuoKFavkIHBRVqQ1qvMb+9LHk/cF4P6B2m8aP04hGf7oL6wZ9BuGwX1onlLhpuoofSyoQDQ==", - "dev": true, - "dependencies": { - "ansi-styles": "^3.2.1", - "chalk": "^2.4.1", - "cross-spawn": "^6.0.5", - "memorystream": "^0.3.1", - "minimatch": "^3.0.4", - "pidtree": "^0.3.0", - "read-pkg": "^3.0.0", - "shell-quote": "^1.6.1", - "string.prototype.padend": "^3.0.0" - }, - "bin": { - "npm-run-all": "bin/npm-run-all/index.js", - "run-p": "bin/run-p/index.js", - "run-s": "bin/run-s/index.js" - }, - "engines": { - "node": ">= 4" - } - }, - "node_modules/object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-inspect": { - "version": "1.13.1", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz", - "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/object.assign": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.5.tgz", - "integrity": "sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.5", - "define-properties": "^1.2.1", - "has-symbols": "^1.0.3", - "object-keys": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object.entries": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.8.tgz", - "integrity": "sha512-cmopxi8VwRIAw/fkijJohSfpef5PdN0pMQJN6VC/ZKvn0LIknWD8KtgY6KlQdEc4tIjcQ3HxSMmnvtzIscdaYQ==", - "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-object-atoms": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/ol": { - "version": "6.15.1", - "resolved": "https://registry.npmjs.org/ol/-/ol-6.15.1.tgz", - "integrity": "sha512-ZG2CKTpJ8Q+tPywYysVwPk+yevwJzlbwjRKhoCvd7kLVWMbfBl1O/+Kg/yrZZrhG9FNXbFH4GeOZ5yVRqo3P4w==", - "dependencies": { - "geotiff": "2.0.4", - "ol-mapbox-style": "^8.0.5", - "pbf": "3.2.1", - "rbush": "^3.0.1" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/openlayers" - } - }, - "node_modules/ol-mapbox-style": { - "version": "8.2.1", - "resolved": "https://registry.npmjs.org/ol-mapbox-style/-/ol-mapbox-style-8.2.1.tgz", - "integrity": "sha512-3kBBuZC627vDL8vnUdfVbCbfkhkcZj2kXPHQcuLhC4JJEA+XkEVEtEde8x8+AZctRbHwBkSiubTPaRukgLxIRw==", - "dependencies": { - "@mapbox/mapbox-gl-style-spec": "^13.23.1", - "mapbox-to-css-font": "^2.4.1" - } - }, - "node_modules/once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "dev": true, - "dependencies": { - "wrappy": "1" - } - }, - "node_modules/onchange": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/onchange/-/onchange-7.1.0.tgz", - "integrity": "sha512-ZJcqsPiWUAUpvmnJri5TPBooqJOPmC0ttN65juhN15Q8xA+Nbg3BaxBHXQ45EistKKlKElb0edmbPWnKSBkvMg==", - "dev": true, - "dependencies": { - "@blakeembrey/deque": "^1.0.5", - "@blakeembrey/template": "^1.0.0", - "arg": "^4.1.3", - "chokidar": "^3.3.1", - "cross-spawn": "^7.0.1", - "ignore": "^5.1.4", - "tree-kill": "^1.2.2" - }, - "bin": { - "onchange": "dist/bin.js" - } - }, - "node_modules/onchange/node_modules/cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/onchange/node_modules/path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/onchange/node_modules/shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "dependencies": { - "shebang-regex": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/onchange/node_modules/shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/onchange/node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/optimism": { - "version": "0.10.3", - "resolved": "https://registry.npmjs.org/optimism/-/optimism-0.10.3.tgz", - "integrity": "sha512-9A5pqGoQk49H6Vhjb9kPgAeeECfUDF6aIICbMDL23kDLStBn1MWk3YvcZ4xWF9CsSf6XEgvRLkXy4xof/56vVw==", - "dependencies": { - "@wry/context": "^0.4.0" - } - }, - "node_modules/pako": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/pako/-/pako-2.1.0.tgz", - "integrity": "sha512-w+eufiZ1WuJYgPXbV/PO3NCMEc3xqylkKHzp8bxp1uW4qaSNQUkwmLLEc3kKsfz8lpV1F8Ht3U1Cm+9Srog2ug==" - }, - "node_modules/parent-module": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", - "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", - "dependencies": { - "callsites": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/parse-entities": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-2.0.0.tgz", - "integrity": "sha512-kkywGpCcRYhqQIchaWqZ875wzpS/bMKhz5HnN3p7wveJTkTtyAB/AlnS0f8DFSqYW1T82t6yEAkEcB+A1I3MbQ==", - "dependencies": { - "character-entities": "^1.0.0", - "character-entities-legacy": "^1.0.0", - "character-reference-invalid": "^1.0.0", - "is-alphanumerical": "^1.0.0", - "is-decimal": "^1.0.0", - "is-hexadecimal": "^1.0.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/parse-headers": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/parse-headers/-/parse-headers-2.0.5.tgz", - "integrity": "sha512-ft3iAoLOB/MlwbNXgzy43SWGP6sQki2jQvAyBg/zDFAgr9bfNWZIUj42Kw2eJIl8kEi4PbgE6U1Zau/HwI75HA==" - }, - "node_modules/parse-json": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", - "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", - "dependencies": { - "@babel/code-frame": "^7.0.0", - "error-ex": "^1.3.1", - "json-parse-even-better-errors": "^2.3.0", - "lines-and-columns": "^1.1.6" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/parse5": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-5.1.1.tgz", - "integrity": "sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug==" - }, - "node_modules/path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/path-key": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" - }, - "node_modules/path-to-regexp": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.8.0.tgz", - "integrity": "sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA==", - "dependencies": { - "isarray": "0.0.1" - } - }, - "node_modules/path-type": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", - "engines": { - "node": ">=8" - } - }, - "node_modules/pbf": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/pbf/-/pbf-3.2.1.tgz", - "integrity": "sha512-ClrV7pNOn7rtmoQVF4TS1vyU0WhYRnP92fzbfF75jAIwpnzdJXf8iTd4CMEqO4yUenH6NDqLiwjqlh6QgZzgLQ==", - "dependencies": { - "ieee754": "^1.1.12", - "resolve-protobuf-schema": "^2.1.0" - }, - "bin": { - "pbf": "bin/pbf" - } - }, - "node_modules/picocolors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.1.tgz", - "integrity": "sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==" - }, - "node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "dev": true, - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/pidtree": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/pidtree/-/pidtree-0.3.1.tgz", - "integrity": "sha512-qQbW94hLHEqCg7nhby4yRC7G2+jYHY4Rguc2bjw7Uug4GIJuu1tvf2uHaZv5Q8zdt+WKJ6qK1FOI6amaWUo5FA==", - "dev": true, - "bin": { - "pidtree": "bin/pidtree.js" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/postcss": { - "version": "8.4.41", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.41.tgz", - "integrity": "sha512-TesUflQ0WKZqAvg52PWL6kHgLKP6xB6heTOdoYM0Wt2UHyxNa4K25EZZMgKns3BH1RLVbZCREPpLY0rhnNoHVQ==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/postcss" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "dependencies": { - "nanoid": "^3.3.7", - "picocolors": "^1.0.1", - "source-map-js": "^1.2.0" - }, - "engines": { - "node": "^10 || ^12 || >=14" - } - }, - "node_modules/postcss-resolve-nested-selector": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/postcss-resolve-nested-selector/-/postcss-resolve-nested-selector-0.1.6.tgz", - "integrity": "sha512-0sglIs9Wmkzbr8lQwEyIzlDOOC9bGmfVKcJTaxv3vMmd3uo4o4DerC3En0bnmgceeql9BfC8hRkp7cg0fjdVqw==", - "dev": true - }, - "node_modules/postcss-safe-parser": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/postcss-safe-parser/-/postcss-safe-parser-7.0.0.tgz", - "integrity": "sha512-ovehqRNVCpuFzbXoTb4qLtyzK3xn3t/CUBxOs8LsnQjQrShaB4lKiHoVqY8ANaC0hBMHq5QVWk77rwGklFUDrg==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/postcss-safe-parser" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "engines": { - "node": ">=18.0" - }, - "peerDependencies": { - "postcss": "^8.4.31" - } - }, - "node_modules/postcss-selector-parser": { - "version": "6.1.2", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz", - "integrity": "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==", - "dev": true, - "dependencies": { - "cssesc": "^3.0.0", - "util-deprecate": "^1.0.2" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/postcss-sorting": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/postcss-sorting/-/postcss-sorting-8.0.2.tgz", - "integrity": "sha512-M9dkSrmU00t/jK7rF6BZSZauA5MAaBW4i5EnJXspMwt4iqTh/L9j6fgMnbElEOfyRyfLfVbIHj/R52zHzAPe1Q==", - "dev": true, - "peerDependencies": { - "postcss": "^8.4.20" - } - }, - "node_modules/postcss-value-parser": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", - "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", - "dev": true - }, - "node_modules/promise": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz", - "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==", - "dev": true, - "dependencies": { - "asap": "~2.0.3" - } - }, - "node_modules/prop-types": { - "version": "15.8.1", - "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", - "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", - "dependencies": { - "loose-envify": "^1.4.0", - "object-assign": "^4.1.1", - "react-is": "^16.13.1" - } - }, - "node_modules/property-information": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/property-information/-/property-information-5.6.0.tgz", - "integrity": "sha512-YUHSPk+A30YPv+0Qf8i9Mbfe/C0hdPXk1s1jPVToV8pk8BQtpw10ct89Eo7OWkutrwqvT0eicAxlOg3dOAu8JA==", - "dependencies": { - "xtend": "^4.0.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/protocol-buffers-schema": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/protocol-buffers-schema/-/protocol-buffers-schema-3.6.0.tgz", - "integrity": "sha512-TdDRD+/QNdrCGCE7v8340QyuXd4kIWIgapsE2+n/SaGiSSbomYl4TjHlvIoCWRpE7wFt02EpB35VVA2ImcBVqw==" - }, - "node_modules/prr": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", - "integrity": "sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==", - "dev": true - }, - "node_modules/punycode": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", - "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", - "engines": { - "node": ">=6" - } - }, - "node_modules/qs": { - "version": "6.13.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.13.0.tgz", - "integrity": "sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==", - "dependencies": { - "side-channel": "^1.0.6" - }, - "engines": { - "node": ">=0.6" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/queue-microtask": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", - "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/quickselect": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/quickselect/-/quickselect-2.0.0.tgz", - "integrity": "sha512-RKJ22hX8mHe3Y6wH/N3wCM6BWtjaxIyyUIkpHOvfFnxdI4yD4tBXEBKSbriGujF6jnSVkJrffuo6vxACiSSxIw==" - }, - "node_modules/rbush": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/rbush/-/rbush-3.0.1.tgz", - "integrity": "sha512-XRaVO0YecOpEuIvbhbpTrZgoiI6xBlz6hnlr6EHhd+0x9ase6EmeN+hdwwUaJvLcsFFQ8iWVF1GAK1yB0BWi0w==", - "dependencies": { - "quickselect": "^2.0.0" - } - }, - "node_modules/rc": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", - "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", - "dev": true, - "dependencies": { - "deep-extend": "^0.6.0", - "ini": "~1.3.0", - "minimist": "^1.2.0", - "strip-json-comments": "~2.0.1" - }, - "bin": { - "rc": "cli.js" - } - }, - "node_modules/rc/node_modules/ini": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", - "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", - "dev": true - }, - "node_modules/react": { - "version": "18.3.1", - "resolved": "https://registry.npmjs.org/react/-/react-18.3.1.tgz", - "integrity": "sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==", - "dependencies": { - "loose-envify": "^1.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/react-aria-menubutton": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/react-aria-menubutton/-/react-aria-menubutton-7.0.3.tgz", - "integrity": "sha512-Ql4W3rNiZmuVJ1wQ0UUeV4OZX3IZq2evsfEqJGefSMdfkK6o8X/6Ufxrzu0wL+/Dr7JUY3xnrnIQimSCFghlCQ==", - "dependencies": { - "focus-group": "^0.3.1", - "prop-types": "^15.6.0", - "teeny-tap": "^0.2.0" - }, - "peerDependencies": { - "react": "^16.3.0 || ^17.0.0" - } - }, - "node_modules/react-codemirror2": { - "version": "7.3.0", - "resolved": "https://registry.npmjs.org/react-codemirror2/-/react-codemirror2-7.3.0.tgz", - "integrity": "sha512-gCgJPXDX+5iaPolkHAu1YbJ92a2yL7Je4TuyO3QEqOtI/d6mbEk08l0oIm18R4ctuT/Sl87X63xIMBnRQBXYXA==", - "peerDependencies": { - "codemirror": "5.x", - "react": ">=15.5 <=17.x" - } - }, - "node_modules/react-color": { - "version": "2.19.3", - "resolved": "https://registry.npmjs.org/react-color/-/react-color-2.19.3.tgz", - "integrity": "sha512-LEeGE/ZzNLIsFWa1TMe8y5VYqr7bibneWmvJwm1pCn/eNmrabWDh659JSPn9BuaMpEfU83WTOJfnCcjDZwNQTA==", - "dependencies": { - "@icons/material": "^0.2.4", - "lodash": "^4.17.15", - "lodash-es": "^4.17.15", - "material-colors": "^1.2.1", - "prop-types": "^15.5.10", - "reactcss": "^1.2.0", - "tinycolor2": "^1.4.1" - }, - "peerDependencies": { - "react": "*" - } - }, - "node_modules/react-dnd": { - "version": "14.0.5", - "resolved": "https://registry.npmjs.org/react-dnd/-/react-dnd-14.0.5.tgz", - "integrity": "sha512-9i1jSgbyVw0ELlEVt/NkCUkxy1hmhJOkePoCH713u75vzHGyXhPDm28oLfc2NMSBjZRM1Y+wRjHXJT3sPrTy+A==", - "dependencies": { - "@react-dnd/invariant": "^2.0.0", - "@react-dnd/shallowequal": "^2.0.0", - "dnd-core": "14.0.1", - "fast-deep-equal": "^3.1.3", - "hoist-non-react-statics": "^3.3.2" - }, - "peerDependencies": { - "@types/hoist-non-react-statics": ">= 3.3.1", - "@types/node": ">= 12", - "@types/react": ">= 16", - "react": ">= 16.14" - }, - "peerDependenciesMeta": { - "@types/hoist-non-react-statics": { - "optional": true - }, - "@types/node": { - "optional": true - }, - "@types/react": { - "optional": true - } - } - }, - "node_modules/react-dnd-html5-backend": { - "version": "14.1.0", - "resolved": "https://registry.npmjs.org/react-dnd-html5-backend/-/react-dnd-html5-backend-14.1.0.tgz", - "integrity": "sha512-6ONeqEC3XKVf4eVmMTe0oPds+c5B9Foyj8p/ZKLb7kL2qh9COYxiBHv3szd6gztqi/efkmriywLUVlPotqoJyw==", - "dependencies": { - "dnd-core": "14.0.1" - } - }, - "node_modules/react-dom": { - "version": "18.3.1", - "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.3.1.tgz", - "integrity": "sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==", - "dependencies": { - "loose-envify": "^1.1.0", - "scheduler": "^0.23.2" - }, - "peerDependencies": { - "react": "^18.3.1" - } - }, - "node_modules/react-frame-component": { - "version": "5.2.7", - "resolved": "https://registry.npmjs.org/react-frame-component/-/react-frame-component-5.2.7.tgz", - "integrity": "sha512-ROjHtSLoSVYUBfTieazj/nL8jIX9rZFmHC0yXEU+dx6Y82OcBEGgU9o7VyHMrBFUN9FuQ849MtIPNNLsb4krbg==", - "peerDependencies": { - "prop-types": "^15.5.9", - "react": ">= 16.3", - "react-dom": ">= 16.3" - } - }, - "node_modules/react-immutable-proptypes": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/react-immutable-proptypes/-/react-immutable-proptypes-2.2.0.tgz", - "integrity": "sha512-Vf4gBsePlwdGvSZoLSBfd4HAP93HDauMY4fDjXhreg/vg6F3Fj/MXDNyTbltPC/xZKmZc+cjLu3598DdYK6sgQ==", - "dependencies": { - "invariant": "^2.2.2" - }, - "peerDependencies": { - "immutable": ">=3.6.2" - } - }, - "node_modules/react-is": { - "version": "16.13.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", - "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" - }, - "node_modules/react-lifecycles-compat": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz", - "integrity": "sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA==" - }, - "node_modules/react-markdown": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/react-markdown/-/react-markdown-6.0.3.tgz", - "integrity": "sha512-kQbpWiMoBHnj9myLlmZG9T1JdoT/OEyHK7hqM6CqFT14MAkgWiWBUYijLyBmxbntaN6dCDicPcUhWhci1QYodg==", - "dependencies": { - "@types/hast": "^2.0.0", - "@types/unist": "^2.0.3", - "comma-separated-tokens": "^1.0.0", - "prop-types": "^15.7.2", - "property-information": "^5.3.0", - "react-is": "^17.0.0", - "remark-parse": "^9.0.0", - "remark-rehype": "^8.0.0", - "space-separated-tokens": "^1.1.0", - "style-to-object": "^0.3.0", - "unified": "^9.0.0", - "unist-util-visit": "^2.0.0", - "vfile": "^4.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - }, - "peerDependencies": { - "@types/react": ">=16", - "react": ">=16" - } - }, - "node_modules/react-markdown/node_modules/bail": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/bail/-/bail-1.0.5.tgz", - "integrity": "sha512-xFbRxM1tahm08yHBP16MMjVUAvDaBMD38zsM9EMAUN61omwLmKlOpB/Zku5QkjZ8TZ4vn53pj+t518cH0S03RQ==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/react-markdown/node_modules/is-plain-obj": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", - "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", - "engines": { - "node": ">=8" - } - }, - "node_modules/react-markdown/node_modules/mdast-util-definitions": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/mdast-util-definitions/-/mdast-util-definitions-4.0.0.tgz", - "integrity": "sha512-k8AJ6aNnUkB7IE+5azR9h81O5EQ/cTDXtWdMq9Kk5KcEW/8ritU5CeLg/9HhOC++nALHBlaogJ5jz0Ybk3kPMQ==", - "dependencies": { - "unist-util-visit": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/react-markdown/node_modules/mdast-util-to-hast": { - "version": "10.2.0", - "resolved": "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-10.2.0.tgz", - "integrity": "sha512-JoPBfJ3gBnHZ18icCwHR50orC9kNH81tiR1gs01D8Q5YpV6adHNO9nKNuFBCJQ941/32PT1a63UF/DitmS3amQ==", - "dependencies": { - "@types/mdast": "^3.0.0", - "@types/unist": "^2.0.0", - "mdast-util-definitions": "^4.0.0", - "mdurl": "^1.0.0", - "unist-builder": "^2.0.0", - "unist-util-generated": "^1.0.0", - "unist-util-position": "^3.0.0", - "unist-util-visit": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/react-markdown/node_modules/react-is": { - "version": "17.0.2", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", - "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==" - }, - "node_modules/react-markdown/node_modules/remark-parse": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-9.0.0.tgz", - "integrity": "sha512-geKatMwSzEXKHuzBNU1z676sGcDcFoChMK38TgdHJNAYfFtsfHDQG7MoJAjs6sgYMqyLduCYWDIWZIxiPeafEw==", - "dependencies": { - "mdast-util-from-markdown": "^0.8.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/react-markdown/node_modules/remark-rehype": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/remark-rehype/-/remark-rehype-8.1.0.tgz", - "integrity": "sha512-EbCu9kHgAxKmW1yEYjx3QafMyGY3q8noUbNUI5xyKbaFP89wbhDrKxyIQNukNYthzjNHZu6J7hwFg7hRm1svYA==", - "dependencies": { - "mdast-util-to-hast": "^10.2.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/react-markdown/node_modules/trough": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/trough/-/trough-1.0.5.tgz", - "integrity": "sha512-rvuRbTarPXmMb79SmzEp8aqXNKcK+y0XaB298IXueQ8I2PsrATcPBCSPyK/dDNa2iWOhKlfNnOjdAOTBU/nkFA==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/react-markdown/node_modules/unified": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/unified/-/unified-9.2.2.tgz", - "integrity": "sha512-Sg7j110mtefBD+qunSLO1lqOEKdrwBFBrR6Qd8f4uwkhWNlbkaqwHse6e7QvD3AP/MNoJdEDLaf8OxYyoWgorQ==", - "dependencies": { - "bail": "^1.0.0", - "extend": "^3.0.0", - "is-buffer": "^2.0.0", - "is-plain-obj": "^2.0.0", - "trough": "^1.0.0", - "vfile": "^4.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/react-markdown/node_modules/unist-builder": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/unist-builder/-/unist-builder-2.0.3.tgz", - "integrity": "sha512-f98yt5pnlMWlzP539tPc4grGMsFaQQlP/vM396b00jngsiINumNmsY8rkXjfoi1c6QaM8nQ3vaGDuoKWbe/1Uw==", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/react-markdown/node_modules/unist-util-visit": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-2.0.3.tgz", - "integrity": "sha512-iJ4/RczbJMkD0712mGktuGpm/U4By4FfDonL7N/9tATGIF4imikjOuagyMY53tnZq3NP6BcmlrHhEKAfGWjh7Q==", - "dependencies": { - "@types/unist": "^2.0.0", - "unist-util-is": "^4.0.0", - "unist-util-visit-parents": "^3.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/react-markdown/node_modules/unist-util-visit-parents": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-3.1.1.tgz", - "integrity": "sha512-1KROIZWo6bcMrZEwiH2UrXDyalAa0uqzWCxCJj6lPOvTve2WkfgCytoDTPaMnodXh1WrXOq0haVYHj99ynJlsg==", - "dependencies": { - "@types/unist": "^2.0.0", - "unist-util-is": "^4.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/react-modal": { - "version": "3.16.1", - "resolved": "https://registry.npmjs.org/react-modal/-/react-modal-3.16.1.tgz", - "integrity": "sha512-VStHgI3BVcGo7OXczvnJN7yT2TWHJPDXZWyI/a0ssFNhGZWsPmB8cF0z33ewDXq4VfYMO1vXgiv/g8Nj9NDyWg==", - "dependencies": { - "exenv": "^1.2.0", - "prop-types": "^15.7.2", - "react-lifecycles-compat": "^3.0.0", - "warning": "^4.0.3" - }, - "engines": { - "node": ">=8" - }, - "peerDependencies": { - "react": "^0.14.0 || ^15.0.0 || ^16 || ^17 || ^18", - "react-dom": "^0.14.0 || ^15.0.0 || ^16 || ^17 || ^18" - } - }, - "node_modules/react-polyglot": { - "version": "0.7.2", - "resolved": "https://registry.npmjs.org/react-polyglot/-/react-polyglot-0.7.2.tgz", - "integrity": "sha512-d/075aofJ4of9wOSBewl+ViFkkM0L1DgE3RVDOXrHZ92w4o2643sTQJ6lSPw8wsJWFmlB/3Pvwm0UbGNvLfPBw==", - "dependencies": { - "hoist-non-react-statics": "^3.3.0", - "prop-types": "^15.5.8" - }, - "peerDependencies": { - "node-polyglot": "^2.0.0", - "react": ">=16.8.0" - } - }, - "node_modules/react-redux": { - "version": "7.2.9", - "resolved": "https://registry.npmjs.org/react-redux/-/react-redux-7.2.9.tgz", - "integrity": "sha512-Gx4L3uM182jEEayZfRbI/G11ZpYdNAnBs70lFVMNdHJI76XYtR+7m0MN+eAs7UHBPhWXcnFPaS+9owSCJQHNpQ==", - "dependencies": { - "@babel/runtime": "^7.15.4", - "@types/react-redux": "^7.1.20", - "hoist-non-react-statics": "^3.3.2", - "loose-envify": "^1.4.0", - "prop-types": "^15.7.2", - "react-is": "^17.0.2" - }, - "peerDependencies": { - "react": "^16.8.3 || ^17 || ^18" - }, - "peerDependenciesMeta": { - "react-dom": { - "optional": true - }, - "react-native": { - "optional": true - } - } - }, - "node_modules/react-redux/node_modules/react-is": { - "version": "17.0.2", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", - "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==" - }, - "node_modules/react-router": { - "version": "5.3.4", - "resolved": "https://registry.npmjs.org/react-router/-/react-router-5.3.4.tgz", - "integrity": "sha512-Ys9K+ppnJah3QuaRiLxk+jDWOR1MekYQrlytiXxC1RyfbdsZkS5pvKAzCCr031xHixZwpnsYNT5xysdFHQaYsA==", - "dependencies": { - "@babel/runtime": "^7.12.13", - "history": "^4.9.0", - "hoist-non-react-statics": "^3.1.0", - "loose-envify": "^1.3.1", - "path-to-regexp": "^1.7.0", - "prop-types": "^15.6.2", - "react-is": "^16.6.0", - "tiny-invariant": "^1.0.2", - "tiny-warning": "^1.0.0" - }, - "peerDependencies": { - "react": ">=15" - } - }, - "node_modules/react-router-dom": { - "version": "5.3.4", - "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-5.3.4.tgz", - "integrity": "sha512-m4EqFMHv/Ih4kpcBCONHbkT68KoAeHN4p3lAGoNryfHi0dMy0kCzEZakiKRsvg5wHZ/JLrLW8o8KomWiz/qbYQ==", - "dependencies": { - "@babel/runtime": "^7.12.13", - "history": "^4.9.0", - "loose-envify": "^1.3.1", - "prop-types": "^15.6.2", - "react-router": "5.3.4", - "tiny-invariant": "^1.0.2", - "tiny-warning": "^1.0.0" - }, - "peerDependencies": { - "react": ">=15" - } - }, - "node_modules/react-scroll-sync": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/react-scroll-sync/-/react-scroll-sync-0.9.0.tgz", - "integrity": "sha512-IaMUSTbarj9mhjVtBl9I45Er8gQqV8rdb9A0eK77JJ8MvnLcFIlnoiXVx1NS9ACy9QELq7xCTxdIVEdhDV9R0Q==", - "dependencies": { - "prop-types": "^15.5.7" - }, - "peerDependencies": { - "react": "0.14.x || 15.x || 16.x || 17.x", - "react-dom": "0.14.x || 15.x || 16.x || 17.x" - } - }, - "node_modules/react-split-pane": { - "version": "0.1.92", - "resolved": "https://registry.npmjs.org/react-split-pane/-/react-split-pane-0.1.92.tgz", - "integrity": "sha512-GfXP1xSzLMcLJI5BM36Vh7GgZBpy+U/X0no+VM3fxayv+p1Jly5HpMofZJraeaMl73b3hvlr+N9zJKvLB/uz9w==", - "dependencies": { - "prop-types": "^15.7.2", - "react-lifecycles-compat": "^3.0.4", - "react-style-proptype": "^3.2.2" - }, - "peerDependencies": { - "react": "^16.0.0-0", - "react-dom": "^16.0.0-0" - } - }, - "node_modules/react-style-proptype": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/react-style-proptype/-/react-style-proptype-3.2.2.tgz", - "integrity": "sha512-ywYLSjNkxKHiZOqNlso9PZByNEY+FTyh3C+7uuziK0xFXu9xzdyfHwg4S9iyiRRoPCR4k2LqaBBsWVmSBwCWYQ==", - "dependencies": { - "prop-types": "^15.5.4" - } - }, - "node_modules/react-textarea-autosize": { - "version": "8.5.3", - "resolved": "https://registry.npmjs.org/react-textarea-autosize/-/react-textarea-autosize-8.5.3.tgz", - "integrity": "sha512-XT1024o2pqCuZSuBt9FwHlaDeNtVrtCXu0Rnz88t1jUGheCLa3PhjE1GH8Ctm2axEtvdCl5SUHYschyQ0L5QHQ==", - "dependencies": { - "@babel/runtime": "^7.20.13", - "use-composed-ref": "^1.3.0", - "use-latest": "^1.2.1" - }, - "engines": { - "node": ">=10" - }, - "peerDependencies": { - "react": "^16.8.0 || ^17.0.0 || ^18.0.0" - } - }, - "node_modules/react-toastify": { - "version": "9.1.3", - "resolved": "https://registry.npmjs.org/react-toastify/-/react-toastify-9.1.3.tgz", - "integrity": "sha512-fPfb8ghtn/XMxw3LkxQBk3IyagNpF/LIKjOBflbexr2AWxAH1MJgvnESwEwBn9liLFXgTKWgBSdZpw9m4OTHTg==", - "dependencies": { - "clsx": "^1.1.1" - }, - "peerDependencies": { - "react": ">=16", - "react-dom": ">=16" - } - }, - "node_modules/react-topbar-progress-indicator": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/react-topbar-progress-indicator/-/react-topbar-progress-indicator-4.1.1.tgz", - "integrity": "sha512-Oy3ENNKfymt16zoz5SYy/WOepMurB0oeZEyvuHm8JZ3jrTCe1oAUD7fG6HhYt5sg8Wcg5gdkzSWItaFF6c6VhA==", - "dependencies": { - "topbar": "^0.1.3" - }, - "peerDependencies": { - "react": ">=16.8.0" - } - }, - "node_modules/react-transition-group": { - "version": "4.4.5", - "resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-4.4.5.tgz", - "integrity": "sha512-pZcd1MCJoiKiBR2NRxeCRg13uCXbydPnmB4EOeRrY7480qNWO8IIgQG6zlDkm6uRMsURXPuKq0GWtiM59a5Q6g==", - "dependencies": { - "@babel/runtime": "^7.5.5", - "dom-helpers": "^5.0.1", - "loose-envify": "^1.4.0", - "prop-types": "^15.6.2" - }, - "peerDependencies": { - "react": ">=16.6.0", - "react-dom": ">=16.6.0" - } - }, - "node_modules/react-virtualized-auto-sizer": { - "version": "1.0.24", - "resolved": "https://registry.npmjs.org/react-virtualized-auto-sizer/-/react-virtualized-auto-sizer-1.0.24.tgz", - "integrity": "sha512-3kCn7N9NEb3FlvJrSHWGQ4iVl+ydQObq2fHMn12i5wbtm74zHOPhz/i64OL3c1S1vi9i2GXtZqNqUJTQ+BnNfg==", - "peerDependencies": { - "react": "^15.3.0 || ^16.0.0-alpha || ^17.0.0 || ^18.0.0", - "react-dom": "^15.3.0 || ^16.0.0-alpha || ^17.0.0 || ^18.0.0" - } - }, - "node_modules/react-waypoint": { - "version": "10.3.0", - "resolved": "https://registry.npmjs.org/react-waypoint/-/react-waypoint-10.3.0.tgz", - "integrity": "sha512-iF1y2c1BsoXuEGz08NoahaLFIGI9gTUAAOKip96HUmylRT6DUtpgoBPjk/Y8dfcFVmfVDvUzWjNXpZyKTOV0SQ==", - "dependencies": { - "@babel/runtime": "^7.12.5", - "consolidated-events": "^1.1.0 || ^2.0.0", - "prop-types": "^15.0.0", - "react-is": "^17.0.1 || ^18.0.0" - }, - "peerDependencies": { - "react": "^15.3.0 || ^16.0.0 || ^17.0.0 || ^18.0.0" - } - }, - "node_modules/react-waypoint/node_modules/react-is": { - "version": "18.3.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", - "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==" - }, - "node_modules/react-window": { - "version": "1.8.10", - "resolved": "https://registry.npmjs.org/react-window/-/react-window-1.8.10.tgz", - "integrity": "sha512-Y0Cx+dnU6NLa5/EvoHukUD0BklJ8qITCtVEPY1C/nL8wwoZ0b5aEw8Ff1dOVHw7fCzMt55XfJDd8S8W8LCaUCg==", - "dependencies": { - "@babel/runtime": "^7.0.0", - "memoize-one": ">=3.1.1 <6" - }, - "engines": { - "node": ">8.0.0" - }, - "peerDependencies": { - "react": "^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0", - "react-dom": "^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0" - } - }, - "node_modules/reactcss": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/reactcss/-/reactcss-1.2.3.tgz", - "integrity": "sha512-KiwVUcFu1RErkI97ywr8nvx8dNOpT03rbnma0SSalTYjkrPYaEajR4a/MRt6DZ46K6arDRbWMNHF+xH7G7n/8A==", - "dependencies": { - "lodash": "^4.0.1" - } - }, - "node_modules/read-pkg": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", - "integrity": "sha512-BLq/cCO9two+lBgiTYNqD6GdtK8s4NpaWrl6/rCO9w0TUS8oJl7cmToOZfRYllKTISY6nt1U7jQ53brmKqY6BA==", - "dev": true, - "dependencies": { - "load-json-file": "^4.0.0", - "normalize-package-data": "^2.3.2", - "path-type": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/read-pkg/node_modules/path-type": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", - "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", - "dev": true, - "dependencies": { - "pify": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/readdirp": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", - "dev": true, - "dependencies": { - "picomatch": "^2.2.1" - }, - "engines": { - "node": ">=8.10.0" - } - }, - "node_modules/recursive-copy": { - "version": "2.0.14", - "resolved": "https://registry.npmjs.org/recursive-copy/-/recursive-copy-2.0.14.tgz", - "integrity": "sha512-K8WNY8f8naTpfbA+RaXmkaQuD1IeW9EgNEfyGxSqqTQukpVtoOKros9jUqbpEsSw59YOmpd8nCBgtqJZy5nvog==", - "dev": true, - "dependencies": { - "errno": "^0.1.2", - "graceful-fs": "^4.1.4", - "junk": "^1.0.1", - "maximatch": "^0.1.0", - "mkdirp": "^0.5.1", - "pify": "^2.3.0", - "promise": "^7.0.1", - "rimraf": "^2.7.1", - "slash": "^1.0.0" - } - }, - "node_modules/recursive-copy-cli": { - "version": "1.0.20", - "resolved": "https://registry.npmjs.org/recursive-copy-cli/-/recursive-copy-cli-1.0.20.tgz", - "integrity": "sha512-JPEkKda2DGg3IpsYJRqphWmw00K4K9x7gdcBi0ksJiIdJ7IWnjbCbRPxzWbHqq3KnAlv7XSGn+c3tZkhBbmD5w==", - "dev": true, - "dependencies": { - "highland": "^2.13.5", - "lodash": "^4.17.19", - "recursive-copy": "^2.0.10", - "requireg": "^0.2.2", - "yargs": "^17.0.1" - }, - "bin": { - "recursive-copy": "src/cli.js" - }, - "engines": { - "node": ">=10.19.0" - } - }, - "node_modules/recursive-copy/node_modules/pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/redux": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/redux/-/redux-4.2.1.tgz", - "integrity": "sha512-LAUYz4lc+Do8/g7aeRa8JkyDErK6ekstQaqWQrNRW//MY1TvCEpMtpTWvlQ+FPbWCx+Xixu/6SHt5N0HR+SB4w==", - "dependencies": { - "@babel/runtime": "^7.9.2" - } - }, - "node_modules/redux-devtools-extension": { - "version": "2.13.9", - "resolved": "https://registry.npmjs.org/redux-devtools-extension/-/redux-devtools-extension-2.13.9.tgz", - "integrity": "sha512-cNJ8Q/EtjhQaZ71c8I9+BPySIBVEKssbPpskBfsXqb8HJ002A3KRVHfeRzwRo6mGPqsm7XuHTqNSNeS1Khig0A==", - "deprecated": "Package moved to @redux-devtools/extension.", - "peerDependencies": { - "redux": "^3.1.0 || ^4.0.0" - } - }, - "node_modules/redux-notifications": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/redux-notifications/-/redux-notifications-4.0.1.tgz", - "integrity": "sha512-mRVaEcsvu5B4P8x8kW0uY83EQqaWL/0+/NvL4bdbHGJVg+Rwx54MgBU1s+tB6RAA2E6NX/DmQrO4EbFDcQSi+w==", - "dependencies": { - "object-assign": "^4.1.1", - "prop-types": "^15.5.10", - "react-redux": "^4.0.0", - "react-transition-group": "^1.1.3" - }, - "peerDependencies": { - "react": "^0.14.0 || ^15.0.0-0 || ^15.4.0-0 || ^16.0.0-0", - "react-dom": "^0.14.0 || ^15.0.0-0 || ^15.4.0-0 || ^16.0.0-0" - } - }, - "node_modules/redux-notifications/node_modules/dom-helpers": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-3.4.0.tgz", - "integrity": "sha512-LnuPJ+dwqKDIyotW1VzmOZ5TONUN7CwkCR5hrgawTUbkBGYdeoNLZo6nNfGkCrjtE1nXXaj7iMMpDa8/d9WoIA==", - "dependencies": { - "@babel/runtime": "^7.1.2" - } - }, - "node_modules/redux-notifications/node_modules/react-redux": { - "version": "4.4.10", - "resolved": "https://registry.npmjs.org/react-redux/-/react-redux-4.4.10.tgz", - "integrity": "sha512-tjL0Bmpkj75Td0k+lXlF8Fc8a9GuXFv/3ahUOCXExWs/jhsKiQeTffdH0j5byejCGCRL4tvGFYlrwBF1X/Aujg==", - "dependencies": { - "create-react-class": "^15.5.1", - "hoist-non-react-statics": "^3.3.0", - "invariant": "^2.0.0", - "lodash": "^4.17.11", - "loose-envify": "^1.4.0", - "prop-types": "^15.7.2" - }, - "peerDependencies": { - "react": "^0.14.0 || ^15.0.0-0 || ^15.4.0-0 || ^16.0.0-0", - "redux": "^2.0.0 || ^3.0.0" - } - }, - "node_modules/redux-notifications/node_modules/react-transition-group": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-1.2.1.tgz", - "integrity": "sha512-CWaL3laCmgAFdxdKbhhps+c0HRGF4c+hdM4H23+FI1QBNUyx/AMeIJGWorehPNSaKnQNOAxL7PQmqMu78CDj3Q==", - "dependencies": { - "chain-function": "^1.0.0", - "dom-helpers": "^3.2.0", - "loose-envify": "^1.3.1", - "prop-types": "^15.5.6", - "warning": "^3.0.0" - }, - "peerDependencies": { - "react": "^15.0.0 || ^16.0.0", - "react-dom": "^15.0.0 || ^16.0.0" - } - }, - "node_modules/redux-notifications/node_modules/redux": { - "version": "3.7.2", - "resolved": "https://registry.npmjs.org/redux/-/redux-3.7.2.tgz", - "integrity": "sha512-pNqnf9q1hI5HHZRBkj3bAngGZW/JMCmexDlOxw4XagXY2o1327nHH54LoTjiPJ0gizoqPDRqWyX/00g0hD6w+A==", - "peer": true, - "dependencies": { - "lodash": "^4.2.1", - "lodash-es": "^4.2.1", - "loose-envify": "^1.1.0", - "symbol-observable": "^1.0.3" - } - }, - "node_modules/redux-notifications/node_modules/warning": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/warning/-/warning-3.0.0.tgz", - "integrity": "sha512-jMBt6pUrKn5I+OGgtQ4YZLdhIeJmObddh6CsibPxyQ5yPZm1XExSyzC1LCNX7BzhxWgiHmizBWJTHJIjMjTQYQ==", - "dependencies": { - "loose-envify": "^1.0.0" - } - }, - "node_modules/redux-thunk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/redux-thunk/-/redux-thunk-2.4.2.tgz", - "integrity": "sha512-+P3TjtnP0k/FEjcBL5FZpoovtvrTNT/UXd4/sluaSyrURlSlhLSzEdfsTBW7WsKB6yPvgd7q/iZPICFjW4o57Q==", - "peerDependencies": { - "redux": "^4" - } - }, - "node_modules/regenerator-runtime": { - "version": "0.14.1", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", - "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==" - }, - "node_modules/regexp.prototype.flags": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.1.tgz", - "integrity": "sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "set-function-name": "^2.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/rehype-minify-whitespace": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/rehype-minify-whitespace/-/rehype-minify-whitespace-4.0.5.tgz", - "integrity": "sha512-QC3Z+bZ5wbv+jGYQewpAAYhXhzuH/TVRx7z08rurBmh9AbG8Nu8oJnvs9LWj43Fd/C7UIhXoQ7Wddgt+ThWK5g==", - "dependencies": { - "hast-util-embedded": "^1.0.0", - "hast-util-is-element": "^1.0.0", - "hast-util-whitespace": "^1.0.4", - "unist-util-is": "^4.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/rehype-parse": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/rehype-parse/-/rehype-parse-6.0.2.tgz", - "integrity": "sha512-0S3CpvpTAgGmnz8kiCyFLGuW5yA4OQhyNTm/nwPopZ7+PI11WnGl1TTWTGv/2hPEe/g2jRLlhVVSsoDH8waRug==", - "dependencies": { - "hast-util-from-parse5": "^5.0.0", - "parse5": "^5.0.0", - "xtend": "^4.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/rehype-remark": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/rehype-remark/-/rehype-remark-8.1.1.tgz", - "integrity": "sha512-8HCmub9Fcy208A7RGbjmVlxTMYZXGaF7jsUE2tuvNKuaGFrk9yrYuKAXoTVC7QFwBPzTvEc5AOZKpUiWRkamlw==", - "dependencies": { - "@types/hast": "^2.0.0", - "@types/mdast": "^3.0.0", - "@types/unist": "^2.0.0", - "hast-util-to-mdast": "^7.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/rehype-stringify": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/rehype-stringify/-/rehype-stringify-7.0.0.tgz", - "integrity": "sha512-u3dQI7mIWN2X1H0MBFPva425HbkXgB+M39C9SM5leUS2kh5hHUn2SxQs2c2yZN5eIHipoLMojC0NP5e8fptxvQ==", - "dependencies": { - "hast-util-to-html": "^7.0.0", - "xtend": "^4.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/remark-gfm": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/remark-gfm/-/remark-gfm-1.0.0.tgz", - "integrity": "sha512-KfexHJCiqvrdBZVbQ6RopMZGwaXz6wFJEfByIuEwGf0arvITHjiKKZ1dpXujjH9KZdm1//XJQwgfnJ3lmXaDPA==", - "dependencies": { - "mdast-util-gfm": "^0.1.0", - "micromark-extension-gfm": "^0.3.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/remark-parse": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-6.0.3.tgz", - "integrity": "sha512-QbDXWN4HfKTUC0hHa4teU463KclLAnwpn/FBn87j9cKYJWWawbiLgMfP2Q4XwhxxuuuOxHlw+pSN0OKuJwyVvg==", - "dependencies": { - "collapse-white-space": "^1.0.2", - "is-alphabetical": "^1.0.0", - "is-decimal": "^1.0.0", - "is-whitespace-character": "^1.0.0", - "is-word-character": "^1.0.0", - "markdown-escapes": "^1.0.0", - "parse-entities": "^1.1.0", - "repeat-string": "^1.5.4", - "state-toggle": "^1.0.0", - "trim": "0.0.1", - "trim-trailing-lines": "^1.0.0", - "unherit": "^1.0.4", - "unist-util-remove-position": "^1.0.0", - "vfile-location": "^2.0.0", - "xtend": "^4.0.1" - } - }, - "node_modules/remark-parse/node_modules/parse-entities": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-1.2.2.tgz", - "integrity": "sha512-NzfpbxW/NPrzZ/yYSoQxyqUZMZXIdCfE0OIN4ESsnptHJECoUk3FZktxNuzQf4tjt5UEopnxpYJbvYuxIFDdsg==", - "dependencies": { - "character-entities": "^1.0.0", - "character-entities-legacy": "^1.0.0", - "character-reference-invalid": "^1.0.0", - "is-alphanumerical": "^1.0.0", - "is-decimal": "^1.0.0", - "is-hexadecimal": "^1.0.0" - } - }, - "node_modules/remark-rehype": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/remark-rehype/-/remark-rehype-4.0.1.tgz", - "integrity": "sha512-k1GzhtRhXr1sZjX86OS7H4asQu5uOM9Tro//SpOdRaxax6o43mr7M7Np20ubJ+GM6eYjlEHtPv1rDN2hXs2plw==", - "dependencies": { - "mdast-util-to-hast": "^4.0.0" - } - }, - "node_modules/remark-slate": { - "version": "1.8.6", - "resolved": "https://registry.npmjs.org/remark-slate/-/remark-slate-1.8.6.tgz", - "integrity": "sha512-1Gmt5MGw25MRVP+0xTXqw9JQDWfRNWujD4YFCPg036a9DZYhn7mLFjM6jreHB+9hKa6RCMOm5thiXznAmdn8Ug==", - "dependencies": { - "@types/escape-html": "^1.0.0", - "escape-html": "^1.0.3" - } - }, - "node_modules/remark-slate-transformer": { - "version": "0.7.5", - "resolved": "https://registry.npmjs.org/remark-slate-transformer/-/remark-slate-transformer-0.7.5.tgz", - "integrity": "sha512-jyLLjp0wNoQnzy6kwDjUkyjpInCb3NoeJ+sEoNkWVWYpLNSln0toXtsqkYWvM9SH36RpNIxJyNRM/i2nhoJJdw==", - "dependencies": { - "@types/mdast": "^3.0.10", - "mdast-util-math": "^2.0.1", - "tslib": "^2.4.0" - }, - "peerDependencies": { - "unified": ">=10.1.0" - } - }, - "node_modules/remark-slate-transformer/node_modules/tslib": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", - "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==" - }, - "node_modules/remark-stringify": { - "version": "6.0.4", - "resolved": "https://registry.npmjs.org/remark-stringify/-/remark-stringify-6.0.4.tgz", - "integrity": "sha512-eRWGdEPMVudijE/psbIDNcnJLRVx3xhfuEsTDGgH4GsFF91dVhw5nhmnBppafJ7+NWINW6C7ZwWbi30ImJzqWg==", - "dependencies": { - "ccount": "^1.0.0", - "is-alphanumeric": "^1.0.0", - "is-decimal": "^1.0.0", - "is-whitespace-character": "^1.0.0", - "longest-streak": "^2.0.1", - "markdown-escapes": "^1.0.0", - "markdown-table": "^1.1.0", - "mdast-util-compact": "^1.0.0", - "parse-entities": "^1.0.2", - "repeat-string": "^1.5.4", - "state-toggle": "^1.0.0", - "stringify-entities": "^1.0.1", - "unherit": "^1.0.4", - "xtend": "^4.0.1" - } - }, - "node_modules/remark-stringify/node_modules/markdown-table": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/markdown-table/-/markdown-table-1.1.3.tgz", - "integrity": "sha512-1RUZVgQlpJSPWYbFSpmudq5nHY1doEIv89gBtF0s4gW1GF2XorxcA/70M5vq7rLv0a6mhOUccRsqkwhwLCIQ2Q==" - }, - "node_modules/remark-stringify/node_modules/parse-entities": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-1.2.2.tgz", - "integrity": "sha512-NzfpbxW/NPrzZ/yYSoQxyqUZMZXIdCfE0OIN4ESsnptHJECoUk3FZktxNuzQf4tjt5UEopnxpYJbvYuxIFDdsg==", - "dependencies": { - "character-entities": "^1.0.0", - "character-entities-legacy": "^1.0.0", - "character-reference-invalid": "^1.0.0", - "is-alphanumerical": "^1.0.0", - "is-decimal": "^1.0.0", - "is-hexadecimal": "^1.0.0" - } - }, - "node_modules/remark-stringify/node_modules/stringify-entities": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/stringify-entities/-/stringify-entities-1.3.2.tgz", - "integrity": "sha512-nrBAQClJAPN2p+uGCVJRPIPakKeKWZ9GtBCmormE7pWOSlHat7+x5A8gx85M7HM5Dt0BP3pP5RhVW77WdbJJ3A==", - "dependencies": { - "character-entities-html4": "^1.0.0", - "character-entities-legacy": "^1.0.0", - "is-alphanumerical": "^1.0.0", - "is-hexadecimal": "^1.0.0" - } - }, - "node_modules/repeat-string": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", - "integrity": "sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==", - "engines": { - "node": ">=0.10" - } - }, - "node_modules/require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/require-from-string": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", - "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/requireg": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/requireg/-/requireg-0.2.2.tgz", - "integrity": "sha512-nYzyjnFcPNGR3lx9lwPPPnuQxv6JWEZd2Ci0u9opN7N5zUEPIhY/GbL3vMGOr2UXwEg9WwSyV9X9Y/kLFgPsOg==", - "dev": true, - "dependencies": { - "nested-error-stacks": "~2.0.1", - "rc": "~1.2.7", - "resolve": "~1.7.1" - }, - "engines": { - "node": ">= 4.0.0" - } - }, - "node_modules/requireg/node_modules/resolve": { - "version": "1.7.1", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.7.1.tgz", - "integrity": "sha512-c7rwLofp8g1U+h1KNyHL/jicrKg1Ek4q+Lr33AL65uZTinUZHe30D5HlyN5V9NW0JX1D5dXQ4jqW5l7Sy/kGfw==", - "dev": true, - "dependencies": { - "path-parse": "^1.0.5" - } - }, - "node_modules/reselect": { - "version": "4.1.8", - "resolved": "https://registry.npmjs.org/reselect/-/reselect-4.1.8.tgz", - "integrity": "sha512-ab9EmR80F/zQTMNeneUr4cv+jSwPJgIlvEmVwLerwrWVbpLlBuls9XHzIeTFy4cegU2NHBp3va0LKOzU5qFEYQ==" - }, - "node_modules/resolve": { - "version": "1.22.8", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", - "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", - "dependencies": { - "is-core-module": "^2.13.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - }, - "bin": { - "resolve": "bin/resolve" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "engines": { - "node": ">=4" - } - }, - "node_modules/resolve-pathname": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/resolve-pathname/-/resolve-pathname-3.0.0.tgz", - "integrity": "sha512-C7rARubxI8bXFNB/hqcp/4iUeIXJhJZvFPFPiSPRnhU5UPxzMFIl+2E6yY6c4k9giDJAhtV+enfA+G89N6Csng==" - }, - "node_modules/resolve-protobuf-schema": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/resolve-protobuf-schema/-/resolve-protobuf-schema-2.1.0.tgz", - "integrity": "sha512-kI5ffTiZWmJaS/huM8wZfEMer1eRd7oJQhDuxeCLe3t7N7mX3z94CN0xPxBQxFYQTSNz9T0i+v6inKqSdK8xrQ==", - "dependencies": { - "protocol-buffers-schema": "^3.3.1" - } - }, - "node_modules/reusify": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", - "dev": true, - "engines": { - "iojs": ">=1.0.0", - "node": ">=0.10.0" - } - }, - "node_modules/rimraf": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", - "deprecated": "Rimraf versions prior to v4 are no longer supported", - "dev": true, - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - } - }, - "node_modules/run-parallel": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", - "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "dependencies": { - "queue-microtask": "^1.2.2" - } - }, - "node_modules/rw": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/rw/-/rw-1.3.3.tgz", - "integrity": "sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ==" - }, - "node_modules/safe-array-concat": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.0.tgz", - "integrity": "sha512-ZdQ0Jeb9Ofti4hbt5lX3T2JcAamT9hfzYU1MNB+z/jaEbB6wfFfPIR/zEORmZqobkCCJhSjodobH6WHNmJ97dg==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.5", - "get-intrinsic": "^1.2.2", - "has-symbols": "^1.0.3", - "isarray": "^2.0.5" - }, - "engines": { - "node": ">=0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/safe-array-concat/node_modules/isarray": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", - "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", - "dev": true - }, - "node_modules/safe-regex-test": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.3.tgz", - "integrity": "sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.6", - "es-errors": "^1.3.0", - "is-regex": "^1.1.4" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/sanitize-filename": { - "version": "1.6.3", - "resolved": "https://registry.npmjs.org/sanitize-filename/-/sanitize-filename-1.6.3.tgz", - "integrity": "sha512-y/52Mcy7aw3gRm7IrcGDFx/bCk4AhRh2eI9luHOQM86nZsqwiRkkq2GekHXBBD+SmPidc8i2PqtYZl+pWJ8Oeg==", - "dependencies": { - "truncate-utf8-bytes": "^1.0.0" - } - }, - "node_modules/scheduler": { - "version": "0.23.2", - "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.2.tgz", - "integrity": "sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==", - "dependencies": { - "loose-envify": "^1.1.0" - } - }, - "node_modules/scroll-into-view-if-needed": { - "version": "2.2.31", - "resolved": "https://registry.npmjs.org/scroll-into-view-if-needed/-/scroll-into-view-if-needed-2.2.31.tgz", - "integrity": "sha512-dGCXy99wZQivjmjIqihaBQNjryrz5rueJY7eHfTdyWEiR4ttYpsajb14rn9s5d4DY4EcY6+4+U/maARBXJedkA==", - "dependencies": { - "compute-scroll-into-view": "^1.0.20" - } - }, - "node_modules/section-matter": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/section-matter/-/section-matter-1.0.0.tgz", - "integrity": "sha512-vfD3pmTzGpufjScBh50YHKzEu2lxBWhVEHsNGoEXmCmn2hKGfeNLYMzCJpe8cD7gqX7TJluOVpBkAequ6dgMmA==", - "dependencies": { - "extend-shallow": "^2.0.1", - "kind-of": "^6.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/semaphore": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/semaphore/-/semaphore-1.1.0.tgz", - "integrity": "sha512-O4OZEaNtkMd/K0i6js9SL+gqy0ZCBMgUvlSqHKi4IBdjhe7wB8pwztUk1BbZ1fmrvpwFrPbHzqd2w5pTcJH6LA==", - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/semver": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", - "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", - "dev": true, - "bin": { - "semver": "bin/semver" - } - }, - "node_modules/set-function-length": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.1.tgz", - "integrity": "sha512-j4t6ccc+VsKwYHso+kElc5neZpjtq9EnRICFZtWyBsLojhmeF/ZBd/elqm22WJh/BziDe/SBiOeAt0m2mfLD0g==", - "dependencies": { - "define-data-property": "^1.1.2", - "es-errors": "^1.3.0", - "function-bind": "^1.1.2", - "get-intrinsic": "^1.2.3", - "gopd": "^1.0.1", - "has-property-descriptors": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/set-function-name": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.1.tgz", - "integrity": "sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA==", - "dev": true, - "dependencies": { - "define-data-property": "^1.0.1", - "functions-have-names": "^1.2.3", - "has-property-descriptors": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/shebang-command": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", - "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", - "dev": true, - "dependencies": { - "shebang-regex": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/shebang-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/shell-quote": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.1.tgz", - "integrity": "sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/side-channel": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz", - "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==", - "dependencies": { - "call-bind": "^1.0.7", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.4", - "object-inspect": "^1.13.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/signal-exit": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", - "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", - "dev": true, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/slash": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", - "integrity": "sha512-3TYDR7xWt4dIqV2JauJr+EJeW356RXijHeUlO+8djJ+uBXPn8/2dpzBc8yQhh583sVvc9CvFAeQVgijsH+PNNg==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/slate": { - "version": "0.91.4", - "resolved": "https://registry.npmjs.org/slate/-/slate-0.91.4.tgz", - "integrity": "sha512-aUJ3rpjrdi5SbJ5G1Qjr3arytfRkEStTmHjBfWq2A2Q8MybacIzkScSvGJjQkdTk3djCK9C9SEOt39sSeZFwTw==", - "dependencies": { - "immer": "^9.0.6", - "is-plain-object": "^5.0.0", - "tiny-warning": "^1.0.3" - } - }, - "node_modules/slate-base64-serializer": { - "version": "0.2.115", - "resolved": "https://registry.npmjs.org/slate-base64-serializer/-/slate-base64-serializer-0.2.115.tgz", - "integrity": "sha512-GnLV7bUW/UQ5j7rVIxCU5zdB6NOVsEU6YWsCp68dndIjSGTGLaQv2+WwV3NcnrGGZEYe5qgo33j2QWrPws2C1A==", - "dependencies": { - "isomorphic-base64": "^1.0.2" - }, - "peerDependencies": { - "slate": ">=0.32.0 <0.50.0" - } - }, - "node_modules/slate-history": { - "version": "0.93.0", - "resolved": "https://registry.npmjs.org/slate-history/-/slate-history-0.93.0.tgz", - "integrity": "sha512-Gr1GMGPipRuxIz41jD2/rbvzPj8eyar56TVMyJBvBeIpQSSjNISssvGNDYfJlSWM8eaRqf6DAcxMKzsLCYeX6g==", - "dependencies": { - "is-plain-object": "^5.0.0" - }, - "peerDependencies": { - "slate": ">=0.65.3" - } - }, - "node_modules/slate-plain-serializer": { - "version": "0.7.13", - "resolved": "https://registry.npmjs.org/slate-plain-serializer/-/slate-plain-serializer-0.7.13.tgz", - "integrity": "sha512-TtrlaslxQBEMV0LYdf3s7VAbTxRPe1xaW10WNNGAzGA855/0RhkaHjKkQiRjHv5rvbRleVf7Nxr9fH+4uErfxQ==", - "peerDependencies": { - "immutable": ">=3.8.1", - "slate": ">=0.46.0 <0.50.0" - } - }, - "node_modules/slate-react": { - "version": "0.91.11", - "resolved": "https://registry.npmjs.org/slate-react/-/slate-react-0.91.11.tgz", - "integrity": "sha512-2nS29rc2kuTTJrEUOXGyTkFATmTEw/R9KuUXadUYiz+UVwuFOUMnBKuwJWyuIBOsFipS+06SkIayEf5CKdARRQ==", - "dependencies": { - "@juggle/resize-observer": "^3.4.0", - "@types/is-hotkey": "^0.1.1", - "@types/lodash": "^4.14.149", - "direction": "^1.0.3", - "is-hotkey": "^0.1.6", - "is-plain-object": "^5.0.0", - "lodash": "^4.17.4", - "scroll-into-view-if-needed": "^2.2.20", - "tiny-invariant": "1.0.6" - }, - "peerDependencies": { - "react": ">=16.8.0", - "react-dom": ">=16.8.0", - "slate": ">=0.65.3" - } - }, - "node_modules/slate-react/node_modules/is-hotkey": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/is-hotkey/-/is-hotkey-0.1.8.tgz", - "integrity": "sha512-qs3NZ1INIS+H+yeo7cD9pDfwYV/jqRh1JG9S9zYrNudkoUQg7OL7ziXqRKu+InFjUIDoP2o6HIkLYMh1pcWgyQ==" - }, - "node_modules/slate-react/node_modules/tiny-invariant": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.0.6.tgz", - "integrity": "sha512-FOyLWWVjG+aC0UqG76V53yAWdXfH8bO6FNmyZOuUrzDzK8DI3/JRY25UD7+g49JWM1LXwymsKERB+DzI0dTEQA==" - }, - "node_modules/slate-soft-break": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/slate-soft-break/-/slate-soft-break-0.9.0.tgz", - "integrity": "sha512-iTy2bl/G+tphN10YQBOPDRxDqgM46ZH1UUz0ublmL6PLtwJ3jJK1n08w37YxnY/ge4aW31UN386KV6qvFx6Hsw==", - "peerDependencies": { - "slate": ">=0.42.2", - "slate-react": ">=0.19.3" - } - }, - "node_modules/slice-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", - "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.0.0", - "astral-regex": "^2.0.0", - "is-fullwidth-code-point": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/slice-ansi?sponsor=1" - } - }, - "node_modules/slice-ansi/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/slice-ansi/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/slice-ansi/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/sort-asc": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/sort-asc/-/sort-asc-0.1.0.tgz", - "integrity": "sha512-jBgdDd+rQ+HkZF2/OHCmace5dvpos/aWQpcxuyRs9QUbPRnkEJmYVo81PIGpjIdpOcsnJ4rGjStfDHsbn+UVyw==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/sort-desc": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/sort-desc/-/sort-desc-0.1.1.tgz", - "integrity": "sha512-jfZacW5SKOP97BF5rX5kQfJmRVZP5/adDUTY8fCSPvNcXDVpUEe2pr/iKGlcyZzchRJZrswnp68fgk3qBXgkJw==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/sort-object": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/sort-object/-/sort-object-0.3.2.tgz", - "integrity": "sha512-aAQiEdqFTTdsvUFxXm3umdo04J7MRljoVGbBlkH7BgNsMvVNAJyGj7C/wV1A8wHWAJj/YikeZbfuCKqhggNWGA==", - "dependencies": { - "sort-asc": "^0.1.0", - "sort-desc": "^0.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/source-map-js": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.0.tgz", - "integrity": "sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/space-separated-tokens": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-1.1.5.tgz", - "integrity": "sha512-q/JSVd1Lptzhf5bkYm4ob4iWPjx0KiRe3sRFBNrVqbJkFaBm5vbbowy1mymoPNLRa52+oadOhJ+K49wsSeSjTA==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/spdx-correct": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz", - "integrity": "sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==", - "dev": true, - "dependencies": { - "spdx-expression-parse": "^3.0.0", - "spdx-license-ids": "^3.0.0" - } - }, - "node_modules/spdx-exceptions": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.4.0.tgz", - "integrity": "sha512-hcjppoJ68fhxA/cjbN4T8N6uCUejN8yFw69ttpqtBeCbF3u13n7mb31NB9jKwGTTWWnt9IbRA/mf1FprYS8wfw==", - "dev": true - }, - "node_modules/spdx-expression-parse": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", - "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", - "dev": true, - "dependencies": { - "spdx-exceptions": "^2.1.0", - "spdx-license-ids": "^3.0.0" - } - }, - "node_modules/spdx-license-ids": { - "version": "3.0.17", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.17.tgz", - "integrity": "sha512-sh8PWc/ftMqAAdFiBu6Fy6JUOYjqDJBJvIhpfDMyHrr0Rbp5liZqd4TjtQ/RgfLjKFZb+LMx5hpml5qOWy0qvg==", - "dev": true - }, - "node_modules/sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==" - }, - "node_modules/state-toggle": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/state-toggle/-/state-toggle-1.0.3.tgz", - "integrity": "sha512-d/5Z4/2iiCnHw6Xzghyhb+GcmF89bxwgXG60wjIiZaxnymbyOmI8Hk4VqHXiVVp6u2ysaskFfXg3ekCj4WNftQ==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/string-width/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/string-width/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/string.prototype.padend": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/string.prototype.padend/-/string.prototype.padend-3.1.5.tgz", - "integrity": "sha512-DOB27b/2UTTD+4myKUFh+/fXWcu/UDyASIXfg+7VzoCNNGOfWvoyU/x5pvVHr++ztyt/oSYI1BcWBBG/hmlNjA==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/string.prototype.trim": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.8.tgz", - "integrity": "sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/string.prototype.trimend": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.7.tgz", - "integrity": "sha512-Ni79DqeB72ZFq1uH/L6zJ+DKZTkOtPIHovb3YZHQViE+HDouuU4mBrLOLDn5Dde3RF8qw5qVETEjhu9locMLvA==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/string.prototype.trimstart": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.7.tgz", - "integrity": "sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/stringify-entities": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/stringify-entities/-/stringify-entities-3.1.0.tgz", - "integrity": "sha512-3FP+jGMmMV/ffZs86MoghGqAoqXAdxLrJP4GUdrDN1aIScYih5tuIO3eF4To5AJZ79KDZ8Fpdy7QJnK8SsL1Vg==", - "dependencies": { - "character-entities-html4": "^1.0.0", - "character-entities-legacy": "^1.0.0", - "xtend": "^4.0.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/strip-ansi": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", - "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", - "dev": true, - "dependencies": { - "ansi-regex": "^6.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" - } - }, - "node_modules/strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/strip-bom-string": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/strip-bom-string/-/strip-bom-string-1.0.0.tgz", - "integrity": "sha512-uCC2VHvQRYu+lMh4My/sFNmF2klFymLX1wHJeXnbEJERpV/ZsVuonzerjfrGpIGF7LBVa1O7i9kjiWvJiFck8g==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/strip-json-comments": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/style-to-object": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/style-to-object/-/style-to-object-0.3.0.tgz", - "integrity": "sha512-CzFnRRXhzWIdItT3OmF8SQfWyahHhjq3HwcMNCNLn+N7klOOqPjMeG/4JSu77D7ypZdGvSzvkrbyeTMizz2VrA==", - "dependencies": { - "inline-style-parser": "0.1.1" - } - }, - "node_modules/stylelint": { - "version": "16.8.2", - "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-16.8.2.tgz", - "integrity": "sha512-fInKATippQhcSm7AB+T32GpI+626yohrg33GkFT/5jzliUw5qhlwZq2UQQwgl3HsHrf09oeARi0ZwgY/UWEv9A==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/stylelint" - }, - { - "type": "github", - "url": "https://github.com/sponsors/stylelint" - } - ], - "dependencies": { - "@csstools/css-parser-algorithms": "^3.0.0", - "@csstools/css-tokenizer": "^3.0.0", - "@csstools/media-query-list-parser": "^3.0.0", - "@csstools/selector-specificity": "^4.0.0", - "@dual-bundle/import-meta-resolve": "^4.1.0", - "balanced-match": "^2.0.0", - "colord": "^2.9.3", - "cosmiconfig": "^9.0.0", - "css-functions-list": "^3.2.2", - "css-tree": "^2.3.1", - "debug": "^4.3.6", - "fast-glob": "^3.3.2", - "fastest-levenshtein": "^1.0.16", - "file-entry-cache": "^9.0.0", - "global-modules": "^2.0.0", - "globby": "^11.1.0", - "globjoin": "^0.1.4", - "html-tags": "^3.3.1", - "ignore": "^5.3.2", - "imurmurhash": "^0.1.4", - "is-plain-object": "^5.0.0", - "known-css-properties": "^0.34.0", - "mathml-tag-names": "^2.1.3", - "meow": "^13.2.0", - "micromatch": "^4.0.7", - "normalize-path": "^3.0.0", - "picocolors": "^1.0.1", - "postcss": "^8.4.41", - "postcss-resolve-nested-selector": "^0.1.6", - "postcss-safe-parser": "^7.0.0", - "postcss-selector-parser": "^6.1.2", - "postcss-value-parser": "^4.2.0", - "resolve-from": "^5.0.0", - "string-width": "^4.2.3", - "strip-ansi": "^7.1.0", - "supports-hyperlinks": "^3.0.0", - "svg-tags": "^1.0.0", - "table": "^6.8.2", - "write-file-atomic": "^5.0.1" - }, - "bin": { - "stylelint": "bin/stylelint.mjs" - }, - "engines": { - "node": ">=18.12.0" - } - }, - "node_modules/stylelint-config-idiomatic-order": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/stylelint-config-idiomatic-order/-/stylelint-config-idiomatic-order-10.0.0.tgz", - "integrity": "sha512-gJjT1nwhgnHS52+mRn+5Iw6keZIPRN4W+vbzct9Elb+tWOo61jC/CzXzAJHvvOYQZqUYItfs2aQ8fU5hnCvuGg==", - "dev": true, - "dependencies": { - "stylelint-order": "^6.0.2" - }, - "engines": { - "node": ">=12" - }, - "peerDependencies": { - "stylelint": ">=11" - } - }, - "node_modules/stylelint-config-recommended": { - "version": "14.0.1", - "resolved": "https://registry.npmjs.org/stylelint-config-recommended/-/stylelint-config-recommended-14.0.1.tgz", - "integrity": "sha512-bLvc1WOz/14aPImu/cufKAZYfXs/A/owZfSMZ4N+16WGXLoX5lOir53M6odBxvhgmgdxCVnNySJmZKx73T93cg==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/stylelint" - }, - { - "type": "github", - "url": "https://github.com/sponsors/stylelint" - } - ], - "engines": { - "node": ">=18.12.0" - }, - "peerDependencies": { - "stylelint": "^16.1.0" - } - }, - "node_modules/stylelint-config-standard": { - "version": "36.0.1", - "resolved": "https://registry.npmjs.org/stylelint-config-standard/-/stylelint-config-standard-36.0.1.tgz", - "integrity": "sha512-8aX8mTzJ6cuO8mmD5yon61CWuIM4UD8Q5aBcWKGSf6kg+EC3uhB+iOywpTK4ca6ZL7B49en8yanOFtUW0qNzyw==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/stylelint" - }, - { - "type": "github", - "url": "https://github.com/sponsors/stylelint" - } - ], - "dependencies": { - "stylelint-config-recommended": "^14.0.1" - }, - "engines": { - "node": ">=18.12.0" - }, - "peerDependencies": { - "stylelint": "^16.1.0" - } - }, - "node_modules/stylelint-order": { - "version": "6.0.4", - "resolved": "https://registry.npmjs.org/stylelint-order/-/stylelint-order-6.0.4.tgz", - "integrity": "sha512-0UuKo4+s1hgQ/uAxlYU4h0o0HS4NiQDud0NAUNI0aa8FJdmYHA5ZZTFHiV5FpmE3071e9pZx5j0QpVJW5zOCUA==", - "dev": true, - "dependencies": { - "postcss": "^8.4.32", - "postcss-sorting": "^8.0.2" - }, - "peerDependencies": { - "stylelint": "^14.0.0 || ^15.0.0 || ^16.0.1" - } - }, - "node_modules/stylelint/node_modules/argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true - }, - "node_modules/stylelint/node_modules/balanced-match": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-2.0.0.tgz", - "integrity": "sha512-1ugUSr8BHXRnK23KfuYS+gVMC3LB8QGH9W1iGtDPsNWoQbgtXSExkBu2aDR4epiGWZOjZsj6lDl/N/AqqTC3UA==", - "dev": true - }, - "node_modules/stylelint/node_modules/cosmiconfig": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-9.0.0.tgz", - "integrity": "sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==", - "dev": true, - "dependencies": { - "env-paths": "^2.2.1", - "import-fresh": "^3.3.0", - "js-yaml": "^4.1.0", - "parse-json": "^5.2.0" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/d-fischer" - }, - "peerDependencies": { - "typescript": ">=4.9.5" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/stylelint/node_modules/js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "dev": true, - "dependencies": { - "argparse": "^2.0.1" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/stylelint/node_modules/resolve-from": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/stylis": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.2.0.tgz", - "integrity": "sha512-Orov6g6BB1sDfYgzWfTHDOxamtX1bE/zo104Dh9e6fqJ3PooipYyfJ0pUmrZO2wAvO8YbEyeFrkV91XTsGMSrw==" - }, - "node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/supports-hyperlinks": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-3.1.0.tgz", - "integrity": "sha512-2rn0BZ+/f7puLOHZm1HOJfwBggfaHXUpPUSSG/SWM4TWp5KCfmNYwnC3hruy2rZlMnmWZ+QAGpZfchu3f3695A==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0", - "supports-color": "^7.0.0" - }, - "engines": { - "node": ">=14.18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/supports-hyperlinks/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/supports-hyperlinks/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/supports-preserve-symlinks-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/svg-tags": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/svg-tags/-/svg-tags-1.0.0.tgz", - "integrity": "sha512-ovssysQTa+luh7A5Weu3Rta6FJlFBBbInjOh722LIt6klpU2/HtdUbszju/G4devcvk8PGt7FCLv5wftu3THUA==", - "dev": true - }, - "node_modules/symbol-observable": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.2.0.tgz", - "integrity": "sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/table": { - "version": "6.8.2", - "resolved": "https://registry.npmjs.org/table/-/table-6.8.2.tgz", - "integrity": "sha512-w2sfv80nrAh2VCbqR5AK27wswXhqcck2AhfnNW76beQXskGZ1V12GwS//yYVa3d3fcvAip2OUnbDAjW2k3v9fA==", - "dev": true, - "dependencies": { - "ajv": "^8.0.1", - "lodash.truncate": "^4.4.2", - "slice-ansi": "^4.0.0", - "string-width": "^4.2.3", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/table/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/table/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/teeny-tap": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/teeny-tap/-/teeny-tap-0.2.0.tgz", - "integrity": "sha512-HnA3I2sxRQe/SZgQTQgQvvA17DhfzhBJ1LfSOXZ5VUTbxGLvnAqUef84ZGNNSEbk1ZMEIDeghTHZagJ7LifAgg==" - }, - "node_modules/tiny-invariant": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.3.3.tgz", - "integrity": "sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg==" - }, - "node_modules/tiny-warning": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/tiny-warning/-/tiny-warning-1.0.3.tgz", - "integrity": "sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA==" - }, - "node_modules/tinycolor2": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/tinycolor2/-/tinycolor2-1.6.0.tgz", - "integrity": "sha512-XPaBkWQJdsf3pLKJV9p4qN/S+fm2Oj8AIPo1BTUhg5oxkvm9+SVEGFdhyOz7tTdUTfvxMiAs4sp6/eZO2Ew+pw==" - }, - "node_modules/to-fast-properties": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", - "engines": { - "node": ">=4" - } - }, - "node_modules/to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, - "dependencies": { - "is-number": "^7.0.0" - }, - "engines": { - "node": ">=8.0" - } - }, - "node_modules/tomlify-j0.4": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/tomlify-j0.4/-/tomlify-j0.4-3.0.0.tgz", - "integrity": "sha512-2Ulkc8T7mXJ2l0W476YC/A209PR38Nw8PuaCNtk9uI3t1zzFdGQeWYGQvmj2PZkVvRC/Yoi4xQKMRnWc/N29tQ==" - }, - "node_modules/topbar": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/topbar/-/topbar-0.1.4.tgz", - "integrity": "sha512-P3n4WnN4GFd2mQXDo30rQmsAGe4V1bVkggtTreSbNyL50Fyc+eVkW5oatSLeGQmJoan2TLIgoXUZypN+6nw4MQ==" - }, - "node_modules/tree-kill": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz", - "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==", - "dev": true, - "bin": { - "tree-kill": "cli.js" - } - }, - "node_modules/trim": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/trim/-/trim-0.0.1.tgz", - "integrity": "sha512-YzQV+TZg4AxpKxaTHK3c3D+kRDCGVEE7LemdlQZoQXn0iennk10RsIoY6ikzAqJTc9Xjl9C1/waHom/J86ziAQ==", - "deprecated": "Use String.prototype.trim() instead" - }, - "node_modules/trim-lines": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/trim-lines/-/trim-lines-1.1.3.tgz", - "integrity": "sha512-E0ZosSWYK2mkSu+KEtQ9/KqarVjA9HztOSX+9FDdNacRAq29RRV6ZQNgob3iuW8Htar9vAfEa6yyt5qBAHZDBA==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/trim-trailing-lines": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/trim-trailing-lines/-/trim-trailing-lines-1.1.4.tgz", - "integrity": "sha512-rjUWSqnfTNrjbB9NQWfPMH/xRK1deHeGsHoVfpxJ++XeYXE0d6B1En37AHfw3jtfTU7dzMzZL2jjpe8Qb5gLIQ==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/trough": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/trough/-/trough-2.2.0.tgz", - "integrity": "sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw==", - "peer": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/truncate-utf8-bytes": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/truncate-utf8-bytes/-/truncate-utf8-bytes-1.0.2.tgz", - "integrity": "sha512-95Pu1QXQvruGEhv62XCMO3Mm90GscOCClvrIUwCM0PYOXK3kaF3l3sIHxx71ThJfcbM2O5Au6SO3AWCSEfW4mQ==", - "dependencies": { - "utf8-byte-length": "^1.0.1" - } - }, - "node_modules/ts-invariant": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/ts-invariant/-/ts-invariant-0.4.4.tgz", - "integrity": "sha512-uEtWkFM/sdZvRNNDL3Ehu4WVpwaulhwQszV8mrtcdeE8nN00BV9mAmQ88RkrBhFgl9gMgvjJLAQcZbnPXI9mlA==", - "dependencies": { - "tslib": "^1.9.3" - } - }, - "node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" - }, - "node_modules/typed-array-buffer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.1.tgz", - "integrity": "sha512-RSqu1UEuSlrBhHTWC8O9FnPjOduNs4M7rJ4pRKoEjtx1zUNOPN2sSXHLDX+Y2WPbHIxbvg4JFo2DNAEfPIKWoQ==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.6", - "es-errors": "^1.3.0", - "is-typed-array": "^1.1.13" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/typed-array-byte-length": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.0.tgz", - "integrity": "sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "for-each": "^0.3.3", - "has-proto": "^1.0.1", - "is-typed-array": "^1.1.10" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/typed-array-byte-offset": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.0.tgz", - "integrity": "sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg==", - "dev": true, - "dependencies": { - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", - "for-each": "^0.3.3", - "has-proto": "^1.0.1", - "is-typed-array": "^1.1.10" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/typed-array-length": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.4.tgz", - "integrity": "sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "for-each": "^0.3.3", - "is-typed-array": "^1.1.9" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/unbox-primitive": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", - "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "has-bigints": "^1.0.2", - "has-symbols": "^1.0.3", - "which-boxed-primitive": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/undici-types": { - "version": "6.19.8", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.19.8.tgz", - "integrity": "sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==" - }, - "node_modules/unherit": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/unherit/-/unherit-1.1.3.tgz", - "integrity": "sha512-Ft16BJcnapDKp0+J/rqFC3Rrk6Y/Ng4nzsC028k2jdDII/rdZ7Wd3pPT/6+vIIxRagwRc9K0IUX0Ra4fKvw+WQ==", - "dependencies": { - "inherits": "^2.0.0", - "xtend": "^4.0.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/unified": { - "version": "11.0.5", - "resolved": "https://registry.npmjs.org/unified/-/unified-11.0.5.tgz", - "integrity": "sha512-xKvGhPWw3k84Qjh8bI3ZeJjqnyadK+GEFtazSfZv/rKeTkTjOJho6mFqh2SM96iIcZokxiOpg78GazTSg8+KHA==", - "peer": true, - "dependencies": { - "@types/unist": "^3.0.0", - "bail": "^2.0.0", - "devlop": "^1.0.0", - "extend": "^3.0.0", - "is-plain-obj": "^4.0.0", - "trough": "^2.0.0", - "vfile": "^6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/unified/node_modules/@types/unist": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz", - "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==", - "peer": true - }, - "node_modules/unified/node_modules/unist-util-stringify-position": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", - "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", - "peer": true, - "dependencies": { - "@types/unist": "^3.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/unified/node_modules/vfile": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.2.tgz", - "integrity": "sha512-zND7NlS8rJYb/sPqkb13ZvbbUoExdbi4w3SfRrMq6R3FvnLQmmfpajJNITuuYm6AZ5uao9vy4BAos3EXBPf2rg==", - "peer": true, - "dependencies": { - "@types/unist": "^3.0.0", - "unist-util-stringify-position": "^4.0.0", - "vfile-message": "^4.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/unified/node_modules/vfile-message": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz", - "integrity": "sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==", - "peer": true, - "dependencies": { - "@types/unist": "^3.0.0", - "unist-util-stringify-position": "^4.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/unist-builder": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/unist-builder/-/unist-builder-1.0.4.tgz", - "integrity": "sha512-v6xbUPP7ILrT15fHGrNyHc1Xda8H3xVhP7/HAIotHOhVPjH5dCXA097C3Rry1Q2O+HbOLCao4hfPB+EYEjHgVg==", - "dependencies": { - "object-assign": "^4.1.0" - } - }, - "node_modules/unist-util-find-after": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/unist-util-find-after/-/unist-util-find-after-3.0.0.tgz", - "integrity": "sha512-ojlBqfsBftYXExNu3+hHLfJQ/X1jYY/9vdm4yZWjIbf0VuWF6CRufci1ZyoD/wV2TYMKxXUoNuoqwy+CkgzAiQ==", - "dependencies": { - "unist-util-is": "^4.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/unist-util-generated": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/unist-util-generated/-/unist-util-generated-1.1.6.tgz", - "integrity": "sha512-cln2Mm1/CZzN5ttGK7vkoGw+RZ8VcUH6BtGbq98DDtRGquAAOXig1mrBQYelOwMXYS8rK+vZDyyojSjp7JX+Lg==", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/unist-util-is": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-4.1.0.tgz", - "integrity": "sha512-ZOQSsnce92GrxSqlnEEseX0gi7GH9zTJZ0p9dtu87WRb/37mMPO2Ilx1s/t9vBHrFhbgweUwb+t7cIn5dxPhZg==", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/unist-util-position": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-3.1.0.tgz", - "integrity": "sha512-w+PkwCbYSFw8vpgWD0v7zRCl1FpY3fjDSQ3/N/wNd9Ffa4gPi8+4keqt99N3XW6F99t/mUzp2xAhNmfKWp95QA==", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/unist-util-remove-position": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/unist-util-remove-position/-/unist-util-remove-position-1.1.4.tgz", - "integrity": "sha512-tLqd653ArxJIPnKII6LMZwH+mb5q+n/GtXQZo6S6csPRs5zB0u79Yw8ouR3wTw8wxvdJFhpP6Y7jorWdCgLO0A==", - "dependencies": { - "unist-util-visit": "^1.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/unist-util-stringify-position": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-2.0.3.tgz", - "integrity": "sha512-3faScn5I+hy9VleOq/qNbAd6pAx7iH5jYBMS9I1HgQVijz/4mv5Bvw5iw1sC/90CODiKo81G/ps8AJrISn687g==", - "dependencies": { - "@types/unist": "^2.0.2" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/unist-util-visit": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-1.4.1.tgz", - "integrity": "sha512-AvGNk7Bb//EmJZyhtRUnNMEpId/AZ5Ph/KUpTI09WHQuDZHKovQ1oEv3mfmKpWKtoMzyMC4GLBm1Zy5k12fjIw==", - "dependencies": { - "unist-util-visit-parents": "^2.0.0" - } - }, - "node_modules/unist-util-visit-parents": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-2.1.2.tgz", - "integrity": "sha512-DyN5vD4NE3aSeB+PXYNKxzGsfocxp6asDc2XXE3b0ekO2BaRUpBicbbUygfSvYfUz1IkmjFR1YF7dPklraMZ2g==", - "dependencies": { - "unist-util-is": "^3.0.0" - } - }, - "node_modules/unist-util-visit-parents/node_modules/unist-util-is": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-3.0.0.tgz", - "integrity": "sha512-sVZZX3+kspVNmLWBPAB6r+7D9ZgAFPNWm66f7YNb420RlQSbn+n8rG8dGZSkrER7ZIXGQYNm5pqC3v3HopH24A==" - }, - "node_modules/uri-js": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "dependencies": { - "punycode": "^2.1.0" - } - }, - "node_modules/url": { - "version": "0.11.4", - "resolved": "https://registry.npmjs.org/url/-/url-0.11.4.tgz", - "integrity": "sha512-oCwdVC7mTuWiPyjLUz/COz5TLk6wgp0RCsN+wHZ2Ekneac9w8uuV0njcbbie2ME+Vs+d6duwmYuR3HgQXs1fOg==", - "dependencies": { - "punycode": "^1.4.1", - "qs": "^6.12.3" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/url-join": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/url-join/-/url-join-4.0.1.tgz", - "integrity": "sha512-jk1+QP6ZJqyOiuEI9AEWQfju/nB2Pw466kbA0LEZljHwKeMgd9WrAEgEGxjPDD2+TNbbb37rTyhEfrCXfuKXnA==" - }, - "node_modules/url/node_modules/punycode": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==" - }, - "node_modules/use-composed-ref": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/use-composed-ref/-/use-composed-ref-1.3.0.tgz", - "integrity": "sha512-GLMG0Jc/jiKov/3Ulid1wbv3r54K9HlMW29IWcDFPEqFkSO2nS0MuefWgMJpeHQ9YJeXDL3ZUF+P3jdXlZX/cQ==", - "peerDependencies": { - "react": "^16.8.0 || ^17.0.0 || ^18.0.0" - } - }, - "node_modules/use-isomorphic-layout-effect": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/use-isomorphic-layout-effect/-/use-isomorphic-layout-effect-1.1.2.tgz", - "integrity": "sha512-49L8yCO3iGT/ZF9QttjwLF/ZD9Iwto5LnH5LmEdk/6cFmXddqi2ulF0edxTwjj+7mqvpVVGQWvbXZdn32wRSHA==", - "peerDependencies": { - "react": "^16.8.0 || ^17.0.0 || ^18.0.0" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, - "node_modules/use-latest": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/use-latest/-/use-latest-1.2.1.tgz", - "integrity": "sha512-xA+AVm/Wlg3e2P/JiItTziwS7FK92LWrDB0p+hgXloIMuVCeJJ8v6f0eeHyPZaJrM+usM1FkFfbNCrJGs8A/zw==", - "dependencies": { - "use-isomorphic-layout-effect": "^1.1.1" - }, - "peerDependencies": { - "react": "^16.8.0 || ^17.0.0 || ^18.0.0" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, - "node_modules/utf8-byte-length": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/utf8-byte-length/-/utf8-byte-length-1.0.5.tgz", - "integrity": "sha512-Xn0w3MtiQ6zoz2vFyUVruaCL53O/DwUvkEeOvj+uulMm0BkUGYWmBYVyElqZaSLhY6ZD0ulfU3aBra2aVT4xfA==" - }, - "node_modules/util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", - "dev": true - }, - "node_modules/uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "bin": { - "uuid": "dist/bin/uuid" - } - }, - "node_modules/validate-npm-package-license": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", - "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", - "dev": true, - "dependencies": { - "spdx-correct": "^3.0.0", - "spdx-expression-parse": "^3.0.0" - } - }, - "node_modules/value-equal": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/value-equal/-/value-equal-1.0.1.tgz", - "integrity": "sha512-NOJ6JZCAWr0zlxZt+xqCHNTEKOsrks2HQd4MqhP1qy4z1SkbEP467eNx6TgDKXMvUOb+OENfJCZwM+16n7fRfw==" - }, - "node_modules/vfile": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/vfile/-/vfile-4.2.1.tgz", - "integrity": "sha512-O6AE4OskCG5S1emQ/4gl8zK586RqA3srz3nfK/Viy0UPToBc5Trp9BVFb1u0CjsKrAWwnpr4ifM/KBXPWwJbCA==", - "dependencies": { - "@types/unist": "^2.0.0", - "is-buffer": "^2.0.0", - "unist-util-stringify-position": "^2.0.0", - "vfile-message": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/vfile-location": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/vfile-location/-/vfile-location-2.0.6.tgz", - "integrity": "sha512-sSFdyCP3G6Ka0CEmN83A2YCMKIieHx0EDaj5IDP4g1pa5ZJ4FJDvpO0WODLxo4LUX4oe52gmSCK7Jw4SBghqxA==", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/vfile-message": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-2.0.4.tgz", - "integrity": "sha512-DjssxRGkMvifUOJre00juHoP9DPWuzjxKuMDrhNbk2TdaYYBNMStsNhEOt3idrtI12VQYM/1+iM0KOzXi4pxwQ==", - "dependencies": { - "@types/unist": "^2.0.0", - "unist-util-stringify-position": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/warning": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/warning/-/warning-4.0.3.tgz", - "integrity": "sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w==", - "dependencies": { - "loose-envify": "^1.0.0" - } - }, - "node_modules/web-namespaces": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/web-namespaces/-/web-namespaces-1.1.4.tgz", - "integrity": "sha512-wYxSGajtmoP4WxfejAPIr4l0fVh+jeMXZb08wNc0tMg6xsfZXj3cECqIK0G7ZAqUq0PP8WlMDtaOGVBTAWztNw==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/web-worker": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/web-worker/-/web-worker-1.3.0.tgz", - "integrity": "sha512-BSR9wyRsy/KOValMgd5kMyr3JzpdeoR9KVId8u5GVlTTAtNChlsE4yTxeY7zMdNSyOmoKBv8NH2qeRY9Tg+IaA==" - }, - "node_modules/what-input": { - "version": "5.2.12", - "resolved": "https://registry.npmjs.org/what-input/-/what-input-5.2.12.tgz", - "integrity": "sha512-3yrSa7nGSXGJS6wZeSkO6VNm95pB1mZ9i3wFzC1hhY7mn4/afue/MvXz04OXNdBC8bfo4AB4RRd3Dem9jXM58Q==" - }, - "node_modules/what-the-diff": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/what-the-diff/-/what-the-diff-0.6.0.tgz", - "integrity": "sha512-8BgQ4uo4cxojRXvCIcqDpH4QHaq0Ksn2P3LYfztylC5LDSwZKuGHf0Wf7sAStjPLTcB8eCB8pJJcPQSWfhZlkg==" - }, - "node_modules/which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "dev": true, - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "which": "bin/which" - } - }, - "node_modules/which-boxed-primitive": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", - "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", - "dev": true, - "dependencies": { - "is-bigint": "^1.0.1", - "is-boolean-object": "^1.1.0", - "is-number-object": "^1.0.4", - "is-string": "^1.0.5", - "is-symbol": "^1.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/which-typed-array": { - "version": "1.1.14", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.14.tgz", - "integrity": "sha512-VnXFiIW8yNn9kIHN88xvZ4yOWchftKDsRJ8fEPacX/wl1lOvBrhsJ/OeJCXq7B0AaijRuqgzSKalJoPk+D8MPg==", - "dev": true, - "dependencies": { - "available-typed-arrays": "^1.0.6", - "call-bind": "^1.0.5", - "for-each": "^0.3.3", - "gopd": "^1.0.1", - "has-tostringtag": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, - "node_modules/wrap-ansi/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/wrap-ansi/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/wrap-ansi/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/wrap-ansi/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/wrap-ansi/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", - "dev": true - }, - "node_modules/write-file-atomic": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-5.0.1.tgz", - "integrity": "sha512-+QU2zd6OTD8XWIJCbffaiQeH9U73qIqafo1x6V1snCWYGJf6cVE0cDR4D8xRzcEnfI21IFrUPzPGtcPf8AC+Rw==", - "dev": true, - "dependencies": { - "imurmurhash": "^0.1.4", - "signal-exit": "^4.0.1" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/xml-utils": { - "version": "1.10.1", - "resolved": "https://registry.npmjs.org/xml-utils/-/xml-utils-1.10.1.tgz", - "integrity": "sha512-Dn6vJ1Z9v1tepSjvnCpwk5QqwIPcEFKdgnjqfYOABv1ngSofuAhtlugcUC3ehS1OHdgDWSG6C5mvj+Qm15udTQ==" - }, - "node_modules/xtend": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", - "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", - "engines": { - "node": ">=0.4" - } - }, - "node_modules/y18n": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" - }, - "node_modules/yaml": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", - "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", - "engines": { - "node": ">= 6" - } - }, - "node_modules/yargs": { - "version": "17.7.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", - "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", - "dev": true, - "dependencies": { - "cliui": "^8.0.1", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.3", - "y18n": "^5.0.5", - "yargs-parser": "^21.1.1" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/yargs-parser": { - "version": "21.1.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", - "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", - "dev": true, - "engines": { - "node": ">=12" - } - }, - "node_modules/zen-observable": { - "version": "0.8.15", - "resolved": "https://registry.npmjs.org/zen-observable/-/zen-observable-0.8.15.tgz", - "integrity": "sha512-PQ2PC7R9rslx84ndNBZB/Dkv8V8fZEpk83RLgXtYd0fwUgEjseMn1Dgajh2x6S8QbZAFa9p2qVCEuYZNgve0dQ==" - }, - "node_modules/zen-observable-ts": { - "version": "0.8.21", - "resolved": "https://registry.npmjs.org/zen-observable-ts/-/zen-observable-ts-0.8.21.tgz", - "integrity": "sha512-Yj3yXweRc8LdRMrCC8nIc4kkjWecPAUVh0TI0OUrWXx6aX790vLcDlWca6I4vsyCGH3LpWxq0dJRcMOFoVqmeg==", - "dependencies": { - "tslib": "^1.9.3", - "zen-observable": "^0.8.0" - } - }, - "node_modules/zwitch": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-1.0.5.tgz", - "integrity": "sha512-V50KMwwzqJV0NpZIZFwfOD5/lyny3WlSzRiXgA0G7VUnRlqttta1L6UQIHzd6EuBY/cHGfwTIck7w1yH6Q5zUw==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - } - } -} diff --git a/package.json b/package.json deleted file mode 100644 index cef964a..0000000 --- a/package.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "name": "cnoss-thesis-website", - "version": "1.0.0", - "description": "", - "main": "index.js", - "scripts": { - "decap-server": "npx decap-server && echo 'Decap server started http://localhost:8081'", - "jekyll": "jekyll serve -l", - "dev": "npm-run-all --parallel decap-server jekyll lint build:css copy:fonts watch:css", - "lint": "stylelint assets/styles/*.css", - "lint:fix": "stylelint assets/styles/*.css --fix", - "copy:fonts": "recursive-copy -w assets/fonts compiled-assets/fonts", - "build:css": "lightningcss --minify --bundle --sourcemap --targets '>= 0.25%' assets/styles/_combined-styles.css -o compiled-assets/styles/combined-styles.css", - "watch:css": "onchange 'assets/styles/**/*.css' -- npm run build:css", - "live": "jekyll build & npm run copy:fonts & npm run build:css" - }, - "dependencies": { - "decap-cms-app": "^3.1.1" - }, - "devDependencies": { - "npm-run-all": "^4.1.5", - "lightningcss": "^1.24.1", - "lightningcss-cli": "^1.24.1", - "recursive-copy-cli": "^1.0.20", - "stylelint": "^16.4.0", - "stylelint-config-idiomatic-order": "^10.0.0", - "stylelint-config-standard": "^36.0.0", - "stylelint-order": "^6.0.4", - "onchange": "^7.1.0" - } -} diff --git a/research-diary.html b/research-diary.html deleted file mode 100755 index 53c0d00..0000000 --- a/research-diary.html +++ /dev/null @@ -1,87 +0,0 @@ ---- - -layout: simple -title: Research Diary - ---- - -**Das Research Diary ist ein Kurzvideo von maximal 5 Minuten Länge, welches in einem definierten Intervall den aktellen Stand der Arbeit dokumentiert. Die Diary Videos werden im Sciebo hochgeladen. Den Upload Link erhalten Sie von mir. Das Material muss veröffentlichungsfähig sein. Nutzen Sie keine fertigen Tools/ Templates und KI Voiceovers. Das Research Diary ist ein persönliches Dokument und sollte so authentisch wie möglich sein.** - -### Was sollte beachtet werden? - -#### Planung und Vorbereitung -- Halten Sie sich an das definierte Intervall für die Erstellung der Videos. Stellen Sie sicher, dass jedes Video maximal 5 Minuten lang ist. -- Planen Sie feste Zeiten in Ihrem Wochenplan ein, um das Video-Diary aufzunehmen und hochzuladen. Dies hilft, die Regelmäßigkeit sicherzustellen. - -#### Inhaltliche Aspekte -- Beginnen Sie jedes Video mit den wichtigen Eckdaten: Ihr Name, Datum, Woche des Projekts, laufende Nummer des Videos, Titel der Arbeit. -- Jedes Video soll einen kurzen Rückblick auf die Fortschritte des letzten Intervalls und den Plan für das kommende Intervall geben. -- Gehen Sie auf die spezifischen Aufgaben ein, die Sie im letzten Intervall bearbeitet haben. Beschreiben Sie die Ergebnisse, Herausforderungen und Erkenntnisse. -- Teilen Sie Ihre persönlichen Erfahrungen, Gefühle und Gedanken zur Arbeit. Dies macht das Video authentischer und persönlicher. -- Konzentrieren Sie sich jede Woche auf unterschiedliche Aspekte Ihrer Arbeit, wie z.B. Methodik, Literaturrecherche, Datenanalyse oder Prototypentwicklung. - -#### Umsetzung -- Verwenden Sie eine gute Kamera und ein externes Mikrofon für klare Aufnahmen. Achten Sie auf ausreichende Beleuchtung und eine ruhige Umgebung. -- Sprechen Sie frei und vermeiden Sie abgelesene Texte. Dies wirkt natürlicher und authentischer. -- Nutzen Sie einfache visuelle Hilfsmittel wie Whiteboards, handgezeichnete Skizzen oder Bildschirmaufnahmen, um Ihre Punkte zu verdeutlichen. Vermeiden Sie fertige Tools und Templates, um die Authentizität zu bewahren. -- Sprechen Sie selbst und verwenden Sie keine künstlichen Stimmen oder automatisierte Tools zur Erstellung des Videos. Ihre persönliche Stimme und Ausdrucksweise sind entscheidend für die Authentizität. - -#### Veröffentlichung und Datenschutz -- Gestalten Sie das Video individuell und nutzen Sie keine vorgefertigten Templates. Zeigen Sie Ihre Kreativität und Ihren persönlichen Stil. -- Achten Sie darauf, dass alle Inhalte des Videos veröffentlichungsfähig sind. Vermeiden Sie die Verwendung von urheberrechtlich geschütztem Material oder vertraulichen Informationen. - -#### Nachbereitung -- Laden Sie das Video gemäß den Anweisungen in Sciebo hoch und bewahren Sie eine Kopie als Backup auf. -- Bitten Sie mich oder Kommilitonen um Feedback zu den Videos. Nutzen Sie dieses Feedback, um zukünftige Videos zu verbessern. -- Archivieren Sie alle Videos systematisch, sodass Sie am Ende einen vollständigen Überblick über Ihren Forschungsprozess haben. - -#### Nomenklatur - -``` -research-diary-NAME-DATUM-LAUFENDE-NUMMER.DATEIENDUNG -``` - -z.B. - -``` -research-diary-max-mustermann-2022-01-01-01.mp4 -``` - - - - -### Bewertungskriterien - -#### Klarheit und Struktur - - Wie gut ist das Video strukturiert? - - Werden die Inhalte klar und verständlich präsentiert? - - Gibt es eine logische Abfolge der Themen? - -#### Dokumentation des Fortschritts - - Wird der wöchentliche Fortschritt klar dokumentiert? - - Werden spezifische Aufgaben, Ergebnisse und Erkenntnisse der aktuellen Woche detailliert beschrieben? - -#### Relevanz, Analyse und Reflexion - - Wird eine tiefgehende Reflexion über die Herausforderungen und Erfolge der Woche durchgeführt? - - Werden Erkenntnisse und Schlussfolgerungen klar dargestellt? - -#### Qualität der Aufnahme - - Ist die Video- und Tonqualität hoch genug für eine klare Verständlichkeit? - - Ist die Beleuchtung angemessen und das Bild stabil? - -#### Visuelle Unterstützung - - Werden unterstützende visuelle Hilfsmittel wie Whiteboards, Skizzen oder Bildschirmaufnahmen effektiv eingesetzt? - - Ist das visuelle Material hilfreich und verständlich? - -#### Originalität, Authentizität und Persönlichkeit - - Wirkt das Video authentisch und persönlich? - - Wird frei gesprochen und wirkt die Präsentation natürlich? - - Ist das Video individuell gestaltet? - - Wird Kreativität bei der Präsentation und Gestaltung der Videos gezeigt? - - Gibt es originelle Ansätze oder Ideen, die hervorgehoben werden? - -#### Form - - Werden die Videos regelmäßig und innerhalb des vorgegebenen Zeitrahmens hochgeladen? - - Ist das Material veröffentlichungsfähig und frei von urheberrechtlich geschütztem Inhalt oder vertraulichen Informationen? - - diff --git a/state-of-works.json b/state-of-works.json deleted file mode 100644 index c61c6bf..0000000 --- a/state-of-works.json +++ /dev/null @@ -1,17 +0,0 @@ ---- -layout: null ---- - -[ -{% assign works=site.works %} -{% for item in works %} -{ - "author": "{{ item.author }}", - "date": "{{ item.date }}", - "type": "{{ item.type }}", - "status": "{{ item.status }}", - "visibility": "{{ item.visibility }}" -} -{% unless forloop.last %},{% endunless %} -{% endfor %} -] diff --git a/types-of-work.html b/types-of-work.html deleted file mode 100755 index bdf2577..0000000 --- a/types-of-work.html +++ /dev/null @@ -1,49 +0,0 @@ ---- - -layout: simple -title: Art der Arbeit - ---- - -### Praxisprojekt - -Ein Praxisprojekt ist eine Arbeit, die in Zusammenarbeit mit einem Unternehmen, einer Organisation oder im Rahmen eines Forschungsprojekts durchgeführt wird. Das Ziel des Praxisprojekts ist es, ein konkretes Problem zu lösen oder eine konkrete Fragestellung zu beantworten. Weiteres entnehmen Sie der Modulbeschreibung. - -**Workload: 300 Stunden** - -| Artefakt | Erläuterungen | -| --- | --- | --- | --- | -| [Werk](./artefacts#werk) | abhängig vom jeweiligen Thema | -| [Schriftliche Ausarbeitung](./artefacts#ausarbeitung) | max. Umfang des Hauptteils ca. 6000 Worte | -| [Research Diary](./artefacts#research-diary) | alle 14 Tage | -| [Abschlussvideo](./artefacts#abschlussvideo) | max. 10 Min Länge | -| [Bilddokumentation](./artefacts#bilddokumentation) | min. 10 Bilder | - - -### Bachelorarbeit - -Die Bachelorarbeit ist eine wissenschaftliche oder fachpraktische Arbeit, die ein Thema/ Problem aus dem Bereich der Medieninformatik oder eines verwandten Fachgebiets behandelt. Weiteres entnehmen Sie der Modulbeschreibung. - -| Artefakt | Erläuterungen | -| --- | --- | --- | -| [Werk](./artefacts#werk) | abhängig vom jeweiligen Thema | -| [Schriftliche Ausarbeitung](./artefacts#ausarbeitung) | max. Umfang des Hauptteils ca. 6000 Worte | -| [Research Diary](./artefacts#research-diary) | wöchentlich | -| [Abschlussvideo](./artefacts#abschlussvideo) | max. 15 Min Länge | -| [Bilddokumentation](./artefacts#bilddokumentation) | min. 10 Bilder | - -⚠️ Abschlussvideo und Bilddokumentation können innerhalb einer Woche nach Abgabe der schriftlichen Ausarbeitung via Scibo eingereicht werden. - -### Masterarbeit - -Die Masterarbeit ist eine wissenschaftliche oder fachpraktische Arbeit, die ein neues Thema/ Problem aus dem Bereich der Medieninformatik oder eines verwandten Fachgebiets behandelt. Weiteres entnehmen Sie der Modulbeschreibung. - -| Artefakt | Erläuterungen | -| --- | --- | --- | -| [Werk](./artefacts#werk) | abhängig vom jeweiligen Thema | -| [Schriftliche Ausarbeitung](./artefacts#ausarbeitung) | max. Umfang des Hauptteils ca. 10.000 Worte | -| [Research Diary](./artefacts#research-diary) | alle 14 Tage | -| [Abschlussvideo](./artefacts#abschlussvideo) | max. 20 Min Länge | -| [Bilddokumentation](./artefacts#bilddokumentation) | min. 15 Bilder | - -⚠️ Abschlussvideo und Bilddokumentation können innerhalb einer Woche nach Abgabe der schriftlichen Ausarbeitung via Scibo eingereicht werden. \ No newline at end of file diff --git a/werk.html b/werk.html deleted file mode 100644 index 843ee62..0000000 --- a/werk.html +++ /dev/null @@ -1,67 +0,0 @@ ---- -layout: simple -title: Das Werk ---- - -**Das Werk ist das zentrale Artefakt, welches im Rahmen der Arbeit entsteht. Es kann sich um eine Software, eine Website, ein Video, ein Buch, eine Ausstellung, eine Installation oder ein anderes Artefakt handeln. Das Werk sollte in einem öffentlichen Repository verfügbar sein, welches in der Ausarbeitung verlinkt wird. Zusätzlich muss eine Kurzbeschreibung als Readme-Datei im Repository hinterlegt werden.** - -### Was sollte beachtet werden? - -#### Planung und Konzeption -- Definieren Sie klar das Ziel und den Zweck des Werks. Welches Problem soll gelöst werden und warum? Welche Anforderungen gibt es? Welche Zielgruppe soll angesprochen werden? Welche Relevanz hat das Thema? Wie ist der Forschungs-/ Entwicklungsstand in dem Gebiet? -- Führen Sie eine angemessene Anforderungsanalyse durch. Was soll Ihr Werk können? Welche Funktionen und Features sind erforderlich? - -#### Technische Umsetzung -- Wählen Sie geeignete Technologien und Tools für die Entwicklung. Achten Sie auf Best Practices in der Programmierung und Gestaltung. Dokumentieren Sie Ihre Entscheidungen via [Architectural Decision Records](https://adr.github.io). -- Beachten Sie diese [Bewertungskritieren von Code Repositories](https://cnoss.github.io/thesis/notes-on-code.html). -- Verlinken Sie in Ihrer Ausarbeitung auf das Repository, in dem das Werk verfügbar ist. Stellen Sie sicher, dass das Repository öffentlich zugänglich ist. -- Stellen Sie eine lauffähige Version des Werks bereit, die von anderen getestet und genutzt werden kann. - -#### Dokumentation -- Erstellen Sie eine aussagekräftige Readme-Datei im Repository. Diese sollte eine Kurzbeschreibung des Werks, Installationsanweisungen, Lizenz, Kontext des Werks, Nutzungshinweise und Kontaktinformationen enthalten. -- Verfassen Sie eine prägnante Benutzerdokumentation, die alle wichtigen Funktionen und Nutzungsszenarien beschreibt. Diese kann auch Screenshots, Tutorials oder Videos enthalten. -- Dokumentieren Sie den Code und die Architektur des Werks, sodass andere Entwickler das Projekt verstehen und weiterentwickeln können. - - -#### Niveaustufen: - -1. Schlechte Lösung -👉 (schwach in allen Dimensionen, keine erkennbare Substanz) - -Werk (Was wurde geschaffen?): Das Ergebnis ist unbrauchbar oder unvollständig. Keine klare Problemstellung, geringe oder keine Relevanz. -Erkenntnis (Welches Wissen wurde generiert?): Kaum oder keine fundierte Recherche, oberflächliche Auseinandersetzung mit dem Thema. -Rückbindung (Wie ist es in den Kontext eingebettet?): Keine erkennbare Praxisrelevanz oder wissenschaftliche Verankerung. -Können (Welche Fähigkeiten wurden demonstriert?): Grundlegende methodische, analytische oder technische Fehler, mangelnde Eigenständigkeit. -Vermittlung (Wie wird es präsentiert?): Unklare, fehlerhafte oder schwer verständliche Darstellung, schwache Argumentation. -2. Akzeptable Lösung -👉 (grundlegende, aber fehlerhafte oder unzureichende Umsetzung) - -Werk: Einfache, aber funktionierende Lösung ohne größere Innovationskraft oder Tiefe. -Erkenntnis: Erste Auseinandersetzung mit dem Thema, aber lückenhafte oder oberflächliche Recherche. -Rückbindung: Relevanz für eine Zielgruppe erkennbar, aber Praxisbezug und wissenschaftlicher Kontext bleiben vage. -Können: Einige methodische Fehler oder Unsicherheiten, fehlende Tiefe in der Problemlösung. -Vermittlung: Verständlich, aber sprachlich und formal mit Schwächen, unstrukturierte Darstellung. -3. Passable Lösung -👉 (solide, aber ohne besonderen Tiefgang oder Mehrwert) - -Werk: Sinnvolles, aber nicht herausragendes Ergebnis mit erkennbarer Zielsetzung. -Erkenntnis: Angemessene Recherche mit fundierter, aber nicht sehr tiefer Analyse. -Rückbindung: Relevanz und Kontext gut erkennbar, aber nicht durchgängig überzeugend eingebunden. -Können: Methodisch sauber, aber mit Optimierungspotenzial in Entscheidungsfindung oder Umsetzung. -Vermittlung: Klar strukturiert und verständlich, aber nicht durchgehend präzise oder eloquent. -4. Gute Lösung -👉 (durchdacht, mit erkennbarem Mehrwert für Praxis oder Wissenschaft) - -Werk: Eine durchdachte und gut begründete Lösung mit erkennbarem Innovationspotenzial. -Erkenntnis: Fundierte, kritische und breit angelegte Recherche mit analytischer Tiefe. -Rückbindung: Klare Relevanz und Einbindung in den wissenschaftlichen oder praktischen Kontext. -Können: Hohe Eigenständigkeit, kompetente methodische Umsetzung, stringente Lösungsstrategie. -Vermittlung: Verständlich, präzise und überzeugend präsentiert, gute Argumentation. -5. Beste Lösung -👉 (exzellent, innovativ und klar strukturiert – wissenschaftlich oder praktisch bedeutend) - -Werk: Herausragendes Ergebnis mit innovativen oder neuen Erkenntnissen. -Erkenntnis: Tiefgehende, reflektierte und umfassende Auseinandersetzung mit dem Thema. -Rückbindung: Exzellente Verknüpfung mit relevanten wissenschaftlichen und praktischen Kontexten. -Können: Sehr hohe Eigenständigkeit, methodische Exzellenz, reflektierte Entscheidungen. -Vermittlung: Präzise, sprachlich exzellent und überzeugend, ohne inhaltliche oder formale Schwächen. \ No newline at end of file diff --git a/works.html b/works.html deleted file mode 100644 index ee6d535..0000000 --- a/works.html +++ /dev/null @@ -1,13 +0,0 @@ ---- ---- - -{{site.works}} -[ -{% assign works=site.works|sort:'datum' |reverse %} -{% for item in works %} -{ - "title": "{{ item.titel }}", -} -{% unless forloop.last %},{% endunless %} -{% endfor %} -] diff --git a/works.json b/works.json deleted file mode 100644 index 59dd1fc..0000000 --- a/works.json +++ /dev/null @@ -1,24 +0,0 @@ ---- -layout: null ---- - -[ -{% assign works=site.works | where: "visibility","published" %} -{% for item in works %} -{ - "title": "{{ item.title }}", - "author": "{{ item.author }}", - "date": "{{ item.date }}", - "type": "{{ item.type }}", - "status": "{{ item.status }}", - "keywords": "{{ item.keywords }}", - "partner": "{{ item.partner }}", - "partnerUrl": "{{ item.partner-url }}", - "image": "{{ item.thumbnail }}", - "relatedFolder": "{{ item.related-folder }}", - "abstract": "{{ item.content | strip_newlines | escape }}", - "url": "{{ item.url }}" -} -{% unless forloop.last %},{% endunless %} -{% endfor %} -]