From f722d20725586ee4744d077770ef7a89ab05e360 Mon Sep 17 00:00:00 2001 From: Ahmed Abdelhalim Date: Thu, 10 Aug 2023 15:39:23 +0300 Subject: Migrate from brunch to hugo --- .gitignore | 8 +- .prettierrc | 11 - app/assets/android-chrome-192x192.png | Bin 4201 -> 0 bytes app/assets/apple-touch-icon.png | Bin 3392 -> 0 bytes app/assets/browserconfig.xml | 9 - app/assets/de.html | 310 -------- app/assets/favicon-16x16.png | Bin 596 -> 0 bytes app/assets/favicon-32x32.png | Bin 958 -> 0 bytes app/assets/favicon.ico | Bin 1150 -> 0 bytes app/assets/index.html | 310 -------- app/assets/key.asc | 20 - app/assets/key.ssh | 1 - app/assets/mstile-150x150.png | Bin 3853 -> 0 bytes app/assets/safari-pinned-tab.svg | 35 - app/assets/site.webmanifest | 14 - app/print.styl | 25 - app/stylesheets/print/education.styl | 11 - app/stylesheets/print/header.styl | 21 - app/stylesheets/print/projects.styl | 7 - app/stylesheets/print/skills.styl | 17 - app/stylesheets/print/summary.styl | 0 app/stylesheets/print/work.styl | 14 - app/stylesheets/web/education.styl | 58 -- app/stylesheets/web/header.styl | 45 -- app/stylesheets/web/projects.styl | 21 - app/stylesheets/web/skills.styl | 31 - app/stylesheets/web/summary.styl | 8 - app/stylesheets/web/work.styl | 81 --- app/web.styl | 65 -- archetypes/default.md | 6 + assets/.keep | 0 assets/scss/print.scss | 3 + assets/scss/print/_base.scss | 18 + assets/scss/print/_education.scss | 11 + assets/scss/print/_header.scss | 21 + assets/scss/print/_projects.scss | 7 + assets/scss/print/_skills.scss | 17 + assets/scss/print/_summary.scss | 0 assets/scss/print/_work.scss | 14 + assets/scss/web.scss | 3 + assets/scss/web/_base.scss | 56 ++ assets/scss/web/_education.scss | 58 ++ assets/scss/web/_header.scss | 45 ++ assets/scss/web/_projects.scss | 21 + assets/scss/web/_skills.scss | 31 + assets/scss/web/_summary.scss | 8 + assets/scss/web/_work.scss | 81 +++ brunch-config.js | 17 - content/.keep | 0 data/.keep | 0 data/home/index.yaml | 48 ++ data/home/projects.yaml | 11 + data/home/work.yaml | 81 +++ data/home/writing.yaml | 29 + hugo.yaml | 4 + layouts/.keep | 0 layouts/home.html | 24 + layouts/partials/head/metadata.html | 15 + layouts/partials/home/education.html | 10 + layouts/partials/home/header.html | 15 + layouts/partials/home/projects.html | 11 + layouts/partials/home/skills.html | 11 + layouts/partials/home/summary.html | 6 + layouts/partials/home/work.html | 20 + package.json | 22 - static/.keep | 0 static/gpg.key | 38 + static/ico/android-chrome-192x192.png | Bin 0 -> 4201 bytes static/ico/apple-touch-icon.png | Bin 0 -> 3392 bytes static/ico/browserconfig.xml | 9 + static/ico/favicon-16x16.png | Bin 0 -> 596 bytes static/ico/favicon-32x32.png | Bin 0 -> 958 bytes static/ico/favicon.ico | Bin 0 -> 1150 bytes static/ico/mstile-150x150.png | Bin 0 -> 3853 bytes static/ico/safari-pinned-tab.svg | 35 + static/ico/site.webmanifest | 14 + themes/.keep | 0 yarn.lock | 1296 --------------------------------- 78 files changed, 783 insertions(+), 2455 deletions(-) delete mode 100644 .prettierrc delete mode 100644 app/assets/android-chrome-192x192.png delete mode 100644 app/assets/apple-touch-icon.png delete mode 100644 app/assets/browserconfig.xml delete mode 100644 app/assets/de.html delete mode 100644 app/assets/favicon-16x16.png delete mode 100644 app/assets/favicon-32x32.png delete mode 100644 app/assets/favicon.ico delete mode 100644 app/assets/index.html delete mode 100644 app/assets/key.asc delete mode 100644 app/assets/key.ssh delete mode 100644 app/assets/mstile-150x150.png delete mode 100644 app/assets/safari-pinned-tab.svg delete mode 100644 app/assets/site.webmanifest delete mode 100644 app/print.styl delete mode 100644 app/stylesheets/print/education.styl delete mode 100644 app/stylesheets/print/header.styl delete mode 100644 app/stylesheets/print/projects.styl delete mode 100644 app/stylesheets/print/skills.styl delete mode 100644 app/stylesheets/print/summary.styl delete mode 100644 app/stylesheets/print/work.styl delete mode 100644 app/stylesheets/web/education.styl delete mode 100644 app/stylesheets/web/header.styl delete mode 100644 app/stylesheets/web/projects.styl delete mode 100644 app/stylesheets/web/skills.styl delete mode 100644 app/stylesheets/web/summary.styl delete mode 100644 app/stylesheets/web/work.styl delete mode 100644 app/web.styl create mode 100644 archetypes/default.md create mode 100644 assets/.keep create mode 100644 assets/scss/print.scss create mode 100644 assets/scss/print/_base.scss create mode 100644 assets/scss/print/_education.scss create mode 100644 assets/scss/print/_header.scss create mode 100644 assets/scss/print/_projects.scss create mode 100644 assets/scss/print/_skills.scss create mode 100644 assets/scss/print/_summary.scss create mode 100644 assets/scss/print/_work.scss create mode 100644 assets/scss/web.scss create mode 100644 assets/scss/web/_base.scss create mode 100644 assets/scss/web/_education.scss create mode 100644 assets/scss/web/_header.scss create mode 100644 assets/scss/web/_projects.scss create mode 100644 assets/scss/web/_skills.scss create mode 100644 assets/scss/web/_summary.scss create mode 100644 assets/scss/web/_work.scss delete mode 100644 brunch-config.js create mode 100644 content/.keep create mode 100644 data/.keep create mode 100644 data/home/index.yaml create mode 100644 data/home/projects.yaml create mode 100644 data/home/work.yaml create mode 100644 data/home/writing.yaml create mode 100644 hugo.yaml create mode 100644 layouts/.keep create mode 100644 layouts/home.html create mode 100644 layouts/partials/head/metadata.html create mode 100644 layouts/partials/home/education.html create mode 100644 layouts/partials/home/header.html create mode 100644 layouts/partials/home/projects.html create mode 100644 layouts/partials/home/skills.html create mode 100644 layouts/partials/home/summary.html create mode 100644 layouts/partials/home/work.html delete mode 100644 package.json create mode 100644 static/.keep create mode 100644 static/gpg.key create mode 100644 static/ico/android-chrome-192x192.png create mode 100644 static/ico/apple-touch-icon.png create mode 100644 static/ico/browserconfig.xml create mode 100644 static/ico/favicon-16x16.png create mode 100644 static/ico/favicon-32x32.png create mode 100644 static/ico/favicon.ico create mode 100644 static/ico/mstile-150x150.png create mode 100644 static/ico/safari-pinned-tab.svg create mode 100644 static/ico/site.webmanifest create mode 100644 themes/.keep delete mode 100644 yarn.lock diff --git a/.gitignore b/.gitignore index 103ff33..23e4535 100644 --- a/.gitignore +++ b/.gitignore @@ -1,8 +1,4 @@ -.DS_Store +.hugo_build.lock -npm-debug.log* -yarn-debug.log* -yarn-error.log* - -node_modules/ +resources/ public/ diff --git a/.prettierrc b/.prettierrc deleted file mode 100644 index 95f2dae..0000000 --- a/.prettierrc +++ /dev/null @@ -1,11 +0,0 @@ -{ - "printWidth": 120, - "tabWidth": 2, - "useTabs": false, - "semi": true, - "singleQuote": false, - "quoteProps": "as-needed", - "trailingComma": "all", - "bracketSpacing": true, - "endOfLine": "lf" -} diff --git a/app/assets/android-chrome-192x192.png b/app/assets/android-chrome-192x192.png deleted file mode 100644 index 0abde99..0000000 Binary files a/app/assets/android-chrome-192x192.png and /dev/null differ diff --git a/app/assets/apple-touch-icon.png b/app/assets/apple-touch-icon.png deleted file mode 100644 index 56687f2..0000000 Binary files a/app/assets/apple-touch-icon.png and /dev/null differ diff --git a/app/assets/browserconfig.xml b/app/assets/browserconfig.xml deleted file mode 100644 index b3930d0..0000000 --- a/app/assets/browserconfig.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - #da532c - - - diff --git a/app/assets/de.html b/app/assets/de.html deleted file mode 100644 index 37f4b9a..0000000 --- a/app/assets/de.html +++ /dev/null @@ -1,310 +0,0 @@ - - - - - A14M - - - - - - - - - - - - - - - - - - - -
-
- [EN] -

Ahmed AbdelHalim

- Plattform-Ingenieur · DevOps -
-
Berlin, Deutschland
- - - - - - - - -
-
- -
-

Summary

-

- Plattform-Ingenieur mit - 10+ Jahre Erfahrung in der Software-Entwicklung (Backend/API-fokussiert), - 5+ Jahre Erfahrung in Infrastruktur-Automatisierung und DevOps, - Hobby-Sicherheitsanalytiker und -tester. - Ein begeisterter Fan von Automatisierung, Nachhaltigkeit, Design Patterns und sauberem Code. - Immer daran interessiert, eine bessere Problemlösungsmethode für anspruchsvolle Aufgaben zu finden, - und sinnvolle neue Technologien und Tools zu erlernen (wenn die Notwendigkeit besteht). -

-
-
-

Kenntnisse

-
-
DevOps
-
Kubernetes, Terraform, Docker, Ansible, CloudFoundry, Helm, Fastly, Vault, - Concourse, Artifactory, ... -
- -
Telemetrie
-
Grafana, Prometheus, Loki, ELK, - Sentry, Tempo. -
- -
Kodierung
-
Go, Ruby, Python, Bash, Rust.
- -
Paradigmen
-
- Design Patterns, Test Driven Development (TDD), Behavior Driven Development (BDD), - Continuous Integration and Delivery (CI/CD), Infrastructure as Code (IaC), - Configuration as Code, RESTful APIs, Micro-Services. -
- -
Tools
-
- vim, git, tmux, ssh, bash, kubectl, kubevela, ansible, helmfile, vagrant, docker, certbot, dig, bosh, vault, - nc, nmap, curl, ffuf, gobuster, sqlmap, xxd, searchsploit, meta-sploit, commix, gdb, ltrace, ... -
- -
Plattformen
-
- Amazon Web Services (AWS), DigitalOcean, Heroku, Google Cloud Platform (GCP), - Linux. -
- -
Sprachen
-
Englisch (C2), Deutsch (B1), Arabisch (Muttersprache).
-
-
- -
-

Berufserfahrungen

-
-
-

- Springer Nature AG & Co. KGaA -

- Platform Engineer - Feb. 2022 - Aug. 2022 - Berlin, Germany -
-

Arbeiten als Teil des Engineering Enablement-Teams, das Infrastruktur bereitstellt, - interne Tools, Dokumente, CloudFoundry-Plattform und Kubernetes-Cluster, - um die Entwicklungsteams bei ihren täglichen Aufgaben zu unterstützen.

-
    -
  • Arbeitete an interner (Halfpipe) - Tools zum Erstellen von CI/CD-Pipelines auf Github-Aktionen und Concourse.
  • -
  • Implementierte wiederverwendbare GitHub Actions-Workflows für die Bereitstellung in CloudFoundry, Kubernetes und - Docker-Registrierungen.
  • -
  • Implementierte Tools zum Anzeigen und Melden des Kubernetes-Bereitstellungsstatus (von CI/CD) an die jeweiligen Teams, - und benachrichtigen Sie sie bei Fehlern. -
  • -
  • Implementierter Alert-Routing-Service zur Integration mit Prometheus - Alert-Manager. - Und sendet Benachrichtigungen an verschiedene Teams/Projekte und vorkonfigurierte Slack-Kanäle oder E-Mails.
  • -
  • Gepflegte Teamdokumente, die von anderen Entwicklungsteams verwendet werden, um sie in interne Plattformen zu integrieren und zu verwenden.
  • -
  • Wartung der von Terraform bereitgestellten Infrastruktur verschiedener Teile der Plattformen.
  • -
-
-
-
-

Sapera GmbH.

- Senior Developer/DevOps - Apr. 2018 - Nov. 2021 - Berlin, Germany -
-
    -
  • - Implementierte Infrastruktur als Code (IaC) für verschiedene Projekte mit Terraform und Ansible. -
  • -
  • Standardisierung des Bereitstellungsprozesses (und Pflege der Prozessdokumentation).
  • -
  • Erstellte Vorlagen zur Bereitstellung von Infrastruktur auf verschiedenen Cloud-Anbietern und in Entwicklungsstadien.
  • -
  • - Aufbau standardisierter Workflows mit CircleCI zur Automatisierung von Bereitstellungen (für interne und externe Projekte). -
  • -
  • - Implementierung und Wartung der (Rails 5) JSON-API für unsere - Infografik-Portal[1]. -
  • -
  • - Gepflegt 99+% Dokumentationsabdeckung des Infografik-Portals[1]. API - und 90+% Testabdeckung. -
  • -
  • Arbeitete mit Docker zusammen, um Ergebnisse für einige unserer externen Projekte bereitzustellen.
  • -
  • - Unterstützung und Anleitung zur Arbeit mit unseren standardmäßigen Bereitstellungsworkflows (intern und extern). -
  • -
  • Arbeitete eng mit unserem Systemingenieur zusammen, um ihn bei verschiedenen DevOps-Aufgaben zu unterstützen.
  • -
  • - Einige der Datenpipelines wurden neu geschrieben, gewartet und bereitgestellt, um bessere Sicherheitsstandards einzuhalten. -
  • -
-

- [1] Eine funktionierende Version des Infografik-Portals wurde erworben von - Scrolly Telling GmbH und noch von ihnen bearbeitet wie gesehen bei - Five-Times. -

-
-
-
-

LIQID GmbH.

- Senior Backend Developer - Mar. 2016 - Dec. 2017 - Berlin, Germany -
-
    -
  • Wartung der RESTful-API (von Administratoren und Front-End verwendet).
  • -
  • Umsetzung und Pflege der Integration mit der Deutschen Bank.
  • -
  • - Implementierung und Wartung der Integration mit Intercom - CRM. -
  • -
  • Implementierung und Wartung des Rechnungssystems.
  • -
  • - Implementiert die neue Authentifizierungsschicht mit - (RFC7519: JWT). -
  • -
  • Die Zwei-Faktor-Authentifizierung (2FA) für die Benutzer-/Client-Anmeldung implementiert.
  • -
  • Integrierte andere Dienste wie DocuSign, PostIdent,...
  • -
  • Umgesetzte tägliche Geschäfts-/Marketing-/technische Anforderungen.
  • -
-
-
-
-

PrioriData GmbH.

- Full Stack Developer - Jul. 2015 - Feb. 2016 - Berlin, Germany -
-

Wurde von Airnow Data Ltd. übernommen.

-
    -
  • Wartung der Rails-Web-App (Dashboard).
  • -
  • Der Scraping-Prozess zum Abrufen der Daten aus Apple- und GooglePlay-Stores wurde optimiert.
  • -
  • Warteschlangen und Überwachung rund um die Scraper neu implementiert.
  • -
  • Migrierte erfasste Daten aus verschiedenen Ressourcen zu Google BigQuery.
  • -
  • - Wartung und Bereitstellung von VM-Instanzen für verschiedene Zwecke bei Google - Cloud-Plattform (mit chef). -
  • -
  • - “Extract” Schritt in die - ETL-Prozess (unter Verwendung eines API-basierten Crawlers anstelle von phantomJS - Browser). -
  • -
-
-
-
-

AskNative

- Backend Developer/DevOps - May. 2013 - Jul. 2015 - Remote, Egypt -
-
    -
  • Implementierte die Testsuite für die API.
  • -
  • Veranstaltungsbuchungsfunktion über Stripe implementiert.
  • -
  • Neu implementiertes Caching für bessere Antwortzeiten.
  • -
  • Wartung der Heroku-Stacks für Staging/Produktion.
  • -
  • - Große Teile der API neu implementiert, um besseren Designmustern zu folgen - (Sechseckige Architektur und Pub/Sub-Muster). -
  • -
-
-
- -
-

Schreiben

- -
-

Clean Code and the Art of Exception Handling

-

- Ein - - Toptal veröffentlichter Blogbeitrag - - über verschiedene Taktiken und Strategien für die Ausnahmebehandlung und wie man sie einsetzt, um saubereren Code zu schreiben. -

-
- - -
- -
-

Projekte

-
-

- Conway's Game of Life -

-

- Ein Mono-Repo mit verschiedenen Implementierungen der Befehlszeilenschnittstelle (CLI) für die - Spiel des Lebens in mehreren Sprachen - (derzeit Ruby/Rust), mit der Automatisierung zum Veröffentlichen von Updates für verschiedene Paketmanager mit a - Gitarrischer Workflow. -

-
-
-

- a14m.srht.site -

-

Der Quellcode und die Bereitstellungsskripte für diese Website/diesen Lebenslauf.

-
-
- -
-

Ausbildung

-
-

B.E. in Computer Science and Engineering

-

Arab Academy for Science and Technology

-

GPA 3.1/4.0 (B - Sehr Gut)

- Alexandria, Egypt - Sep. 2005 - Jan. 2011 -
-
-
- - - diff --git a/app/assets/favicon-16x16.png b/app/assets/favicon-16x16.png deleted file mode 100644 index fdf8171..0000000 Binary files a/app/assets/favicon-16x16.png and /dev/null differ diff --git a/app/assets/favicon-32x32.png b/app/assets/favicon-32x32.png deleted file mode 100644 index a321a58..0000000 Binary files a/app/assets/favicon-32x32.png and /dev/null differ diff --git a/app/assets/favicon.ico b/app/assets/favicon.ico deleted file mode 100644 index a81b32b..0000000 Binary files a/app/assets/favicon.ico and /dev/null differ diff --git a/app/assets/index.html b/app/assets/index.html deleted file mode 100644 index f40a7bc..0000000 --- a/app/assets/index.html +++ /dev/null @@ -1,310 +0,0 @@ - - - - - A14M - - - - - - - - - - - - - - - - - - - -
-
- [DE] -

Ahmed AbdelHalim

- Platform Engineer · DevOps -
-
Berlin, Germany
- - - - - - - - -
-
- -
-

Summary

-

- Platform engineer with - 10+ years of experience in software development (backend/API focused), - 5+ years in infrastructure automation and DevOps, - hobbyist security analyst and tester. - An avid fan of automation, sustainability, design patterns, and clean code. - Always interested in deriving a better problem-solving method for challenging tasks, - and learning sensible new technologies and tools (when the need arises). -

-
-
-

Skills

-
-
DevOps
-
Kubernetes, Terraform, Docker, Ansible, CloudFoundry, Helm, Fastly, Vault, - Concourse, Artifactory, ... -
- -
Telemetry
-
Grafana, Prometheus, Loki, ELK, - Sentry, Tempo. -
- -
Coding
-
Go, Ruby, Python, Bash, Rust.
- -
Paradigms
-
- Design Patterns, Test Driven Development (TDD), Behavior Driven Development (BDD), - Continuous Integration and Delivery (CI/CD), Infrastructure as Code (IaC), - Configuration as Code, RESTful APIs, Micro-Services. -
- -
Tools
-
- vim, git, tmux, ssh, bash, kubectl, kubevela, ansible, helmfile, vagrant, docker, certbot, dig, bosh, vault, - nc, nmap, curl, ffuf, gobuster, sqlmap, xxd, searchsploit, meta-sploit, commix, gdb, ltrace, ... -
- -
Platforms
-
- Amazon Web Services (AWS), DigitalOcean, Heroku, Google Cloud Platform (GCP), - Linux. -
- -
Languages
-
English (Professional), German (Basic), Arabic (Native).
-
-
- -
-

Work Experience

-
-
-

- Springer Nature AG & Co. KGaA -

- Platform Engineer - Feb. 2022 - Aug. 2022 - Berlin, Germany -
-

Working as part of the Engineering Enablement team, that provides infrastructure, - internal tooling, docs, CloudFoundry platform, and Kubernetes clusters, - to help the development teams with their daily tasks.

-
    -
  • Worked on internal (halfpipe) - tooling for building CI/CD pipelines on Github actions and Concourse.
  • -
  • Implemented reusable GitHub Actions workflows for deploying to CloudFoundry, Kubernetes, and - Docker Registries.
  • -
  • Implemented tooling to show and report Kubernetes deployment status (from CI/CD) to respective teams, - and notify them on failure. -
  • -
  • Implemented alert-routing service, to integrate with Prometheus - alert-manager. - And sends alerts to different teams/projects, and preconfigured Slack channels or emails.
  • -
  • Maintained team docs used by other development teams, to integrate with and use internal platforms.
  • -
  • Maintained terraform-provisioned infrastructure of different parts of the platforms.
  • -
-
-
-
-

Sapera GmbH.

- Senior Developer/DevOps - Apr. 2018 - Nov. 2021 - Berlin, Germany -
-
    -
  • - Implemented infrastructure as code (IaC) for different projects using Terraform and Ansible. -
  • -
  • Standardized the deployment process (and maintained the process documentation).
  • -
  • Built templates to provision infrastructure on different cloud providers and development stages.
  • -
  • - Built standardized workflows using CircleCI to automate deployments (for internal and external projects). -
  • -
  • - Implemented and maintained the (Rails 5) JSON API serving our - infographics portal[1]. -
  • -
  • - Maintained 99+% documentation coverage of the infographics portal[1]. API - and 90+% test coverage. -
  • -
  • Worked with Docker to provide deliverables for some of our external projects.
  • -
  • - Provided support and tutoring to work with our standard deployment workflows (internally and externally). -
  • -
  • Worked closely with our Systems Engineer to support with various DevOps tasks.
  • -
  • - Rewrote, maintained and provisioned some of the data pipelines to adhere to a better security standards. -
  • -
-

- [1] A working version of the infographics portal was acquired by - Scrolly Telling GmbH and still worked on by them as seen at - Five-Times. -

-
-
-
-

LIQID GmbH.

- Senior Backend Developer - Mar. 2016 - Dec. 2017 - Berlin, Germany -
-
    -
  • Maintained the RESTful API (used by admins and front-end).
  • -
  • Implemented and maintained the integration with Deutsche Bank.
  • -
  • - Implemented and maintained the integration with Intercom - CRM. -
  • -
  • Implemented and maintained the Invoicing system.
  • -
  • - Implemented the new authentication layer using - (RFC7519: JWT). -
  • -
  • Implemented the Two-Factor Authentication (2FA) for user/client login.
  • -
  • Integrated other services like DocuSign, PostIdent,...
  • -
  • Implemented day to day business/marketing/technical requirements.
  • -
-
-
-
-

PrioriData GmbH.

- Full Stack Developer - Jul. 2015 - Feb. 2016 - Berlin, Germany -
-

Was acquired by Airnow Data Ltd.

-
    -
  • Maintained the Rails web (dashboard) app.
  • -
  • Optimized the scraping process of getting the data from Apple and GooglePlay stores.
  • -
  • Reimplemented the queueing and monitoring around the scrapers.
  • -
  • Migrated acquired data from different resources to Google BigQuery.
  • -
  • - Maintained and provisioned different purpose VM instances on Google - Cloud Platform (using chef). -
  • -
  • - Reimplemented the “Extract” step in the - ETL process (using an API based crawler instead of phantomJS - browser). -
  • -
-
-
-
-

AskNative

- Backend Developer/DevOps - May. 2013 - Jul. 2015 - Remote, Egypt -
-
    -
  • Implemented the test suite for the API.
  • -
  • Implemented events booking feature via Stripe.
  • -
  • Reimplemented caching for better response times.
  • -
  • Maintained the Heroku stacks for staging/production.
  • -
  • - Reimplemented large portions of the API to follow better design patterns - (Hexagonal Architecture, and Pub/Sub pattern). -
  • -
-
-
- -
-

Writing

- -
-

Clean Code and the Art of Exception Handling

-

- A - - Toptal published blog post - - on different tactics and strategies for exception handling and how to employ them to write cleaner code. -

-
- - -
- -
-

Projects

-
-

- Conway's Game of Life -

-

- A mono-repo with different command line interface (CLI) implementations for the - Game of Life in multiple languages - (currently Ruby/Rust), with the automation for publishing updates to different package managers using a - git-ish workflow. -

-
-
-

- a14m.srht.site -

-

The source code, and deployment scripts for this website/CV.

-
-
- -
-

Education

-
-

B.E. in Computer Science and Engineering

-

Arab Academy for Science and Technology

-

GPA 3.1/4.0 (B - Very Good)

- Alexandria, Egypt - Sep. 2005 - Jan. 2011 -
-
-
- - - diff --git a/app/assets/key.asc b/app/assets/key.asc deleted file mode 100644 index 9ff0781..0000000 --- a/app/assets/key.asc +++ /dev/null @@ -1,20 +0,0 @@ ------BEGIN PGP PUBLIC KEY BLOCK----- - -mDMEZBDEPxYJKwYBBAHaRw8BAQdAMQDR6x4wOUF/16fEy0A+f4K0YkFYwLrKH7f6 -tOCh9gG0HUFobWVkIEFiZGVsSGFsaW0gPHBtQGExNG0ubWU+iJMEExYKADsCGwMF -CwkIBwMFFQoJCAsFFgIDAQACHgECF4AWIQSDeGtI9zTE98LO7DDZ/dKd4epkBQUC -ZBDEhgIZAQAKCRDZ/dKd4epkBXgJAP9NwuudTDOTA8pJIP1NBbbWBciwqZPOxo+4 -VktU8EHyhwD9G0lRbrH2aapTKuQyHWbngxCQn110vbMr369D2gkAVQS0HUFobWVk -IEFiZGVsSGFsaW0gPGExNG1AcG0ubWU+iJAEExYKADgWIQSDeGtI9zTE98LO7DDZ -/dKd4epkBQUCZBDEeAIbAwULCQgHAwUVCgkICwUWAgMBAAIeAQIXgAAKCRDZ/dKd -4epkBeCYAQD5wXKyF2d3qiiKnJ+CO5Yg3oBZo8V1C89bfBM6RA27IQD/bsFyqmUY -vQCZAGtPgUk/F7ZaJLm7vs02ndplkyPFDwC4OARkEMQ/EgorBgEEAZdVAQUBAQdA -Z6mZwv5y+thLJn6SNQDkBoked0gGVKAjdgX1qo5ydjADAQgHiHgEGBYKACAWIQSD -eGtI9zTE98LO7DDZ/dKd4epkBQUCZBDEPwIbDAAKCRDZ/dKd4epkBQEtAP9RLo0I -uz+o9l42vMV/f8ed91uHCFUlgM+x8RifyDkrvQEAm5JCgXV5AZVCN3jvj5NnaQpM -qG24V0Gqh4RXtnO/HAG4MwRkEMSPFgkrBgEEAdpHDwEBB0CPyTphZb5jUR9FPCqB -M8FvwhthJ90+z0USyI8KQwX424h4BBgWCgAgFiEEg3hrSPc0xPfCzuww2f3SneHq -ZAUFAmQQxI8CGyAACgkQ2f3SneHqZAWinAEAnmvc20NnEnzo+ex6d3LFknv4W0nt -RFPfX3ptbzOHJ8YA/jUYRLKGHekJRrJM7kE+ihUFXS3sNpU7KOQthW0DpgwH -=pdo1 ------END PGP PUBLIC KEY BLOCK----- diff --git a/app/assets/key.ssh b/app/assets/key.ssh deleted file mode 100644 index 1a338cf..0000000 --- a/app/assets/key.ssh +++ /dev/null @@ -1 +0,0 @@ -ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAII/JOmFlvmNRH0U8KoEzwW/CG2En3T7PRRLIjwpDBfjb cardno:19_707_974 diff --git a/app/assets/mstile-150x150.png b/app/assets/mstile-150x150.png deleted file mode 100644 index 350bca4..0000000 Binary files a/app/assets/mstile-150x150.png and /dev/null differ diff --git a/app/assets/safari-pinned-tab.svg b/app/assets/safari-pinned-tab.svg deleted file mode 100644 index be8fc4f..0000000 --- a/app/assets/safari-pinned-tab.svg +++ /dev/null @@ -1,35 +0,0 @@ - - - - -Created by potrace 1.14, written by Peter Selinger 2001-2017 - - - - - - - - - - diff --git a/app/assets/site.webmanifest b/app/assets/site.webmanifest deleted file mode 100644 index e532fa7..0000000 --- a/app/assets/site.webmanifest +++ /dev/null @@ -1,14 +0,0 @@ -{ - "name": "A14m", - "short_name": "A14m", - "icons": [ - { - "src": "/android-chrome-192x192.png", - "sizes": "192x192", - "type": "image/png" - } - ], - "theme_color": "#ffffff", - "background_color": "#ffffff", - "display": "standalone" -} diff --git a/app/print.styl b/app/print.styl deleted file mode 100644 index 41ca616..0000000 --- a/app/print.styl +++ /dev/null @@ -1,25 +0,0 @@ -@page { - margin-left: 1cm - margin-right: 1cm -} - -body { - font-size: 9pt - line-height: 1.3 -} - -a:link, a:visited, a:hover, a:active { - text-decoration-thickness: 1px -} - -.section-header { - font-size: 18pt - margin-bottom: -0.6em -} - -@require "stylesheets/print/header.styl" -@require "stylesheets/print/summary.styl" -@require "stylesheets/print/skills.styl" -@require "stylesheets/print/work.styl" -@require "stylesheets/print/projects.styl" -@require "stylesheets/print/education.styl" diff --git a/app/stylesheets/print/education.styl b/app/stylesheets/print/education.styl deleted file mode 100644 index ebefd27..0000000 --- a/app/stylesheets/print/education.styl +++ /dev/null @@ -1,11 +0,0 @@ -.education { - // avoid page breaks inside the education section - page-break-inside: avoid - margin-top: 75px - // remove the extra space added for the website - margin-bottom: 0 -} - -.education__details { - margin-top: 0.3em -} diff --git a/app/stylesheets/print/header.styl b/app/stylesheets/print/header.styl deleted file mode 100644 index 7b982c2..0000000 --- a/app/stylesheets/print/header.styl +++ /dev/null @@ -1,21 +0,0 @@ -.header__name { - margin-bottom: 0.1em -} - -.header__language { - display: none -} - -.header__tel -.header__website -.header__email -.header__srht -.header__github -.header__stackoverflow -.header__linkedin { - display: inline -} - -.header__pgp { - display: none -} diff --git a/app/stylesheets/print/projects.styl b/app/stylesheets/print/projects.styl deleted file mode 100644 index be9dd75..0000000 --- a/app/stylesheets/print/projects.styl +++ /dev/null @@ -1,7 +0,0 @@ -.projects { - margin-top: 75px - page-break-inside: avoid -} - -.project { -} diff --git a/app/stylesheets/print/skills.styl b/app/stylesheets/print/skills.styl deleted file mode 100644 index e5bba67..0000000 --- a/app/stylesheets/print/skills.styl +++ /dev/null @@ -1,17 +0,0 @@ -.skills { - margin-top: 75px -} - -.skills__content { - margin-top: 1.5em -} - -.skills__title { - min-width: 12% - margin-left: 15px -} - -.skills__items { - margin-bottom: 0.1em - margin-left: 15px -} diff --git a/app/stylesheets/print/summary.styl b/app/stylesheets/print/summary.styl deleted file mode 100644 index e69de29..0000000 diff --git a/app/stylesheets/print/work.styl b/app/stylesheets/print/work.styl deleted file mode 100644 index 63368ae..0000000 --- a/app/stylesheets/print/work.styl +++ /dev/null @@ -1,14 +0,0 @@ -.work { - margin-top: 75px -} - -.work__experience { - page-break-inside: avoid -} - -// Style the Company name links in the PDF with thicker underline -.job-position__company { - a:link, a:visited, a:hover, a:active { - text-decoration-thickness: 2px - } -} diff --git a/app/stylesheets/web/education.styl b/app/stylesheets/web/education.styl deleted file mode 100644 index cf54f19..0000000 --- a/app/stylesheets/web/education.styl +++ /dev/null @@ -1,58 +0,0 @@ -.education { - // add empty space to the end of page (as big as the header) - margin-bottom: 150px -} - -.education__details { - display: flex - flex-flow: row wrap - justify-content: space-between - @media screen and (max-width: 780px) { - flex-flow: column wrap - } -} - -.education__degree { - min-width: 100% - align-self: center - font-size: 1.1em - margin-bottom: 0 -} - -.education__university -.education__gpa -.education__duration -.education__location { - min-width: 50% - margin: 0 -} - -.education__university { -} - -.education__gpa { - order: 3 - @media screen and (max-width: 780px) { - order: 2 - } -} - -.education__duration { - order: 2 - text-align: right - align-self: flex-end - @media screen and (max-width: 780px) { - text-align: left - align-self: flex-start - } -} - -.education__location { - order: 4 - text-align: right - align-self: flex-end - @media screen and (max-width: 780px) { - text-align: left - align-self: flex-start - } -} diff --git a/app/stylesheets/web/header.styl b/app/stylesheets/web/header.styl deleted file mode 100644 index 056db86..0000000 --- a/app/stylesheets/web/header.styl +++ /dev/null @@ -1,45 +0,0 @@ -.header { - text-align: center - font-style: normal -} - -.header__language { - float: right - margin-top: 1em - margin-bottom: -0.3em -} - -.header__name { - font-size: 3.3em - margin-bottom: -0.2em - clear: right -} - -.header__job-title { - font-style: italic -} - -.header__contact-info { - font-style: normal -} - -.header__location { - display: block - font-style: italic - margin-bottom: 1em -} - -.header__tel -.header__website { - display: none -} - -.header__email -.header__srht -.header__github -.header__stackoverflow -.header__pgp -.header__linkedin { - display: inline-block - margin: 8px; -} diff --git a/app/stylesheets/web/projects.styl b/app/stylesheets/web/projects.styl deleted file mode 100644 index f3889af..0000000 --- a/app/stylesheets/web/projects.styl +++ /dev/null @@ -1,21 +0,0 @@ -.projects { -} - -.projects__header { -} - -.project { -} - -.project__title { - margin-bottom: 0 - font-size: 1.1em - -} - -.project__content { - margin-left: 1.2em - margin-right: 1.2em - margin-top: 0.3em - margin-bottom: 1.5em -} diff --git a/app/stylesheets/web/skills.styl b/app/stylesheets/web/skills.styl deleted file mode 100644 index 29e9fd3..0000000 --- a/app/stylesheets/web/skills.styl +++ /dev/null @@ -1,31 +0,0 @@ -.skills { -} - -.skills__header { -} - -.skills__content { - display: flex - flex-flow: row wrap - -} - -.skills__title { - min-width: 14% - text-align: right - font-weight: 900 - @media screen and (max-width: 780px) { - text-align: left - } -} - -.skills__items { - width: 80% - margin-bottom: 0.1em - margin-left: 25px - - @media screen and (max-width: 780px) { - margin-bottom: 1em - width: 100% - } -} diff --git a/app/stylesheets/web/summary.styl b/app/stylesheets/web/summary.styl deleted file mode 100644 index dfcb412..0000000 --- a/app/stylesheets/web/summary.styl +++ /dev/null @@ -1,8 +0,0 @@ -.section-header.summary__header { - display: none -} - -.summary__content { - text-align: justify - margin-top: 1.5em -} diff --git a/app/stylesheets/web/work.styl b/app/stylesheets/web/work.styl deleted file mode 100644 index a989349..0000000 --- a/app/stylesheets/web/work.styl +++ /dev/null @@ -1,81 +0,0 @@ -.work { -} - -.work__header { -} - -.work__experience { -} - -.work__experience { - &:after { - display: flex - content: "" - border-bottom: 1px solid - margin: auto - max-width: 30% - } - &:last-of-type:after { - // remove the extra horizontal line after the last work__experience - display: none - } -} - -.job-position { - display: flex - flex-flow: row wrap - justify-content: space-between - @media screen and (max-width: 780px) { - flex-flow: column wrap - } -} - -.job-position__company -.job-position__title -.job-position__duration -.job-position__location { - min-width: 50% -} - -.job-position__company { - order: 0 - margin-bottom: 0 - font-size: 1.4em -} - -.job-position__title { - order: 2 - @media screen and (max-width: 780px) { - order: 1 - } -} - -.job-position__duration { - order: 1 - text-align: right - align-self: flex-end - @media screen and (max-width: 780px) { - order: 2 - text-align: left - align-self: flex-start - } -} - -.job-position__location { - order: 3 - text-align: right - align-self: flex-end - @media screen and (max-width: 780px) { - text-align: left - align-self: flex-start - } -} - -.note { - margin-top: 0.4em - margin-bottom: 0.4em -} - -.tasks { - margin-top: 0.4em -} diff --git a/app/web.styl b/app/web.styl deleted file mode 100644 index 7320840..0000000 --- a/app/web.styl +++ /dev/null @@ -1,65 +0,0 @@ -secondaryColor = #DB0A16 - -@media (prefers-color-scheme: dark) { - html { - color: #FFFFFF - background-color: #181818 - } -} - -@media (prefers-color-scheme: light) { - html { - color: #000000 - background-color: #FFFFFF - } -} - -body { - font-family: "PT Sans", "Kohinoor Bangla", sans-serif - max-width: 1024px - min-width: 375px - margin: 0 auto - float: none - line-height: 1.5 -} - -main { - margin-left: 1cm - margin-right: 1cm -} - -a:link, a:visited, a:hover, a:active { - text-decoration-color: secondaryColor - text-decoration-thickness: 2px - text-underline-offset: 2px - color: inherit -} - -.section-header { - display: flex - flex-direction: row - margin-bottom: -0.3em - - &:before { - content: ""; - border-bottom: 1px solid - margin: auto; - margin-right: 0.5em - flex: 5 5; - } - - &:after { - content: ""; - border-bottom: 1px solid - margin: auto; - margin-left: 0.5em - flex: 100 0; - } -} - -@require "stylesheets/web/header.styl" -@require "stylesheets/web/summary.styl" -@require "stylesheets/web/skills.styl" -@require "stylesheets/web/work.styl" -@require "stylesheets/web/projects.styl" -@require "stylesheets/web/education.styl" diff --git a/archetypes/default.md b/archetypes/default.md new file mode 100644 index 0000000..00e77bd --- /dev/null +++ b/archetypes/default.md @@ -0,0 +1,6 @@ +--- +title: "{{ replace .Name "-" " " | title }}" +date: {{ .Date }} +draft: true +--- + diff --git a/assets/.keep b/assets/.keep new file mode 100644 index 0000000..e69de29 diff --git a/assets/scss/print.scss b/assets/scss/print.scss new file mode 100644 index 0000000..0729cec --- /dev/null +++ b/assets/scss/print.scss @@ -0,0 +1,3 @@ +$secondaryColor: #DB0A16; +@import "print/base", "print/header", "print/summary", "print/skills", + "print/work", "print/projects", "print/education" diff --git a/assets/scss/print/_base.scss b/assets/scss/print/_base.scss new file mode 100644 index 0000000..ab0ca17 --- /dev/null +++ b/assets/scss/print/_base.scss @@ -0,0 +1,18 @@ +@page { + margin-left: 1cm; + margin-right: 1cm; +} + +body { + font-size: 9pt; + line-height: 1.3; +} + +a:link, a:visited, a:hover, a:active { + text-decoration-thickness: 1px; +} + +.section-header { + font-size: 18pt; + margin-bottom: -0.6em; +} diff --git a/assets/scss/print/_education.scss b/assets/scss/print/_education.scss new file mode 100644 index 0000000..fd0ba28 --- /dev/null +++ b/assets/scss/print/_education.scss @@ -0,0 +1,11 @@ +.education { + // avoid page breaks inside the education section + page-break-inside: avoid; + margin-top: 75px; + // remove the extra space added for the website + margin-bottom: 0; +} + +.education__details { + margin-top: 0.3em; +} diff --git a/assets/scss/print/_header.scss b/assets/scss/print/_header.scss new file mode 100644 index 0000000..652031a --- /dev/null +++ b/assets/scss/print/_header.scss @@ -0,0 +1,21 @@ +.header__name { + margin-bottom: 0.1em; +} + +.header__language { + display: none; +} + +.header__tel, +.header__website, +.header__email, +.header__srht, +.header__github, +.header__stackoverflow, +.header__linkedin { + display: inline; +} + +.header__pgp { + display: none; +} diff --git a/assets/scss/print/_projects.scss b/assets/scss/print/_projects.scss new file mode 100644 index 0000000..c7fa414 --- /dev/null +++ b/assets/scss/print/_projects.scss @@ -0,0 +1,7 @@ +.projects { + margin-top: 75px; + page-break-inside: avoid; +} + +.project { +} diff --git a/assets/scss/print/_skills.scss b/assets/scss/print/_skills.scss new file mode 100644 index 0000000..9d37b90 --- /dev/null +++ b/assets/scss/print/_skills.scss @@ -0,0 +1,17 @@ +.skills { + margin-top: 75px; +} + +.skills__content { + margin-top: 1.5em; +} + +.skills__title { + min-width: 12%; + margin-left: 15px; +} + +.skills__items { + margin-bottom: 0.1em; + margin-left: 15px; +} diff --git a/assets/scss/print/_summary.scss b/assets/scss/print/_summary.scss new file mode 100644 index 0000000..e69de29 diff --git a/assets/scss/print/_work.scss b/assets/scss/print/_work.scss new file mode 100644 index 0000000..9495eb0 --- /dev/null +++ b/assets/scss/print/_work.scss @@ -0,0 +1,14 @@ +.work { + margin-top: 75px; +} + +.work__experience { + page-break-inside: avoid; +} + +// Style the Company name links in the PDF with thicker underline +.job-position__company { + a:link, a:visited, a:hover, a:active { + text-decoration-thickness: 2px; + } +} diff --git a/assets/scss/web.scss b/assets/scss/web.scss new file mode 100644 index 0000000..72f80a1 --- /dev/null +++ b/assets/scss/web.scss @@ -0,0 +1,3 @@ +$secondaryColor: #DB0A16; +@import "web/base", "web/header", "web/summary", "web/skills", + "web/work", "web/projects", "web/education" diff --git a/assets/scss/web/_base.scss b/assets/scss/web/_base.scss new file mode 100644 index 0000000..309b144 --- /dev/null +++ b/assets/scss/web/_base.scss @@ -0,0 +1,56 @@ +@media (prefers-color-scheme: dark) { + html { + color: #FFFFFF; + background-color: #181818; + } +} + +@media (prefers-color-scheme: light) { + html { + color: #000000; + background-color: #FFFFFF; + } +} + +body { + font-family: "PT Sans", "Kohinoor Bangla", sans-serif; + max-width: 1024px; + min-width: 375px; + margin: 0 auto; + float: none; + line-height: 1.5; +} + +main { + margin-left: 1cm; + margin-right: 1cm; +} + +a:link, a:visited, a:hover, a:active { + text-decoration-color: $secondaryColor; + text-decoration-thickness: 2px; + text-underline-offset: 2px; + color: inherit; +} + +.section-header { + display: flex; + flex-direction: row; + margin-bottom: -0.3em; + + &:before { + content: ""; + border-bottom: 1px solid; + margin: auto; + margin-right: 0.5em; + flex: 5 5; + } + + &:after { + content: ""; + border-bottom: 1px solid; + margin: auto;; + margin-left: 0.5em; + flex: 100 0; + } +} diff --git a/assets/scss/web/_education.scss b/assets/scss/web/_education.scss new file mode 100644 index 0000000..51179e3 --- /dev/null +++ b/assets/scss/web/_education.scss @@ -0,0 +1,58 @@ +.education { + // add empty space to the end of page (as big as the header) + margin-bottom: 150px; +} + +.education__details { + display: flex; + flex-flow: row wrap; + justify-content: space-between; + @media screen and (max-width: 780px) { + flex-flow: column wrap; + } +} + +.education__degree { + min-width: 100%; + align-self: center; + font-size: 1.1em; + margin-bottom: 0; +} + +.education__university, +.education__gpa, +.education__duration, +.education__location { + min-width: 50%; + margin: 0; +} + +.education__university { +} + +.education__gpa { + order: 3; + @media screen and (max-width: 780px) { + order: 2; + } +} + +.education__duration { + order: 2; + text-align: right; + align-self: flex-end; + @media screen and (max-width: 780px) { + text-align: left; + align-self: flex-start; + } +} + +.education__location { + order: 4; + text-align: right; + align-self: flex-end; + @media screen and (max-width: 780px) { + text-align: left; + align-self: flex-start; + } +} diff --git a/assets/scss/web/_header.scss b/assets/scss/web/_header.scss new file mode 100644 index 0000000..1037114 --- /dev/null +++ b/assets/scss/web/_header.scss @@ -0,0 +1,45 @@ +.header { + text-align: center; + font-style: normal; +} + +.header__language { + float: right; + margin-top: 1em; + margin-bottom: -0.3em; +} + +.header__name { + font-size: 3.3em; + margin-bottom: -0.2em; + clear: right; +} + +.header__job-title { + font-style: italic; +} + +.header__contact-info { + font-style: normal; +} + +.header__location { + display: block; + font-style: italic; + margin-bottom: 1em; +} + +.header__tel, +.header__website { + display: none; +} + +.header__email, +.header__srht, +.header__github, +.header__stackoverflow, +.header__pgp, +.header__linkedin { + display: inline-block; + margin: 8px; +} diff --git a/assets/scss/web/_projects.scss b/assets/scss/web/_projects.scss new file mode 100644 index 0000000..d0af4ed --- /dev/null +++ b/assets/scss/web/_projects.scss @@ -0,0 +1,21 @@ +.projects { +} + +.projects__header { +} + +.project { +} + +.project__title { + margin-bottom: 0; + font-size: 1.1em; + +} + +.project__content { + margin-left: 1.2em; + margin-right: 1.2em; + margin-top: 0.3em; + margin-bottom: 1.5em; +} diff --git a/assets/scss/web/_skills.scss b/assets/scss/web/_skills.scss new file mode 100644 index 0000000..5ce9831 --- /dev/null +++ b/assets/scss/web/_skills.scss @@ -0,0 +1,31 @@ +.skills { +} + +.skills__header { +} + +.skills__content { + display: flex; + flex-flow: row wrap; + +} + +.skills__title { + min-width: 14%; + text-align: right; + font-weight: 900; + @media screen and (max-width: 780px) { + text-align: left; + } +} + +.skills__items { + width: 80%; + margin-bottom: 0.1em; + margin-left: 25px; + + @media screen and (max-width: 780px) { + margin-bottom: 1em; + width: 100%; + } +} diff --git a/assets/scss/web/_summary.scss b/assets/scss/web/_summary.scss new file mode 100644 index 0000000..688945e --- /dev/null +++ b/assets/scss/web/_summary.scss @@ -0,0 +1,8 @@ +.section-header.summary__header { + display: none; +} + +.summary__content { + text-align: justify; + margin-top: 1.5em; +} diff --git a/assets/scss/web/_work.scss b/assets/scss/web/_work.scss new file mode 100644 index 0000000..958859e --- /dev/null +++ b/assets/scss/web/_work.scss @@ -0,0 +1,81 @@ +.work { +} + +.work__header { +} + +.work__experience { +} + +.work__experience { + &:after { + display: flex; + content: ""; + border-bottom: 1px solid; + margin: auto; + max-width: 30%; + } + &:last-of-type:after { + // remove the extra horizontal line after the last work__experience + display: none; + } +} + +.job-position { + display: flex; + flex-flow: row wrap; + justify-content: space-between; + @media screen and (max-width: 780px) { + flex-flow: column wrap; + } +} + +.job-position__company, +.job-position__title, +.job-position__duration, +.job-position__location { + min-width: 50%; +} + +.job-position__company { + order: 0; + margin-bottom: 0; + font-size: 1.4em; +} + +.job-position__title { + order: 2; + @media screen and (max-width: 780px) { + order: 1; + } +} + +.job-position__duration { + order: 1; + text-align: right; + align-self: flex-end; + @media screen and (max-width: 780px) { + order: 2; + text-align: left; + align-self: flex-start; + } +} + +.job-position__location { + order: 3; + text-align: right; + align-self: flex-end; + @media screen and (max-width: 780px) { + text-align: left; + align-self: flex-start; + } +} + +.note { + margin-top: 0.4em; + margin-bottom: 0.4em; +} + +.tasks { + margin-top: 0.4em; +} diff --git a/brunch-config.js b/brunch-config.js deleted file mode 100644 index 445e944..0000000 --- a/brunch-config.js +++ /dev/null @@ -1,17 +0,0 @@ -module.exports = { - files: { - javascripts: { joinTo: "app.js" }, - stylesheets: { - joinTo: { - "web.css": ["app/web.styl"], - "print.css": ["app/print.styl"], - }, - }, - }, - plugins: { - stylus: {}, - cleancss: { - level: 2 - }, - }, -}; diff --git a/content/.keep b/content/.keep new file mode 100644 index 0000000..e69de29 diff --git a/data/.keep b/data/.keep new file mode 100644 index 0000000..e69de29 diff --git a/data/home/index.yaml b/data/home/index.yaml new file mode 100644 index 0000000..5848a6d --- /dev/null +++ b/data/home/index.yaml @@ -0,0 +1,48 @@ +Meta: + Name: Ahmed AbdelHalim + Title: Platform Engineer · DevOps + Location: Berlin, Germany + Phone: +49 177 912 6386 + Email: a14m@pm.me + Srht: https://git.sr.ht/~a14m + Github: https://github.com/a14m + StackOverflow: https://stackoverflow.com/users/1769515/a14m + LinkedIn: https://www.linkedin.com/in/a14m + +Summary: + Platform engineer with 10+ years of experience in software development + (backend/API focused), 5+ years in infrastructure automation and DevOps, + hobbyist security analyst and tester. An avid fan of automation, + sustainability, design patterns, and clean code. Always interested in deriving + a better problem-solving method for challenging tasks, and learning sensible + new technologies and tools (when the need arises). + +Skills: + - DevOps: + Kubernetes, Terraform, Docker, Ansible, CloudFoundry, Helm, Fastly, + Vault, Concourse, Artifactory, ... + - Telemetry: + Grafana, Prometheus, Loki, ELK, Sentry, Tempo. + - Coding: + Go, Ruby, Python, Bash, Rust. + - Paradigms: + Design Patterns, Test Driven Development (TDD), + Behavior Driven Development (BDD), + Continuous Integration and Delivery (CI/CD), Infrastructure as Code (IaC), + Configuration as Code, RESTful APIs, Micro-Services. + - Tools: + vim, git, tmux, ssh, bash, kubectl, kubevela, ansible, helmfile, vagrant, + docker, certbot, dig, bosh, vault, nc, nmap, curl, ffuf, gobuster, sqlmap, + xxd, searchsploit, meta-sploit, commix, gdb, ltrace, ... + - Platforms: + Amazon Web Services (AWS), DigitalOcean, + Heroku, Google Cloud Platform (GCP), Linux. + - Languages: + English (Professional), German (Basic), Arabic (Native). + +Education: + Degree: B.E. in Computer Science and Engineering + University: Arab Academy for Science and Technology + GPA: GPA 3.1/4.0 (B - Very Good) + Duration: Sep. 2005 - Jan. 2011 + Location: Alexandria, Egypt diff --git a/data/home/projects.yaml b/data/home/projects.yaml new file mode 100644 index 0000000..7aeed8b --- /dev/null +++ b/data/home/projects.yaml @@ -0,0 +1,11 @@ +Projects: + - title: Conway's Game of Life + content: + A mono-repo with different command line interface (CLI) implementations for the + Game of Life in multiple languages + (currently Ruby/Rust), with the automation for publishing updates to + different package managers using a git-ish workflow. + + - title: a14m.srht.site + content: + The source code, and deployment scripts for this website/CV/blog. diff --git a/data/home/work.yaml b/data/home/work.yaml new file mode 100644 index 0000000..0b59d35 --- /dev/null +++ b/data/home/work.yaml @@ -0,0 +1,81 @@ +Work: + - Company: Springer Nature AG & Co. KGaA + Title: Platform Engineer + Duration: Feb. 2022 - Aug. 2022 + Location: Berlin, Germany + Note: + Working as part of the Engineering Enablement team, who provides infrastructure, internal tooling, docs, + CloudFoundry platform, and Kubernetes clusters, to help the development teams with their daily tasks. + Tasks: + - Worked on internal (halfpipe) + tooling for building CI/CD pipelines on Github actions and Concourse. + - Implemented reusable GitHub Actions workflows for deploying to CloudFoundry, Kubernetes, and Docker Registries. + - Implemented tooling to show and report Kubernetes deployment status (from CI/CD) to respective teams, + and notify them on failure. + - Implemented alert-routing service, to integrate with Prometheus + alert-manager. + And sends alerts to different teams/projects, and preconfigured Slack channels or emails. + - Maintained team docs used by other development teams, to integrate with and use internal platforms. + - Maintained terraform-provisioned infrastructure of different parts of the platforms. + + - Company: Sapera GmbH. + Title: Senior Developer/DevOps + Duration: Apr. 2018 - Nov. 2021 + Location: Berlin, Germany + Tasks: + - Implemented infrastructure as code (IaC) for different projects using Terraform and Ansible. + - Standardized the deployment process (and maintained the process documentation). + - Built templates to provision infrastructure on different cloud providers and development stages. + - Built standardized workflows using CircleCI to automate deployments (for internal and external projects). + - Implemented and maintained the (Rails 5) JSON API serving our infographics portal[1]. + - Maintained 99+% documentation coverage of the infographics portal[1]. API + and 90+% test coverage. + - Worked with Docker to provide deliverables for some of our external projects. + - Provided support and tutoring to work with our standard deployment workflows (internally and externally). + - Worked closely with our Systems Engineer to support with various DevOps tasks. + - Rewrote, maintained and provisioned some of the data pipelines to adhere to a better security standards. + FootNote: + [1] A working version of the infographics portal was acquired by + Scrolly Telling GmbH and still worked on by them as seen at + Five-Times. + + - Company: LIQID GmbH. + Title: Senior Backend Developer + Duration: Mar. 2016 - Dec. 2017 + Location: Berlin, Germany + Tasks: + - Maintained the RESTful API (used by admins and front-end). + - Implemented and maintained the integration with Deutsche Bank. + - Implemented and maintained the integration with Intercom + CRM. + - Implemented and maintained the Invoicing system. + - Implemented the new authentication layer using + (RFC7519: JWT). + - Implemented the Two-Factor Authentication (2FA) for user/client login. + - Integrated other services like DocuSign, PostIdent,... + - Implemented day to day business/marketing/technical requirements. + + - Company: PrioriData GmbH. + Title: Full Stack Developer + Duration: Jul. 2015 - Feb. 2016 + Location: Berlin, Germany + Note: Was acquired by Airnow Data Ltd. + Tasks: + - Maintained the Rails web (dashboard) app. + - Optimized the scraping process of getting the data from Apple and GooglePlay stores. + - Reimplemented the queueing and monitoring around the scrapers. + - Migrated acquired data from different resources to Google BigQuery. + - Maintained and provisioned different purpose VM instances on Google Cloud Platform (using chef). + - Reimplemented the “Extract” step in the ETL process (using an API based crawler instead of phantomJS browser). + + - Company: AskNative + Title: Backend Developer/DevOps + Duration: May. 2013 - Jul. 2015 + Location: Remote, Egypt + Tasks: + - Implemented the test suite for the API. + - Implemented events booking feature via Stripe. + - Reimplemented caching for better response times. + - Maintained the Heroku stacks for staging/production. + - Reimplemented large portions of the API to follow better design patterns + (Hexagonal Architecture, and Pub/Sub pattern). diff --git a/data/home/writing.yaml b/data/home/writing.yaml new file mode 100644 index 0000000..de93987 --- /dev/null +++ b/data/home/writing.yaml @@ -0,0 +1,29 @@ +Writing: + - title: The Publish/Subscribe Pattern on Rails + content: + A + + Toptal published blog post + + on implementing the Pub/Sub + pattern in practice in Rails apps. + + - title: Clean Code and the Art of Exception Handling + content: + A + + Toptal published blog post + + on different tactics and strategies for exception handling + and how to employ them to write cleaner code. + + - title: Over The Wire Solutions + content: + Solutions for some of the OTW wargames + documented in a README files format. + + - title: Hack The Box Solutions + content: + Learning security analysis via documenting the solutions for some of the + HTB machines + in a README files format. diff --git a/hugo.yaml b/hugo.yaml new file mode 100644 index 0000000..2f585c6 --- /dev/null +++ b/hugo.yaml @@ -0,0 +1,4 @@ +baseURL: "https://a14m.me/" +languageCode: "en" +title: "A14M" +enableRobotsTXT: true diff --git a/layouts/.keep b/layouts/.keep new file mode 100644 index 0000000..e69de29 diff --git a/layouts/home.html b/layouts/home.html new file mode 100644 index 0000000..d937da3 --- /dev/null +++ b/layouts/home.html @@ -0,0 +1,24 @@ + + + {{ .Site.Title }} + {{ $web := resources.Get "scss/web.scss" }} + {{ $style := $web | toCSS | minify | fingerprint }} + + {{ $print := resources.Get "scss/print.scss" }} + {{ $style := $print | toCSS | minify | fingerprint }} + + {{ partial "head/metadata" .Site.Data.home.index.Meta }} + + +
+ {{ partial "home/header.html" .Site.Data.home.index.Meta }} + {{ partial "home/summary.html" .Site.Data.home.index.Summary }} + {{ partial "home/skills.html" .Site.Data.home.index.Skills }} + {{ partial "home/work.html" .Site.Data.home.work.Work }} + {{ partial "home/projects.html" .Site.Data.home.writing }} + {{ partial "home/projects.html" .Site.Data.home.projects }} + {{ partial "home/education.html" .Site.Data.home.index.Education }} +
+ + + diff --git a/layouts/partials/head/metadata.html b/layouts/partials/head/metadata.html new file mode 100644 index 0000000..f49b401 --- /dev/null +++ b/layouts/partials/head/metadata.html @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/layouts/partials/home/education.html b/layouts/partials/home/education.html new file mode 100644 index 0000000..e6f82ba --- /dev/null +++ b/layouts/partials/home/education.html @@ -0,0 +1,10 @@ +
+

Education

+
+

{{ .Degree }}

+

{{ .University }}

+

{{ .GPA }}

+ {{ .Location }} + {{ .Duration }} +
+
diff --git a/layouts/partials/home/header.html b/layouts/partials/home/header.html new file mode 100644 index 0000000..7b4d50c --- /dev/null +++ b/layouts/partials/home/header.html @@ -0,0 +1,15 @@ +
+

{{ .Name }}

+ {{ .Title }} +
+
{{ .Location }}
+ + + + + + + + +
+
diff --git a/layouts/partials/home/projects.html b/layouts/partials/home/projects.html new file mode 100644 index 0000000..d9ac5e2 --- /dev/null +++ b/layouts/partials/home/projects.html @@ -0,0 +1,11 @@ +{{ range $header, $projects := . }} +
+

{{ $header }}

+ {{ range $projects }} +
+

{{ .title | safeHTML }}

+

{{ .content | safeHTML }}

+
+ {{ end }} +
+{{ end }} diff --git a/layouts/partials/home/skills.html b/layouts/partials/home/skills.html new file mode 100644 index 0000000..35bda7c --- /dev/null +++ b/layouts/partials/home/skills.html @@ -0,0 +1,11 @@ +
+

Skills

+
+ {{ range $skill := . }} + {{ range $title, $content := $skill }} +
{{ $title }}
+
{{ $content }}
+ {{ end }} + {{ end }} +
+
diff --git a/layouts/partials/home/summary.html b/layouts/partials/home/summary.html new file mode 100644 index 0000000..4f256fd --- /dev/null +++ b/layouts/partials/home/summary.html @@ -0,0 +1,6 @@ +
+

Summary

+

+ {{ . }} +

+
diff --git a/layouts/partials/home/work.html b/layouts/partials/home/work.html new file mode 100644 index 0000000..4af88dc --- /dev/null +++ b/layouts/partials/home/work.html @@ -0,0 +1,20 @@ +
+

Work Experience

+ {{ range . }} +
+
+

{{ .Company | safeHTML }}

+ {{ .Title }} + {{ .Duration }} + {{ .Location }} +
+

{{ .Note | safeHTML }}

+
    + {{ range .Tasks }} +
  • {{ . | safeHTML }}
  • + {{ end }} +
+

{{ .FootNote | safeHTML }}

+
+ {{ end }} +
diff --git a/package.json b/package.json deleted file mode 100644 index a774502..0000000 --- a/package.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "name": "A14M", - "description": "Website/CV", - "version": "1.0.0", - "private": false, - "engines": { - "node": ">= 12", - "yarn": "^1.16.0" - }, - "scripts": { - "start": "brunch watch --server", - "build": "brunch build --production" - }, - "dependencies": {}, - "devDependencies": { - "auto-reload-brunch": "^2", - "brunch": "^4", - "clean-css-brunch": "^3.0.0", - "stylus-brunch": "^3", - "terser-brunch": "^4" - } -} diff --git a/static/.keep b/static/.keep new file mode 100644 index 0000000..e69de29 diff --git a/static/gpg.key b/static/gpg.key new file mode 100644 index 0000000..855c21b --- /dev/null +++ b/static/gpg.key @@ -0,0 +1,38 @@ + + + + A14M + + + + + + + + + + +
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+
+mDMEZBDEPxYJKwYBBAHaRw8BAQdAMQDR6x4wOUF/16fEy0A+f4K0YkFYwLrKH7f6
+tOCh9gG0HUFobWVkIEFiZGVsSGFsaW0gPHBtQGExNG0ubWU+iJMEExYKADsCGwMF
+CwkIBwMFFQoJCAsFFgIDAQACHgECF4AWIQSDeGtI9zTE98LO7DDZ/dKd4epkBQUC
+ZBDEhgIZAQAKCRDZ/dKd4epkBXgJAP9NwuudTDOTA8pJIP1NBbbWBciwqZPOxo+4
+VktU8EHyhwD9G0lRbrH2aapTKuQyHWbngxCQn110vbMr369D2gkAVQS0HUFobWVk
+IEFiZGVsSGFsaW0gPGExNG1AcG0ubWU+iJAEExYKADgWIQSDeGtI9zTE98LO7DDZ
+/dKd4epkBQUCZBDEeAIbAwULCQgHAwUVCgkICwUWAgMBAAIeAQIXgAAKCRDZ/dKd
+4epkBeCYAQD5wXKyF2d3qiiKnJ+CO5Yg3oBZo8V1C89bfBM6RA27IQD/bsFyqmUY
+vQCZAGtPgUk/F7ZaJLm7vs02ndplkyPFDwC4OARkEMQ/EgorBgEEAZdVAQUBAQdA
+Z6mZwv5y+thLJn6SNQDkBoked0gGVKAjdgX1qo5ydjADAQgHiHgEGBYKACAWIQSD
+eGtI9zTE98LO7DDZ/dKd4epkBQUCZBDEPwIbDAAKCRDZ/dKd4epkBQEtAP9RLo0I
+uz+o9l42vMV/f8ed91uHCFUlgM+x8RifyDkrvQEAm5JCgXV5AZVCN3jvj5NnaQpM
+qG24V0Gqh4RXtnO/HAG4MwRkEMSPFgkrBgEEAdpHDwEBB0CPyTphZb5jUR9FPCqB
+M8FvwhthJ90+z0USyI8KQwX424h4BBgWCgAgFiEEg3hrSPc0xPfCzuww2f3SneHq
+ZAUFAmQQxI8CGyAACgkQ2f3SneHqZAWinAEAnmvc20NnEnzo+ex6d3LFknv4W0nt
+RFPfX3ptbzOHJ8YA/jUYRLKGHekJRrJM7kE+ihUFXS3sNpU7KOQthW0DpgwH
+=pdo1
+-----END PGP PUBLIC KEY BLOCK-----
+
+ + diff --git a/static/ico/android-chrome-192x192.png b/static/ico/android-chrome-192x192.png new file mode 100644 index 0000000..0abde99 Binary files /dev/null and b/static/ico/android-chrome-192x192.png differ diff --git a/static/ico/apple-touch-icon.png b/static/ico/apple-touch-icon.png new file mode 100644 index 0000000..56687f2 Binary files /dev/null and b/static/ico/apple-touch-icon.png differ diff --git a/static/ico/browserconfig.xml b/static/ico/browserconfig.xml new file mode 100644 index 0000000..b3930d0 --- /dev/null +++ b/static/ico/browserconfig.xml @@ -0,0 +1,9 @@ + + + + + + #da532c + + + diff --git a/static/ico/favicon-16x16.png b/static/ico/favicon-16x16.png new file mode 100644 index 0000000..fdf8171 Binary files /dev/null and b/static/ico/favicon-16x16.png differ diff --git a/static/ico/favicon-32x32.png b/static/ico/favicon-32x32.png new file mode 100644 index 0000000..a321a58 Binary files /dev/null and b/static/ico/favicon-32x32.png differ diff --git a/static/ico/favicon.ico b/static/ico/favicon.ico new file mode 100644 index 0000000..a81b32b Binary files /dev/null and b/static/ico/favicon.ico differ diff --git a/static/ico/mstile-150x150.png b/static/ico/mstile-150x150.png new file mode 100644 index 0000000..350bca4 Binary files /dev/null and b/static/ico/mstile-150x150.png differ diff --git a/static/ico/safari-pinned-tab.svg b/static/ico/safari-pinned-tab.svg new file mode 100644 index 0000000..be8fc4f --- /dev/null +++ b/static/ico/safari-pinned-tab.svg @@ -0,0 +1,35 @@ + + + + +Created by potrace 1.14, written by Peter Selinger 2001-2017 + + + + + + + + + + diff --git a/static/ico/site.webmanifest b/static/ico/site.webmanifest new file mode 100644 index 0000000..e532fa7 --- /dev/null +++ b/static/ico/site.webmanifest @@ -0,0 +1,14 @@ +{ + "name": "A14m", + "short_name": "A14m", + "icons": [ + { + "src": "/android-chrome-192x192.png", + "sizes": "192x192", + "type": "image/png" + } + ], + "theme_color": "#ffffff", + "background_color": "#ffffff", + "display": "standalone" +} diff --git a/themes/.keep b/themes/.keep new file mode 100644 index 0000000..e69de29 diff --git a/yarn.lock b/yarn.lock deleted file mode 100644 index 27dd3fd..0000000 --- a/yarn.lock +++ /dev/null @@ -1,1296 +0,0 @@ -# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. -# yarn lockfile v1 - - -acorn-node@^1.6.1: - version "1.8.2" - resolved "https://registry.yarnpkg.com/acorn-node/-/acorn-node-1.8.2.tgz#114c95d64539e53dede23de8b9d96df7c7ae2af8" - integrity sha512-8mt+fslDufLYntIoPAaIMUe/lrbrehIiwmR3t2k9LljIzoigEPF27eLk2hy8zSGzmR/ogr7zbRKINMo1u0yh5A== - dependencies: - acorn "^7.0.0" - acorn-walk "^7.0.0" - xtend "^4.0.2" - -acorn-walk@^7.0.0: - version "7.2.0" - resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-7.2.0.tgz#0de889a601203909b0fbe07b8938dc21d2e967bc" - integrity sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA== - -acorn@^7.0.0: - version "7.4.1" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa" - integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== - -amdefine@>=0.0.4: - version "1.0.1" - resolved "https://registry.yarnpkg.com/amdefine/-/amdefine-1.0.1.tgz#4a5282ac164729e93619bcfd3ad151f817ce91f5" - integrity sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU= - -ansi-regex@^2.0.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" - integrity sha1-w7M6te42DYbg5ijwRorn7yfWVN8= - -ansi-styles@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" - integrity sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4= - -ansi-styles@^3.2.1: - version "3.2.1" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" - integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== - dependencies: - color-convert "^1.9.0" - -anymatch@1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-1.3.0.tgz#a3e52fa39168c825ff57b0248126ce5a8ff95507" - integrity sha1-o+Uvo5FoyCX/V7AkgSbOWo/5VQc= - dependencies: - arrify "^1.0.0" - micromatch "^2.1.5" - -anymatch@^3, anymatch@^3.0.0, anymatch@^3.1.1, anymatch@~3.1.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.2.tgz#c0557c096af32f106198f4f4e2a383537e378716" - integrity sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg== - dependencies: - normalize-path "^3.0.0" - picomatch "^2.0.4" - -anysort@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/anysort/-/anysort-2.0.0.tgz#b91e7a820eab1996481cb370824d132f168ff835" - integrity sha512-Vo6WEVULAOb5LraoA+6STmR5kr4CsCL4w3Jt8WMdSDH3N9LLpzjIcLnFE2cXZ4v50reshxM4DO/Y16ZHphHxWw== - dependencies: - anymatch "^3" - -arr-diff@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-2.0.0.tgz#8f3b827f955a8bd669697e4a4256ac3ceae356cf" - integrity sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8= - dependencies: - arr-flatten "^1.0.1" - -arr-flatten@^1.0.1: - version "1.1.0" - resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1" - integrity sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg== - -array-unique@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.2.1.tgz#a1d97ccafcbc2625cc70fadceb36a50c58b01a53" - integrity sha1-odl8yvy8JiXMcPrc6zalDFiwGlM= - -arrify@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" - integrity sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0= - -async-each@^1.0.0, async-each@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.3.tgz#b727dbf87d7651602f06f4d4ac387f47d91b0cbf" - integrity sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ== - -atob@^2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" - integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== - -auto-reload-brunch@^2: - version "2.7.1" - resolved "https://registry.yarnpkg.com/auto-reload-brunch/-/auto-reload-brunch-2.7.1.tgz#6924cec0ac61128d1cd1ff8f2f9ba0f6e7f01bfe" - integrity sha1-aSTOwKxhEo0c0f+PL5ug9ufwG/4= - dependencies: - anymatch "1.3.0" - ws "~1.1.0" - -balanced-match@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" - integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== - -big.js@^3.1.3: - version "3.2.0" - resolved "https://registry.yarnpkg.com/big.js/-/big.js-3.2.0.tgz#a5fc298b81b9e0dca2e458824784b65c52ba588e" - integrity sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q== - -binary-extensions@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" - integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== - -brace-expansion@^1.1.7: - version "1.1.11" - resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" - integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== - dependencies: - balanced-match "^1.0.0" - concat-map "0.0.1" - -braces@^1.8.2: - version "1.8.5" - resolved "https://registry.yarnpkg.com/braces/-/braces-1.8.5.tgz#ba77962e12dff969d6b76711e914b737857bf6a7" - integrity sha1-uneWLhLf+WnWt2cR6RS3N4V79qc= - dependencies: - expand-range "^1.8.1" - preserve "^0.2.0" - repeat-element "^1.1.2" - -braces@~3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" - integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== - dependencies: - fill-range "^7.0.1" - -browser-resolve@^1.11.1: - version "1.11.3" - resolved "https://registry.yarnpkg.com/browser-resolve/-/browser-resolve-1.11.3.tgz#9b7cbb3d0f510e4cb86bdbd796124d28b5890af6" - integrity sha512-exDi1BYWB/6raKHmDTCicQfTkqwN5fioMFV4j8BsfMU4R2DK/QfZfK7kOVkmWCNANf0snkBzqGqAJBao9gZMdQ== - dependencies: - resolve "1.1.7" - -brunch-skeletons@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/brunch-skeletons/-/brunch-skeletons-0.2.0.tgz#0005de9ba32235bbc7da38ba8ec6412ece4197a1" - integrity sha512-+ywd1mCqyTBjx0ENEC918IhLnV2gaUMkAU49ioIrKcLdt9cT77OvpWDtSwuKcSo3BDhbGYo2Bx1c10qoEtd7Iw== - -brunch@^4: - version "4.0.1" - resolved "https://registry.yarnpkg.com/brunch/-/brunch-4.0.1.tgz#01dc916eca72f6785d05c004d5f9d0bb57cda59a" - integrity sha512-ldbvYscNwZpIvdUOM/ByUcEmDdkkvUpbpsPTmWkf159xdBbBkII45Q0utlK54kvBdniH8hwcUMISYWI/9fSNRQ== - dependencies: - anymatch "^3.1.1" - anysort "^2.0.0" - brunch-skeletons "^0.2.0" - chokidar "^3.5.1" - commander "~5.0.0" - commonjs-require-definition "^0.6.3" - debug "^4.1.1" - deppack "^0.10.0" - deps-install "~0.2.1" - fcache "~0.3" - hosted-git-info "5.0.0" - loggy "~1.0.8" - ncp "^2.0.0" - normalize-git-url "^3.0.2" - serve-handler "^6.1.3" - since-app-start "~0.3.3" - skemata "~0.1.2" - source-map "~0.5" - universal-path "^0.1.0" - -buffer-from@^1.0.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" - integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A== - -bytes@3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048" - integrity sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg= - -cbify@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/cbify/-/cbify-1.0.0.tgz#1a7ad4044b2f92317e7a1badda3a727607835d84" - integrity sha1-GnrUBEsvkjF+ehut2jpydgeDXYQ= - dependencies: - fn-args "^1.0.0" - wrappy "^1.0.1" - -chalk@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" - integrity sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg= - dependencies: - ansi-styles "^2.2.1" - escape-string-regexp "^1.0.2" - has-ansi "^2.0.0" - strip-ansi "^3.0.0" - supports-color "^2.0.0" - -chalk@^2.4.1, chalk@^2.4.2: - version "2.4.2" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" - 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" - -chokidar@^3.5.1: - version "3.5.3" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd" - integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw== - 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" - optionalDependencies: - fsevents "~2.3.2" - -clean-css-brunch@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/clean-css-brunch/-/clean-css-brunch-3.0.0.tgz#0b6c40543cad6fcef61bf32e9292ce9394dd5d0b" - integrity sha512-gbkVut0IXCyMjOMETb2pbe+klsMB4WAebWmeA39G9479D4CJN7+4ggF+MpdSordHm/DWKywzgC7IvJVkPW0kRA== - dependencies: - clean-css "~4.2" - -clean-css@~4.2: - version "4.2.3" - resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-4.2.3.tgz#507b5de7d97b48ee53d84adb0160ff6216380f78" - integrity sha512-VcMWDN54ZN/DS+g58HYL5/n4Zrqe8vHJpGA8KdgUXFU4fuP/aHNw8eld9SyEIyabIMJX/0RaY/fplOo5hYLSFA== - dependencies: - source-map "~0.6.0" - -color-convert@^1.9.0: - version "1.9.3" - resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" - integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== - dependencies: - color-name "1.1.3" - -color-name@1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" - integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= - -colorette@~1.1: - version "1.1.0" - resolved "https://registry.yarnpkg.com/colorette/-/colorette-1.1.0.tgz#1f943e5a357fac10b4e0f5aaef3b14cdc1af6ec7" - integrity sha512-6S062WDQUXi6hOfkO/sBPVwE5ASXY4G2+b4atvhJfSsuUUhIaUKlkjLe9692Ipyt5/a+IPF5aVTu3V5gvXq5cg== - -commander@^2.20.0: - version "2.20.3" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" - integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== - -commander@~5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-5.0.0.tgz#dbf1909b49e5044f8fdaf0adc809f0c0722bdfd0" - integrity sha512-JrDGPAKjMGSP1G0DUoaceEJ3DZgAfr/q6X7FVk4+U5KxUSKviYGM2k6zWkfyyBHy5rAtzgYJFa1ro2O9PtoxwQ== - -commonjs-require-definition@^0.6.3: - version "0.6.3" - resolved "https://registry.yarnpkg.com/commonjs-require-definition/-/commonjs-require-definition-0.6.3.tgz#3145cff979bf5809480358f0133021ee8b119cc3" - integrity sha512-zBIo1YrBat66dXiTeXPNAsh8YfbTxwpOVP71bmjDhQciJoq8hv9eA9fG0fLDD/f9EZbsJkNq6V42Y+fdhaal4Q== - -concat-map@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" - integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= - -content-disposition@0.5.2: - version "0.5.2" - resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.2.tgz#0cf68bb9ddf5f2be7961c3a85178cb85dba78cb4" - integrity sha1-DPaLud318r55YcOoUXjLhdunjLQ= - -css-modules-loader-core@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/css-modules-loader-core/-/css-modules-loader-core-1.1.0.tgz#5908668294a1becd261ae0a4ce21b0b551f21d16" - integrity sha1-WQhmgpShvs0mGuCkziGwtVHyHRY= - dependencies: - icss-replace-symbols "1.1.0" - postcss "6.0.1" - postcss-modules-extract-imports "1.1.0" - postcss-modules-local-by-default "1.2.0" - postcss-modules-scope "1.1.0" - postcss-modules-values "1.3.0" - -css-parse@1.7.x: - version "1.7.0" - resolved "https://registry.yarnpkg.com/css-parse/-/css-parse-1.7.0.tgz#321f6cf73782a6ff751111390fc05e2c657d8c9b" - integrity sha1-Mh9s9zeCpv91ERE5D8BeLGV9jJs= - -css-parse@~2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/css-parse/-/css-parse-2.0.0.tgz#a468ee667c16d81ccf05c58c38d2a97c780dbfd4" - integrity sha1-pGjuZnwW2BzPBcWMONKpfHgNv9Q= - dependencies: - css "^2.0.0" - -css-selector-tokenizer@^0.7.0: - version "0.7.3" - resolved "https://registry.yarnpkg.com/css-selector-tokenizer/-/css-selector-tokenizer-0.7.3.tgz#735f26186e67c749aaf275783405cf0661fae8f1" - integrity sha512-jWQv3oCEL5kMErj4wRnK/OPoBi0D+P1FR2cDCKYPaMeD2eW3/mttav8HT4hT1CKopiJI/psEULjkClhvJo4Lvg== - dependencies: - cssesc "^3.0.0" - fastparse "^1.1.2" - -css@^2.0.0: - version "2.2.4" - resolved "https://registry.yarnpkg.com/css/-/css-2.2.4.tgz#c646755c73971f2bba6a601e2cf2fd71b1298929" - integrity sha512-oUnjmWpy0niI3x/mPL8dVEI1l7MnG3+HHyRPHf+YFSbK+svOhXpmSOcDURUh2aOCgl2grzrOPt1nHLuCVFULLw== - dependencies: - inherits "^2.0.3" - source-map "^0.6.1" - source-map-resolve "^0.5.2" - urix "^0.1.0" - -cssesc@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee" - integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg== - -debug@*, debug@^4.1.1: - version "4.3.1" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.1.tgz#f0d229c505e0c6d8c49ac553d1b13dc183f6b2ee" - integrity sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ== - dependencies: - ms "2.1.2" - -debug@~3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261" - integrity sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g== - dependencies: - ms "2.0.0" - -decode-uri-component@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545" - integrity sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU= - -deep-assign@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/deep-assign/-/deep-assign-2.0.0.tgz#ebe06b1f07f08dae597620e3dd1622f371a1c572" - integrity sha1-6+BrHwfwja5ZdiDj3RYi83GhxXI= - dependencies: - is-obj "^1.0.0" - -defined@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/defined/-/defined-1.0.0.tgz#c98d9bcef75674188e110969151199e39b1fa693" - integrity sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM= - -deppack@^0.10.0: - version "0.10.0" - resolved "https://registry.yarnpkg.com/deppack/-/deppack-0.10.0.tgz#87437850ff9c9e97cc8e70846377e77499a0f517" - integrity sha512-R0F7zPCx4t8Ft5XlLSH5zbtMyB+XQf0Mp/7SamviKOhYBBnFJQhINzPIhtWSS+BFQxHrZI9sN/Z7awl+4gsPvA== - dependencies: - anymatch "^3.0.0" - async-each "^1.0.3" - browser-resolve "^1.11.1" - deep-assign "^2.0.0" - detective "^5.2.0" - glob "^7.1.5" - loggy "^1.0.8" - "true-case-path" "^1.0.2" - -deps-install@~0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/deps-install/-/deps-install-0.2.1.tgz#fb2a2784fc4fd995a2be136d2d8a855be04ef429" - integrity sha512-jTTRh/r+pszOjEOioL/qTGCQkRBlqjxuhS7H2MjpSqZvpM10ZlJ005D04NZyq8UxsA82LxZX83k5wz6hzS6zYw== - dependencies: - readdirp "^3.2.0" - semver "^6.3.0" - -detective@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/detective/-/detective-5.2.0.tgz#feb2a77e85b904ecdea459ad897cc90a99bd2a7b" - integrity sha512-6SsIx+nUUbuK0EthKjv0zrdnajCCXVYGmbYYiYjFVpzcjwEs/JMDZ8tPRG29J/HhN56t3GJp2cGSWDRjjot8Pg== - dependencies: - acorn-node "^1.6.1" - defined "^1.0.0" - minimist "^1.1.1" - -emojis-list@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-2.1.0.tgz#4daa4d9db00f9819880c79fa457ae5b09a1fd389" - integrity sha1-TapNnbAPmBmIDHn6RXrlsJof04k= - -escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" - integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= - -expand-brackets@^0.1.4: - version "0.1.5" - resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-0.1.5.tgz#df07284e342a807cd733ac5af72411e581d1177b" - integrity sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s= - dependencies: - is-posix-bracket "^0.1.0" - -expand-range@^1.8.1: - version "1.8.2" - resolved "https://registry.yarnpkg.com/expand-range/-/expand-range-1.8.2.tgz#a299effd335fe2721ebae8e257ec79644fc85337" - integrity sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc= - dependencies: - fill-range "^2.1.0" - -extglob@^0.3.1: - version "0.3.2" - resolved "https://registry.yarnpkg.com/extglob/-/extglob-0.3.2.tgz#2e18ff3d2f49ab2765cec9023f011daa8d8349a1" - integrity sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE= - dependencies: - is-extglob "^1.0.0" - -fast-levenshtein@^1.1.3: - version "1.1.4" - resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-1.1.4.tgz#e6a754cc8f15e58987aa9cbd27af66fd6f4e5af9" - integrity sha1-5qdUzI8V5YmHqpy9J69m/W9OWvk= - -fast-url-parser@1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/fast-url-parser/-/fast-url-parser-1.1.3.tgz#f4af3ea9f34d8a271cf58ad2b3759f431f0b318d" - integrity sha1-9K8+qfNNiicc9YrSs3WfQx8LMY0= - dependencies: - punycode "^1.3.2" - -fastparse@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/fastparse/-/fastparse-1.1.2.tgz#91728c5a5942eced8531283c79441ee4122c35a9" - integrity sha512-483XLLxTVIwWK3QTrMGRqUfUpoOs/0hbQrl2oz4J0pAcm3A3bu84wxTFqGqkJzewCLdME38xJLJAxBABfQT8sQ== - -fcache@~0.3: - version "0.3.0" - resolved "https://registry.yarnpkg.com/fcache/-/fcache-0.3.0.tgz#d45f2f908642b91b798e88195ec47881a51c3d44" - integrity sha1-1F8vkIZCuRt5jogZXsR4gaUcPUQ= - -filename-regex@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/filename-regex/-/filename-regex-2.0.1.tgz#c1c4b9bee3e09725ddb106b75c1e301fe2f18b26" - integrity sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY= - -fill-range@^2.1.0: - version "2.2.4" - resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-2.2.4.tgz#eb1e773abb056dcd8df2bfdf6af59b8b3a936565" - integrity sha512-cnrcCbj01+j2gTG921VZPnHbjmdAf8oQV/iGeV2kZxGSyfYjjTyY79ErsK1WJWMpw6DaApEX72binqJE+/d+5Q== - dependencies: - is-number "^2.1.0" - isobject "^2.0.0" - randomatic "^3.0.0" - repeat-element "^1.1.2" - repeat-string "^1.5.2" - -fill-range@^7.0.1: - version "7.0.1" - resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" - integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== - dependencies: - to-regex-range "^5.0.1" - -fn-args@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/fn-args/-/fn-args-1.0.0.tgz#974dafa1aeac4ac7c21fa09cc3b80f650106ed32" - integrity sha1-l02voa6sSsfCH6Ccw7gPZQEG7TI= - -for-in@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" - integrity sha1-gQaNKVqBQuwKxybG4iAMMPttXoA= - -for-own@^0.1.4: - version "0.1.5" - resolved "https://registry.yarnpkg.com/for-own/-/for-own-0.1.5.tgz#5265c681a4f294dabbf17c9509b6763aa84510ce" - integrity sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4= - dependencies: - for-in "^1.0.1" - -fs-mode@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/fs-mode/-/fs-mode-1.0.1.tgz#73102f40aa1a25221dda0eaa906616d6da08255a" - integrity sha1-cxAvQKoaJSId2g6qkGYW1toIJVo= - dependencies: - cbify "^1.0.0" - -fs.realpath@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" - integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= - -fsevents@~2.3.2: - version "2.3.2" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" - integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== - -generic-names@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/generic-names/-/generic-names-1.0.3.tgz#2d786a121aee508876796939e8e3bff836c20917" - integrity sha1-LXhqEhruUIh2eWk56OO/+DbCCRc= - dependencies: - loader-utils "^0.2.16" - -glob-base@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/glob-base/-/glob-base-0.3.0.tgz#dbb164f6221b1c0b1ccf82aea328b497df0ea3c4" - integrity sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q= - dependencies: - glob-parent "^2.0.0" - is-glob "^2.0.0" - -glob-parent@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-2.0.0.tgz#81383d72db054fcccf5336daa902f182f6edbb28" - integrity sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg= - dependencies: - is-glob "^2.0.0" - -glob-parent@~5.1.2: - version "5.1.2" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" - integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== - dependencies: - is-glob "^4.0.1" - -glob@7.0.x: - version "7.0.6" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.0.6.tgz#211bafaf49e525b8cd93260d14ab136152b3f57a" - integrity sha1-IRuvr0nlJbjNkyYNFKsTYVKz9Xo= - dependencies: - fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^3.0.2" - once "^1.3.0" - path-is-absolute "^1.0.0" - -glob@^7.0.3, glob@^7.1.2, glob@^7.1.5, glob@^7.1.6: - version "7.1.6" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6" - integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA== - dependencies: - fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^3.0.4" - once "^1.3.0" - path-is-absolute "^1.0.0" - -has-ansi@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91" - integrity sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE= - dependencies: - ansi-regex "^2.0.0" - -has-flag@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-1.0.0.tgz#9d9e793165ce017a00f00418c43f942a7b1d11fa" - integrity sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo= - -has-flag@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" - integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= - -hosted-git-info@5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-5.0.0.tgz#df7a06678b4ebd722139786303db80fdf302ea56" - integrity sha512-rRnjWu0Bxj+nIfUOkz0695C0H6tRrN5iYIzYejb0tDEefe2AekHu/U5Kn9pEie5vsJqpNQU02az7TGSH3qpz4Q== - dependencies: - lru-cache "^7.5.1" - -icss-replace-symbols@1.1.0, icss-replace-symbols@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/icss-replace-symbols/-/icss-replace-symbols-1.1.0.tgz#06ea6f83679a7749e386cfe1fe812ae5db223ded" - integrity sha1-Bupvg2ead0njhs/h/oEq5dsiPe0= - -inflight@^1.0.4: - version "1.0.6" - resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" - integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= - dependencies: - once "^1.3.0" - wrappy "1" - -inherits@2, inherits@^2.0.3: - version "2.0.4" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" - integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== - -is-binary-path@~2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" - integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== - dependencies: - binary-extensions "^2.0.0" - -is-buffer@^1.1.5: - version "1.1.6" - resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" - integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== - -is-dotfile@^1.0.0: - version "1.0.3" - resolved "https://registry.yarnpkg.com/is-dotfile/-/is-dotfile-1.0.3.tgz#a6a2f32ffd2dfb04f5ca25ecd0f6b83cf798a1e1" - integrity sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE= - -is-equal-shallow@^0.1.3: - version "0.1.3" - resolved "https://registry.yarnpkg.com/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz#2238098fc221de0bcfa5d9eac4c45d638aa1c534" - integrity sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ= - dependencies: - is-primitive "^2.0.0" - -is-extendable@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" - integrity sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik= - -is-extglob@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-1.0.0.tgz#ac468177c4943405a092fc8f29760c6ffc6206c0" - integrity sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA= - -is-extglob@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" - integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= - -is-glob@^2.0.0, is-glob@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-2.0.1.tgz#d096f926a3ded5600f3fdfd91198cb0888c2d863" - integrity sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM= - dependencies: - is-extglob "^1.0.0" - -is-glob@^4.0.1, is-glob@~4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc" - integrity sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg== - dependencies: - is-extglob "^2.1.1" - -is-number@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-2.1.0.tgz#01fcbbb393463a548f2f466cce16dece49db908f" - integrity sha1-Afy7s5NGOlSPL0ZszhbezknbkI8= - dependencies: - kind-of "^3.0.2" - -is-number@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-4.0.0.tgz#0026e37f5454d73e356dfe6564699867c6a7f0ff" - integrity sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ== - -is-number@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" - integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== - -is-obj@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f" - integrity sha1-PkcprB9f3gJc19g6iW2rn09n2w8= - -is-posix-bracket@^0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz#3334dc79774368e92f016e6fbc0a88f5cd6e6bc4" - integrity sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q= - -is-primitive@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-primitive/-/is-primitive-2.0.0.tgz#207bab91638499c07b2adf240a41a87210034575" - integrity sha1-IHurkWOEmcB7Kt8kCkGochADRXU= - -isarray@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" - integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= - -isobject@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89" - integrity sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk= - dependencies: - isarray "1.0.0" - -json5@^0.5.0: - version "0.5.1" - resolved "https://registry.yarnpkg.com/json5/-/json5-0.5.1.tgz#1eade7acc012034ad84e2396767ead9fa5495821" - integrity sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE= - -kind-of@^3.0.2: - version "3.2.2" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" - integrity sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ= - dependencies: - is-buffer "^1.1.5" - -kind-of@^6.0.0: - version "6.0.3" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" - integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== - -loader-utils@^0.2.16: - version "0.2.17" - resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-0.2.17.tgz#f86e6374d43205a6e6c60e9196f17c0299bfb348" - integrity sha1-+G5jdNQyBabmxg6RlvF8Apm/s0g= - dependencies: - big.js "^3.1.3" - emojis-list "^2.0.0" - json5 "^0.5.0" - object-assign "^4.0.1" - -lodash.camelcase@^4.3.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz#b28aa6288a2b9fc651035c7711f65ab6190331a6" - integrity sha1-soqmKIorn8ZRA1x3EfZathkDMaY= - -loggy@^1.0.8, loggy@~1.0.8: - version "1.0.8" - resolved "https://registry.yarnpkg.com/loggy/-/loggy-1.0.8.tgz#82b3717b85d9d23090dd0367acfc2abc5fa6e4fb" - integrity sha512-3gXR0rOS4fnxVXGeiQID95/IML//jSbKx5T1GatifpzpOwDoOsTtlt25gosiBq27Mn4YnbzWB/DsKncnaLWKSg== - dependencies: - colorette "~1.1" - native-notifier "~0.1.6" - -lru-cache@^7.5.1: - version "7.14.1" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-7.14.1.tgz#8da8d2f5f59827edb388e63e459ac23d6d408fea" - integrity sha512-ysxwsnTKdAx96aTRdhDOCQfDgbHnt8SK0KY8SEjO0wHinhWOFTESbjVCMPbU1uGXg/ch4lifqx0wfjOawU2+WA== - -math-random@^1.0.1: - version "1.0.4" - resolved "https://registry.yarnpkg.com/math-random/-/math-random-1.0.4.tgz#5dd6943c938548267016d4e34f057583080c514c" - integrity sha512-rUxjysqif/BZQH2yhd5Aaq7vXMSx9NdEsQcyA07uEzIvxgI7zIr33gGsh+RU0/XjmQpCW7RsVof1vlkvQVCK5A== - -micromatch@^2.1.5: - version "2.3.11" - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-2.3.11.tgz#86677c97d1720b363431d04d0d15293bd38c1565" - integrity sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU= - dependencies: - arr-diff "^2.0.0" - array-unique "^0.2.1" - braces "^1.8.2" - expand-brackets "^0.1.4" - extglob "^0.3.1" - filename-regex "^2.0.0" - is-extglob "^1.0.0" - is-glob "^2.0.1" - kind-of "^3.0.2" - normalize-path "^2.0.1" - object.omit "^2.0.0" - parse-glob "^3.0.4" - regex-cache "^0.4.2" - -mime-db@~1.33.0: - version "1.33.0" - resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.33.0.tgz#a3492050a5cb9b63450541e39d9788d2272783db" - integrity sha512-BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ== - -mime-types@2.1.18: - version "2.1.18" - resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.18.tgz#6f323f60a83d11146f831ff11fd66e2fe5503bb8" - integrity sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ== - dependencies: - mime-db "~1.33.0" - -minimatch@3.1.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" - integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== - dependencies: - brace-expansion "^1.1.7" - -minimatch@^3.0.2, minimatch@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" - integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== - dependencies: - brace-expansion "^1.1.7" - -minimist@^1.1.1, minimist@^1.2.5: - version "1.2.5" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" - integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== - -mkdirp@0.5.x: - version "0.5.5" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def" - integrity sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ== - dependencies: - minimist "^1.2.5" - -mkdirp@~1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" - integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== - -ms@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" - integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= - -ms@2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" - integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== - -native-notifier@~0.1.6: - version "0.1.6" - resolved "https://registry.yarnpkg.com/native-notifier/-/native-notifier-0.1.6.tgz#d98c306b28b327591a74f9819dac143c8e4bcd1d" - integrity sha512-BwRtjqhNsS2HpeVrNmERzQqZTFxR+MoJr/RdfCwZ0ODKyc/0EcHQhwnPwZr99gT1uHgRqbDk3C5fOo70TVYlcQ== - dependencies: - tag-shell "~0.1.0" - -ncp@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/ncp/-/ncp-2.0.0.tgz#195a21d6c46e361d2fb1281ba38b91e9df7bdbb3" - integrity sha1-GVoh1sRuNh0vsSgbo4uR6d9727M= - -nib@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/nib/-/nib-1.1.2.tgz#6a69ede4081b95c0def8be024a4c8ae0c2cbb6c7" - integrity sha1-amnt5AgblcDe+L4CSkyK4MLLtsc= - dependencies: - stylus "0.54.5" - -normalize-git-url@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/normalize-git-url/-/normalize-git-url-3.0.2.tgz#8e5f14be0bdaedb73e07200310aa416c27350fc4" - integrity sha1-jl8Uvgva7bc+ByADEKpBbCc1D8Q= - -normalize-path@^2.0.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" - integrity sha1-GrKLVW4Zg2Oowab35vogE3/mrtk= - dependencies: - remove-trailing-separator "^1.0.1" - -normalize-path@^3.0.0, normalize-path@~3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" - integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== - -object-assign@^4.0.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" - integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= - -object.omit@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/object.omit/-/object.omit-2.0.1.tgz#1a9c744829f39dbb858c76ca3579ae2a54ebd1fa" - integrity sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo= - dependencies: - for-own "^0.1.4" - is-extendable "^0.1.1" - -once@^1.3.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" - integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= - dependencies: - wrappy "1" - -options@>=0.0.5: - version "0.0.6" - resolved "https://registry.yarnpkg.com/options/-/options-0.0.6.tgz#ec22d312806bb53e731773e7cdaefcf1c643128f" - integrity sha1-7CLTEoBrtT5zF3Pnza788cZDEo8= - -parse-glob@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/parse-glob/-/parse-glob-3.0.4.tgz#b2c376cfb11f35513badd173ef0bb6e3a388391c" - integrity sha1-ssN2z7EfNVE7rdFz7wu246OIORw= - dependencies: - glob-base "^0.3.0" - is-dotfile "^1.0.0" - is-extglob "^1.0.0" - is-glob "^2.0.0" - -path-is-absolute@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" - integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= - -path-is-inside@1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53" - integrity sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM= - -path-to-regexp@2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-2.2.1.tgz#90b617025a16381a879bc82a38d4e8bdeb2bcf45" - integrity sha512-gu9bD6Ta5bwGrrU8muHzVOBFFREpp2iRkVfhBJahwJ6p6Xw20SjT0MxLnwkjOibQmGSYhiUnf2FLe7k+jcFmGQ== - -picomatch@^2.0.4, picomatch@^2.2.1: - version "2.2.3" - resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.3.tgz#465547f359ccc206d3c48e46a1bcb89bf7ee619d" - integrity sha512-KpELjfwcCDUb9PeigTs2mBJzXUPzAuP2oPcA989He8Rte0+YUAjw1JVedDhuTKPkHjSYzMN3npC9luThGYEKdg== - -postcss-modules-extract-imports@1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/postcss-modules-extract-imports/-/postcss-modules-extract-imports-1.1.0.tgz#b614c9720be6816eaee35fb3a5faa1dba6a05ddb" - integrity sha1-thTJcgvmgW6u41+zpfqh26agXds= - dependencies: - postcss "^6.0.1" - -postcss-modules-local-by-default@1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/postcss-modules-local-by-default/-/postcss-modules-local-by-default-1.2.0.tgz#f7d80c398c5a393fa7964466bd19500a7d61c069" - integrity sha1-99gMOYxaOT+nlkRmvRlQCn1hwGk= - dependencies: - css-selector-tokenizer "^0.7.0" - postcss "^6.0.1" - -postcss-modules-scope@1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/postcss-modules-scope/-/postcss-modules-scope-1.1.0.tgz#d6ea64994c79f97b62a72b426fbe6056a194bb90" - integrity sha1-1upkmUx5+XtipytCb75gVqGUu5A= - dependencies: - css-selector-tokenizer "^0.7.0" - postcss "^6.0.1" - -postcss-modules-values@1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/postcss-modules-values/-/postcss-modules-values-1.3.0.tgz#ecffa9d7e192518389f42ad0e83f72aec456ea20" - integrity sha1-7P+p1+GSUYOJ9CrQ6D9yrsRW6iA= - dependencies: - icss-replace-symbols "^1.1.0" - postcss "^6.0.1" - -postcss-modules@~1.4.1: - version "1.4.1" - resolved "https://registry.yarnpkg.com/postcss-modules/-/postcss-modules-1.4.1.tgz#8aa35bd3461db67e27377a7ce770d77b654a84ef" - integrity sha512-btTrbK+Xc3NBuYF8TPBjCMRSp5h6NoQ1iVZ6WiDQENIze6KIYCSf0+UFQuV3yJ7gRHA+4AAtF8i2jRvUpbBMMg== - dependencies: - css-modules-loader-core "^1.1.0" - generic-names "^1.0.3" - lodash.camelcase "^4.3.0" - postcss "^7.0.1" - string-hash "^1.1.1" - -postcss@6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-6.0.1.tgz#000dbd1f8eef217aa368b9a212c5fc40b2a8f3f2" - integrity sha1-AA29H47vIXqjaLmiEsX8QLKo8/I= - dependencies: - chalk "^1.1.3" - source-map "^0.5.6" - supports-color "^3.2.3" - -postcss@^6.0.1: - version "6.0.23" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-6.0.23.tgz#61c82cc328ac60e677645f979054eb98bc0e3324" - integrity sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag== - dependencies: - chalk "^2.4.1" - source-map "^0.6.1" - supports-color "^5.4.0" - -postcss@^7.0.1, postcss@~7.0.24: - version "7.0.35" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.35.tgz#d2be00b998f7f211d8a276974079f2e92b970e24" - integrity sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg== - dependencies: - chalk "^2.4.2" - source-map "^0.6.1" - supports-color "^6.1.0" - -preserve@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/preserve/-/preserve-0.2.0.tgz#815ed1f6ebc65926f865b310c0713bcb3315ce4b" - integrity sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks= - -progeny@~0.12.0: - version "0.12.0" - resolved "https://registry.yarnpkg.com/progeny/-/progeny-0.12.0.tgz#4a4c85031a00f723b580b5929932b57d587d66d2" - integrity sha512-n5rRHPP2Pxeh1fL385XNTlgyYrTm8MzG+kXO3G87+vmLU5MHouzrF4D5TRKPNfCwpE4/GOwmCS4XSzCPC7hEoA== - dependencies: - async-each "^1.0.0" - chalk "^1.1.3" - fs-mode "^1.0.1" - glob "^7.0.3" - -punycode@^1.3.2: - version "1.4.1" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" - integrity sha1-wNWmOycYgArY4esPpSachN1BhF4= - -randomatic@^3.0.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/randomatic/-/randomatic-3.1.1.tgz#b776efc59375984e36c537b2f51a1f0aff0da1ed" - integrity sha512-TuDE5KxZ0J461RVjrJZCJc+J+zCkTb1MbH9AQUq68sMhOMcy9jLcb3BrZKgp9q9Ncltdg4QVqWrH02W2EFFVYw== - dependencies: - is-number "^4.0.0" - kind-of "^6.0.0" - math-random "^1.0.1" - -range-parser@1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.0.tgz#f49be6b487894ddc40dcc94a322f611092e00d5e" - integrity sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4= - -readdirp@^3.2.0, readdirp@~3.6.0: - version "3.6.0" - resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" - integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== - dependencies: - picomatch "^2.2.1" - -regex-cache@^0.4.2: - version "0.4.4" - resolved "https://registry.yarnpkg.com/regex-cache/-/regex-cache-0.4.4.tgz#75bdc58a2a1496cec48a12835bc54c8d562336dd" - integrity sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ== - dependencies: - is-equal-shallow "^0.1.3" - -remove-trailing-separator@^1.0.1: - version "1.1.0" - resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef" - integrity sha1-wkvOKig62tW8P1jg1IJJuSN52O8= - -repeat-element@^1.1.2: - version "1.1.4" - resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.4.tgz#be681520847ab58c7568ac75fbfad28ed42d39e9" - integrity sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ== - -repeat-string@^1.5.2: - version "1.6.1" - resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" - integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc= - -resolve-url@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" - integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo= - -resolve@1.1.7: - version "1.1.7" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b" - integrity sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs= - -safer-buffer@^2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" - integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== - -sax@0.5.x: - version "0.5.8" - resolved "https://registry.yarnpkg.com/sax/-/sax-0.5.8.tgz#d472db228eb331c2506b0e8c15524adb939d12c1" - integrity sha1-1HLbIo6zMcJQaw6MFVJK25OdEsE= - -sax@~1.2.4: - version "1.2.4" - resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" - integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== - -semver@^6.3.0: - version "6.3.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" - integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== - -serve-handler@^6.1.3: - version "6.1.5" - resolved "https://registry.yarnpkg.com/serve-handler/-/serve-handler-6.1.5.tgz#a4a0964f5c55c7e37a02a633232b6f0d6f068375" - integrity sha512-ijPFle6Hwe8zfmBxJdE+5fta53fdIY0lHISJvuikXB3VYFafRjMRpOffSPvCYsbKyBA7pvy9oYr/BT1O3EArlg== - dependencies: - bytes "3.0.0" - content-disposition "0.5.2" - fast-url-parser "1.1.3" - mime-types "2.1.18" - minimatch "3.1.2" - path-is-inside "1.0.2" - path-to-regexp "2.2.1" - range-parser "1.2.0" - -since-app-start@~0.3.3: - version "0.3.3" - resolved "https://registry.yarnpkg.com/since-app-start/-/since-app-start-0.3.3.tgz#ff96d7ab0a60118283785640396ea861bfe8554c" - integrity sha512-CvVjdZvSgaUP4mMOLn8NZtYKFF2RYboEaTBKdj5F+Jm6SpCQ/kZgnMVMNHhOUgBzHusBe8aio0Gri8ci2utOXw== - dependencies: - debug "~3.1.0" - -skemata@~0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/skemata/-/skemata-0.1.2.tgz#f3c521029b67be6e0825f0df867ee97916de4530" - integrity sha1-88UhAptnvm4IJfDfhn7peRbeRTA= - dependencies: - fast-levenshtein "^1.1.3" - -source-map-resolve@^0.5.2: - version "0.5.3" - resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.3.tgz#190866bece7553e1f8f267a2ee82c606b5509a1a" - integrity sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw== - dependencies: - atob "^2.1.2" - decode-uri-component "^0.2.0" - resolve-url "^0.2.1" - source-map-url "^0.4.0" - urix "^0.1.0" - -source-map-support@~0.5.12: - version "0.5.19" - resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.19.tgz#a98b62f86dcaf4f67399648c085291ab9e8fed61" - integrity sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw== - dependencies: - buffer-from "^1.0.0" - source-map "^0.6.0" - -source-map-url@^0.4.0: - version "0.4.1" - resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.1.tgz#0af66605a745a5a2f91cf1bbf8a7afbc283dec56" - integrity sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw== - -source-map@0.1.x: - version "0.1.43" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.1.43.tgz#c24bc146ca517c1471f5dacbe2571b2b7f9e3346" - integrity sha1-wkvBRspRfBRx9drL4lcbK3+eM0Y= - dependencies: - amdefine ">=0.0.4" - -source-map@^0.5.6, source-map@~0.5: - version "0.5.7" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" - integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= - -source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.0, source-map@~0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" - integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== - -source-map@^0.7.3: - version "0.7.3" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.3.tgz#5302f8169031735226544092e64981f751750383" - integrity sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ== - -string-hash@^1.1.1: - version "1.1.3" - resolved "https://registry.yarnpkg.com/string-hash/-/string-hash-1.1.3.tgz#e8aafc0ac1855b4666929ed7dd1275df5d6c811b" - integrity sha1-6Kr8CsGFW0Zmkp7X3RJ1311sgRs= - -strip-ansi@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" - integrity sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8= - dependencies: - ansi-regex "^2.0.0" - -stylus-brunch@^3: - version "3.0.0" - resolved "https://registry.yarnpkg.com/stylus-brunch/-/stylus-brunch-3.0.0.tgz#4c31f5d1a56cdbf43899d8ce052ab78ada9aa17a" - integrity sha512-TG78EtdU8GDQuJBDDam+EUjwXkSNdB8r+CC5slWJNkq5mBnMjRgFu7pESyNpqDtqNfa6prcUcEAGQkLhUi9gVQ== - dependencies: - nib "~1.1.2" - postcss "~7.0.24" - postcss-modules "~1.4.1" - progeny "~0.12.0" - stylus "~0.54.7" - -stylus@0.54.5: - version "0.54.5" - resolved "https://registry.yarnpkg.com/stylus/-/stylus-0.54.5.tgz#42b9560931ca7090ce8515a798ba9e6aa3d6dc79" - integrity sha1-QrlWCTHKcJDOhRWnmLqeaqPW3Hk= - dependencies: - css-parse "1.7.x" - debug "*" - glob "7.0.x" - mkdirp "0.5.x" - sax "0.5.x" - source-map "0.1.x" - -stylus@~0.54.7: - version "0.54.8" - resolved "https://registry.yarnpkg.com/stylus/-/stylus-0.54.8.tgz#3da3e65966bc567a7b044bfe0eece653e099d147" - integrity sha512-vr54Or4BZ7pJafo2mpf0ZcwA74rpuYCZbxrHBsH8kbcXOwSfvBFwsRfpGO5OD5fhG5HDCFW737PKaawI7OqEAg== - dependencies: - css-parse "~2.0.0" - debug "~3.1.0" - glob "^7.1.6" - mkdirp "~1.0.4" - safer-buffer "^2.1.2" - sax "~1.2.4" - semver "^6.3.0" - source-map "^0.7.3" - -supports-color@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" - integrity sha1-U10EXOa2Nj+kARcIRimZXp3zJMc= - -supports-color@^3.2.3: - version "3.2.3" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-3.2.3.tgz#65ac0504b3954171d8a64946b2ae3cbb8a5f54f6" - integrity sha1-ZawFBLOVQXHYpklGsq48u4pfVPY= - dependencies: - has-flag "^1.0.0" - -supports-color@^5.3.0, supports-color@^5.4.0: - version "5.5.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" - integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== - dependencies: - has-flag "^3.0.0" - -supports-color@^6.1.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-6.1.0.tgz#0764abc69c63d5ac842dd4867e8d025e880df8f3" - integrity sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ== - dependencies: - has-flag "^3.0.0" - -tag-shell@~0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/tag-shell/-/tag-shell-0.1.0.tgz#e743816e6a6e805ac3735f4162e016b97a7ddfbd" - integrity sha1-50OBbmpugFrDc19BYuAWuXp9370= - -terser-brunch@^4: - version "4.0.0" - resolved "https://registry.yarnpkg.com/terser-brunch/-/terser-brunch-4.0.0.tgz#40633faff5958c00579a7e9478737f0e68034c61" - integrity sha512-bmT9+/7HHwmgCbfZ0IaX26em9d2SpyoxSiiO+xSHJU4EG0FLsk52M7bRcTF/xMaSPl9LXTVkqjgSEllFmcoUFg== - dependencies: - anymatch "^3" - terser "^4.4" - -terser@^4.4: - version "4.8.0" - resolved "https://registry.yarnpkg.com/terser/-/terser-4.8.0.tgz#63056343d7c70bb29f3af665865a46fe03a0df17" - integrity sha512-EAPipTNeWsb/3wLPeup1tVPaXfIaU68xMnVdPafIL1TV05OhASArYyIfFvnvJCNrR2NIOvDVNNTFRa+Re2MWyw== - dependencies: - commander "^2.20.0" - source-map "~0.6.1" - source-map-support "~0.5.12" - -to-regex-range@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" - integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== - dependencies: - is-number "^7.0.0" - -"true-case-path@^1.0.2": - version "1.0.3" - resolved "https://registry.yarnpkg.com/true-case-path/-/true-case-path-1.0.3.tgz#f813b5a8c86b40da59606722b144e3225799f47d" - integrity sha512-m6s2OdQe5wgpFMC+pAJ+q9djG82O2jcHPOI6RNg1yy9rCYR+WD6Nbpl32fDpfC56nirdRy+opFa/Vk7HYhqaew== - dependencies: - glob "^7.1.2" - -ultron@1.0.x: - version "1.0.2" - resolved "https://registry.yarnpkg.com/ultron/-/ultron-1.0.2.tgz#ace116ab557cd197386a4e88f4685378c8b2e4fa" - integrity sha1-rOEWq1V80Zc4ak6I9GhTeMiy5Po= - -universal-path@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/universal-path/-/universal-path-0.1.0.tgz#0fca24c936ea3d2282013d143710c06687ed0677" - integrity sha1-D8okyTbqPSKCAT0UNxDAZoftBnc= - -urix@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" - integrity sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI= - -wrappy@1, wrappy@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" - integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= - -ws@~1.1.0: - version "1.1.5" - resolved "https://registry.yarnpkg.com/ws/-/ws-1.1.5.tgz#cbd9e6e75e09fc5d2c90015f21f0c40875e0dd51" - integrity sha512-o3KqipXNUdS7wpQzBHSe180lBGO60SoK0yVo3CYJgb2MkobuWuBX6dhkYP5ORCLd55y+SaflMOV5fqAB53ux4w== - dependencies: - options ">=0.0.5" - ultron "1.0.x" - -xtend@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" - integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== -- cgit v1.2.3