From 9da8b24a75157d31e1792e74a6dcd269d0f717e9 Mon Sep 17 00:00:00 2001 From: Timon de Groot Date: Tue, 3 Jan 2023 13:17:51 +0100 Subject: [PATCH 01/51] Set redirect_from for all articles --- .../about-hypernode/hypernode-and-team-blue.md | 2 ++ .../about-hypernode/hypernode-certification-for-agencies.md | 2 ++ .../about-hypernode/hypernode-pricing-plans.md | 2 ++ .../upgrade-to-debian-buster-technical-implications.md | 5 +++++ .../what-kind-of-emails-does-hypernode-send.md | 2 ++ .../about-hypernode/which-cloud-providers-do-we-use.md | 2 ++ .../billing/billing-faq-for-the-control-panel.md | 2 ++ .../billing/billing-faq-for-the-service-panel.md | 2 ++ .../billing/control-panel-billing-facturen-faq-dutch.md | 5 +++++ docs/about-hypernode/billing/how-to-cancel-your-plan.md | 2 ++ .../billing/how-to-choose-and-order-a-hypernode-plan.md | 2 ++ .../billing/how-to-up-or-downgrade-your-hypernode-plan.md | 2 ++ docs/about-hypernode/billing/our-payment-service-provider.md | 2 ++ .../supported-payment-methods-in-the-control-panel.md | 2 ++ .../security-policies/hypernode-security-statement.md | 2 ++ .../one-of-your-magento-extensions-is-vulnerable.md | 2 ++ .../security-policies/responsible-disclosure-policy.md | 2 ++ .../security-policies/security-hall-of-fame.md | 2 ++ ...hat-you-need-to-know-about-the-geo-blocking-regulation.md | 2 ++ docs/about-hypernode/support/24-7-monitoring-and-alerting.md | 2 ++ .../support/conflict-between-merchant-and-webdesigner.md | 2 ++ .../support/emergency-support-outside-office-hours.md | 2 ++ docs/about-hypernode/support/scope-of-support.md | 5 +++++ ...-create-a-backup-and-download-it-to-your-local-machine.md | 5 +++++ .../cdn/how-to-use-cloudflare-with-hypernode.md | 2 ++ .../database/how-to-run-rabbitmq-on-hypernode.md | 2 ++ .../database/how-to-use-heidisql-on-hypernode.md | 2 ++ ...-an-autoresponder-out-of-office-for-your-email-address.md | 2 ++ docs/best-practices/email/how-to-export-your-emails.md | 2 ++ docs/best-practices/email/how-to-find-the-mail-headers.md | 2 ++ ...revent-spam-being-sent-from-your-name-or-email-address.md | 2 ++ .../email/how-to-prevent-your-email-being-marked-as-spam.md | 2 ++ docs/best-practices/email/how-to-use-e-mail-on-hypernode.md | 2 ++ .../performance/how-to-enable-pagespeed-booster.md | 2 ++ ...how-to-find-your-performance-bottleneck-with-new-relic.md | 2 ++ ...-to-fix-performance-issues-caused-by-bots-and-crawlers.md | 2 ++ .../performance/how-to-improve-your-magento-search.md | 2 ++ .../how-to-optimize-the-performance-of-your-magento-shop.md | 2 ++ .../performance/how-to-optimize-your-images.md | 2 ++ ...-use-blackfire-on-hypernode-to-find-performance-issues.md | 2 ++ docs/best-practices/pwa/hypernode-and-pwa-hosting.md | 2 ++ .../security/how-does-hypernode-handle-ddos-attacks.md | 2 ++ .../security/how-hypernode-protects-your-magento-shop.md | 5 +++++ docs/best-practices/security/how-to-apply-magento-patches.md | 2 ++ .../how-to-fix-malicious-javascript-credit-card-hijack.md | 2 ++ ...lnerabilty-apsb22-12-cve-2022-24086-and-cve-2022-24087.md | 5 +++++ ...-to-install-magento-patch-supee-8788-and-release-1-9-3.md | 2 ++ .../how-to-protect-magento-against-brute-force-attacks.md | 5 +++++ .../security/how-to-recover-a-hacked-magento-shop.md | 2 ++ .../security/how-to-scan-your-hypernode-for-malware.md | 2 ++ .../security/how-to-secure-magento-cacheleak.md | 2 ++ .../how-to-secure-your-data-using-encryption-and-hashing.md | 2 ++ .../security/how-to-use-a-cloud-firewall-on-hypernode.md | 5 +++++ .../security/hypernodes-not-vulnerable-for-cve-2021-4034.md | 5 +++++ .../what-you-need-to-know-about-the-visbot-malware.md | 2 ++ .../testing/how-to-check-if-everything-works.md | 2 ++ .../testing/how-to-go-live-with-your-hypernode.md | 2 ++ .../how-to-test-your-website-by-changing-your-hosts-file.md | 2 ++ docs/best-practices/testing/hypernode-docker.md | 2 ++ .../testing/zero-downtime-deployment-on-hypernode.md | 2 ++ .../usage/how-to-handle-composer-memory-issues.md | 5 +++++ ...to-install-wordpress-next-to-your-magento-installation.md | 2 ++ .../akeneo/how-to-install-akeneo-3-on-hypernode.md | 2 ++ .../akeneo/how-to-install-akeneo-4-on-hypernode.md | 2 ++ .../akeneo/how-to-install-akeneo-5-on-hypernode.md | 2 ++ .../akeneo/how-to-install-akeneo-6-on-hypernode.md | 5 +++++ .../how-to-use-a-basic-staging-environment-with-akeneo-3.md | 2 ++ ...to-use-a-basic-staging-environment-with-akeneo-4-and-5.md | 2 ++ .../magento-1/how-to-change-the-base-url-in-magento-1-x.md | 2 ++ .../magento-1/how-to-clean-the-magento-1-x-logs.md | 2 ++ .../magento-1/how-to-configure-redis-for-magento-1.md | 2 ++ .../magento-1/how-to-configure-varnish-for-magento-1-x.md | 2 ++ .../how-to-create-a-robots-txt-for-your-magento-1-shop.md | 2 ++ .../magento-1/how-to-create-a-sitemap-xml-for-magento-1-x.md | 2 ++ .../magento-1/how-to-enable-clean-urls-for-magento.md | 2 ++ .../how-to-enable-mysql-query-logging-for-magento-1-x.md | 2 ++ .../magento-1/how-to-enable-the-magento-1-api.md | 2 ++ .../how-to-enable-the-maintenance-mode-in-magento-1.md | 2 ++ ...-wsdl-couldnt-load-from-failed-to-load-external-entity.md | 4 +++- .../magento-1/how-to-flush-the-magento-1-x-caches.md | 2 ++ .../magento-1/how-to-flush-the-wsdl-cache.md | 2 ++ .../magento-1/how-to-install-magento-1-on-hypernode.md | 2 ++ .../magento-1/how-to-remove-your-magento-1-x-installation.md | 2 ++ .../how-to-reset-your-magento-1-x-admin-password.md | 2 ++ .../magento-1/how-to-set-magento-1-x-to-the-utc-timezone.md | 2 ++ .../how-to-set-the-return-path-for-a-magento-1-shop.md | 2 ++ .../how-to-set-up-a-staging-environment-for-magento-1.md | 2 ++ .../magento-2/how-to-change-your-magento-2-base-urls.md | 2 ++ .../magento-2/how-to-configure-redis-for-magento-2.md | 2 ++ .../magento-2/how-to-configure-varnish-for-magento-2-x.md | 2 ++ .../magento-2/how-to-create-a-robots-txt-for-magento-2-x.md | 2 ++ .../magento-2/how-to-create-a-sitemap-xml-for-magento-2-x.md | 2 ++ .../magento-2/how-to-enable-the-magento-2-api.md | 2 ++ .../how-to-enable-the-magento-2-web-setup-wizard.md | 2 ++ .../how-to-enable-the-maintenance-mode-in-magento-2.md | 2 ++ ...the-general-error-1030-got-error-1-from-storage-engine.md | 2 ++ .../magento-2/how-to-flush-the-magento-2-x-caches.md | 2 ++ .../magento-2/how-to-install-magento-2-on-hypernode.md | 2 ++ ...how-to-optimize-magento-2-queue-consumers-on-hypernode.md | 2 ++ .../magento-2/how-to-protect-the-magento-2-api.md | 5 +++++ .../magento-2/how-to-remove-your-magento-2-x-installation.md | 2 ++ .../how-to-reset-your-magento-2-x-admin-password.md | 2 ++ .../magento-2/how-to-set-magento-2-x-to-the-utc-timezone.md | 2 ++ .../how-to-set-mysql-variables-globally-on-hypernode.md | 2 ++ .../how-to-set-the-return-path-for-a-magento-2-shop.md | 2 ++ ...ow-to-set-up-a-basic-staging-environment-for-magento-2.md | 2 ++ .../magento-2/how-to-set-up-smart-404-handling.md | 2 ++ .../magento-2/how-to-update-magento-2.md | 2 ++ ...-the-timezone-for-the-order-timestamps-in-shopware-5-x.md | 5 +++++ .../shopware-5/how-to-change-the-timezone-in-shopware-5-x.md | 2 ++ .../shopware-5/how-to-configure-shopware-caching.md | 2 ++ .../shopware-5/how-to-configure-varnish-for-shopware-5.md | 2 ++ .../shopware-5/how-to-host-shopware-on-hypernode.md | 2 ++ .../how-to-install-shopware-5-on-hypernode-docker.md | 2 ++ .../shopware-5/how-to-install-shopware-5-on-hypernode.md | 2 ++ .../shopware-5/how-to-setup-a-multistore-in-shopware.md | 2 ++ .../how-to-use-a-basic-staging-environment-with-shopware.md | 2 ++ .../shopware-6/how-to-configure-redis-for-shopware-6.md | 5 +++++ .../shopware-6/how-to-configure-varnish-for-shopware-6.md | 5 +++++ .../how-to-install-shopware-6-on-hypernode-docker.md | 2 ++ .../shopware-6/how-to-install-shopware-6-on-hypernode.md | 2 ++ ...how-to-use-a-basic-staging-environment-with-shopware-6.md | 2 ++ ...issue-accessing-shopware-6-admin-on-a-development-plan.md | 5 +++++ .../woocommerce/how-to-install-woocommerce-on-hypernode.md | 5 +++++ .../how-to-get-started-with-your-hypernode-trial.md | 2 ++ .../how-to-order/how-to-order-a-domain-presence-plan.md | 2 ++ .../backups/how-to-restore-your-hypernode-from-a-snapshot.md | 2 ++ docs/hypernode-platform/backups/hypernode-backup-policy.md | 2 ++ docs/hypernode-platform/dns/dns-for-service-panel-users.md | 2 ++ .../dns/how-to-manage-your-dns-settings-for-hypernode.md | 2 ++ .../dns/how-to-set-up-your-spf-records-for-hypernode.md | 2 ++ docs/hypernode-platform/dns/your-dns-is-misconfigured.md | 2 ++ .../how-to-activate-a-virus-filter-for-your-email-box.md | 2 ++ .../email/how-to-configure-the-spam-filter.md | 2 ++ .../email/how-to-manage-your-email-queue.md | 2 ++ .../email/how-to-set-up-your-dns-for-outgoing-email.md | 2 ++ .../email/how-to-set-up-your-dns-for-using-office365.md | 2 ++ docs/hypernode-platform/email/how-to-use-dmarc.md | 2 ++ .../email/policy-for-sending-email-on-hypernode.md | 2 ++ docs/hypernode-platform/email/spam-run-via-your-website.md | 2 ++ .../ftp/how-to-configure-ftp-sftp-on-hypernode.md | 2 ++ .../mysql/how-to-configure-a-large-mysql-thread-stack.md | 2 ++ .../mysql/how-to-free-disk-space-from-mysql-ibdata1.md | 2 ++ .../mysql/how-to-use-mysql-on-hypernode.md | 2 ++ docs/hypernode-platform/mysql/how-to-use-phpmyadmin.md | 2 ++ .../basic-authentication-on-hypernode-development-plans.md | 2 ++ .../how-to-add-custom-http-headers-to-a-file-or-location.md | 2 ++ .../nginx/how-to-block-allow-ip-addresses-in-nginx.md | 2 ++ .../nginx/how-to-block-spammers-and-scanners.md | 2 ++ .../nginx/how-to-block-user-agents-and-referrer-sites.md | 2 ++ .../how-to-block-your-webshop-for-specific-countries.md | 2 ++ .../nginx/how-to-configure-nginx-for-a-multistore.md | 2 ++ .../nginx/how-to-configure-your-shop-to-only-use-https.md | 2 ++ ...create-a-reusable-config-to-include-in-custom-snippets.md | 2 ++ .../nginx/how-to-deny-access-to-locations-and-directories.md | 2 ++ ...e-the-top-10-visitors-by-parsing-the-nginx-access-logs.md | 2 ++ ...to-protect-your-magento-store-with-a-password-in-nginx.md | 2 ++ .../nginx/how-to-redirect-from-or-to-www.md | 2 ++ ...to-resolve-rate-limited-requests-429-too-many-requests.md | 2 ++ .../nginx/how-to-restrict-access-to-your-admin-area.md | 2 ++ .../how-to-rewrite-a-trailing-slash-for-seo-purposes.md | 2 ++ .../nginx/how-to-set-the-server-name-in-nginx.md | 2 ++ ...-speed-up-your-magento-shop-by-tuning-gzip-compression.md | 2 ++ ...ck-requests-to-sql-and-archive-files-on-your-hypernode.md | 2 ++ docs/hypernode-platform/nginx/how-to-use-nginx.md | 2 ++ docs/hypernode-platform/nginx/hypernode-managed-vhosts.md | 2 ++ docs/hypernode-platform/php/how-to-flush-the-php-opcache.md | 2 ++ docs/hypernode-platform/php/how-to-override-php-settings.md | 2 ++ .../php/how-to-resolve-502-gateway-errors.md | 2 ++ ...orted-php-versions-and-how-to-change-them-on-hypernode.md | 2 ++ .../php/what-limits-apply-to-active-php-requests-per-ip.md | 2 ++ .../ssh/how-to-log-in-to-the-hypernode-with-ssh.md | 2 ++ .../ssh/how-to-use-ssh-keys-on-hypernode.md | 2 ++ .../ssl/how-to-upgrade-your-ssl-settings-to-an-a.md | 2 ++ .../ssl/how-to-use-lets-encrypt-on-hypernode.md | 2 ++ ...cates-on-your-hypernode-when-ordered-via-hypernode-com.md | 2 ++ ...icates-on-your-hypernode-when-ordered-via-hypernode-nl.md | 2 ++ ...tificate-and-more-frequently-asked-questions-about-ssl.md | 2 ++ ...w-to-configure-automatic-logfile-rotation-on-hypernode.md | 5 +++++ .../tools/how-to-configure-automatic-logfile-rotation.md | 2 ++ docs/hypernode-platform/tools/how-to-configure-lesti-fpc.md | 2 ++ .../tools/how-to-copy-your-hypernode-to-another-hypernode.md | 5 +++++ ...w-to-deploy-your-application-using-hypernode-deploy-v1.md | 5 +++++ .../hypernode-platform/tools/how-to-flush-the-redis-cache.md | 2 ++ .../tools/how-to-flush-the-varnish-cache.md | 2 ++ docs/hypernode-platform/tools/how-to-free-up-disk-space.md | 2 ++ .../tools/how-to-migrate-your-shop-to-hypernode.md | 2 ++ ...ror-oom-command-not-allowed-when-used-memory-maxmemory.md | 4 +++- .../tools/how-to-use-composer-2-on-your-hypernode.md | 5 +++++ .../tools/how-to-use-elasticsearch-on-hypernode.md | 2 ++ .../tools/how-to-use-hypernode-development-plans.md | 2 ++ .../tools/how-to-use-magento-corediff-on-hypernode.md | 2 ++ .../tools/how-to-use-mailhog-on-hypernode.md | 2 ++ .../tools/how-to-use-node-js-and-npm-on-hypernode.md | 2 ++ .../tools/how-to-use-periodic-tasks-cronjobs-on-hypernode.md | 2 ++ docs/hypernode-platform/tools/how-to-use-supervisor.md | 2 ++ .../tools/how-to-use-the-hypernode-systemctl-cli-tool.md | 2 ++ docs/hypernode-platform/tools/hypernode-brancher.md | 5 +++++ .../tools/hypernode-cli-tools-and-magerun-plugins.md | 2 ++ .../tools/installation-and-configuration-of-pm2.md | 5 +++++ .../tools/unblocking-and-accessing-magmi-for-hypernode.md | 2 ++ .../varnish/how-to-enable-varnish-on-hypernode.md | 5 +++++ .../control-panel/different-control-panel-scenarios.md | 2 ++ docs/services/control-panel/edit-personal-settings.md | 2 ++ .../control-panel/how-to-add-keys-to-the-ssh-key-manager.md | 2 ++ .../control-panel/how-to-change-your-hypernode-settings.md | 2 ++ .../control-panel/how-to-change-your-plan-via-the-cli.md | 5 +++++ .../how-to-link-your-domain-to-your-hypernode.md | 2 ++ ...order-a-hypernode-and-transfer-ownership-to-a-customer.md | 2 ++ .../control-panel/how-to-schedule-an-up-or-downgrade.md | 5 +++++ ...transfer-ownership-of-a-hypernode-in-the-control-panel.md | 2 ++ .../control-panel/how-to-use-2fa-on-the-control-panel.md | 5 +++++ docs/services/control-panel/how-to-use-teams.md | 2 ++ docs/services/control-panel/how-to-use-the-dns-check.md | 2 ++ ...user-roles-and-permissions-on-hypernodes-control-panel.md | 2 ++ .../control-panel/using-logs-in-the-control-panel.md | 2 ++ .../everything-about-presence-plans-and-domains.md | 2 ++ .../domain-procedures/extension-specific-info-per-domain.md | 5 +++++ .../how-to-transfer-your-domain-away-from-hypernode.md | 5 +++++ ...fer-your-domain-name-to-another-provider-service-panel.md | 2 ++ .../how-to-undo-the-cancellation-of-a-domain-name.md | 2 ++ .../how-to-use-domains-in-the-control-panel.md | 5 +++++ docs/services/magereport/magereport-premium.md | 2 ++ .../service-panel/different-service-panel-scenarios.md | 2 ++ ...ow-to-change-your-customer-details-and-other-questions.md | 2 ++ .../service-panel/how-to-log-into-the-service-panel.md | 2 ++ .../service-panel/how-to-use-2fa-on-the-service-panel.md | 2 ++ docs/troubleshooting/performance/general-troubleshooting.md | 2 ++ .../how-to-block-bad-bots-via-the-control-panel.md | 2 ++ .../how-to-block-bad-bots-via-the-service-panel.md | 2 ++ .../performance/how-to-check-why-my-site-is-slow.md | 2 ++ .../performance/how-to-debug-out-of-memory-oom-events.md | 2 ++ .../performance/how-to-fix-invalid-form-key-error.md | 2 ++ .../how-to-identify-and-stop-long-running-processes.md | 2 ++ .../performance/how-to-implement-pagespeed-booster.md | 2 ++ .../how-to-optimise-your-magento-disk-performance.md | 2 ++ .../how-to-resolve-a-413-request-entity-too-large-error.md | 5 +++++ ...t-controller-reached-100-router-match-iterations-error.md | 2 ++ .../how-to-spot-slow-extensions-using-the-php-slow-logs.md | 2 ++ ...how-to-use-the-mysql-slow-queries-in-the-control-panel.md | 2 ++ 240 files changed, 575 insertions(+), 2 deletions(-) diff --git a/docs/about-hypernode/about-hypernode/hypernode-and-team-blue.md b/docs/about-hypernode/about-hypernode/hypernode-and-team-blue.md index e8266be1..aca76c8e 100644 --- a/docs/about-hypernode/about-hypernode/hypernode-and-team-blue.md +++ b/docs/about-hypernode/about-hypernode/hypernode-and-team-blue.md @@ -3,6 +3,8 @@ myst: html_meta: description: Hypernode is part of team.blue, a leading digital enabler for companies and entrepreneurs. +redirect_from: +- /en/about/about-us/hypernode-and-team-blue/ --- diff --git a/docs/about-hypernode/about-hypernode/hypernode-certification-for-agencies.md b/docs/about-hypernode/about-hypernode/hypernode-certification-for-agencies.md index 9b17ae98..c0fe9891 100644 --- a/docs/about-hypernode/about-hypernode/hypernode-certification-for-agencies.md +++ b/docs/about-hypernode/about-hypernode/hypernode-certification-for-agencies.md @@ -4,6 +4,8 @@ myst: description: This article explains the importance of a Hypernode certification for Magento developers and retailers and how you can become a Hypernode Certified Agency. +redirect_from: +- /en/about/about-us/hypernode-certification-for-agencies/ --- diff --git a/docs/about-hypernode/about-hypernode/hypernode-pricing-plans.md b/docs/about-hypernode/about-hypernode/hypernode-pricing-plans.md index 7bda500e..cc09cc39 100644 --- a/docs/about-hypernode/about-hypernode/hypernode-pricing-plans.md +++ b/docs/about-hypernode/about-hypernode/hypernode-pricing-plans.md @@ -2,6 +2,8 @@ myst: html_meta: description: Which hosting plans and pricing does Hypernode offer. +redirect_from: +- /en/support/solutions/articles/48001228422-hypernode-pricing-plans/ --- diff --git a/docs/about-hypernode/about-hypernode/upgrade-to-debian-buster-technical-implications.md b/docs/about-hypernode/about-hypernode/upgrade-to-debian-buster-technical-implications.md index 587790eb..b7a22683 100644 --- a/docs/about-hypernode/about-hypernode/upgrade-to-debian-buster-technical-implications.md +++ b/docs/about-hypernode/about-hypernode/upgrade-to-debian-buster-technical-implications.md @@ -1,3 +1,8 @@ +--- +redirect_from: +- /en/about/about-us/upgrade-to-debian-buster-technical-implications/ +--- + # Upgrade to Debian Buster: Technical Implications diff --git a/docs/about-hypernode/about-hypernode/what-kind-of-emails-does-hypernode-send.md b/docs/about-hypernode/about-hypernode/what-kind-of-emails-does-hypernode-send.md index e132045c..df8a5964 100644 --- a/docs/about-hypernode/about-hypernode/what-kind-of-emails-does-hypernode-send.md +++ b/docs/about-hypernode/about-hypernode/what-kind-of-emails-does-hypernode-send.md @@ -3,6 +3,8 @@ myst: html_meta: description: Hypernode sends out different kinds of emails to spread information. In this article you can find which ones we send and why. +redirect_from: +- /en/about/about-us/what-kind-of-emails-does-hypernode-send/ --- diff --git a/docs/about-hypernode/about-hypernode/which-cloud-providers-do-we-use.md b/docs/about-hypernode/about-hypernode/which-cloud-providers-do-we-use.md index 262a6e20..c6ecaf5d 100644 --- a/docs/about-hypernode/about-hypernode/which-cloud-providers-do-we-use.md +++ b/docs/about-hypernode/about-hypernode/which-cloud-providers-do-we-use.md @@ -4,6 +4,8 @@ myst: description: The Hypernode platform is developed independently from a specific cloud provider, which allows us to choose only the best. Read here which providers we use. +redirect_from: +- /en/about/about-us/which-cloud-providers-do-we-use/ --- diff --git a/docs/about-hypernode/billing/billing-faq-for-the-control-panel.md b/docs/about-hypernode/billing/billing-faq-for-the-control-panel.md index 85b5a7aa..cd63bb9d 100644 --- a/docs/about-hypernode/billing/billing-faq-for-the-control-panel.md +++ b/docs/about-hypernode/billing/billing-faq-for-the-control-panel.md @@ -3,6 +3,8 @@ myst: html_meta: description: Every first of the month, we send an invoice to our customers. You can easily find all invoices that have been sent in the Control Panel. +redirect_from: +- /en/about/billing/billing-faq-for-the-control-panel/ --- diff --git a/docs/about-hypernode/billing/billing-faq-for-the-service-panel.md b/docs/about-hypernode/billing/billing-faq-for-the-service-panel.md index 092f859d..fafe1cc6 100644 --- a/docs/about-hypernode/billing/billing-faq-for-the-service-panel.md +++ b/docs/about-hypernode/billing/billing-faq-for-the-service-panel.md @@ -3,6 +3,8 @@ myst: html_meta: description: 'Read all frequently asked questions about billing and their answers within this article. ' +redirect_from: +- /en/about/billing/billing-faq-for-the-service-panel/ --- diff --git a/docs/about-hypernode/billing/control-panel-billing-facturen-faq-dutch.md b/docs/about-hypernode/billing/control-panel-billing-facturen-faq-dutch.md index 3f43ae52..cc627aa1 100644 --- a/docs/about-hypernode/billing/control-panel-billing-facturen-faq-dutch.md +++ b/docs/about-hypernode/billing/control-panel-billing-facturen-faq-dutch.md @@ -1,3 +1,8 @@ +--- +redirect_from: +- /en/about/billing/migration-faq/ +--- + # Control Panel Billing / Facturen FAQ (Dutch) diff --git a/docs/about-hypernode/billing/how-to-cancel-your-plan.md b/docs/about-hypernode/billing/how-to-cancel-your-plan.md index 8ea0c2c6..a6ebc243 100644 --- a/docs/about-hypernode/billing/how-to-cancel-your-plan.md +++ b/docs/about-hypernode/billing/how-to-cancel-your-plan.md @@ -3,6 +3,8 @@ myst: html_meta: description: 'You can cancel your Hypernode subscription anytime you want. Read more about how to do so in this article. ' +redirect_from: +- /en/about/billing/how-to-cancel-your-hypernode-plan/ --- diff --git a/docs/about-hypernode/billing/how-to-choose-and-order-a-hypernode-plan.md b/docs/about-hypernode/billing/how-to-choose-and-order-a-hypernode-plan.md index 7efdd45e..982579fa 100644 --- a/docs/about-hypernode/billing/how-to-choose-and-order-a-hypernode-plan.md +++ b/docs/about-hypernode/billing/how-to-choose-and-order-a-hypernode-plan.md @@ -3,6 +3,8 @@ myst: html_meta: description: 'Hypernode is a unique e-commerce platform for your Magento or Shopware shop. Read all about our different hosting solutions in this article. ' +redirect_from: +- /en/about/billing/how-to-choose-and-order-a-hypernode-plan/ --- diff --git a/docs/about-hypernode/billing/how-to-up-or-downgrade-your-hypernode-plan.md b/docs/about-hypernode/billing/how-to-up-or-downgrade-your-hypernode-plan.md index 192182ca..30f08a42 100644 --- a/docs/about-hypernode/billing/how-to-up-or-downgrade-your-hypernode-plan.md +++ b/docs/about-hypernode/billing/how-to-up-or-downgrade-your-hypernode-plan.md @@ -4,6 +4,8 @@ myst: description: 'When dealing with visitor peaks, during holidays for example, you might want to take precautions and upgrade a bigger Hypernode plan. Read here how to do so. ' +redirect_from: +- /en/about/billing/how-to-up-or-downgrade-your-hypernode-plan/ --- diff --git a/docs/about-hypernode/billing/our-payment-service-provider.md b/docs/about-hypernode/billing/our-payment-service-provider.md index f1b96bd6..9251583c 100644 --- a/docs/about-hypernode/billing/our-payment-service-provider.md +++ b/docs/about-hypernode/billing/our-payment-service-provider.md @@ -3,6 +3,8 @@ myst: html_meta: description: In our Control Panel we use Chargebee as our payment service provider and Stripe as the payment gateway. +redirect_from: +- /en/about/billing/our-payment-service-provider/ --- diff --git a/docs/about-hypernode/billing/supported-payment-methods-in-the-control-panel.md b/docs/about-hypernode/billing/supported-payment-methods-in-the-control-panel.md index 3dffef02..ede6354c 100644 --- a/docs/about-hypernode/billing/supported-payment-methods-in-the-control-panel.md +++ b/docs/about-hypernode/billing/supported-payment-methods-in-the-control-panel.md @@ -3,6 +3,8 @@ myst: html_meta: description: Read what payment methods are supported for the Hypernode Control Panel here +redirect_from: +- /en/about/billing/supported-payment-methods-in-the-control-panel/ --- diff --git a/docs/about-hypernode/security-policies/hypernode-security-statement.md b/docs/about-hypernode/security-policies/hypernode-security-statement.md index cd0f7a71..7bdd666b 100644 --- a/docs/about-hypernode/security-policies/hypernode-security-statement.md +++ b/docs/about-hypernode/security-policies/hypernode-security-statement.md @@ -3,6 +3,8 @@ myst: html_meta: description: 'An overview of Hypernode security policies and information security certification can be found in this article. ' +redirect_from: +- /en/about/security/hypernode-security-statement/ --- diff --git a/docs/about-hypernode/security-policies/one-of-your-magento-extensions-is-vulnerable.md b/docs/about-hypernode/security-policies/one-of-your-magento-extensions-is-vulnerable.md index a5b582ef..2e331848 100644 --- a/docs/about-hypernode/security-policies/one-of-your-magento-extensions-is-vulnerable.md +++ b/docs/about-hypernode/security-policies/one-of-your-magento-extensions-is-vulnerable.md @@ -4,6 +4,8 @@ myst: description: Find an overview of the consequences and ways to fix things, when receiving a warning that one of the extensions in your Magento shop is vulnerable here. +redirect_from: +- /en/about/security/one-of-your-magento-extensions-is-vulnerable/ --- diff --git a/docs/about-hypernode/security-policies/responsible-disclosure-policy.md b/docs/about-hypernode/security-policies/responsible-disclosure-policy.md index 57b99b5c..2f4b57a9 100644 --- a/docs/about-hypernode/security-policies/responsible-disclosure-policy.md +++ b/docs/about-hypernode/security-policies/responsible-disclosure-policy.md @@ -3,6 +3,8 @@ myst: html_meta: description: We take the security of our servers very serious. This policy offers a way to safely report possible security issues to us. +redirect_from: +- /en/about/security/responsible-disclosure-policy/ --- diff --git a/docs/about-hypernode/security-policies/security-hall-of-fame.md b/docs/about-hypernode/security-policies/security-hall-of-fame.md index 0ecf83b2..a9dd9ffe 100644 --- a/docs/about-hypernode/security-policies/security-hall-of-fame.md +++ b/docs/about-hypernode/security-policies/security-hall-of-fame.md @@ -3,6 +3,8 @@ myst: html_meta: description: A list of security researchers we have worked with, that responsibly disclosed vulnerabilities to us. +redirect_from: +- /en/about/security/hall-of-fame/ --- diff --git a/docs/about-hypernode/security-policies/what-you-need-to-know-about-the-geo-blocking-regulation.md b/docs/about-hypernode/security-policies/what-you-need-to-know-about-the-geo-blocking-regulation.md index f29201f1..64ebc3e6 100644 --- a/docs/about-hypernode/security-policies/what-you-need-to-know-about-the-geo-blocking-regulation.md +++ b/docs/about-hypernode/security-policies/what-you-need-to-know-about-the-geo-blocking-regulation.md @@ -3,6 +3,8 @@ myst: html_meta: description: 'Learn all about GEO-Blocking regulations and its most important rules in this article. ' +redirect_from: +- /en/about/security/what-you-need-to-know-about-the-geo-blocking-regulation/ --- diff --git a/docs/about-hypernode/support/24-7-monitoring-and-alerting.md b/docs/about-hypernode/support/24-7-monitoring-and-alerting.md index 68b385ea..cf2fa93b 100644 --- a/docs/about-hypernode/support/24-7-monitoring-and-alerting.md +++ b/docs/about-hypernode/support/24-7-monitoring-and-alerting.md @@ -4,6 +4,8 @@ myst: description: To ensure the highest possible stability, our experts monitor your Hypernode 24 hours a day, 7 days a week. Read more about our monitoring in this article. +redirect_from: +- /en/about/support/24-7-monitoring-and-alerting/ --- diff --git a/docs/about-hypernode/support/conflict-between-merchant-and-webdesigner.md b/docs/about-hypernode/support/conflict-between-merchant-and-webdesigner.md index 6a00d1b1..60b8829d 100644 --- a/docs/about-hypernode/support/conflict-between-merchant-and-webdesigner.md +++ b/docs/about-hypernode/support/conflict-between-merchant-and-webdesigner.md @@ -3,6 +3,8 @@ myst: html_meta: description: What to do when a conflict arises between a Registrant (domain name holder) and the web designer / developer (Contractor and / or Technical administrator)? +redirect_from: +- /en/about/support/conflict-between-merchant-and-webdesigner/ --- diff --git a/docs/about-hypernode/support/emergency-support-outside-office-hours.md b/docs/about-hypernode/support/emergency-support-outside-office-hours.md index 66ea4f63..2de8328a 100644 --- a/docs/about-hypernode/support/emergency-support-outside-office-hours.md +++ b/docs/about-hypernode/support/emergency-support-outside-office-hours.md @@ -3,6 +3,8 @@ myst: html_meta: description: 'When experiencing a business-critical disruption on your web shop, you can use our Hypernode Emergency Support service for help. ' +redirect_from: +- /en/about/support/emergency-support-outside-office-hours-/ --- diff --git a/docs/about-hypernode/support/scope-of-support.md b/docs/about-hypernode/support/scope-of-support.md index d880300b..4339ca2c 100644 --- a/docs/about-hypernode/support/scope-of-support.md +++ b/docs/about-hypernode/support/scope-of-support.md @@ -1,3 +1,8 @@ +--- +redirect_from: +- /en/about/support/scope-of-support/ +--- + # Scope of Support diff --git a/docs/best-practices/backups/how-to-create-a-backup-and-download-it-to-your-local-machine.md b/docs/best-practices/backups/how-to-create-a-backup-and-download-it-to-your-local-machine.md index 30dd53ed..7b6c6c0f 100644 --- a/docs/best-practices/backups/how-to-create-a-backup-and-download-it-to-your-local-machine.md +++ b/docs/best-practices/backups/how-to-create-a-backup-and-download-it-to-your-local-machine.md @@ -1,3 +1,8 @@ +--- +redirect_from: +- /en/support/solutions/articles/48001208755-how-to-create-a-backup-and-download-it-to-your-local-machine/ +--- + # How to Create a Backup and Download it to Your Local Machine diff --git a/docs/best-practices/cdn/how-to-use-cloudflare-with-hypernode.md b/docs/best-practices/cdn/how-to-use-cloudflare-with-hypernode.md index d42a5881..52afe00e 100644 --- a/docs/best-practices/cdn/how-to-use-cloudflare-with-hypernode.md +++ b/docs/best-practices/cdn/how-to-use-cloudflare-with-hypernode.md @@ -3,6 +3,8 @@ myst: html_meta: description: Hypernodes are fully configured and support Cloudflare out of the box. Read here how to use them. +redirect_from: +- /en/best-practices/cdn/how-to-use-cloudflare-with-hypernode/ --- diff --git a/docs/best-practices/database/how-to-run-rabbitmq-on-hypernode.md b/docs/best-practices/database/how-to-run-rabbitmq-on-hypernode.md index bfa1224c..dbcf6d34 100644 --- a/docs/best-practices/database/how-to-run-rabbitmq-on-hypernode.md +++ b/docs/best-practices/database/how-to-run-rabbitmq-on-hypernode.md @@ -3,6 +3,8 @@ myst: html_meta: description: RabbitMQ is message-queueing software where queues running in the background can be defined. Read here how to use it on Hypernode. +redirect_from: +- /en/best-practices/database/how-to-run-rabbitmq-on-hypernode/ --- diff --git a/docs/best-practices/database/how-to-use-heidisql-on-hypernode.md b/docs/best-practices/database/how-to-use-heidisql-on-hypernode.md index 0e707717..3300c575 100644 --- a/docs/best-practices/database/how-to-use-heidisql-on-hypernode.md +++ b/docs/best-practices/database/how-to-use-heidisql-on-hypernode.md @@ -4,6 +4,8 @@ myst: description: HeidiSQL is a reliable tool designed for web developers using the MySQL server, Microsoft SQL databases and PostgreSQL. Find here how to use it on Hypernode. +redirect_from: +- /en/best-practices/database/how-to-use-heidisql-on-hypernode/ --- diff --git a/docs/best-practices/email/how-to-enable-an-autoresponder-out-of-office-for-your-email-address.md b/docs/best-practices/email/how-to-enable-an-autoresponder-out-of-office-for-your-email-address.md index 7ee7eb57..0d9a17b7 100644 --- a/docs/best-practices/email/how-to-enable-an-autoresponder-out-of-office-for-your-email-address.md +++ b/docs/best-practices/email/how-to-enable-an-autoresponder-out-of-office-for-your-email-address.md @@ -3,6 +3,8 @@ myst: html_meta: description: Read how you can create an autoresponder for your email address in this article +redirect_from: +- /en/best-practices/email/how-to-enable-an-autoresponder-out-of-office-for-your-email-address/ --- diff --git a/docs/best-practices/email/how-to-export-your-emails.md b/docs/best-practices/email/how-to-export-your-emails.md index 7a9a234a..c3fb5218 100644 --- a/docs/best-practices/email/how-to-export-your-emails.md +++ b/docs/best-practices/email/how-to-export-your-emails.md @@ -4,6 +4,8 @@ myst: description: In this article we explain how you can export your email with a number of common email clients (such as Outlook and Mac Mail) and our own webmail application. +redirect_from: +- /en/best-practices/email/how-to-export-your-emails/ --- diff --git a/docs/best-practices/email/how-to-find-the-mail-headers.md b/docs/best-practices/email/how-to-find-the-mail-headers.md index a97da626..a7b03e27 100644 --- a/docs/best-practices/email/how-to-find-the-mail-headers.md +++ b/docs/best-practices/email/how-to-find-the-mail-headers.md @@ -4,6 +4,8 @@ myst: description: If you have an issue with sending or receiving email, you can use the mail header to see where the email went and discover what might be going wrong. +redirect_from: +- /en/best-practices/email/how-to-find-the-mail-headers/ --- diff --git a/docs/best-practices/email/how-to-prevent-spam-being-sent-from-your-name-or-email-address.md b/docs/best-practices/email/how-to-prevent-spam-being-sent-from-your-name-or-email-address.md index fc4812b4..15145958 100644 --- a/docs/best-practices/email/how-to-prevent-spam-being-sent-from-your-name-or-email-address.md +++ b/docs/best-practices/email/how-to-prevent-spam-being-sent-from-your-name-or-email-address.md @@ -3,6 +3,8 @@ myst: html_meta: description: 'In this article, we explain how to preven spam from being sent from your name or email address. Only available in Dutch. ' +redirect_from: +- /en/best-practices/email/how-to-prevent-spam-being-sent-from-your-name-or-email-address/ --- diff --git a/docs/best-practices/email/how-to-prevent-your-email-being-marked-as-spam.md b/docs/best-practices/email/how-to-prevent-your-email-being-marked-as-spam.md index af6cc9e3..cd2f93f6 100644 --- a/docs/best-practices/email/how-to-prevent-your-email-being-marked-as-spam.md +++ b/docs/best-practices/email/how-to-prevent-your-email-being-marked-as-spam.md @@ -3,6 +3,8 @@ myst: html_meta: description: Sometimes messages sent from a Hypernode are marked as spam by external spam filters. Follow these steps in this article to fix any misconfigurations. +redirect_from: +- /en/best-practices/email/how-to-prevent-your-email-being-marked-as-spam/ --- diff --git a/docs/best-practices/email/how-to-use-e-mail-on-hypernode.md b/docs/best-practices/email/how-to-use-e-mail-on-hypernode.md index ea219f20..b888d6ec 100644 --- a/docs/best-practices/email/how-to-use-e-mail-on-hypernode.md +++ b/docs/best-practices/email/how-to-use-e-mail-on-hypernode.md @@ -4,6 +4,8 @@ myst: description: For setting up e-mail on your Hypernode we advice our customers to use Gsuite (Google) or Office365 (Microsoft) as they are more specialized in e-mail. +redirect_from: +- /en/hypernode/email/how-to-use-e-mail-on-hypernode/ --- diff --git a/docs/best-practices/performance/how-to-enable-pagespeed-booster.md b/docs/best-practices/performance/how-to-enable-pagespeed-booster.md index 053ffa97..95cab2f6 100644 --- a/docs/best-practices/performance/how-to-enable-pagespeed-booster.md +++ b/docs/best-practices/performance/how-to-enable-pagespeed-booster.md @@ -3,6 +3,8 @@ myst: html_meta: description: PageSpeed Booster is a reverse proxy which uses many static optimisation techniques to greatly increase the pagespeed score and performance of your website. +redirect_from: +- /en/best-practices/performance/how-to-enable-pagespeed-booster/ --- diff --git a/docs/best-practices/performance/how-to-find-your-performance-bottleneck-with-new-relic.md b/docs/best-practices/performance/how-to-find-your-performance-bottleneck-with-new-relic.md index c3018cbb..d5ed811d 100644 --- a/docs/best-practices/performance/how-to-find-your-performance-bottleneck-with-new-relic.md +++ b/docs/best-practices/performance/how-to-find-your-performance-bottleneck-with-new-relic.md @@ -4,6 +4,8 @@ myst: description: New Relic is a profiling tool that explains what happens "behind the scenes". Find here how you can use it to determine the performance bottleneck of your shop. +redirect_from: +- /en/best-practices/performance/how-to-find-your-performance-bottleneck-with-new-relic/ --- diff --git a/docs/best-practices/performance/how-to-fix-performance-issues-caused-by-bots-and-crawlers.md b/docs/best-practices/performance/how-to-fix-performance-issues-caused-by-bots-and-crawlers.md index 1034c07b..d0784a60 100644 --- a/docs/best-practices/performance/how-to-fix-performance-issues-caused-by-bots-and-crawlers.md +++ b/docs/best-practices/performance/how-to-fix-performance-issues-caused-by-bots-and-crawlers.md @@ -3,6 +3,8 @@ myst: html_meta: description: Excessive bot traffic is the number one reason for bad Magento performance. Read here how to fix such performance issues on Hypernode. +redirect_from: +- /en/best-practices/performance/how-to-fix-performance-issues-caused-by-bots-and-crawlers/ --- diff --git a/docs/best-practices/performance/how-to-improve-your-magento-search.md b/docs/best-practices/performance/how-to-improve-your-magento-search.md index 9445a4e3..43cd14eb 100644 --- a/docs/best-practices/performance/how-to-improve-your-magento-search.md +++ b/docs/best-practices/performance/how-to-improve-your-magento-search.md @@ -4,6 +4,8 @@ myst: description: To optimize the built-in Magento search option, you can tweak this or us and external search engine. In this article, we explain the different possibilities. +redirect_from: +- /en/best-practices/performance/how-to-improve-your-magento-search/ --- diff --git a/docs/best-practices/performance/how-to-optimize-the-performance-of-your-magento-shop.md b/docs/best-practices/performance/how-to-optimize-the-performance-of-your-magento-shop.md index 2ea0695d..b14566a2 100644 --- a/docs/best-practices/performance/how-to-optimize-the-performance-of-your-magento-shop.md +++ b/docs/best-practices/performance/how-to-optimize-the-performance-of-your-magento-shop.md @@ -4,6 +4,8 @@ myst: description: Hypernode offers several optimizations which improve the load times and stability of your shop. Find detailed instructions on the different optimizations here. +redirect_from: +- /en/best-practices/performance/how-to-optimize-the-performance-of-your-magento-shop/ --- diff --git a/docs/best-practices/performance/how-to-optimize-your-images.md b/docs/best-practices/performance/how-to-optimize-your-images.md index 96dcd049..021b2f23 100644 --- a/docs/best-practices/performance/how-to-optimize-your-images.md +++ b/docs/best-practices/performance/how-to-optimize-your-images.md @@ -3,6 +3,8 @@ myst: html_meta: description: 'Follow this article to set up automatic image optimization for a faster shop on Hypernode in only a couple of minutes. ' +redirect_from: +- /en/best-practices/performance/how-to-optimize-your-images/ --- diff --git a/docs/best-practices/performance/how-to-use-blackfire-on-hypernode-to-find-performance-issues.md b/docs/best-practices/performance/how-to-use-blackfire-on-hypernode-to-find-performance-issues.md index 88f0f853..ab57b71f 100644 --- a/docs/best-practices/performance/how-to-use-blackfire-on-hypernode-to-find-performance-issues.md +++ b/docs/best-practices/performance/how-to-use-blackfire-on-hypernode-to-find-performance-issues.md @@ -3,6 +3,8 @@ myst: html_meta: description: All Hypernodes support Blackfire, an amazing tool to find performance bottlenecks in Magento. Read here how to use it on Hypernode. +redirect_from: +- /en/best-practices/performance/how-to-use-blackfire-on-hypernode-to-find-performance-issues/ --- diff --git a/docs/best-practices/pwa/hypernode-and-pwa-hosting.md b/docs/best-practices/pwa/hypernode-and-pwa-hosting.md index b8f42810..eaa2c05a 100644 --- a/docs/best-practices/pwa/hypernode-and-pwa-hosting.md +++ b/docs/best-practices/pwa/hypernode-and-pwa-hosting.md @@ -4,6 +4,8 @@ myst: description: Progressive Web Apps (PWA) are a hot item and are considered the future of web development. Read about its advantages, challenges and hosting requirements here. +redirect_from: +- /en/best-practices/pwa/hypernode-and-pwa-hosting/ --- diff --git a/docs/best-practices/security/how-does-hypernode-handle-ddos-attacks.md b/docs/best-practices/security/how-does-hypernode-handle-ddos-attacks.md index 2eb013c6..f693fdb3 100644 --- a/docs/best-practices/security/how-does-hypernode-handle-ddos-attacks.md +++ b/docs/best-practices/security/how-does-hypernode-handle-ddos-attacks.md @@ -3,6 +3,8 @@ myst: html_meta: description: DDoS stands for Distributed Denial of Service. In this article we explain what a DDoS attack is and what Hypernode does when this occurs. +redirect_from: +- /en/best-practices/security/how-does-hypernode-handle-ddos-attacks-/ --- diff --git a/docs/best-practices/security/how-hypernode-protects-your-magento-shop.md b/docs/best-practices/security/how-hypernode-protects-your-magento-shop.md index ba786776..7ecc1f58 100644 --- a/docs/best-practices/security/how-hypernode-protects-your-magento-shop.md +++ b/docs/best-practices/security/how-hypernode-protects-your-magento-shop.md @@ -1,3 +1,8 @@ +--- +redirect_from: +- /en/support/solutions/articles/48001158433-how-hypernode-protects-your-magento-shop/ +--- + # How Hypernode protects your Magento shop diff --git a/docs/best-practices/security/how-to-apply-magento-patches.md b/docs/best-practices/security/how-to-apply-magento-patches.md index c90acf7f..44af3533 100644 --- a/docs/best-practices/security/how-to-apply-magento-patches.md +++ b/docs/best-practices/security/how-to-apply-magento-patches.md @@ -4,6 +4,8 @@ myst: description: Every now and then Magento issues a new patch to increase the security of their software. In this article we explain how you can install them on your webshop. +redirect_from: +- /en/best-practices/security/how-to-deploy-magento-patches/ --- diff --git a/docs/best-practices/security/how-to-fix-malicious-javascript-credit-card-hijack.md b/docs/best-practices/security/how-to-fix-malicious-javascript-credit-card-hijack.md index 589987f7..ecb28ad3 100644 --- a/docs/best-practices/security/how-to-fix-malicious-javascript-credit-card-hijack.md +++ b/docs/best-practices/security/how-to-fix-malicious-javascript-credit-card-hijack.md @@ -4,6 +4,8 @@ myst: description: The hack Creditcard Hijack is malicious code in Magento that allows hackers to intercept financial data. This article explains more and tells you how to fix it. +redirect_from: +- /en/best-practices/security/how-to-fix-malicious-javascript-credit-card-hijack/ --- diff --git a/docs/best-practices/security/how-to-install-magento-patch-mdva-49935-for-critical-vulnerabilty-apsb22-12-cve-2022-24086-and-cve-2022-24087.md b/docs/best-practices/security/how-to-install-magento-patch-mdva-49935-for-critical-vulnerabilty-apsb22-12-cve-2022-24086-and-cve-2022-24087.md index bf1bfdd0..3d776e62 100644 --- a/docs/best-practices/security/how-to-install-magento-patch-mdva-49935-for-critical-vulnerabilty-apsb22-12-cve-2022-24086-and-cve-2022-24087.md +++ b/docs/best-practices/security/how-to-install-magento-patch-mdva-49935-for-critical-vulnerabilty-apsb22-12-cve-2022-24086-and-cve-2022-24087.md @@ -1,3 +1,8 @@ +--- +redirect_from: +- /en/best-practices/security/how-to-install-magento-patch-mdva-49935-for-critical-vulnerabilty-apsb22-12-cve-2022-24086/ +--- + # How to install Magento patch MDVA-49935 for critical vulnerabilty APSB22-12 (CVE-2022-24086 and CVE-2022-24087) diff --git a/docs/best-practices/security/how-to-install-magento-patch-supee-8788-and-release-1-9-3.md b/docs/best-practices/security/how-to-install-magento-patch-supee-8788-and-release-1-9-3.md index 35f3e758..03e11603 100644 --- a/docs/best-practices/security/how-to-install-magento-patch-supee-8788-and-release-1-9-3.md +++ b/docs/best-practices/security/how-to-install-magento-patch-supee-8788-and-release-1-9-3.md @@ -4,6 +4,8 @@ myst: description: 'The patch SUPEE 8788 and release 1.9.3 fix about 17 issues, of which some are highly critical. In this article you find guidelines to install the patch. ' +redirect_from: +- /en/best-practices/security/how-to-install-magento-patch-supee-8788-and-release-1-9-3/ --- diff --git a/docs/best-practices/security/how-to-protect-magento-against-brute-force-attacks.md b/docs/best-practices/security/how-to-protect-magento-against-brute-force-attacks.md index 8f861e5c..4fc6bd34 100644 --- a/docs/best-practices/security/how-to-protect-magento-against-brute-force-attacks.md +++ b/docs/best-practices/security/how-to-protect-magento-against-brute-force-attacks.md @@ -1,3 +1,8 @@ +--- +redirect_from: +- /en/best-practices/security/how-to-protect-magento-against-brute-force-attacks/ +--- + # How to Protect Magento Against Brute Force Attacks diff --git a/docs/best-practices/security/how-to-recover-a-hacked-magento-shop.md b/docs/best-practices/security/how-to-recover-a-hacked-magento-shop.md index 372674e3..2c624c47 100644 --- a/docs/best-practices/security/how-to-recover-a-hacked-magento-shop.md +++ b/docs/best-practices/security/how-to-recover-a-hacked-magento-shop.md @@ -4,6 +4,8 @@ myst: description: Unfortunately webshops get hacked, often due to outdated Magento versions, or plugins. This article explains how to recover a hacked shop on Hypernode. +redirect_from: +- /en/best-practices/security/how-to-recover-a-hacked-magento-shop/ --- diff --git a/docs/best-practices/security/how-to-scan-your-hypernode-for-malware.md b/docs/best-practices/security/how-to-scan-your-hypernode-for-malware.md index 679ce6a9..7760e477 100644 --- a/docs/best-practices/security/how-to-scan-your-hypernode-for-malware.md +++ b/docs/best-practices/security/how-to-scan-your-hypernode-for-malware.md @@ -4,6 +4,8 @@ myst: description: Shop owners wanting to comply to an ISO certification, are required to check their content. Here we explain how to scan your Hypernode for virusses and malware. +redirect_from: +- /en/best-practices/security/how-to-scan-your-hypernode-for-malware/ --- diff --git a/docs/best-practices/security/how-to-secure-magento-cacheleak.md b/docs/best-practices/security/how-to-secure-magento-cacheleak.md index 657c50bf..b8aba3f4 100644 --- a/docs/best-practices/security/how-to-secure-magento-cacheleak.md +++ b/docs/best-practices/security/how-to-secure-magento-cacheleak.md @@ -4,6 +4,8 @@ myst: description: Misconfigured web servers can leak Magento cache files containing database passwords. To prevent this from happening, read here how to secure Magento cacheleak. +redirect_from: +- /en/best-practices/security/how-to-secure-magento-cacheleak/ --- diff --git a/docs/best-practices/security/how-to-secure-your-data-using-encryption-and-hashing.md b/docs/best-practices/security/how-to-secure-your-data-using-encryption-and-hashing.md index 67b0828a..22ee6a20 100644 --- a/docs/best-practices/security/how-to-secure-your-data-using-encryption-and-hashing.md +++ b/docs/best-practices/security/how-to-secure-your-data-using-encryption-and-hashing.md @@ -4,6 +4,8 @@ myst: description: Hashing and encryption are cryptographic functions. In this article we explain both ways of securing information and give examples for how you can use it. +redirect_from: +- /en/support/solutions/articles/48001153348-how-to-secure-your-data-using-encryption-and-hashing/ --- diff --git a/docs/best-practices/security/how-to-use-a-cloud-firewall-on-hypernode.md b/docs/best-practices/security/how-to-use-a-cloud-firewall-on-hypernode.md index ac251648..df964903 100644 --- a/docs/best-practices/security/how-to-use-a-cloud-firewall-on-hypernode.md +++ b/docs/best-practices/security/how-to-use-a-cloud-firewall-on-hypernode.md @@ -1,3 +1,8 @@ +--- +redirect_from: +- /en/best-practices/security/how-to-use-a-cloud-firewall-on-hypernode/ +--- + # How To Use a Cloud Firewall on Hypernode diff --git a/docs/best-practices/security/hypernodes-not-vulnerable-for-cve-2021-4034.md b/docs/best-practices/security/hypernodes-not-vulnerable-for-cve-2021-4034.md index 6a9bd6d5..c5a67bdd 100644 --- a/docs/best-practices/security/hypernodes-not-vulnerable-for-cve-2021-4034.md +++ b/docs/best-practices/security/hypernodes-not-vulnerable-for-cve-2021-4034.md @@ -1,3 +1,8 @@ +--- +redirect_from: +- /en/support/solutions/articles/48001207826-hypernodes-not-vulnerable-for-cve-2021-4034/ +--- + # Hypernodes Not Vulnerable for CVE-2021-4034 diff --git a/docs/best-practices/security/what-you-need-to-know-about-the-visbot-malware.md b/docs/best-practices/security/what-you-need-to-know-about-the-visbot-malware.md index ae306d46..68569aa8 100644 --- a/docs/best-practices/security/what-you-need-to-know-about-the-visbot-malware.md +++ b/docs/best-practices/security/what-you-need-to-know-about-the-visbot-malware.md @@ -3,6 +3,8 @@ myst: html_meta: description: 'Visbot is a particular type of malware that is found on hacked Magento stores. Learn all about the visbot in this article. ' +redirect_from: +- /en/best-practices/security/what-you-need-to-know-about-the-visbot-malware/ --- diff --git a/docs/best-practices/testing/how-to-check-if-everything-works.md b/docs/best-practices/testing/how-to-check-if-everything-works.md index 8e4b9e34..b777becf 100644 --- a/docs/best-practices/testing/how-to-check-if-everything-works.md +++ b/docs/best-practices/testing/how-to-check-if-everything-works.md @@ -3,6 +3,8 @@ myst: html_meta: description: Find out here how to check if everything in your shop is working as it should, before changing the DNS settings of your original domain to Hypernode. +redirect_from: +- /en/best-practices/testing/how-to-check-if-everything-works/ --- diff --git a/docs/best-practices/testing/how-to-go-live-with-your-hypernode.md b/docs/best-practices/testing/how-to-go-live-with-your-hypernode.md index 3ed9e313..a3d8f9db 100644 --- a/docs/best-practices/testing/how-to-go-live-with-your-hypernode.md +++ b/docs/best-practices/testing/how-to-go-live-with-your-hypernode.md @@ -3,6 +3,8 @@ myst: html_meta: description: After you have copied your shop to Hypernode and tested its functionalities, it's time to go live. Follow these steps for a smooth transition. +redirect_from: +- /en/best-practices/testing/how-to-go-live-with-your-hypernode/ --- diff --git a/docs/best-practices/testing/how-to-test-your-website-by-changing-your-hosts-file.md b/docs/best-practices/testing/how-to-test-your-website-by-changing-your-hosts-file.md index d0613566..acbb375f 100644 --- a/docs/best-practices/testing/how-to-test-your-website-by-changing-your-hosts-file.md +++ b/docs/best-practices/testing/how-to-test-your-website-by-changing-your-hosts-file.md @@ -3,6 +3,8 @@ myst: html_meta: description: 'In this article, we explain how to adjust the hosts file of the following operating systems: Windows 10, 8 & 7, Linux and Mac OS X.' +redirect_from: +- /en/best-practices/testing/how-to-test-your-website-by-changing-your-hosts-file/ --- diff --git a/docs/best-practices/testing/hypernode-docker.md b/docs/best-practices/testing/hypernode-docker.md index 6cc51025..a8c23834 100644 --- a/docs/best-practices/testing/hypernode-docker.md +++ b/docs/best-practices/testing/hypernode-docker.md @@ -4,6 +4,8 @@ myst: description: The official Hypernode Docker image for Magento development can be used to build a development environment, or as a build machine. Read all about it here. +redirect_from: +- /en/best-practices/testing/hypernode-docker/ --- diff --git a/docs/best-practices/testing/zero-downtime-deployment-on-hypernode.md b/docs/best-practices/testing/zero-downtime-deployment-on-hypernode.md index ef33b933..ce888456 100644 --- a/docs/best-practices/testing/zero-downtime-deployment-on-hypernode.md +++ b/docs/best-practices/testing/zero-downtime-deployment-on-hypernode.md @@ -3,6 +3,8 @@ myst: html_meta: description: In this article, we explain the ideal process of moving new code from a development environment to production without experiencing downtime. +redirect_from: +- /en/best-practices/testing/zero-downtime-deployment-on-hypernode/ --- diff --git a/docs/best-practices/usage/how-to-handle-composer-memory-issues.md b/docs/best-practices/usage/how-to-handle-composer-memory-issues.md index aa35f8a7..87b5843b 100644 --- a/docs/best-practices/usage/how-to-handle-composer-memory-issues.md +++ b/docs/best-practices/usage/how-to-handle-composer-memory-issues.md @@ -1,3 +1,8 @@ +--- +redirect_from: +- /en/support/solutions/articles/48001186354-how-to-handle-composer-memory-issues/ +--- + # How to Handle Composer Memory Issues diff --git a/docs/best-practices/usage/how-to-install-wordpress-next-to-your-magento-installation.md b/docs/best-practices/usage/how-to-install-wordpress-next-to-your-magento-installation.md index 91c20597..160134da 100644 --- a/docs/best-practices/usage/how-to-install-wordpress-next-to-your-magento-installation.md +++ b/docs/best-practices/usage/how-to-install-wordpress-next-to-your-magento-installation.md @@ -3,6 +3,8 @@ myst: html_meta: description: 'Find detailed guidelines on how to install Wordpress on your Hypernode next to your Magento installation in this article. ' +redirect_from: +- /en/best-practices/usage/how-to-install-wordpress-next-to-your-magento-installation/ --- diff --git a/docs/ecommerce-applications/akeneo/how-to-install-akeneo-3-on-hypernode.md b/docs/ecommerce-applications/akeneo/how-to-install-akeneo-3-on-hypernode.md index d24e36b1..04b1b639 100644 --- a/docs/ecommerce-applications/akeneo/how-to-install-akeneo-3-on-hypernode.md +++ b/docs/ecommerce-applications/akeneo/how-to-install-akeneo-3-on-hypernode.md @@ -4,6 +4,8 @@ myst: description: This article describes how to install Akeneo 3 on your Hypernode. Installing Akeneo 3 can be done by using our Pre-Install or you can install Akeneo 3 manually. +redirect_from: +- /en/ecommerce/akeneo/how-to-install-akeneo-3-on-hypernode/ --- diff --git a/docs/ecommerce-applications/akeneo/how-to-install-akeneo-4-on-hypernode.md b/docs/ecommerce-applications/akeneo/how-to-install-akeneo-4-on-hypernode.md index c962484a..cd9d053f 100644 --- a/docs/ecommerce-applications/akeneo/how-to-install-akeneo-4-on-hypernode.md +++ b/docs/ecommerce-applications/akeneo/how-to-install-akeneo-4-on-hypernode.md @@ -4,6 +4,8 @@ myst: description: This article describes how to install Akeneo 4 on your Hypernode. Installing Akeneo 4 can be done by using our Pre-Install or you can install Akeneo 4 manually. +redirect_from: +- /en/ecommerce/akeneo/how-to-install-akeneo-4-on-hypernode/ --- diff --git a/docs/ecommerce-applications/akeneo/how-to-install-akeneo-5-on-hypernode.md b/docs/ecommerce-applications/akeneo/how-to-install-akeneo-5-on-hypernode.md index eb0eaad1..4e90e65f 100644 --- a/docs/ecommerce-applications/akeneo/how-to-install-akeneo-5-on-hypernode.md +++ b/docs/ecommerce-applications/akeneo/how-to-install-akeneo-5-on-hypernode.md @@ -4,6 +4,8 @@ myst: description: 'Akeneo 5 preferably requires a Hypernode Professional M hosting plan or larger. You can either choose to install it on a seperate Hypernode instance or on the same Hypernode as your Magento or Shopware installation. ' +redirect_from: +- /en/ecommerce/akeneo/how-to-install-akeneo-5-on-hypernode/ --- diff --git a/docs/ecommerce-applications/akeneo/how-to-install-akeneo-6-on-hypernode.md b/docs/ecommerce-applications/akeneo/how-to-install-akeneo-6-on-hypernode.md index ed7b6223..94d993c3 100644 --- a/docs/ecommerce-applications/akeneo/how-to-install-akeneo-6-on-hypernode.md +++ b/docs/ecommerce-applications/akeneo/how-to-install-akeneo-6-on-hypernode.md @@ -1,3 +1,8 @@ +--- +redirect_from: +- /en/support/solutions/articles/48001220118-how-to-install-akeneo-6-on-hypernode/ +--- + # How to Install Akeneo 6 on Hypernode diff --git a/docs/ecommerce-applications/akeneo/how-to-use-a-basic-staging-environment-with-akeneo-3.md b/docs/ecommerce-applications/akeneo/how-to-use-a-basic-staging-environment-with-akeneo-3.md index 5bdbb6c4..72415b5c 100644 --- a/docs/ecommerce-applications/akeneo/how-to-use-a-basic-staging-environment-with-akeneo-3.md +++ b/docs/ecommerce-applications/akeneo/how-to-use-a-basic-staging-environment-with-akeneo-3.md @@ -3,6 +3,8 @@ myst: html_meta: description: Hypernode offers a staging environment so it can be used as a sandbox for your Akeneo PIM project. +redirect_from: +- /en/ecommerce/akeneo/how-to-use-a-basic-staging-environment-with-akeneo/ --- diff --git a/docs/ecommerce-applications/akeneo/how-to-use-a-basic-staging-environment-with-akeneo-4-and-5.md b/docs/ecommerce-applications/akeneo/how-to-use-a-basic-staging-environment-with-akeneo-4-and-5.md index 6c883412..9f749b48 100644 --- a/docs/ecommerce-applications/akeneo/how-to-use-a-basic-staging-environment-with-akeneo-4-and-5.md +++ b/docs/ecommerce-applications/akeneo/how-to-use-a-basic-staging-environment-with-akeneo-4-and-5.md @@ -3,6 +3,8 @@ myst: html_meta: description: Hypernode offers a staging environment so it can be used as a sandbox for your Akeneo PIM project. +redirect_from: +- /en/support/solutions/articles/48001183489-how-to-use-a-basic-staging-environment-with-akeneo-4-and-5/ --- diff --git a/docs/ecommerce-applications/magento-1/how-to-change-the-base-url-in-magento-1-x.md b/docs/ecommerce-applications/magento-1/how-to-change-the-base-url-in-magento-1-x.md index 660ecd0e..ecdf4051 100644 --- a/docs/ecommerce-applications/magento-1/how-to-change-the-base-url-in-magento-1-x.md +++ b/docs/ecommerce-applications/magento-1/how-to-change-the-base-url-in-magento-1-x.md @@ -3,6 +3,8 @@ myst: html_meta: description: 'There are several ways to change the Base URL of your Magento 1.x storefronts. Find detailed instructions for each in this article. ' +redirect_from: +- /en/ecommerce/magento-1/how-to-change-the-base-url-in-magento-1-x/ --- diff --git a/docs/ecommerce-applications/magento-1/how-to-clean-the-magento-1-x-logs.md b/docs/ecommerce-applications/magento-1/how-to-clean-the-magento-1-x-logs.md index aad75f2a..4168bc72 100644 --- a/docs/ecommerce-applications/magento-1/how-to-clean-the-magento-1-x-logs.md +++ b/docs/ecommerce-applications/magento-1/how-to-clean-the-magento-1-x-logs.md @@ -4,6 +4,8 @@ myst: description: Magento log cleaning helps to keep your Magento shop fast by cleaning and optimizing your database(s). Find instructions on cleaning your Magento 1.x logs here. +redirect_from: +- /en/ecommerce/magento-1/how-to-clean-the-magento-1-x-logs/ --- diff --git a/docs/ecommerce-applications/magento-1/how-to-configure-redis-for-magento-1.md b/docs/ecommerce-applications/magento-1/how-to-configure-redis-for-magento-1.md index 245a0e9d..a41b4adc 100644 --- a/docs/ecommerce-applications/magento-1/how-to-configure-redis-for-magento-1.md +++ b/docs/ecommerce-applications/magento-1/how-to-configure-redis-for-magento-1.md @@ -4,6 +4,8 @@ myst: description: Redis is a caching method which can increase the speed of the back- and frontend of your shop. Here's how to configure it on Magento 1 and how redis-cli works. +redirect_from: +- /en/ecommerce/magento-1/how-to-configure-redis-for-magento-1/ --- diff --git a/docs/ecommerce-applications/magento-1/how-to-configure-varnish-for-magento-1-x.md b/docs/ecommerce-applications/magento-1/how-to-configure-varnish-for-magento-1-x.md index 4ef39853..885ceb1b 100644 --- a/docs/ecommerce-applications/magento-1/how-to-configure-varnish-for-magento-1-x.md +++ b/docs/ecommerce-applications/magento-1/how-to-configure-varnish-for-magento-1-x.md @@ -3,6 +3,8 @@ myst: html_meta: description: This article explains how you can configure Varnish for your Hypernode in order to boost your Magento shop. +redirect_from: +- /en/ecommerce/magento-1/how-to-configure-varnish-for-magento-1-x/ --- diff --git a/docs/ecommerce-applications/magento-1/how-to-create-a-robots-txt-for-your-magento-1-shop.md b/docs/ecommerce-applications/magento-1/how-to-create-a-robots-txt-for-your-magento-1-shop.md index 47f50bb3..113118da 100644 --- a/docs/ecommerce-applications/magento-1/how-to-create-a-robots-txt-for-your-magento-1-shop.md +++ b/docs/ecommerce-applications/magento-1/how-to-create-a-robots-txt-for-your-magento-1-shop.md @@ -4,6 +4,8 @@ myst: description: Using a robots.txt is essential to handle bots and crawlers. In this article we explain how to configure your Hypernode to serve a robots.txt for storefront(s). +redirect_from: +- /en/ecommerce/magento-1/how-to-create-a-robots-txt-for-your-magento-1-shop/ --- diff --git a/docs/ecommerce-applications/magento-1/how-to-create-a-sitemap-xml-for-magento-1-x.md b/docs/ecommerce-applications/magento-1/how-to-create-a-sitemap-xml-for-magento-1-x.md index 388129fe..feb2e7c0 100644 --- a/docs/ecommerce-applications/magento-1/how-to-create-a-sitemap-xml-for-magento-1-x.md +++ b/docs/ecommerce-applications/magento-1/how-to-create-a-sitemap-xml-for-magento-1-x.md @@ -3,6 +3,8 @@ myst: html_meta: description: 'Find detailed guidelines on how to create a sitemap.xml for Magento 1.x versions here. ' +redirect_from: +- /en/ecommerce/magento-1/how-to-create-a-sitemap-xml-for-magento-1-x/ --- diff --git a/docs/ecommerce-applications/magento-1/how-to-enable-clean-urls-for-magento.md b/docs/ecommerce-applications/magento-1/how-to-enable-clean-urls-for-magento.md index 702ab1b1..7f76d074 100644 --- a/docs/ecommerce-applications/magento-1/how-to-enable-clean-urls-for-magento.md +++ b/docs/ecommerce-applications/magento-1/how-to-enable-clean-urls-for-magento.md @@ -4,6 +4,8 @@ myst: description: "Clean URL's are less intimidating to visitors and have a positive\ \ effect on search index optimization (SEO) as well. Find out how to enable\ \ them here. " +redirect_from: +- /en/ecommerce/magento-1/how-to-enable-clean-url-s-for-magento-1/ --- diff --git a/docs/ecommerce-applications/magento-1/how-to-enable-mysql-query-logging-for-magento-1-x.md b/docs/ecommerce-applications/magento-1/how-to-enable-mysql-query-logging-for-magento-1-x.md index b5488a37..ba5306d8 100644 --- a/docs/ecommerce-applications/magento-1/how-to-enable-mysql-query-logging-for-magento-1-x.md +++ b/docs/ecommerce-applications/magento-1/how-to-enable-mysql-query-logging-for-magento-1-x.md @@ -4,6 +4,8 @@ myst: description: When debugging performance issues, it might be useful to log all database queries to a log file. Find out here how to enable MySQL Query logging for Magento 1. +redirect_from: +- /en/ecommerce/magento-1/how-to-enable-mysql-query-logging-for-magento-1-x/ --- diff --git a/docs/ecommerce-applications/magento-1/how-to-enable-the-magento-1-api.md b/docs/ecommerce-applications/magento-1/how-to-enable-the-magento-1-api.md index 3bb68196..e0e007b9 100644 --- a/docs/ecommerce-applications/magento-1/how-to-enable-the-magento-1-api.md +++ b/docs/ecommerce-applications/magento-1/how-to-enable-the-magento-1-api.md @@ -3,6 +3,8 @@ myst: html_meta: description: 'In this article you can find how to enable the Magento 1 API on Hypernode by creating correct users (and code to solve 404 errors). ' +redirect_from: +- /en/ecommerce/magento-1/how-to-enable-the-magento-1-api/ --- diff --git a/docs/ecommerce-applications/magento-1/how-to-enable-the-maintenance-mode-in-magento-1.md b/docs/ecommerce-applications/magento-1/how-to-enable-the-maintenance-mode-in-magento-1.md index 340e108d..2a78707f 100644 --- a/docs/ecommerce-applications/magento-1/how-to-enable-the-maintenance-mode-in-magento-1.md +++ b/docs/ecommerce-applications/magento-1/how-to-enable-the-maintenance-mode-in-magento-1.md @@ -3,6 +3,8 @@ myst: html_meta: description: Maintenance mode is a shortcut to serve a temporary error notification to all customers. Find here how to enable it in Magento 1. +redirect_from: +- /en/ecommerce/magento-1/how-to-enable-the-maintenance-mode-in-magento-1/ --- diff --git a/docs/ecommerce-applications/magento-1/how-to-fix-soap-error-parsing-wsdl-couldnt-load-from-failed-to-load-external-entity.md b/docs/ecommerce-applications/magento-1/how-to-fix-soap-error-parsing-wsdl-couldnt-load-from-failed-to-load-external-entity.md index ef11ee3e..d89de9b1 100644 --- a/docs/ecommerce-applications/magento-1/how-to-fix-soap-error-parsing-wsdl-couldnt-load-from-failed-to-load-external-entity.md +++ b/docs/ecommerce-applications/magento-1/how-to-fix-soap-error-parsing-wsdl-couldnt-load-from-failed-to-load-external-entity.md @@ -2,8 +2,10 @@ myst: html_meta: description: "Get errors like these when trying to perform HTTP requests: \"Parsing\ - \ WSDL: Couldn’t load from ”: failed to load external entity\"? Here's how to\ + \ WSDL: Couldn't load from '': failed to load external entity\"? Here's how to\ \ Fix SOAP errors." +redirect_from: +- /en/ecommerce/magento-1/how-to-fix-soap-error-parsing-wsdl-couldn-t-load-from-failed-to-load-external-entity/ --- diff --git a/docs/ecommerce-applications/magento-1/how-to-flush-the-magento-1-x-caches.md b/docs/ecommerce-applications/magento-1/how-to-flush-the-magento-1-x-caches.md index 9e2bec16..ab0756e0 100644 --- a/docs/ecommerce-applications/magento-1/how-to-flush-the-magento-1-x-caches.md +++ b/docs/ecommerce-applications/magento-1/how-to-flush-the-magento-1-x-caches.md @@ -3,6 +3,8 @@ myst: html_meta: description: 'There are different ways to flush your Magento 1.x caches, via the commandline or the backend for example. Read instructions per way in this article. ' +redirect_from: +- /en/ecommerce/magento-1/how-to-flush-the-magento-1-x-caches/ --- diff --git a/docs/ecommerce-applications/magento-1/how-to-flush-the-wsdl-cache.md b/docs/ecommerce-applications/magento-1/how-to-flush-the-wsdl-cache.md index a2ec74e5..67f024a6 100644 --- a/docs/ecommerce-applications/magento-1/how-to-flush-the-wsdl-cache.md +++ b/docs/ecommerce-applications/magento-1/how-to-flush-the-wsdl-cache.md @@ -3,6 +3,8 @@ myst: html_meta: description: The WSDL cache is used for API soap calls to Magento. Read here how to flush it in case of corruptions causing errors on all API calls to Magento. +redirect_from: +- /en/ecommerce/magento-1/how-to-flush-the-wsdl-cache/ --- diff --git a/docs/ecommerce-applications/magento-1/how-to-install-magento-1-on-hypernode.md b/docs/ecommerce-applications/magento-1/how-to-install-magento-1-on-hypernode.md index d3ae89f6..44296047 100644 --- a/docs/ecommerce-applications/magento-1/how-to-install-magento-1-on-hypernode.md +++ b/docs/ecommerce-applications/magento-1/how-to-install-magento-1-on-hypernode.md @@ -3,6 +3,8 @@ myst: html_meta: description: Starting over and in need of a fresh Magento 1 installation? Follow the steps in this article to install a Magento 1 installation on Hypernode. +redirect_from: +- /en/ecommerce/magento-1/how-to-install-magento-1-on-hypernode/ --- diff --git a/docs/ecommerce-applications/magento-1/how-to-remove-your-magento-1-x-installation.md b/docs/ecommerce-applications/magento-1/how-to-remove-your-magento-1-x-installation.md index 34fb63a6..20ee4ca5 100644 --- a/docs/ecommerce-applications/magento-1/how-to-remove-your-magento-1-x-installation.md +++ b/docs/ecommerce-applications/magento-1/how-to-remove-your-magento-1-x-installation.md @@ -3,6 +3,8 @@ myst: html_meta: description: 'Within this article you can find snippets, which can be used for the removal of your Magento 1.x installation. ' +redirect_from: +- /en/ecommerce/magento-1/how-to-remove-your-magento-1-x-installation/ --- diff --git a/docs/ecommerce-applications/magento-1/how-to-reset-your-magento-1-x-admin-password.md b/docs/ecommerce-applications/magento-1/how-to-reset-your-magento-1-x-admin-password.md index eafecaba..bf70bf5d 100644 --- a/docs/ecommerce-applications/magento-1/how-to-reset-your-magento-1-x-admin-password.md +++ b/docs/ecommerce-applications/magento-1/how-to-reset-your-magento-1-x-admin-password.md @@ -4,6 +4,8 @@ myst: description: If you are unable to login to your Magento shop, you have several methods to retrieve a new password to log back in. Check out here how to reset your password. +redirect_from: +- /en/support/solutions/articles/48000970831-how-to-reset-your-magento-1-x-admin-password/ --- diff --git a/docs/ecommerce-applications/magento-1/how-to-set-magento-1-x-to-the-utc-timezone.md b/docs/ecommerce-applications/magento-1/how-to-set-magento-1-x-to-the-utc-timezone.md index bcc4b83a..90f50547 100644 --- a/docs/ecommerce-applications/magento-1/how-to-set-magento-1-x-to-the-utc-timezone.md +++ b/docs/ecommerce-applications/magento-1/how-to-set-magento-1-x-to-the-utc-timezone.md @@ -4,6 +4,8 @@ myst: description: If you want to work with a different timezone setting or show a different timezone setting to your customers, check out how change the timezone on Magento 1.x. +redirect_from: +- /en/ecommerce/magento-1/how-to-set-magento-1-x-to-the-utc-timezone/ --- diff --git a/docs/ecommerce-applications/magento-1/how-to-set-the-return-path-for-a-magento-1-shop.md b/docs/ecommerce-applications/magento-1/how-to-set-the-return-path-for-a-magento-1-shop.md index 48137c62..9ef2da63 100644 --- a/docs/ecommerce-applications/magento-1/how-to-set-the-return-path-for-a-magento-1-shop.md +++ b/docs/ecommerce-applications/magento-1/how-to-set-the-return-path-for-a-magento-1-shop.md @@ -4,6 +4,8 @@ myst: description: To avoid outgoing email being detected as spam, you should change the email return-path for your outgoing email to a valid address. Check here how to do so. +redirect_from: +- /en/ecommerce/magento-1/how-to-set-the-return-path-for-a-magento-1-shop/ --- diff --git a/docs/ecommerce-applications/magento-1/how-to-set-up-a-staging-environment-for-magento-1.md b/docs/ecommerce-applications/magento-1/how-to-set-up-a-staging-environment-for-magento-1.md index 38757d51..17330ba4 100644 --- a/docs/ecommerce-applications/magento-1/how-to-set-up-a-staging-environment-for-magento-1.md +++ b/docs/ecommerce-applications/magento-1/how-to-set-up-a-staging-environment-for-magento-1.md @@ -4,6 +4,8 @@ myst: description: A staging environment is very useful to test your shop. In this article we explain how to set up a staging environment on Hypernode for a Magento 1 shop. +redirect_from: +- /en/ecommerce/magento-1/how-to-set-up-a-staging-environment-for-magento-1/ --- diff --git a/docs/ecommerce-applications/magento-2/how-to-change-your-magento-2-base-urls.md b/docs/ecommerce-applications/magento-2/how-to-change-your-magento-2-base-urls.md index 455243c5..9d1d4f13 100644 --- a/docs/ecommerce-applications/magento-2/how-to-change-your-magento-2-base-urls.md +++ b/docs/ecommerce-applications/magento-2/how-to-change-your-magento-2-base-urls.md @@ -3,6 +3,8 @@ myst: html_meta: description: There are several ways to configure the base_url settings of your Magento 2 shop. Find detailed instructions on the different ways here. +redirect_from: +- /en/ecommerce/magento-2/how-to-change-your-magento-2-base-urls/ --- diff --git a/docs/ecommerce-applications/magento-2/how-to-configure-redis-for-magento-2.md b/docs/ecommerce-applications/magento-2/how-to-configure-redis-for-magento-2.md index 8f4929c7..e813e54a 100644 --- a/docs/ecommerce-applications/magento-2/how-to-configure-redis-for-magento-2.md +++ b/docs/ecommerce-applications/magento-2/how-to-configure-redis-for-magento-2.md @@ -4,6 +4,8 @@ myst: description: Redis is a caching method which can increase the speed of the back- and frontend of your shop. Here's how to configure it on Magento 2 and how redis-cli works. +redirect_from: +- /en/ecommerce/magento-2/how-to-configure-redis-for-magento-2/ --- diff --git a/docs/ecommerce-applications/magento-2/how-to-configure-varnish-for-magento-2-x.md b/docs/ecommerce-applications/magento-2/how-to-configure-varnish-for-magento-2-x.md index ab3917dc..cce267d2 100644 --- a/docs/ecommerce-applications/magento-2/how-to-configure-varnish-for-magento-2-x.md +++ b/docs/ecommerce-applications/magento-2/how-to-configure-varnish-for-magento-2-x.md @@ -3,6 +3,8 @@ myst: html_meta: description: This article explains how you can configure Varnish for your Hypernode in order to boost your Magento 2.x shop. +redirect_from: +- /en/ecommerce/magento-2/how-to-configure-varnish-for-magento-2-x/ --- diff --git a/docs/ecommerce-applications/magento-2/how-to-create-a-robots-txt-for-magento-2-x.md b/docs/ecommerce-applications/magento-2/how-to-create-a-robots-txt-for-magento-2-x.md index 60d93f4d..49f8a6f7 100644 --- a/docs/ecommerce-applications/magento-2/how-to-create-a-robots-txt-for-magento-2-x.md +++ b/docs/ecommerce-applications/magento-2/how-to-create-a-robots-txt-for-magento-2-x.md @@ -3,6 +3,8 @@ myst: html_meta: description: Using a robots.txt is essential to handle bots and crawlers. In this article we explain how to generate and configure Robot.txt on Magento 2.x. +redirect_from: +- /en/ecommerce/magento-2/how-to-create-a-robots-txt-for-magento-2-x/ --- diff --git a/docs/ecommerce-applications/magento-2/how-to-create-a-sitemap-xml-for-magento-2-x.md b/docs/ecommerce-applications/magento-2/how-to-create-a-sitemap-xml-for-magento-2-x.md index c85fa5f8..3244a686 100644 --- a/docs/ecommerce-applications/magento-2/how-to-create-a-sitemap-xml-for-magento-2-x.md +++ b/docs/ecommerce-applications/magento-2/how-to-create-a-sitemap-xml-for-magento-2-x.md @@ -3,6 +3,8 @@ myst: html_meta: description: Find detailed guidelines on how to create a sitemap.xml for Magento 2.x versions here. +redirect_from: +- /en/ecommerce/magento-2/how-to-create-a-sitemap-xml-for-magento-2-x/ --- diff --git a/docs/ecommerce-applications/magento-2/how-to-enable-the-magento-2-api.md b/docs/ecommerce-applications/magento-2/how-to-enable-the-magento-2-api.md index de236edf..5634130d 100644 --- a/docs/ecommerce-applications/magento-2/how-to-enable-the-magento-2-api.md +++ b/docs/ecommerce-applications/magento-2/how-to-enable-the-magento-2-api.md @@ -3,6 +3,8 @@ myst: html_meta: description: 'In this article you can find how to enable the Magento 2 API on Hypernode by creating correct users (and code to solve 404 errors). ' +redirect_from: +- /en/ecommerce/magento-2/how-to-enable-the-magento-2-api/ --- diff --git a/docs/ecommerce-applications/magento-2/how-to-enable-the-magento-2-web-setup-wizard.md b/docs/ecommerce-applications/magento-2/how-to-enable-the-magento-2-web-setup-wizard.md index 2f885e03..30b33018 100644 --- a/docs/ecommerce-applications/magento-2/how-to-enable-the-magento-2-web-setup-wizard.md +++ b/docs/ecommerce-applications/magento-2/how-to-enable-the-magento-2-web-setup-wizard.md @@ -3,6 +3,8 @@ myst: html_meta: description: In this article, we explain how to configure and deconfigure the Web Setup Wizard for your Magento 2 shop. +redirect_from: +- /en/ecommerce/magento-2/how-to-enable-the-magento-2-web-setup-wizard/ --- diff --git a/docs/ecommerce-applications/magento-2/how-to-enable-the-maintenance-mode-in-magento-2.md b/docs/ecommerce-applications/magento-2/how-to-enable-the-maintenance-mode-in-magento-2.md index 6967b0f0..0e30b4e0 100644 --- a/docs/ecommerce-applications/magento-2/how-to-enable-the-maintenance-mode-in-magento-2.md +++ b/docs/ecommerce-applications/magento-2/how-to-enable-the-maintenance-mode-in-magento-2.md @@ -3,6 +3,8 @@ myst: html_meta: description: Maintenance mode is a shortcut to serve a temporary error notification to all customers. Find here how to enable it in Magento 2. +redirect_from: +- /en/ecommerce/magento-2/how-to-enable-the-maintenance-mode-in-magento-2/ --- diff --git a/docs/ecommerce-applications/magento-2/how-to-fix-the-general-error-1030-got-error-1-from-storage-engine.md b/docs/ecommerce-applications/magento-2/how-to-fix-the-general-error-1030-got-error-1-from-storage-engine.md index e8f96dc8..7b9b0156 100644 --- a/docs/ecommerce-applications/magento-2/how-to-fix-the-general-error-1030-got-error-1-from-storage-engine.md +++ b/docs/ecommerce-applications/magento-2/how-to-fix-the-general-error-1030-got-error-1-from-storage-engine.md @@ -3,6 +3,8 @@ myst: html_meta: description: 'This article describes how to fix the "General error: 1030 Got error 1 from storage engine" on your Hypernode.' +redirect_from: +- /en/ecommerce/magento-2/how-to-fix-the-general-error-1030-got-error-1-from-storage-engine/ --- diff --git a/docs/ecommerce-applications/magento-2/how-to-flush-the-magento-2-x-caches.md b/docs/ecommerce-applications/magento-2/how-to-flush-the-magento-2-x-caches.md index 7f98e00d..1d53cf09 100644 --- a/docs/ecommerce-applications/magento-2/how-to-flush-the-magento-2-x-caches.md +++ b/docs/ecommerce-applications/magento-2/how-to-flush-the-magento-2-x-caches.md @@ -3,6 +3,8 @@ myst: html_meta: description: 'There are different ways to flush your Magento 2.x caches, via the commandline or the backend for example. Read instructions per way in this article. ' +redirect_from: +- /en/ecommerce/magento-2/how-to-flush-the-magento-2-x-caches/ --- diff --git a/docs/ecommerce-applications/magento-2/how-to-install-magento-2-on-hypernode.md b/docs/ecommerce-applications/magento-2/how-to-install-magento-2-on-hypernode.md index 18f60ba2..c9081b4a 100644 --- a/docs/ecommerce-applications/magento-2/how-to-install-magento-2-on-hypernode.md +++ b/docs/ecommerce-applications/magento-2/how-to-install-magento-2-on-hypernode.md @@ -3,6 +3,8 @@ myst: html_meta: description: Follow the steps in this article to install a Magento 2 installation on Hypernode. It will only take you 5-10 minutes. +redirect_from: +- /en/ecommerce/magento-2/how-to-install-magento-2-on-hypernode/ --- diff --git a/docs/ecommerce-applications/magento-2/how-to-optimize-magento-2-queue-consumers-on-hypernode.md b/docs/ecommerce-applications/magento-2/how-to-optimize-magento-2-queue-consumers-on-hypernode.md index b829e3e2..46b7ade8 100644 --- a/docs/ecommerce-applications/magento-2/how-to-optimize-magento-2-queue-consumers-on-hypernode.md +++ b/docs/ecommerce-applications/magento-2/how-to-optimize-magento-2-queue-consumers-on-hypernode.md @@ -4,6 +4,8 @@ myst: description: If your Magento 2 Cron is stuck or long-running this could be because of a default setting in Magento 2 causing the consumers to never end. Here's the fix. +redirect_from: +- /en/support/solutions/articles/48001186343-how-to-optimize-magento-2-queue-consumers-on-hypernode/ --- diff --git a/docs/ecommerce-applications/magento-2/how-to-protect-the-magento-2-api.md b/docs/ecommerce-applications/magento-2/how-to-protect-the-magento-2-api.md index 3f658cfe..40ffd67b 100644 --- a/docs/ecommerce-applications/magento-2/how-to-protect-the-magento-2-api.md +++ b/docs/ecommerce-applications/magento-2/how-to-protect-the-magento-2-api.md @@ -1,3 +1,8 @@ +--- +redirect_from: +- /en/ecommerce/magento-2/how-to-protect-the-magento-2-api/ +--- + # How to Protect the Magento 2 API diff --git a/docs/ecommerce-applications/magento-2/how-to-remove-your-magento-2-x-installation.md b/docs/ecommerce-applications/magento-2/how-to-remove-your-magento-2-x-installation.md index 79ad8240..d59df020 100644 --- a/docs/ecommerce-applications/magento-2/how-to-remove-your-magento-2-x-installation.md +++ b/docs/ecommerce-applications/magento-2/how-to-remove-your-magento-2-x-installation.md @@ -3,6 +3,8 @@ myst: html_meta: description: 'Within this article you can find snippets, which can be used for the removal of your Magento 2.x installation. ' +redirect_from: +- /en/ecommerce/magento-2/how-to-remove-your-magento-2-x-installation/ --- diff --git a/docs/ecommerce-applications/magento-2/how-to-reset-your-magento-2-x-admin-password.md b/docs/ecommerce-applications/magento-2/how-to-reset-your-magento-2-x-admin-password.md index 2228f5ec..fe147e1e 100644 --- a/docs/ecommerce-applications/magento-2/how-to-reset-your-magento-2-x-admin-password.md +++ b/docs/ecommerce-applications/magento-2/how-to-reset-your-magento-2-x-admin-password.md @@ -4,6 +4,8 @@ myst: description: If you are unable to login to your Magento 2.x shop, you have several methods to retrieve a new password to log in. Check out here how to reset your password. +redirect_from: +- /en/ecommerce/magento-2/how-to-reset-your-magento-2-x-admin-password/ --- diff --git a/docs/ecommerce-applications/magento-2/how-to-set-magento-2-x-to-the-utc-timezone.md b/docs/ecommerce-applications/magento-2/how-to-set-magento-2-x-to-the-utc-timezone.md index b2a4ba95..cea479ce 100644 --- a/docs/ecommerce-applications/magento-2/how-to-set-magento-2-x-to-the-utc-timezone.md +++ b/docs/ecommerce-applications/magento-2/how-to-set-magento-2-x-to-the-utc-timezone.md @@ -4,6 +4,8 @@ myst: description: If you want to work with a different timezone setting or show a different timezone setting to your customers, check out how change the timezone on Magento 2.x. +redirect_from: +- /en/ecommerce/magento-2/how-to-set-magento-2-x-to-the-utc-timezone/ --- diff --git a/docs/ecommerce-applications/magento-2/how-to-set-mysql-variables-globally-on-hypernode.md b/docs/ecommerce-applications/magento-2/how-to-set-mysql-variables-globally-on-hypernode.md index 6c0c888f..42fa2851 100644 --- a/docs/ecommerce-applications/magento-2/how-to-set-mysql-variables-globally-on-hypernode.md +++ b/docs/ecommerce-applications/magento-2/how-to-set-mysql-variables-globally-on-hypernode.md @@ -3,6 +3,8 @@ myst: html_meta: description: This article explains how to set MySQL variables globally on Hypernode by configuring the initStaments in the env.php file +redirect_from: +- /en/support/solutions/articles/48001208261-how-to-set-mysql-variables-globally-on-hypernode/ --- diff --git a/docs/ecommerce-applications/magento-2/how-to-set-the-return-path-for-a-magento-2-shop.md b/docs/ecommerce-applications/magento-2/how-to-set-the-return-path-for-a-magento-2-shop.md index 0b62d65f..2970d014 100644 --- a/docs/ecommerce-applications/magento-2/how-to-set-the-return-path-for-a-magento-2-shop.md +++ b/docs/ecommerce-applications/magento-2/how-to-set-the-return-path-for-a-magento-2-shop.md @@ -4,6 +4,8 @@ myst: description: To avoid outgoing mail being detected as spam, you can change the mail return-path for your outgoing email to a valid address. Here's how to do so in Magento 2. +redirect_from: +- /en/ecommerce/magento-2/how-to-set-the-return-path-for-a-magento-2-shop/ --- diff --git a/docs/ecommerce-applications/magento-2/how-to-set-up-a-basic-staging-environment-for-magento-2.md b/docs/ecommerce-applications/magento-2/how-to-set-up-a-basic-staging-environment-for-magento-2.md index 4972221a..aef6e734 100644 --- a/docs/ecommerce-applications/magento-2/how-to-set-up-a-basic-staging-environment-for-magento-2.md +++ b/docs/ecommerce-applications/magento-2/how-to-set-up-a-basic-staging-environment-for-magento-2.md @@ -4,6 +4,8 @@ myst: description: A staging environment is very useful to test your shop. In this article we explain how to set up a staging environment on Hypernode for a Magento 2 shop. +redirect_from: +- /en/ecommerce/magento-2/how-to-set-up-a-basic-staging-environment-for-magento-2/ --- diff --git a/docs/ecommerce-applications/magento-2/how-to-set-up-smart-404-handling.md b/docs/ecommerce-applications/magento-2/how-to-set-up-smart-404-handling.md index 9c1ba39a..d8b1b288 100644 --- a/docs/ecommerce-applications/magento-2/how-to-set-up-smart-404-handling.md +++ b/docs/ecommerce-applications/magento-2/how-to-set-up-smart-404-handling.md @@ -3,6 +3,8 @@ myst: html_meta: description: In this article, you can read about setting up smart 404 handlings on Hypernode. +redirect_from: +- /en/best-practices/performance/how-to-set-up-smart-404-handling/ --- diff --git a/docs/ecommerce-applications/magento-2/how-to-update-magento-2.md b/docs/ecommerce-applications/magento-2/how-to-update-magento-2.md index 727c44d5..96c56088 100644 --- a/docs/ecommerce-applications/magento-2/how-to-update-magento-2.md +++ b/docs/ecommerce-applications/magento-2/how-to-update-magento-2.md @@ -3,6 +3,8 @@ myst: html_meta: description: Does your Magento 2 version need an upgrade? This article explains how to upgrade to the latest Magento 2 version. +redirect_from: +- /en/ecommerce/magento-2/how-to-update-magento-2/ --- diff --git a/docs/ecommerce-applications/shopware-5/how-to-change-the-timezone-for-the-order-timestamps-in-shopware-5-x.md b/docs/ecommerce-applications/shopware-5/how-to-change-the-timezone-for-the-order-timestamps-in-shopware-5-x.md index 628c6492..5c756757 100644 --- a/docs/ecommerce-applications/shopware-5/how-to-change-the-timezone-for-the-order-timestamps-in-shopware-5-x.md +++ b/docs/ecommerce-applications/shopware-5/how-to-change-the-timezone-for-the-order-timestamps-in-shopware-5-x.md @@ -1,3 +1,8 @@ +--- +redirect_from: +- /en/support/solutions/articles/48001166328-how-to-change-the-timezone-for-the-order-timestamps-in-shopware-5-x/ +--- + # How to Change the Timezone for the Order Timestamps in Shopware 5.x diff --git a/docs/ecommerce-applications/shopware-5/how-to-change-the-timezone-in-shopware-5-x.md b/docs/ecommerce-applications/shopware-5/how-to-change-the-timezone-in-shopware-5-x.md index b872748a..2bee087b 100644 --- a/docs/ecommerce-applications/shopware-5/how-to-change-the-timezone-in-shopware-5-x.md +++ b/docs/ecommerce-applications/shopware-5/how-to-change-the-timezone-in-shopware-5-x.md @@ -3,6 +3,8 @@ myst: html_meta: description: This article describes how to change the timezone in Shopware 5.x on a Hypernode. +redirect_from: +- /en/support/solutions/articles/48001170559-how-to-change-the-timezone-in-shopware-5-x/ --- diff --git a/docs/ecommerce-applications/shopware-5/how-to-configure-shopware-caching.md b/docs/ecommerce-applications/shopware-5/how-to-configure-shopware-caching.md index 6104ad52..e5c83f3f 100644 --- a/docs/ecommerce-applications/shopware-5/how-to-configure-shopware-caching.md +++ b/docs/ecommerce-applications/shopware-5/how-to-configure-shopware-caching.md @@ -3,6 +3,8 @@ myst: html_meta: description: Shopware provides a built-in HTTP cache to improve the performance and user experience of your shop. We explain how to set it up step by step. +redirect_from: +- /en/ecommerce/shopware/how-to-configure-shopware-caching/ --- diff --git a/docs/ecommerce-applications/shopware-5/how-to-configure-varnish-for-shopware-5.md b/docs/ecommerce-applications/shopware-5/how-to-configure-varnish-for-shopware-5.md index 65d0ef39..3c804989 100644 --- a/docs/ecommerce-applications/shopware-5/how-to-configure-varnish-for-shopware-5.md +++ b/docs/ecommerce-applications/shopware-5/how-to-configure-varnish-for-shopware-5.md @@ -3,6 +3,8 @@ myst: html_meta: description: Shopware 5 applications can greatly benefit from Varnish caching. On the client side, pages load faster, while on the server side, the load decreases. +redirect_from: +- /en/support/solutions/articles/48001207016-how-to-configure-varnish-for-shopware-5/ --- diff --git a/docs/ecommerce-applications/shopware-5/how-to-host-shopware-on-hypernode.md b/docs/ecommerce-applications/shopware-5/how-to-host-shopware-on-hypernode.md index 70bc916c..f844fab9 100644 --- a/docs/ecommerce-applications/shopware-5/how-to-host-shopware-on-hypernode.md +++ b/docs/ecommerce-applications/shopware-5/how-to-host-shopware-on-hypernode.md @@ -3,6 +3,8 @@ myst: html_meta: description: Hosting the popular CMS, Shopware, can (of course) be done on Hypernode. You only need a specific Nginx configuration. Check out how to use it here. +redirect_from: +- /en/ecommerce/shopware/how-to-host-shopware-on-hypernode/ --- diff --git a/docs/ecommerce-applications/shopware-5/how-to-install-shopware-5-on-hypernode-docker.md b/docs/ecommerce-applications/shopware-5/how-to-install-shopware-5-on-hypernode-docker.md index 607c6a91..321e85e2 100644 --- a/docs/ecommerce-applications/shopware-5/how-to-install-shopware-5-on-hypernode-docker.md +++ b/docs/ecommerce-applications/shopware-5/how-to-install-shopware-5-on-hypernode-docker.md @@ -3,6 +3,8 @@ myst: html_meta: description: The Hypernode Docker Image can be used to set up a local test environment for Shopware. This article explains how to install Shopware 5 on a Docker environment. +redirect_from: +- /en/ecommerce/shopware/how-to-install-shopware-5-on-hypernode-docker/ --- diff --git a/docs/ecommerce-applications/shopware-5/how-to-install-shopware-5-on-hypernode.md b/docs/ecommerce-applications/shopware-5/how-to-install-shopware-5-on-hypernode.md index 96617306..583b58ee 100644 --- a/docs/ecommerce-applications/shopware-5/how-to-install-shopware-5-on-hypernode.md +++ b/docs/ecommerce-applications/shopware-5/how-to-install-shopware-5-on-hypernode.md @@ -3,6 +3,8 @@ myst: html_meta: description: 'In this article we guide you through the steps of setting up the latest version of Shopware 5 as easy as possible. ' +redirect_from: +- /en/ecommerce/shopware/how-to-install-shopware-5-on-hypernode/ --- diff --git a/docs/ecommerce-applications/shopware-5/how-to-setup-a-multistore-in-shopware.md b/docs/ecommerce-applications/shopware-5/how-to-setup-a-multistore-in-shopware.md index 0e564163..d6cdfefc 100644 --- a/docs/ecommerce-applications/shopware-5/how-to-setup-a-multistore-in-shopware.md +++ b/docs/ecommerce-applications/shopware-5/how-to-setup-a-multistore-in-shopware.md @@ -4,6 +4,8 @@ myst: description: Using a multistore in Shopware will allow you to address customers in different languages and use different currencies. Check out how to set it up here. +redirect_from: +- /en/ecommerce/shopware/how-to-setup-a-multistore-in-shopware/ --- diff --git a/docs/ecommerce-applications/shopware-5/how-to-use-a-basic-staging-environment-with-shopware.md b/docs/ecommerce-applications/shopware-5/how-to-use-a-basic-staging-environment-with-shopware.md index 1b7fff10..e798f960 100644 --- a/docs/ecommerce-applications/shopware-5/how-to-use-a-basic-staging-environment-with-shopware.md +++ b/docs/ecommerce-applications/shopware-5/how-to-use-a-basic-staging-environment-with-shopware.md @@ -3,6 +3,8 @@ myst: html_meta: description: A staging environment is very useful to test your shop. In this article we explain how to set up a staging environment on Hypernode for a Shopware shop. +redirect_from: +- /en/ecommerce/shopware/how-to-use-a-basic-staging-environment-with-shopware/ --- diff --git a/docs/ecommerce-applications/shopware-6/how-to-configure-redis-for-shopware-6.md b/docs/ecommerce-applications/shopware-6/how-to-configure-redis-for-shopware-6.md index b42525cb..0d466a87 100644 --- a/docs/ecommerce-applications/shopware-6/how-to-configure-redis-for-shopware-6.md +++ b/docs/ecommerce-applications/shopware-6/how-to-configure-redis-for-shopware-6.md @@ -1,3 +1,8 @@ +--- +redirect_from: +- /en/support/solutions/articles/48001200521-how-to-configure-redis-for-shopware-6/ +--- + # How to Configure Redis for Shopware 6 diff --git a/docs/ecommerce-applications/shopware-6/how-to-configure-varnish-for-shopware-6.md b/docs/ecommerce-applications/shopware-6/how-to-configure-varnish-for-shopware-6.md index 1d63fb8a..6e123787 100644 --- a/docs/ecommerce-applications/shopware-6/how-to-configure-varnish-for-shopware-6.md +++ b/docs/ecommerce-applications/shopware-6/how-to-configure-varnish-for-shopware-6.md @@ -1,3 +1,8 @@ +--- +redirect_from: +- /en/support/solutions/articles/48001200525-how-to-configure-varnish-for-shopware-6/ +--- + # How to Configure Varnish for Shopware 6 diff --git a/docs/ecommerce-applications/shopware-6/how-to-install-shopware-6-on-hypernode-docker.md b/docs/ecommerce-applications/shopware-6/how-to-install-shopware-6-on-hypernode-docker.md index 2b53d640..6b5a6898 100644 --- a/docs/ecommerce-applications/shopware-6/how-to-install-shopware-6-on-hypernode-docker.md +++ b/docs/ecommerce-applications/shopware-6/how-to-install-shopware-6-on-hypernode-docker.md @@ -3,6 +3,8 @@ myst: html_meta: description: The Hypernode Docker Image can be used to set up a local test environment for Shopware. This article explains how to install Shopware 6 on a Docker environment. +redirect_from: +- /en/ecommerce/shopware/how-to-install-shopware-6-on-hypernode-docker/ --- diff --git a/docs/ecommerce-applications/shopware-6/how-to-install-shopware-6-on-hypernode.md b/docs/ecommerce-applications/shopware-6/how-to-install-shopware-6-on-hypernode.md index 32d3e8a0..98c4a7bf 100644 --- a/docs/ecommerce-applications/shopware-6/how-to-install-shopware-6-on-hypernode.md +++ b/docs/ecommerce-applications/shopware-6/how-to-install-shopware-6-on-hypernode.md @@ -3,6 +3,8 @@ myst: html_meta: description: 'In this article we guide you through the steps of setting up the latest version of Shopware 6 as easy as possible. ' +redirect_from: +- /en/ecommerce/shopware/how-to-install-shopware-6-on-hypernode/ --- diff --git a/docs/ecommerce-applications/shopware-6/how-to-use-a-basic-staging-environment-with-shopware-6.md b/docs/ecommerce-applications/shopware-6/how-to-use-a-basic-staging-environment-with-shopware-6.md index cfd9f74c..bff1f8d9 100644 --- a/docs/ecommerce-applications/shopware-6/how-to-use-a-basic-staging-environment-with-shopware-6.md +++ b/docs/ecommerce-applications/shopware-6/how-to-use-a-basic-staging-environment-with-shopware-6.md @@ -4,6 +4,8 @@ myst: description: A staging environment is very useful to test your shop. In this article we explain how to set up a staging environment on Hypernode for a Shopware 6 shop. +redirect_from: +- /en/ecommerce/shopware/how-to-use-a-basic-staging-environment-with-shopware-6/ --- diff --git a/docs/ecommerce-applications/shopware-6/workaround-for-known-issue-accessing-shopware-6-admin-on-a-development-plan.md b/docs/ecommerce-applications/shopware-6/workaround-for-known-issue-accessing-shopware-6-admin-on-a-development-plan.md index f6216839..e4a4667b 100644 --- a/docs/ecommerce-applications/shopware-6/workaround-for-known-issue-accessing-shopware-6-admin-on-a-development-plan.md +++ b/docs/ecommerce-applications/shopware-6/workaround-for-known-issue-accessing-shopware-6-admin-on-a-development-plan.md @@ -1,3 +1,8 @@ +--- +redirect_from: +- /en/support/solutions/articles/48001207548-workaround-for-known-issue-accessing-shopware-6-admin-on-a-development-plan/ +--- + # Workaround for Known Issue Accessing Shopware 6 Admin on a Development Plan diff --git a/docs/ecommerce-applications/woocommerce/how-to-install-woocommerce-on-hypernode.md b/docs/ecommerce-applications/woocommerce/how-to-install-woocommerce-on-hypernode.md index 9ae6201e..c36b2458 100644 --- a/docs/ecommerce-applications/woocommerce/how-to-install-woocommerce-on-hypernode.md +++ b/docs/ecommerce-applications/woocommerce/how-to-install-woocommerce-on-hypernode.md @@ -1,3 +1,8 @@ +--- +redirect_from: +- /en/support/solutions/articles/48001213397-how-to-install-woocommerce-on-hypernode/ +--- + # How to install WooCommerce on Hypernode diff --git a/docs/getting-started/how-to-order/how-to-get-started-with-your-hypernode-trial.md b/docs/getting-started/how-to-order/how-to-get-started-with-your-hypernode-trial.md index fbc9cbe9..7cc17393 100644 --- a/docs/getting-started/how-to-order/how-to-get-started-with-your-hypernode-trial.md +++ b/docs/getting-started/how-to-order/how-to-get-started-with-your-hypernode-trial.md @@ -3,6 +3,8 @@ myst: html_meta: description: 'Your trial gives you 14 days of free testing on our Hypernode platform. Find out how to get started and test all features on the platform in this article. ' +redirect_from: +- /en/getting-started/how-to-order/how-to-get-started-with-your-hypernode-trial/ --- diff --git a/docs/getting-started/how-to-order/how-to-order-a-domain-presence-plan.md b/docs/getting-started/how-to-order/how-to-order-a-domain-presence-plan.md index c1bb91f4..237830ff 100644 --- a/docs/getting-started/how-to-order/how-to-order-a-domain-presence-plan.md +++ b/docs/getting-started/how-to-order/how-to-order-a-domain-presence-plan.md @@ -3,6 +3,8 @@ myst: html_meta: description: 'Find out here about the two different Presence plans Hypernode offers and how to order them. ' +redirect_from: +- /en/getting-started/how-to-order/how-to-order-a-domain-presence-plan/ --- diff --git a/docs/hypernode-platform/backups/how-to-restore-your-hypernode-from-a-snapshot.md b/docs/hypernode-platform/backups/how-to-restore-your-hypernode-from-a-snapshot.md index 4e4f4e2b..1160e0e6 100644 --- a/docs/hypernode-platform/backups/how-to-restore-your-hypernode-from-a-snapshot.md +++ b/docs/hypernode-platform/backups/how-to-restore-your-hypernode-from-a-snapshot.md @@ -3,6 +3,8 @@ myst: html_meta: description: 'Find detailed guidelines on how to restore your Hypernode from a backup here, if needed after a mistake. We restore backups with snapshots. ' +redirect_from: +- /en/hypernode/backups/how-to-restore-your-hypernode-from-a-backup/ --- diff --git a/docs/hypernode-platform/backups/hypernode-backup-policy.md b/docs/hypernode-platform/backups/hypernode-backup-policy.md index 18fd6e1a..cc08a0cd 100644 --- a/docs/hypernode-platform/backups/hypernode-backup-policy.md +++ b/docs/hypernode-platform/backups/hypernode-backup-policy.md @@ -3,6 +3,8 @@ myst: html_meta: description: 'When things go wrong, you want to restore the appropriate database table, files or directories from the backup. We offer this with snapshots. ' +redirect_from: +- /en/hypernode/backups/hypernode-backup-policy/ --- diff --git a/docs/hypernode-platform/dns/dns-for-service-panel-users.md b/docs/hypernode-platform/dns/dns-for-service-panel-users.md index 4c524ad3..84bd9c09 100644 --- a/docs/hypernode-platform/dns/dns-for-service-panel-users.md +++ b/docs/hypernode-platform/dns/dns-for-service-panel-users.md @@ -4,6 +4,8 @@ myst: description: DNS is a protocol that translates domain names to IP addresses on the internet. Read here how you can configure the DNS for your domain name at Hypernode. +redirect_from: +- /en/support/solutions/articles/48001153093-dns-for-service-panel-users/ --- diff --git a/docs/hypernode-platform/dns/how-to-manage-your-dns-settings-for-hypernode.md b/docs/hypernode-platform/dns/how-to-manage-your-dns-settings-for-hypernode.md index c93040f0..ef87e954 100644 --- a/docs/hypernode-platform/dns/how-to-manage-your-dns-settings-for-hypernode.md +++ b/docs/hypernode-platform/dns/how-to-manage-your-dns-settings-for-hypernode.md @@ -3,6 +3,8 @@ myst: html_meta: description: 'Find out how to manage your DNS settings on Hypernode in order to avoid downtime when up- or downgrading here. ' +redirect_from: +- /en/hypernode/dns/how-to-manage-your-dns-settings-for-hypernode/ --- diff --git a/docs/hypernode-platform/dns/how-to-set-up-your-spf-records-for-hypernode.md b/docs/hypernode-platform/dns/how-to-set-up-your-spf-records-for-hypernode.md index 9e89d944..2a4a76f7 100644 --- a/docs/hypernode-platform/dns/how-to-set-up-your-spf-records-for-hypernode.md +++ b/docs/hypernode-platform/dns/how-to-set-up-your-spf-records-for-hypernode.md @@ -3,6 +3,8 @@ myst: html_meta: description: Sender Policy Framework, SPF, is a technique used to fight spam. Find out here how to set it up for Hypernode. +redirect_from: +- /en/hypernode/dns/how-to-set-up-your-spf-records-for-hypernode/ --- diff --git a/docs/hypernode-platform/dns/your-dns-is-misconfigured.md b/docs/hypernode-platform/dns/your-dns-is-misconfigured.md index eb64fd8f..09831c31 100644 --- a/docs/hypernode-platform/dns/your-dns-is-misconfigured.md +++ b/docs/hypernode-platform/dns/your-dns-is-misconfigured.md @@ -3,6 +3,8 @@ myst: html_meta: description: The administrator of this domain has pointed www.domain.com to our DNS service, instead of appointing a CNAME to his/her Hypernode. +redirect_from: +- /en/hypernode/dns/your-dns-is-misconfigured/ --- diff --git a/docs/hypernode-platform/email/how-to-activate-a-virus-filter-for-your-email-box.md b/docs/hypernode-platform/email/how-to-activate-a-virus-filter-for-your-email-box.md index fd73f7c3..7138f1ab 100644 --- a/docs/hypernode-platform/email/how-to-activate-a-virus-filter-for-your-email-box.md +++ b/docs/hypernode-platform/email/how-to-activate-a-virus-filter-for-your-email-box.md @@ -4,6 +4,8 @@ myst: description: A virus filter checks all incoming (and outgoing) email for viruses. In this article we explain how Hypernodes virus filter works and how to deactive it. +redirect_from: +- /en/best-practices/email/how-to-activate-a-virus-filter-for-your-email-box/ --- diff --git a/docs/hypernode-platform/email/how-to-configure-the-spam-filter.md b/docs/hypernode-platform/email/how-to-configure-the-spam-filter.md index eb20eca0..b751577c 100644 --- a/docs/hypernode-platform/email/how-to-configure-the-spam-filter.md +++ b/docs/hypernode-platform/email/how-to-configure-the-spam-filter.md @@ -4,6 +4,8 @@ myst: description: Spam is unsolicited email, usually with a commercial content. If you receive a lot of spam, we at Hypernode recommend you to configure a spam filter. +redirect_from: +- /en/best-practices/email/how-to-configure-the-spam-filter/ --- diff --git a/docs/hypernode-platform/email/how-to-manage-your-email-queue.md b/docs/hypernode-platform/email/how-to-manage-your-email-queue.md index 3a280572..b6503cef 100644 --- a/docs/hypernode-platform/email/how-to-manage-your-email-queue.md +++ b/docs/hypernode-platform/email/how-to-manage-your-email-queue.md @@ -4,6 +4,8 @@ myst: description: If you are sending email through the Hypernode and your application you will want to know how you can manage your email queue. Find out how to do this here. +redirect_from: +- /en/hypernode/email/how-to-manage-your-email-queue/ --- diff --git a/docs/hypernode-platform/email/how-to-set-up-your-dns-for-outgoing-email.md b/docs/hypernode-platform/email/how-to-set-up-your-dns-for-outgoing-email.md index 0cbf7f4a..153d3b7c 100644 --- a/docs/hypernode-platform/email/how-to-set-up-your-dns-for-outgoing-email.md +++ b/docs/hypernode-platform/email/how-to-set-up-your-dns-for-outgoing-email.md @@ -3,6 +3,8 @@ myst: html_meta: description: If your domain is hosted externally and you want to send email from your Hypernode there are records that need to be added to the external DNS. +redirect_from: +- /en/hypernode/email/how-to-set-up-your-dns-for-outgoing-email/ --- diff --git a/docs/hypernode-platform/email/how-to-set-up-your-dns-for-using-office365.md b/docs/hypernode-platform/email/how-to-set-up-your-dns-for-using-office365.md index d7ece690..73bab199 100644 --- a/docs/hypernode-platform/email/how-to-set-up-your-dns-for-using-office365.md +++ b/docs/hypernode-platform/email/how-to-set-up-your-dns-for-using-office365.md @@ -3,6 +3,8 @@ myst: html_meta: description: How to set up your DNS when you want to use Office365 on a domain that is hosted at Hypernode +redirect_from: +- /en/best-practices/email/how-to-set-up-your-dns-for-using-office365/ --- diff --git a/docs/hypernode-platform/email/how-to-use-dmarc.md b/docs/hypernode-platform/email/how-to-use-dmarc.md index 9fd9b9d8..c9ca6429 100644 --- a/docs/hypernode-platform/email/how-to-use-dmarc.md +++ b/docs/hypernode-platform/email/how-to-use-dmarc.md @@ -3,6 +3,8 @@ myst: html_meta: description: Hypernode offers DMARC (Domain-based Message Authentication, Reporting and Conformance) for Service Panel users. Read how to configure it in this article. +redirect_from: +- /en/best-practices/email/how-to-use-dmarc/ --- diff --git a/docs/hypernode-platform/email/policy-for-sending-email-on-hypernode.md b/docs/hypernode-platform/email/policy-for-sending-email-on-hypernode.md index eece0e59..5e99479a 100644 --- a/docs/hypernode-platform/email/policy-for-sending-email-on-hypernode.md +++ b/docs/hypernode-platform/email/policy-for-sending-email-on-hypernode.md @@ -3,6 +3,8 @@ myst: html_meta: description: 'All emails send from a Hypernode are routed through a central outgoing email platform that filters spam and infected emails. Read here about its policies. ' +redirect_from: +- /en/hypernode/email/policy-for-sending-email-on-hypernode/ --- diff --git a/docs/hypernode-platform/email/spam-run-via-your-website.md b/docs/hypernode-platform/email/spam-run-via-your-website.md index 6e5ddafa..c232bb44 100644 --- a/docs/hypernode-platform/email/spam-run-via-your-website.md +++ b/docs/hypernode-platform/email/spam-run-via-your-website.md @@ -4,6 +4,8 @@ myst: description: "It's often difficult to find the exact cause of a spam run. Use\ \ this article to find out what happened and how to prevent spam runs from your\ \ website. " +redirect_from: +- /en/hypernode/email/spam-run-via-your-website/ --- diff --git a/docs/hypernode-platform/ftp/how-to-configure-ftp-sftp-on-hypernode.md b/docs/hypernode-platform/ftp/how-to-configure-ftp-sftp-on-hypernode.md index 7499e51f..0ea1b435 100644 --- a/docs/hypernode-platform/ftp/how-to-configure-ftp-sftp-on-hypernode.md +++ b/docs/hypernode-platform/ftp/how-to-configure-ftp-sftp-on-hypernode.md @@ -3,6 +3,8 @@ myst: html_meta: description: In this article we’ll explain how you can configure FTP/SFTP (create/delete users) and which credentials to use to make a FTP/SFTP connection. +redirect_from: +- /en/hypernode/ftp/how-to-configure-ftp-sftp-on-hypernode/ --- diff --git a/docs/hypernode-platform/mysql/how-to-configure-a-large-mysql-thread-stack.md b/docs/hypernode-platform/mysql/how-to-configure-a-large-mysql-thread-stack.md index 87a46498..6a3715fa 100644 --- a/docs/hypernode-platform/mysql/how-to-configure-a-large-mysql-thread-stack.md +++ b/docs/hypernode-platform/mysql/how-to-configure-a-large-mysql-thread-stack.md @@ -4,6 +4,8 @@ myst: description: For Hypernodes we have a set of MySQL related opt-in settings to facilitate some flexibility (because it is not possible to change root-owned MySQL related config files.) +redirect_from: +- /en/hypernode/mysql/how-to-configure-a-large-mysql-thread-stack/ --- diff --git a/docs/hypernode-platform/mysql/how-to-free-disk-space-from-mysql-ibdata1.md b/docs/hypernode-platform/mysql/how-to-free-disk-space-from-mysql-ibdata1.md index d5aff70a..eb282c91 100644 --- a/docs/hypernode-platform/mysql/how-to-free-disk-space-from-mysql-ibdata1.md +++ b/docs/hypernode-platform/mysql/how-to-free-disk-space-from-mysql-ibdata1.md @@ -4,6 +4,8 @@ myst: description: MySQL uses serveral files for journaling transactions, ibdata1 for example, which can grow quickly and is hard to remove. Read here how to free up disk space. +redirect_from: +- /en/hypernode/mysql/how-to-free-disk-space-from-mysql-ibdata1/ --- diff --git a/docs/hypernode-platform/mysql/how-to-use-mysql-on-hypernode.md b/docs/hypernode-platform/mysql/how-to-use-mysql-on-hypernode.md index 7a51ba58..6e18d9fe 100644 --- a/docs/hypernode-platform/mysql/how-to-use-mysql-on-hypernode.md +++ b/docs/hypernode-platform/mysql/how-to-use-mysql-on-hypernode.md @@ -4,6 +4,8 @@ myst: description: This article explains how to use MySQL on Hypernode. Factors, such as finding your credentials, whitelisting your IP address and using PHPMyAdmin are included. +redirect_from: +- /en/hypernode/mysql/how-to-use-mysql-on-hypernode/ --- diff --git a/docs/hypernode-platform/mysql/how-to-use-phpmyadmin.md b/docs/hypernode-platform/mysql/how-to-use-phpmyadmin.md index 288491c6..b4bbfc37 100644 --- a/docs/hypernode-platform/mysql/how-to-use-phpmyadmin.md +++ b/docs/hypernode-platform/mysql/how-to-use-phpmyadmin.md @@ -3,6 +3,8 @@ myst: html_meta: description: 'In this article, we provide you with a detailed roadmap about how you can use PHPMyAdmin and how to create a database dump. ' +redirect_from: +- /en/hypernode/mysql/how-to-use-phpmyadmin/ --- diff --git a/docs/hypernode-platform/nginx/basic-authentication-on-hypernode-development-plans.md b/docs/hypernode-platform/nginx/basic-authentication-on-hypernode-development-plans.md index 1c141ec6..7f174957 100644 --- a/docs/hypernode-platform/nginx/basic-authentication-on-hypernode-development-plans.md +++ b/docs/hypernode-platform/nginx/basic-authentication-on-hypernode-development-plans.md @@ -3,6 +3,8 @@ myst: html_meta: description: 'Development Hypernodes are by default configured to offer a Basic Authentication challenge to all visitors. Read all about it in this article. ' +redirect_from: +- /en/hypernode/nginx/basic-authentication-on-hypernode-development-plans/ --- diff --git a/docs/hypernode-platform/nginx/how-to-add-custom-http-headers-to-a-file-or-location.md b/docs/hypernode-platform/nginx/how-to-add-custom-http-headers-to-a-file-or-location.md index 46772c23..2cc95ab0 100644 --- a/docs/hypernode-platform/nginx/how-to-add-custom-http-headers-to-a-file-or-location.md +++ b/docs/hypernode-platform/nginx/how-to-add-custom-http-headers-to-a-file-or-location.md @@ -3,6 +3,8 @@ myst: html_meta: description: 'By adding HTTP headers to a file or location, you can provide additional information for several reasons. Find out how to add customer HTTP headers here. ' +redirect_from: +- /en/hypernode/nginx/how-to-add-custom-http-headers-to-a-file-or-location/ --- diff --git a/docs/hypernode-platform/nginx/how-to-block-allow-ip-addresses-in-nginx.md b/docs/hypernode-platform/nginx/how-to-block-allow-ip-addresses-in-nginx.md index 5d836ea8..adef9bda 100644 --- a/docs/hypernode-platform/nginx/how-to-block-allow-ip-addresses-in-nginx.md +++ b/docs/hypernode-platform/nginx/how-to-block-allow-ip-addresses-in-nginx.md @@ -3,6 +3,8 @@ myst: html_meta: description: 'In Nginx blocking and allowing IP-addresses is done using the access module. Find thorough guidelines in this article. ' +redirect_from: +- /en/hypernode/nginx/how-to-block-allow-ip-addresses-in-nginx/ --- diff --git a/docs/hypernode-platform/nginx/how-to-block-spammers-and-scanners.md b/docs/hypernode-platform/nginx/how-to-block-spammers-and-scanners.md index 053edd31..7057fe6f 100644 --- a/docs/hypernode-platform/nginx/how-to-block-spammers-and-scanners.md +++ b/docs/hypernode-platform/nginx/how-to-block-spammers-and-scanners.md @@ -3,6 +3,8 @@ myst: html_meta: description: It is increasingly common for spammers to crawl your site and a slow site for real visitors. Here are some strategies for finding and blocking them. +redirect_from: +- /en/support/solutions/articles/48001165533-how-to-block-spammers-and-scanners/ --- diff --git a/docs/hypernode-platform/nginx/how-to-block-user-agents-and-referrer-sites.md b/docs/hypernode-platform/nginx/how-to-block-user-agents-and-referrer-sites.md index 1bbcad24..3ae836b3 100644 --- a/docs/hypernode-platform/nginx/how-to-block-user-agents-and-referrer-sites.md +++ b/docs/hypernode-platform/nginx/how-to-block-user-agents-and-referrer-sites.md @@ -3,6 +3,8 @@ myst: html_meta: description: 'Find a thorough step by step guide on blocking user agents and referrer sites here. ' +redirect_from: +- /en/hypernode/nginx/how-to-block-user-agents-and-referrer-sites/ --- diff --git a/docs/hypernode-platform/nginx/how-to-block-your-webshop-for-specific-countries.md b/docs/hypernode-platform/nginx/how-to-block-your-webshop-for-specific-countries.md index 7e415f8e..54dc99aa 100644 --- a/docs/hypernode-platform/nginx/how-to-block-your-webshop-for-specific-countries.md +++ b/docs/hypernode-platform/nginx/how-to-block-your-webshop-for-specific-countries.md @@ -3,6 +3,8 @@ myst: html_meta: description: Sometimes spam and abuse comes from specific countries. You could block these countries, if needed. This article explains how to block them specifically. +redirect_from: +- /en/hypernode/nginx/how-to-block-your-webshop-for-specific-countries/ --- diff --git a/docs/hypernode-platform/nginx/how-to-configure-nginx-for-a-multistore.md b/docs/hypernode-platform/nginx/how-to-configure-nginx-for-a-multistore.md index 1d37c262..845ecaaf 100644 --- a/docs/hypernode-platform/nginx/how-to-configure-nginx-for-a-multistore.md +++ b/docs/hypernode-platform/nginx/how-to-configure-nginx-for-a-multistore.md @@ -3,6 +3,8 @@ myst: html_meta: description: Using domains or subdirectories for storefronts can be done by configuring your Magento shop. Read about how to configure the store codes in Nginx here. +redirect_from: +- /en/hypernode/nginx/how-to-configure-nginx-for-a-multistore/ --- diff --git a/docs/hypernode-platform/nginx/how-to-configure-your-shop-to-only-use-https.md b/docs/hypernode-platform/nginx/how-to-configure-your-shop-to-only-use-https.md index a9c090dc..38365d62 100644 --- a/docs/hypernode-platform/nginx/how-to-configure-your-shop-to-only-use-https.md +++ b/docs/hypernode-platform/nginx/how-to-configure-your-shop-to-only-use-https.md @@ -4,6 +4,8 @@ myst: description: Hypernode recommends serving your site only over HTTPS traffic for more safety and a better search index optimization. Read how to do so in this article. +redirect_from: +- /en/hypernode/nginx/how-to-configure-your-shop-to-only-use-https/ --- diff --git a/docs/hypernode-platform/nginx/how-to-create-a-reusable-config-to-include-in-custom-snippets.md b/docs/hypernode-platform/nginx/how-to-create-a-reusable-config-to-include-in-custom-snippets.md index a8647140..bfc49c77 100644 --- a/docs/hypernode-platform/nginx/how-to-create-a-reusable-config-to-include-in-custom-snippets.md +++ b/docs/hypernode-platform/nginx/how-to-create-a-reusable-config-to-include-in-custom-snippets.md @@ -4,6 +4,8 @@ myst: description: 'You can use include statement in Nginx to avoid duplicate configurations for multiple locations. In this article we explain the different options for you. ' +redirect_from: +- /en/hypernode/nginx/how-to-create-a-reusable-config-to-include-in-custom-snippets/ --- diff --git a/docs/hypernode-platform/nginx/how-to-deny-access-to-locations-and-directories.md b/docs/hypernode-platform/nginx/how-to-deny-access-to-locations-and-directories.md index 9304a1e3..47997ebf 100644 --- a/docs/hypernode-platform/nginx/how-to-deny-access-to-locations-and-directories.md +++ b/docs/hypernode-platform/nginx/how-to-deny-access-to-locations-and-directories.md @@ -3,6 +3,8 @@ myst: html_meta: description: In this article we explain how to protect a directory from being accessed through the web, create a location and deny access to it. +redirect_from: +- /en/hypernode/nginx/how-to-deny-access-to-locations-and-directories/ --- diff --git a/docs/hypernode-platform/nginx/how-to-find-the-the-top-10-visitors-by-parsing-the-nginx-access-logs.md b/docs/hypernode-platform/nginx/how-to-find-the-the-top-10-visitors-by-parsing-the-nginx-access-logs.md index c5b2fb73..c2625f82 100644 --- a/docs/hypernode-platform/nginx/how-to-find-the-the-top-10-visitors-by-parsing-the-nginx-access-logs.md +++ b/docs/hypernode-platform/nginx/how-to-find-the-the-top-10-visitors-by-parsing-the-nginx-access-logs.md @@ -3,6 +3,8 @@ myst: html_meta: description: 'Having statistics on the top 10 visitors could be very usefull. Read here how you can easily use the Nginx access logging to find out. ' +redirect_from: +- /en/hypernode/nginx/how-to-find-the-the-top-10-visitors-by-parsing-the-nginx-access-logs/ --- diff --git a/docs/hypernode-platform/nginx/how-to-protect-your-magento-store-with-a-password-in-nginx.md b/docs/hypernode-platform/nginx/how-to-protect-your-magento-store-with-a-password-in-nginx.md index 01841153..f310ce8e 100644 --- a/docs/hypernode-platform/nginx/how-to-protect-your-magento-store-with-a-password-in-nginx.md +++ b/docs/hypernode-platform/nginx/how-to-protect-your-magento-store-with-a-password-in-nginx.md @@ -3,6 +3,8 @@ myst: html_meta: description: 'To protect your Magento shop, you can use a password in Nginx. Read about restricing access to a directory, specific domain or more in this article. ' +redirect_from: +- /en/hypernode/nginx/how-to-protect-your-magento-store-with-a-password-in-nginx/ --- diff --git a/docs/hypernode-platform/nginx/how-to-redirect-from-or-to-www.md b/docs/hypernode-platform/nginx/how-to-redirect-from-or-to-www.md index f71238c2..49332f34 100644 --- a/docs/hypernode-platform/nginx/how-to-redirect-from-or-to-www.md +++ b/docs/hypernode-platform/nginx/how-to-redirect-from-or-to-www.md @@ -4,6 +4,8 @@ myst: description: Some shop owners prefer a domain name starting with www, others prefer without. Many constructions are possible. Check out how to redirect from or to WWW here. +redirect_from: +- /en/hypernode/nginx/how-to-redirect-from-or-to-www/ --- diff --git a/docs/hypernode-platform/nginx/how-to-resolve-rate-limited-requests-429-too-many-requests.md b/docs/hypernode-platform/nginx/how-to-resolve-rate-limited-requests-429-too-many-requests.md index f3405cab..433bba1c 100644 --- a/docs/hypernode-platform/nginx/how-to-resolve-rate-limited-requests-429-too-many-requests.md +++ b/docs/hypernode-platform/nginx/how-to-resolve-rate-limited-requests-429-too-many-requests.md @@ -3,6 +3,8 @@ myst: html_meta: description: This article explains the differences between rate limiting methods and show you how to find which one applies and if needed, how to override them. +redirect_from: +- /en/hypernode/nginx/how-to-resolve-rate-limited-requests-429-too-many-requests/ --- diff --git a/docs/hypernode-platform/nginx/how-to-restrict-access-to-your-admin-area.md b/docs/hypernode-platform/nginx/how-to-restrict-access-to-your-admin-area.md index d46a4dfa..faffd42a 100644 --- a/docs/hypernode-platform/nginx/how-to-restrict-access-to-your-admin-area.md +++ b/docs/hypernode-platform/nginx/how-to-restrict-access-to-your-admin-area.md @@ -4,6 +4,8 @@ myst: description: It's important to restrict access to your Magento admin panel to keep hackers from having access to all your data. In this article we explain how to do so. +redirect_from: +- /en/hypernode/nginx/how-to-restrict-access-to-your-admin-area/ --- diff --git a/docs/hypernode-platform/nginx/how-to-rewrite-a-trailing-slash-for-seo-purposes.md b/docs/hypernode-platform/nginx/how-to-rewrite-a-trailing-slash-for-seo-purposes.md index fca69958..07a10c61 100644 --- a/docs/hypernode-platform/nginx/how-to-rewrite-a-trailing-slash-for-seo-purposes.md +++ b/docs/hypernode-platform/nginx/how-to-rewrite-a-trailing-slash-for-seo-purposes.md @@ -3,6 +3,8 @@ myst: html_meta: description: Rewriting trailing slash for a better result in search engines requires some Nginx configuration. In this article we explain how to rewrite them. +redirect_from: +- /en/hypernode/nginx/how-to-rewrite-a-trailing-slash-for-seo-purposes/ --- diff --git a/docs/hypernode-platform/nginx/how-to-set-the-server-name-in-nginx.md b/docs/hypernode-platform/nginx/how-to-set-the-server-name-in-nginx.md index fb1fb593..955234d0 100644 --- a/docs/hypernode-platform/nginx/how-to-set-the-server-name-in-nginx.md +++ b/docs/hypernode-platform/nginx/how-to-set-the-server-name-in-nginx.md @@ -3,6 +3,8 @@ myst: html_meta: description: Hypernode makes use of Nginx for better performance and to allow more visitors. This article explains how to set the server name in Nginx. +redirect_from: +- /en/hypernode/nginx/how-to-set-the-server-name-in-nginx/ --- diff --git a/docs/hypernode-platform/nginx/how-to-speed-up-your-magento-shop-by-tuning-gzip-compression.md b/docs/hypernode-platform/nginx/how-to-speed-up-your-magento-shop-by-tuning-gzip-compression.md index 70c38c2c..f22a2c9b 100644 --- a/docs/hypernode-platform/nginx/how-to-speed-up-your-magento-shop-by-tuning-gzip-compression.md +++ b/docs/hypernode-platform/nginx/how-to-speed-up-your-magento-shop-by-tuning-gzip-compression.md @@ -4,6 +4,8 @@ myst: description: On Hypernodes, GZIP Compression is already configured to compress responses larger than 1000 bytes. For experts however, it is possible to make your own adjustments to tune GZIP Compression. +redirect_from: +- /en/hypernode/nginx/how-to-speed-up-your-magento-shop-by-tuning-gzip-compression/ --- diff --git a/docs/hypernode-platform/nginx/how-to-unblock-requests-to-sql-and-archive-files-on-your-hypernode.md b/docs/hypernode-platform/nginx/how-to-unblock-requests-to-sql-and-archive-files-on-your-hypernode.md index 468a350b..92932609 100644 --- a/docs/hypernode-platform/nginx/how-to-unblock-requests-to-sql-and-archive-files-on-your-hypernode.md +++ b/docs/hypernode-platform/nginx/how-to-unblock-requests-to-sql-and-archive-files-on-your-hypernode.md @@ -3,6 +3,8 @@ myst: html_meta: description: By default .sql files and archive files are blocked on Hypernode. This article explains how you can unblock those files and make them downloadable +redirect_from: +- /en/hypernode/nginx/how-to-unblock-requests-to-sql-and-archive-files/ --- diff --git a/docs/hypernode-platform/nginx/how-to-use-nginx.md b/docs/hypernode-platform/nginx/how-to-use-nginx.md index 3e326fb2..beec4196 100644 --- a/docs/hypernode-platform/nginx/how-to-use-nginx.md +++ b/docs/hypernode-platform/nginx/how-to-use-nginx.md @@ -3,6 +3,8 @@ myst: html_meta: description: 'Using Nginx instead of Apache increases performance and allows more visitors. Read here how to use Nginx on Hypernode. ' +redirect_from: +- /en/hypernode/nginx/how-to-use-nginx/ --- diff --git a/docs/hypernode-platform/nginx/hypernode-managed-vhosts.md b/docs/hypernode-platform/nginx/hypernode-managed-vhosts.md index 2dd19f42..01fe1dcc 100644 --- a/docs/hypernode-platform/nginx/hypernode-managed-vhosts.md +++ b/docs/hypernode-platform/nginx/hypernode-managed-vhosts.md @@ -4,6 +4,8 @@ myst: description: A Hypernode Managed Vhost system is a configuration allowing you to setup multiple domainnames with an own independant configuration. Reall all about it here. +redirect_from: +- /en/hypernode/nginx/hypernode-managed-vhosts/ --- diff --git a/docs/hypernode-platform/php/how-to-flush-the-php-opcache.md b/docs/hypernode-platform/php/how-to-flush-the-php-opcache.md index ac87f5a3..40f9ce40 100644 --- a/docs/hypernode-platform/php/how-to-flush-the-php-opcache.md +++ b/docs/hypernode-platform/php/how-to-flush-the-php-opcache.md @@ -4,6 +4,8 @@ myst: description: 'In order to keep your backend to suffer from inaccessibility, you need to be able to flush the OPcache from the command line. Read here how to do so. ' +redirect_from: +- /en/hypernode/php/how-to-flush-the-php-opcache/ --- diff --git a/docs/hypernode-platform/php/how-to-override-php-settings.md b/docs/hypernode-platform/php/how-to-override-php-settings.md index d5b9c17b..66d7ee33 100644 --- a/docs/hypernode-platform/php/how-to-override-php-settings.md +++ b/docs/hypernode-platform/php/how-to-override-php-settings.md @@ -4,6 +4,8 @@ myst: description: To use certain software inside your Magento shop, new PHP settings are required. 'Max_execution_time' for example. Here's how to override default PHP settings. +redirect_from: +- /en/hypernode/php/how-to-override-php-settings/ --- diff --git a/docs/hypernode-platform/php/how-to-resolve-502-gateway-errors.md b/docs/hypernode-platform/php/how-to-resolve-502-gateway-errors.md index 27888743..c9faacc8 100644 --- a/docs/hypernode-platform/php/how-to-resolve-502-gateway-errors.md +++ b/docs/hypernode-platform/php/how-to-resolve-502-gateway-errors.md @@ -4,6 +4,8 @@ myst: description: A 502 Bad Gateway error indicates there has been an internal error within PHP, which resulted in the site not being rendered. Check out how to solve it here. +redirect_from: +- /en/hypernode/php/how-to-resolve-502-gateway-errors/ --- diff --git a/docs/hypernode-platform/php/supported-php-versions-and-how-to-change-them-on-hypernode.md b/docs/hypernode-platform/php/supported-php-versions-and-how-to-change-them-on-hypernode.md index aaf4684f..db107378 100644 --- a/docs/hypernode-platform/php/supported-php-versions-and-how-to-change-them-on-hypernode.md +++ b/docs/hypernode-platform/php/supported-php-versions-and-how-to-change-them-on-hypernode.md @@ -3,6 +3,8 @@ myst: html_meta: description: 'On Hypernode you can choose from a range of PHP versions. Check out which ones and how to change them here. ' +redirect_from: +- /en/hypernode/php/supported-php-versions-and-how-to-change-them-on-hypernode/ --- diff --git a/docs/hypernode-platform/php/what-limits-apply-to-active-php-requests-per-ip.md b/docs/hypernode-platform/php/what-limits-apply-to-active-php-requests-per-ip.md index cf2648e3..55922001 100644 --- a/docs/hypernode-platform/php/what-limits-apply-to-active-php-requests-per-ip.md +++ b/docs/hypernode-platform/php/what-limits-apply-to-active-php-requests-per-ip.md @@ -4,6 +4,8 @@ myst: description: Hypernodes uses Nginx and PHP-FPM for processing and serving PHP pages causing a few limitations to PHP requests per IP. Read all about the details here. +redirect_from: +- /en/support/solutions/articles/48000967652-what-limits-apply-to-active-php-requests-per-ip/ --- diff --git a/docs/hypernode-platform/ssh/how-to-log-in-to-the-hypernode-with-ssh.md b/docs/hypernode-platform/ssh/how-to-log-in-to-the-hypernode-with-ssh.md index c5e4fd36..1db215f6 100644 --- a/docs/hypernode-platform/ssh/how-to-log-in-to-the-hypernode-with-ssh.md +++ b/docs/hypernode-platform/ssh/how-to-log-in-to-the-hypernode-with-ssh.md @@ -3,6 +3,8 @@ myst: html_meta: description: 'To access a new Hypernode, you need to use an SSH client. This tutorial shows how to log in to the Hypernode with PuTTY or Terminal using SSH. ' +redirect_from: +- /en/hypernode/ssh/how-to-log-in-to-the-hypernode-with-ssh/ --- diff --git a/docs/hypernode-platform/ssh/how-to-use-ssh-keys-on-hypernode.md b/docs/hypernode-platform/ssh/how-to-use-ssh-keys-on-hypernode.md index 387d2af0..10d664ef 100644 --- a/docs/hypernode-platform/ssh/how-to-use-ssh-keys-on-hypernode.md +++ b/docs/hypernode-platform/ssh/how-to-use-ssh-keys-on-hypernode.md @@ -3,6 +3,8 @@ myst: html_meta: description: This tutorial shows how to create a keypair and use PuTTY (for Windows users) or Terminal (Linux and Mac OSX) to log in to your Hypernode. +redirect_from: +- /en/hypernode/ssh/how-to-use-ssh-keys-on-hypernode/ --- diff --git a/docs/hypernode-platform/ssl/how-to-upgrade-your-ssl-settings-to-an-a.md b/docs/hypernode-platform/ssl/how-to-upgrade-your-ssl-settings-to-an-a.md index 810afd28..26821ce9 100644 --- a/docs/hypernode-platform/ssl/how-to-upgrade-your-ssl-settings-to-an-a.md +++ b/docs/hypernode-platform/ssl/how-to-upgrade-your-ssl-settings-to-an-a.md @@ -3,6 +3,8 @@ myst: html_meta: description: Many developers validate their SSL setting on Hypernode with Qualys SSL labs. This article explains how to get an A+ rating for your SSL configuration. +redirect_from: +- /en/hypernode/ssl/how-to-upgrade-your-ssl-settings-to-an-a-plus/ --- diff --git a/docs/hypernode-platform/ssl/how-to-use-lets-encrypt-on-hypernode.md b/docs/hypernode-platform/ssl/how-to-use-lets-encrypt-on-hypernode.md index aa3708ff..e4badd9a 100644 --- a/docs/hypernode-platform/ssl/how-to-use-lets-encrypt-on-hypernode.md +++ b/docs/hypernode-platform/ssl/how-to-use-lets-encrypt-on-hypernode.md @@ -4,6 +4,8 @@ myst: description: Let's Encrypt is a CA Authority that provides free SSL certificates through domain validation and automated retrieval. Find here how to use it on Hypernode. +redirect_from: +- /en/hypernode/ssl/how-to-use-let-s-encrypt-on-hypernode/ --- diff --git a/docs/hypernode-platform/ssl/how-to-use-ssl-certificates-on-your-hypernode-when-ordered-via-hypernode-com.md b/docs/hypernode-platform/ssl/how-to-use-ssl-certificates-on-your-hypernode-when-ordered-via-hypernode-com.md index 07637d40..c18d79e8 100644 --- a/docs/hypernode-platform/ssl/how-to-use-ssl-certificates-on-your-hypernode-when-ordered-via-hypernode-com.md +++ b/docs/hypernode-platform/ssl/how-to-use-ssl-certificates-on-your-hypernode-when-ordered-via-hypernode-com.md @@ -3,6 +3,8 @@ myst: html_meta: description: 'This article explains how to install SSL certificates on your Hypernode when you have order them via hypernode.com. ' +redirect_from: +- /en/hypernode/ssl/how-to-use-ssl-certificates-on-your-hypernode-when-ordered-via-hypernode-com/ --- diff --git a/docs/hypernode-platform/ssl/how-to-use-ssl-certificates-on-your-hypernode-when-ordered-via-hypernode-nl.md b/docs/hypernode-platform/ssl/how-to-use-ssl-certificates-on-your-hypernode-when-ordered-via-hypernode-nl.md index 2429431d..1d825b24 100644 --- a/docs/hypernode-platform/ssl/how-to-use-ssl-certificates-on-your-hypernode-when-ordered-via-hypernode-nl.md +++ b/docs/hypernode-platform/ssl/how-to-use-ssl-certificates-on-your-hypernode-when-ordered-via-hypernode-nl.md @@ -4,6 +4,8 @@ myst: description: An SSL certificate keeps online interactions and transactions private and helps to gain confidence of customers. Read here how to use SSL ordered via Byte.nl. +redirect_from: +- /en/hypernode/ssl/how-to-use-ssl-certificates-on-your-hypernode-when-ordered-via-byte-nl/ --- diff --git a/docs/hypernode-platform/ssl/how-to-validate-your-ssl-certificate-and-more-frequently-asked-questions-about-ssl.md b/docs/hypernode-platform/ssl/how-to-validate-your-ssl-certificate-and-more-frequently-asked-questions-about-ssl.md index 7dc994a6..4e8be4a7 100644 --- a/docs/hypernode-platform/ssl/how-to-validate-your-ssl-certificate-and-more-frequently-asked-questions-about-ssl.md +++ b/docs/hypernode-platform/ssl/how-to-validate-your-ssl-certificate-and-more-frequently-asked-questions-about-ssl.md @@ -3,6 +3,8 @@ myst: html_meta: description: Read here how to validate your SSL certificate and more frequently asked question about SSL. Only available in Dutch. +redirect_from: +- /en/hypernode/ssl/how-to-validate-your-ssl-certificate-and-more-frequently-asked-questions-about-ssl/ --- diff --git a/docs/hypernode-platform/tools/how-to-configure-automatic-logfile-rotation-on-hypernode.md b/docs/hypernode-platform/tools/how-to-configure-automatic-logfile-rotation-on-hypernode.md index d2737f77..1ff51156 100644 --- a/docs/hypernode-platform/tools/how-to-configure-automatic-logfile-rotation-on-hypernode.md +++ b/docs/hypernode-platform/tools/how-to-configure-automatic-logfile-rotation-on-hypernode.md @@ -1,3 +1,8 @@ +--- +redirect_from: +- /en/support/solutions/articles/48001185227-how-to-configure-automatic-logfile-rotation-on-hypernode/ +--- + # How to configure automatic logfile rotation on Hypernode diff --git a/docs/hypernode-platform/tools/how-to-configure-automatic-logfile-rotation.md b/docs/hypernode-platform/tools/how-to-configure-automatic-logfile-rotation.md index 808fe09b..f4863f5e 100644 --- a/docs/hypernode-platform/tools/how-to-configure-automatic-logfile-rotation.md +++ b/docs/hypernode-platform/tools/how-to-configure-automatic-logfile-rotation.md @@ -3,6 +3,8 @@ myst: html_meta: description: This article explains how to use hypernode-auto-logrotate, a tool that automatically rotates log files, which helps to avoid disk space issues. +redirect_from: +- /en/hypernode/tools/how-to-configure-automatic-logfile-rotation/ --- diff --git a/docs/hypernode-platform/tools/how-to-configure-lesti-fpc.md b/docs/hypernode-platform/tools/how-to-configure-lesti-fpc.md index e8d6a20a..e8de8d67 100644 --- a/docs/hypernode-platform/tools/how-to-configure-lesti-fpc.md +++ b/docs/hypernode-platform/tools/how-to-configure-lesti-fpc.md @@ -4,6 +4,8 @@ myst: description: Using Lesti::FPC for Full Page Caching on Hypernode is recommended, as it is faster than using the default file caching mechanism. Read here how to do so +redirect_from: +- /en/hypernode/tools/how-to-configure-lesti-fpc/ --- diff --git a/docs/hypernode-platform/tools/how-to-copy-your-hypernode-to-another-hypernode.md b/docs/hypernode-platform/tools/how-to-copy-your-hypernode-to-another-hypernode.md index b88d3022..265cd858 100644 --- a/docs/hypernode-platform/tools/how-to-copy-your-hypernode-to-another-hypernode.md +++ b/docs/hypernode-platform/tools/how-to-copy-your-hypernode-to-another-hypernode.md @@ -1,3 +1,8 @@ +--- +redirect_from: +- /en/hypernode/tools/how-to-copy-your-hypernode-to-another-hypernode/ +--- + # How to copy your Hypernode to another Hypernode diff --git a/docs/hypernode-platform/tools/how-to-deploy-your-application-using-hypernode-deploy-v1.md b/docs/hypernode-platform/tools/how-to-deploy-your-application-using-hypernode-deploy-v1.md index 8753d1bf..73d1933f 100644 --- a/docs/hypernode-platform/tools/how-to-deploy-your-application-using-hypernode-deploy-v1.md +++ b/docs/hypernode-platform/tools/how-to-deploy-your-application-using-hypernode-deploy-v1.md @@ -1,3 +1,8 @@ +--- +redirect_from: +- /en/support/solutions/articles/48001219280-how-to-deploy-your-application-using-hypernode-deploy-v1/ +--- + # How to deploy your application using Hypernode Deploy v1 diff --git a/docs/hypernode-platform/tools/how-to-flush-the-redis-cache.md b/docs/hypernode-platform/tools/how-to-flush-the-redis-cache.md index aade2e06..d9a88e72 100644 --- a/docs/hypernode-platform/tools/how-to-flush-the-redis-cache.md +++ b/docs/hypernode-platform/tools/how-to-flush-the-redis-cache.md @@ -4,6 +4,8 @@ myst: description: 'Using Redis for caching on Hypernode is recommeded, as it is faster than using the file caching mechanism that is enabled by default. Read here how to do so. ' +redirect_from: +- /en/hypernode/tools/how-to-flush-the-redis-cache/ --- diff --git a/docs/hypernode-platform/tools/how-to-flush-the-varnish-cache.md b/docs/hypernode-platform/tools/how-to-flush-the-varnish-cache.md index 855c2a20..a155dbde 100644 --- a/docs/hypernode-platform/tools/how-to-flush-the-varnish-cache.md +++ b/docs/hypernode-platform/tools/how-to-flush-the-varnish-cache.md @@ -4,6 +4,8 @@ myst: description: Flushing the Varnish cache can be done using the Magento backend panel, but if needed, you might want to be able to flush the cache from the command line. +redirect_from: +- /en/support/solutions/articles/48000982378-how-to-flush-the-varnish-cache/ --- diff --git a/docs/hypernode-platform/tools/how-to-free-up-disk-space.md b/docs/hypernode-platform/tools/how-to-free-up-disk-space.md index 62451fad..ffbe2448 100644 --- a/docs/hypernode-platform/tools/how-to-free-up-disk-space.md +++ b/docs/hypernode-platform/tools/how-to-free-up-disk-space.md @@ -3,6 +3,8 @@ myst: html_meta: description: 'When your disk is full, you can try to free up disk space on your Hypernode before having to upgrade. Check out how to do so here. ' +redirect_from: +- /en/hypernode/tools/how-to-free-up-disk-space/ --- diff --git a/docs/hypernode-platform/tools/how-to-migrate-your-shop-to-hypernode.md b/docs/hypernode-platform/tools/how-to-migrate-your-shop-to-hypernode.md index 8d2bfdac..46d2db7c 100644 --- a/docs/hypernode-platform/tools/how-to-migrate-your-shop-to-hypernode.md +++ b/docs/hypernode-platform/tools/how-to-migrate-your-shop-to-hypernode.md @@ -3,6 +3,8 @@ myst: html_meta: description: 'Congratulations on your new Hypernode! Find out how to migrate your shop to Hypernode for testing on this page. ' +redirect_from: +- /en/hypernode/tools/how-to-migrate-your-shop-to-hypernode/ --- diff --git a/docs/hypernode-platform/tools/how-to-solve-redis-error-oom-command-not-allowed-when-used-memory-maxmemory.md b/docs/hypernode-platform/tools/how-to-solve-redis-error-oom-command-not-allowed-when-used-memory-maxmemory.md index 9b24740e..348d15ad 100644 --- a/docs/hypernode-platform/tools/how-to-solve-redis-error-oom-command-not-allowed-when-used-memory-maxmemory.md +++ b/docs/hypernode-platform/tools/how-to-solve-redis-error-oom-command-not-allowed-when-used-memory-maxmemory.md @@ -2,7 +2,9 @@ myst: html_meta: description: 'When Magento is trying to store more data in the Redis Cache than - possible, this error appears "OOM command not allowed when used memory > ‘maxmemory’. ' + possible, this error appears "OOM command not allowed when used memory > ‘maxmemory’". ' +redirect_from: +- /en/hypernode/tools/how-to-solve-redis-error-oom-command-not-allowed-when-used-memory-maxmemory-/ --- diff --git a/docs/hypernode-platform/tools/how-to-use-composer-2-on-your-hypernode.md b/docs/hypernode-platform/tools/how-to-use-composer-2-on-your-hypernode.md index a2ff152a..bc6b68c0 100644 --- a/docs/hypernode-platform/tools/how-to-use-composer-2-on-your-hypernode.md +++ b/docs/hypernode-platform/tools/how-to-use-composer-2-on-your-hypernode.md @@ -1,3 +1,8 @@ +--- +redirect_from: +- /en/support/solutions/articles/48001184546-how-to-use-composer-2-on-your-hypernode/ +--- + # How to use Composer 2 on your Hypernode diff --git a/docs/hypernode-platform/tools/how-to-use-elasticsearch-on-hypernode.md b/docs/hypernode-platform/tools/how-to-use-elasticsearch-on-hypernode.md index 4f55bb74..c695cd70 100644 --- a/docs/hypernode-platform/tools/how-to-use-elasticsearch-on-hypernode.md +++ b/docs/hypernode-platform/tools/how-to-use-elasticsearch-on-hypernode.md @@ -4,6 +4,8 @@ myst: description: Elasticsearch can be used to search in your Magento shop without any external service or configuration. This article explains how to enable and configure it. +redirect_from: +- /en/hypernode/tools/how-to-use-elasticsearch-on-hypernode/ --- diff --git a/docs/hypernode-platform/tools/how-to-use-hypernode-development-plans.md b/docs/hypernode-platform/tools/how-to-use-hypernode-development-plans.md index 54de5e42..019fd68f 100644 --- a/docs/hypernode-platform/tools/how-to-use-hypernode-development-plans.md +++ b/docs/hypernode-platform/tools/how-to-use-hypernode-development-plans.md @@ -4,6 +4,8 @@ myst: description: 'Hypernode offers its customers discounted development plans of all the regular Hypernode plans for development and testing. Read more about these plans here. ' +redirect_from: +- /en/hypernode/tools/how-to-use-hypernode-development-plans/ --- diff --git a/docs/hypernode-platform/tools/how-to-use-magento-corediff-on-hypernode.md b/docs/hypernode-platform/tools/how-to-use-magento-corediff-on-hypernode.md index cce98e8e..eedf1141 100644 --- a/docs/hypernode-platform/tools/how-to-use-magento-corediff-on-hypernode.md +++ b/docs/hypernode-platform/tools/how-to-use-magento-corediff-on-hypernode.md @@ -4,6 +4,8 @@ myst: description: Magento Corediff is a tool to find unauthorized modifications in a Magento 1 or 2. As it's installed on all Hypernodes this helps protect and secure your shop +redirect_from: +- /en/hypernode/tools/how-to-use-magento-corediff-on-hypernode/ --- diff --git a/docs/hypernode-platform/tools/how-to-use-mailhog-on-hypernode.md b/docs/hypernode-platform/tools/how-to-use-mailhog-on-hypernode.md index daaf4dfd..fb587cf1 100644 --- a/docs/hypernode-platform/tools/how-to-use-mailhog-on-hypernode.md +++ b/docs/hypernode-platform/tools/how-to-use-mailhog-on-hypernode.md @@ -4,6 +4,8 @@ myst: description: Debugging outgoing mail issues could require you to inspect all outgoing mails from a webshop. MailHog is an email testing tool for it, which we explain here. +redirect_from: +- /en/hypernode/tools/how-to-use-mailhog-on-hypernode/ --- diff --git a/docs/hypernode-platform/tools/how-to-use-node-js-and-npm-on-hypernode.md b/docs/hypernode-platform/tools/how-to-use-node-js-and-npm-on-hypernode.md index 6b8459cf..c3402956 100644 --- a/docs/hypernode-platform/tools/how-to-use-node-js-and-npm-on-hypernode.md +++ b/docs/hypernode-platform/tools/how-to-use-node-js-and-npm-on-hypernode.md @@ -3,6 +3,8 @@ myst: html_meta: description: This article explains how you can install node.js and NPM on a Hypernode and how to use this. +redirect_from: +- /en/hypernode/tools/how-to-use-node-js-and-npm-on-hypernode/ --- diff --git a/docs/hypernode-platform/tools/how-to-use-periodic-tasks-cronjobs-on-hypernode.md b/docs/hypernode-platform/tools/how-to-use-periodic-tasks-cronjobs-on-hypernode.md index 72435988..98351611 100644 --- a/docs/hypernode-platform/tools/how-to-use-periodic-tasks-cronjobs-on-hypernode.md +++ b/docs/hypernode-platform/tools/how-to-use-periodic-tasks-cronjobs-on-hypernode.md @@ -4,6 +4,8 @@ myst: description: Cronjobs are periodic tasks running in the background of your Hypernode for maintenance, such as cleaning up logs or importing products. Here's how to use them. +redirect_from: +- /en/hypernode/tools/how-to-use-periodic-tasks-cronjobs-on-hypernode/ --- diff --git a/docs/hypernode-platform/tools/how-to-use-supervisor.md b/docs/hypernode-platform/tools/how-to-use-supervisor.md index fa662a50..b3e9a775 100644 --- a/docs/hypernode-platform/tools/how-to-use-supervisor.md +++ b/docs/hypernode-platform/tools/how-to-use-supervisor.md @@ -4,6 +4,8 @@ myst: description: 'Supervisor enables you to use programs that need to run all the time on your Hypernode. Supervisor watches your programs and restarts them if they might fail. ' +redirect_from: +- /en/hypernode/tools/how-to-use-supervisor/ --- diff --git a/docs/hypernode-platform/tools/how-to-use-the-hypernode-systemctl-cli-tool.md b/docs/hypernode-platform/tools/how-to-use-the-hypernode-systemctl-cli-tool.md index 5581c18f..bb35bcf8 100644 --- a/docs/hypernode-platform/tools/how-to-use-the-hypernode-systemctl-cli-tool.md +++ b/docs/hypernode-platform/tools/how-to-use-the-hypernode-systemctl-cli-tool.md @@ -4,6 +4,8 @@ myst: description: The hypernode-systemctl tool allows you to set values for your Hypernode via the command line interface. It makes Magento development and maintenance easier. +redirect_from: +- /en/hypernode/tools/how-to-use-the-hypernode-systemctl-cli-tool/ --- diff --git a/docs/hypernode-platform/tools/hypernode-brancher.md b/docs/hypernode-platform/tools/hypernode-brancher.md index 2fcae011..0454bc53 100644 --- a/docs/hypernode-platform/tools/hypernode-brancher.md +++ b/docs/hypernode-platform/tools/hypernode-brancher.md @@ -1,3 +1,8 @@ +--- +redirect_from: +- /en/support/solutions/articles/48001227297-hypernode-brancher/ +--- + # Hypernode Brancher diff --git a/docs/hypernode-platform/tools/hypernode-cli-tools-and-magerun-plugins.md b/docs/hypernode-platform/tools/hypernode-cli-tools-and-magerun-plugins.md index 26e321ff..208f4498 100644 --- a/docs/hypernode-platform/tools/hypernode-cli-tools-and-magerun-plugins.md +++ b/docs/hypernode-platform/tools/hypernode-cli-tools-and-magerun-plugins.md @@ -3,6 +3,8 @@ myst: html_meta: description: This page offers an overview of all tools available on Hypernodes and hypernode-vagrant to Hypernode users to make your life as a developer easier. +redirect_from: +- /en/hypernode/tools/hypernode-cli-tools-and-magerun-plugins/ --- diff --git a/docs/hypernode-platform/tools/installation-and-configuration-of-pm2.md b/docs/hypernode-platform/tools/installation-and-configuration-of-pm2.md index 977c8d62..1e350014 100644 --- a/docs/hypernode-platform/tools/installation-and-configuration-of-pm2.md +++ b/docs/hypernode-platform/tools/installation-and-configuration-of-pm2.md @@ -1,3 +1,8 @@ +--- +redirect_from: +- /en/support/solutions/articles/48001208544-installation-and-configuration-of-pm2/ +--- + # Installation and configuration of PM2 diff --git a/docs/hypernode-platform/tools/unblocking-and-accessing-magmi-for-hypernode.md b/docs/hypernode-platform/tools/unblocking-and-accessing-magmi-for-hypernode.md index 17ddf769..c0aa616d 100644 --- a/docs/hypernode-platform/tools/unblocking-and-accessing-magmi-for-hypernode.md +++ b/docs/hypernode-platform/tools/unblocking-and-accessing-magmi-for-hypernode.md @@ -4,6 +4,8 @@ myst: description: Magmi, the Magento mass importer, is an alternative product importer offering better performance than the default. Here's how to unblock and access it. +redirect_from: +- /en/hypernode/tools/unblocking-and-accessing-magmi-for-hypernode/ --- diff --git a/docs/hypernode-platform/varnish/how-to-enable-varnish-on-hypernode.md b/docs/hypernode-platform/varnish/how-to-enable-varnish-on-hypernode.md index d442e80d..8aa7dc61 100644 --- a/docs/hypernode-platform/varnish/how-to-enable-varnish-on-hypernode.md +++ b/docs/hypernode-platform/varnish/how-to-enable-varnish-on-hypernode.md @@ -1,3 +1,8 @@ +--- +redirect_from: +- /en/hypernode/varnish/how-to-enable-varnish-on-hypernode/ +--- + # How to enable Varnish on Hypernode diff --git a/docs/services/control-panel/different-control-panel-scenarios.md b/docs/services/control-panel/different-control-panel-scenarios.md index a8bd830c..af391dcf 100644 --- a/docs/services/control-panel/different-control-panel-scenarios.md +++ b/docs/services/control-panel/different-control-panel-scenarios.md @@ -3,6 +3,8 @@ myst: html_meta: description: "For security and usability, the Hypernode Control Panel's features\ \ are available to users based on the role assigned to the individual user. " +redirect_from: +- /en/services/control-panel/different-control-panel-scenarios/ --- diff --git a/docs/services/control-panel/edit-personal-settings.md b/docs/services/control-panel/edit-personal-settings.md index 09c4e10c..b0af2482 100644 --- a/docs/services/control-panel/edit-personal-settings.md +++ b/docs/services/control-panel/edit-personal-settings.md @@ -3,6 +3,8 @@ myst: html_meta: description: 'You can modify your personal settings from the Hypernode control panel. In this article, we explain you how to edit them. ' +redirect_from: +- /en/services/control-panel/edit-personal-settings/ --- diff --git a/docs/services/control-panel/how-to-add-keys-to-the-ssh-key-manager.md b/docs/services/control-panel/how-to-add-keys-to-the-ssh-key-manager.md index ddbf8bdb..146dbdf6 100644 --- a/docs/services/control-panel/how-to-add-keys-to-the-ssh-key-manager.md +++ b/docs/services/control-panel/how-to-add-keys-to-the-ssh-key-manager.md @@ -3,6 +3,8 @@ myst: html_meta: description: 'You can add SSH Keys to your Hypernode via the Control Panel. Find out the steps to add SSH Keys in this article. ' +redirect_from: +- /en/services/control-panel/how-to-add-keys-to-the-ssh-keymanager/ --- diff --git a/docs/services/control-panel/how-to-change-your-hypernode-settings.md b/docs/services/control-panel/how-to-change-your-hypernode-settings.md index 1c5276c9..ef994b07 100644 --- a/docs/services/control-panel/how-to-change-your-hypernode-settings.md +++ b/docs/services/control-panel/how-to-change-your-hypernode-settings.md @@ -3,6 +3,8 @@ myst: html_meta: description: The Control Panel offers an overview of your Hypernode’s statistics and settings. This article offers an in-depth explanation of these values. +redirect_from: +- /en/support/solutions/articles/48001155575-how-to-change-your-hypernode-settings/ --- diff --git a/docs/services/control-panel/how-to-change-your-plan-via-the-cli.md b/docs/services/control-panel/how-to-change-your-plan-via-the-cli.md index 014269ea..24c3b79a 100644 --- a/docs/services/control-panel/how-to-change-your-plan-via-the-cli.md +++ b/docs/services/control-panel/how-to-change-your-plan-via-the-cli.md @@ -1,3 +1,8 @@ +--- +redirect_from: +- /en/services/control-panel/how-to-change-your-plan-via-the-cli/ +--- + # How to Change Your Plan via the CLI diff --git a/docs/services/control-panel/how-to-link-your-domain-to-your-hypernode.md b/docs/services/control-panel/how-to-link-your-domain-to-your-hypernode.md index 94bf6cf6..e8afd731 100644 --- a/docs/services/control-panel/how-to-link-your-domain-to-your-hypernode.md +++ b/docs/services/control-panel/how-to-link-your-domain-to-your-hypernode.md @@ -3,6 +3,8 @@ myst: html_meta: description: 'In this article, you find detailed guidelines on how to link your domain to your Hypernode. ' +redirect_from: +- /en/best-practices/usage/how-to-link-your-domain-to-your-hypernode/ --- diff --git a/docs/services/control-panel/how-to-order-a-hypernode-and-transfer-ownership-to-a-customer.md b/docs/services/control-panel/how-to-order-a-hypernode-and-transfer-ownership-to-a-customer.md index fb5aa02f..b47a17fe 100644 --- a/docs/services/control-panel/how-to-order-a-hypernode-and-transfer-ownership-to-a-customer.md +++ b/docs/services/control-panel/how-to-order-a-hypernode-and-transfer-ownership-to-a-customer.md @@ -4,6 +4,8 @@ myst: description: 'On Hypernode you can order and transfer ownership of a plan to the customer. This means a different account will be charged for the subscription. The steps are:' +redirect_from: +- /en/services/control-panel/how-to-order-a-hypernode-and-transfer-ownership-to-a-customer/ --- diff --git a/docs/services/control-panel/how-to-schedule-an-up-or-downgrade.md b/docs/services/control-panel/how-to-schedule-an-up-or-downgrade.md index e344fc62..017b11e9 100644 --- a/docs/services/control-panel/how-to-schedule-an-up-or-downgrade.md +++ b/docs/services/control-panel/how-to-schedule-an-up-or-downgrade.md @@ -1,3 +1,8 @@ +--- +redirect_from: +- /en/services/control-panel/how-to-schedule-an-up-or-downgrade/ +--- + # How to Schedule an Up -or Downgrade diff --git a/docs/services/control-panel/how-to-transfer-ownership-of-a-hypernode-in-the-control-panel.md b/docs/services/control-panel/how-to-transfer-ownership-of-a-hypernode-in-the-control-panel.md index 4444dc54..a168f6e7 100644 --- a/docs/services/control-panel/how-to-transfer-ownership-of-a-hypernode-in-the-control-panel.md +++ b/docs/services/control-panel/how-to-transfer-ownership-of-a-hypernode-in-the-control-panel.md @@ -3,6 +3,8 @@ myst: html_meta: description: 'On Hypernode you can transfer ownership. This means a different account will be charged for the subscription. Read here how to do this. ' +redirect_from: +- /en/services/control-panel/transfer-ownership/ --- diff --git a/docs/services/control-panel/how-to-use-2fa-on-the-control-panel.md b/docs/services/control-panel/how-to-use-2fa-on-the-control-panel.md index d9a03ac3..da08ca05 100644 --- a/docs/services/control-panel/how-to-use-2fa-on-the-control-panel.md +++ b/docs/services/control-panel/how-to-use-2fa-on-the-control-panel.md @@ -1,3 +1,8 @@ +--- +redirect_from: +- /en/services/control-panel/how-to-use-2fa-on-the-control-panel/ +--- + # How to Use 2FA on the Control Panel diff --git a/docs/services/control-panel/how-to-use-teams.md b/docs/services/control-panel/how-to-use-teams.md index d2f63d7d..d404d2b8 100644 --- a/docs/services/control-panel/how-to-use-teams.md +++ b/docs/services/control-panel/how-to-use-teams.md @@ -3,6 +3,8 @@ myst: html_meta: description: 'In this article, we explain how to manage teams on the Hypernode control panel. You can invite developers, merchants or an agency. ' +redirect_from: +- /en/services/control-panel/how-to-use-teams/ --- diff --git a/docs/services/control-panel/how-to-use-the-dns-check.md b/docs/services/control-panel/how-to-use-the-dns-check.md index 35d9afb6..0dc34c70 100644 --- a/docs/services/control-panel/how-to-use-the-dns-check.md +++ b/docs/services/control-panel/how-to-use-the-dns-check.md @@ -3,6 +3,8 @@ myst: html_meta: description: 'Use the DNS check in the Control Panel to ensure your externally hosted domain is properly configured to send email via Hypernode. ' +redirect_from: +- /en/services/control-panel/how-to-use-the-dns-check/ --- diff --git a/docs/services/control-panel/user-roles-and-permissions-on-hypernodes-control-panel.md b/docs/services/control-panel/user-roles-and-permissions-on-hypernodes-control-panel.md index 9a925ff8..51e16e60 100644 --- a/docs/services/control-panel/user-roles-and-permissions-on-hypernodes-control-panel.md +++ b/docs/services/control-panel/user-roles-and-permissions-on-hypernodes-control-panel.md @@ -4,6 +4,8 @@ myst: description: For security and usability, the Hypernode Control Panel's features are available to users based on the role assigned to the individual user. Read more here. +redirect_from: +- /en/services/control-panel/user-roles-and-permissions-on-hypernodes-control-panel/ --- diff --git a/docs/services/control-panel/using-logs-in-the-control-panel.md b/docs/services/control-panel/using-logs-in-the-control-panel.md index 821a973d..ecea23d8 100644 --- a/docs/services/control-panel/using-logs-in-the-control-panel.md +++ b/docs/services/control-panel/using-logs-in-the-control-panel.md @@ -3,6 +3,8 @@ myst: html_meta: description: This article explains how to use the logs in the Control Panel to get a better understanding of actions you or others have performed. +redirect_from: +- /en/services/control-panel/using-logs-in-the-control-panel/ --- diff --git a/docs/services/domain-procedures/everything-about-presence-plans-and-domains.md b/docs/services/domain-procedures/everything-about-presence-plans-and-domains.md index b40d28d9..7be524d8 100644 --- a/docs/services/domain-procedures/everything-about-presence-plans-and-domains.md +++ b/docs/services/domain-procedures/everything-about-presence-plans-and-domains.md @@ -4,6 +4,8 @@ myst: description: A Presence plan can be used to register a domain but also to redirect your domain to a website. Read how you can use a Presence plan at Hypernode here +redirect_from: +- /en/services/domains/everything-about-presence-plans-and-domains/ --- diff --git a/docs/services/domain-procedures/extension-specific-info-per-domain.md b/docs/services/domain-procedures/extension-specific-info-per-domain.md index fe0de812..2f83ad64 100644 --- a/docs/services/domain-procedures/extension-specific-info-per-domain.md +++ b/docs/services/domain-procedures/extension-specific-info-per-domain.md @@ -1,3 +1,8 @@ +--- +redirect_from: +- /en/services/domains/extension-specific-info-per-domain/ +--- + # Extension Specific Info per Domain diff --git a/docs/services/domain-procedures/how-to-transfer-your-domain-away-from-hypernode.md b/docs/services/domain-procedures/how-to-transfer-your-domain-away-from-hypernode.md index 12c83d7e..e1d3b5a2 100644 --- a/docs/services/domain-procedures/how-to-transfer-your-domain-away-from-hypernode.md +++ b/docs/services/domain-procedures/how-to-transfer-your-domain-away-from-hypernode.md @@ -1,3 +1,8 @@ +--- +redirect_from: +- /en/services/domains/how-to-transfer-your-domain-away-from-hypernode/ +--- + # How to Transfer Your Domain Away From Hypernode diff --git a/docs/services/domain-procedures/how-to-transfer-your-domain-name-to-another-provider-service-panel.md b/docs/services/domain-procedures/how-to-transfer-your-domain-name-to-another-provider-service-panel.md index 299218a8..5b7799a3 100644 --- a/docs/services/domain-procedures/how-to-transfer-your-domain-name-to-another-provider-service-panel.md +++ b/docs/services/domain-procedures/how-to-transfer-your-domain-name-to-another-provider-service-panel.md @@ -3,6 +3,8 @@ myst: html_meta: description: This article explains which steps you need to take if you choose to transfer your domain from Hypernode to another provider. +redirect_from: +- /en/services/domains/how-to-transfer-your-domain-name-to-another-provider/ --- diff --git a/docs/services/domain-procedures/how-to-undo-the-cancellation-of-a-domain-name.md b/docs/services/domain-procedures/how-to-undo-the-cancellation-of-a-domain-name.md index 224bb17a..bdc8aac5 100644 --- a/docs/services/domain-procedures/how-to-undo-the-cancellation-of-a-domain-name.md +++ b/docs/services/domain-procedures/how-to-undo-the-cancellation-of-a-domain-name.md @@ -2,6 +2,8 @@ myst: html_meta: description: This article explains how to undo the cancellation of a domain name. +redirect_from: +- /en/services/domains/undoing-the-cancellation-of-a-domain-name/ --- diff --git a/docs/services/domain-procedures/how-to-use-domains-in-the-control-panel.md b/docs/services/domain-procedures/how-to-use-domains-in-the-control-panel.md index f79d9277..17d88c48 100644 --- a/docs/services/domain-procedures/how-to-use-domains-in-the-control-panel.md +++ b/docs/services/domain-procedures/how-to-use-domains-in-the-control-panel.md @@ -1,3 +1,8 @@ +--- +redirect_from: +- /en/services/domains/how-to-use-domains-in-the-control-panel/ +--- + # How to Use Domains in the Control Panel diff --git a/docs/services/magereport/magereport-premium.md b/docs/services/magereport/magereport-premium.md index 67e35561..60ca7cbd 100644 --- a/docs/services/magereport/magereport-premium.md +++ b/docs/services/magereport/magereport-premium.md @@ -4,6 +4,8 @@ myst: description: MageReport Premium provides Hypernode customers with extra information about the performance of their Magento shop. This article explains more about MR Premium. +redirect_from: +- /en/services/magereport/magereport-premium/ --- diff --git a/docs/services/service-panel/different-service-panel-scenarios.md b/docs/services/service-panel/different-service-panel-scenarios.md index 75450718..2be6d61e 100644 --- a/docs/services/service-panel/different-service-panel-scenarios.md +++ b/docs/services/service-panel/different-service-panel-scenarios.md @@ -3,6 +3,8 @@ myst: html_meta: description: The Service Panel works with a central login, which enables users to easily manage multiple plans. This article explains different scenarios. +redirect_from: +- /en/about/support/different-service-panel-scenarios/ --- diff --git a/docs/services/service-panel/how-to-change-your-customer-details-and-other-questions.md b/docs/services/service-panel/how-to-change-your-customer-details-and-other-questions.md index b51f2c66..f4dd3383 100644 --- a/docs/services/service-panel/how-to-change-your-customer-details-and-other-questions.md +++ b/docs/services/service-panel/how-to-change-your-customer-details-and-other-questions.md @@ -3,6 +3,8 @@ myst: html_meta: description: 'Administrative changes can be done through the Service Panel (or via a letter) due to security reasons. Read how to change customer details here. ' +redirect_from: +- /en/about/billing/how-to-change-your-customer-details-and-other-questions/ --- diff --git a/docs/services/service-panel/how-to-log-into-the-service-panel.md b/docs/services/service-panel/how-to-log-into-the-service-panel.md index f1859ba1..4147c4a0 100644 --- a/docs/services/service-panel/how-to-log-into-the-service-panel.md +++ b/docs/services/service-panel/how-to-log-into-the-service-panel.md @@ -3,6 +3,8 @@ myst: html_meta: description: This guide will explain how you can log in to the Service Panel and what to do if you don't have access to your data anymore. +redirect_from: +- /en/about/support/how-to-log-into-the-service-panel/ --- diff --git a/docs/services/service-panel/how-to-use-2fa-on-the-service-panel.md b/docs/services/service-panel/how-to-use-2fa-on-the-service-panel.md index 26003505..a46b6ba8 100644 --- a/docs/services/service-panel/how-to-use-2fa-on-the-service-panel.md +++ b/docs/services/service-panel/how-to-use-2fa-on-the-service-panel.md @@ -3,6 +3,8 @@ myst: html_meta: description: In this article, we explain how to use 2FA for the Control Panel. Not available yet. +redirect_from: +- /en/services/service-panel/how-to-use-2fa-for-the-service-panel/ --- diff --git a/docs/troubleshooting/performance/general-troubleshooting.md b/docs/troubleshooting/performance/general-troubleshooting.md index c8d90f18..32be3434 100644 --- a/docs/troubleshooting/performance/general-troubleshooting.md +++ b/docs/troubleshooting/performance/general-troubleshooting.md @@ -4,6 +4,8 @@ myst: description: Need to debug a problem? Hypernode has many possibilities to analyse a suspicious or unwanted situation. Learn where to look and reach a conclusion fast. +redirect_from: +- /en/troubleshooting/performance/general-troubleshooting/ --- diff --git a/docs/troubleshooting/performance/how-to-block-bad-bots-via-the-control-panel.md b/docs/troubleshooting/performance/how-to-block-bad-bots-via-the-control-panel.md index 6d1f7df7..7ff98fc0 100644 --- a/docs/troubleshooting/performance/how-to-block-bad-bots-via-the-control-panel.md +++ b/docs/troubleshooting/performance/how-to-block-bad-bots-via-the-control-panel.md @@ -4,6 +4,8 @@ myst: description: A lot of bot traffic has a negative impact on the performance of your webshop. Hypernode offers you the possibility to block bad bots in your control panel. +redirect_from: +- /en/services/control-panel/block-bad-bots-via-the-control-panel/ --- diff --git a/docs/troubleshooting/performance/how-to-block-bad-bots-via-the-service-panel.md b/docs/troubleshooting/performance/how-to-block-bad-bots-via-the-service-panel.md index bfd949d0..547b757a 100644 --- a/docs/troubleshooting/performance/how-to-block-bad-bots-via-the-service-panel.md +++ b/docs/troubleshooting/performance/how-to-block-bad-bots-via-the-service-panel.md @@ -3,6 +3,8 @@ myst: html_meta: description: A lot of bot traffic has a negative impact on the performance of your webshop. At Hypernode you can block unwanted bots in your Service Panel. +redirect_from: +- /en/support/solutions/articles/48001163357-how-to-block-bad-bots-via-the-service-panel/ --- diff --git a/docs/troubleshooting/performance/how-to-check-why-my-site-is-slow.md b/docs/troubleshooting/performance/how-to-check-why-my-site-is-slow.md index ab3f35d6..31797c3f 100644 --- a/docs/troubleshooting/performance/how-to-check-why-my-site-is-slow.md +++ b/docs/troubleshooting/performance/how-to-check-why-my-site-is-slow.md @@ -4,6 +4,8 @@ myst: description: So your webshop seems to be significantly slower than it used to be and you have no idea what's going on. In this article you will find some initial checks. +redirect_from: +- /en/troubleshooting/performance/how-to-check-why-my-site-is-slow/ --- diff --git a/docs/troubleshooting/performance/how-to-debug-out-of-memory-oom-events.md b/docs/troubleshooting/performance/how-to-debug-out-of-memory-oom-events.md index be9c18d3..c9e4ca81 100644 --- a/docs/troubleshooting/performance/how-to-debug-out-of-memory-oom-events.md +++ b/docs/troubleshooting/performance/how-to-debug-out-of-memory-oom-events.md @@ -3,6 +3,8 @@ myst: html_meta: description: When processes on your Hypernode require more memory than is available, there is a risk of downtime. This article explains more about the Linux oom-killer. +redirect_from: +- /en/troubleshooting/performance/how-to-debug-out-of-memory-oom-events/ --- diff --git a/docs/troubleshooting/performance/how-to-fix-invalid-form-key-error.md b/docs/troubleshooting/performance/how-to-fix-invalid-form-key-error.md index 6dbd82a5..f35a84f5 100644 --- a/docs/troubleshooting/performance/how-to-fix-invalid-form-key-error.md +++ b/docs/troubleshooting/performance/how-to-fix-invalid-form-key-error.md @@ -4,6 +4,8 @@ myst: description: If you get the dreaded “Invalid form key” error while logging in or working in the admin, something is wrong with your setup. Read here how to fix this. +redirect_from: +- /en/troubleshooting/performance/how-to-fix-invalid-form-key-error/ --- diff --git a/docs/troubleshooting/performance/how-to-identify-and-stop-long-running-processes.md b/docs/troubleshooting/performance/how-to-identify-and-stop-long-running-processes.md index 110664e8..7e8d8937 100644 --- a/docs/troubleshooting/performance/how-to-identify-and-stop-long-running-processes.md +++ b/docs/troubleshooting/performance/how-to-identify-and-stop-long-running-processes.md @@ -4,6 +4,8 @@ myst: description: "Long running processes might indicate: the site benefiting from\ \ an index (SQL), inefficient or erroneous code (PHP), or a deadlock. Here's\ \ how to identify them." +redirect_from: +- /en/troubleshooting/performance/how-to-identify-and-stop-long-running-processes/ --- diff --git a/docs/troubleshooting/performance/how-to-implement-pagespeed-booster.md b/docs/troubleshooting/performance/how-to-implement-pagespeed-booster.md index bde31a97..e4dc3099 100644 --- a/docs/troubleshooting/performance/how-to-implement-pagespeed-booster.md +++ b/docs/troubleshooting/performance/how-to-implement-pagespeed-booster.md @@ -3,6 +3,8 @@ myst: html_meta: description: PageSpeed Booster is a reverse proxy which uses many static optimisation techniques to greatly increase the pagespeed score and performance of your website. +redirect_from: +- /en/troubleshooting/performance/how-to-implement-pagespeed-booster/ --- diff --git a/docs/troubleshooting/performance/how-to-optimise-your-magento-disk-performance.md b/docs/troubleshooting/performance/how-to-optimise-your-magento-disk-performance.md index 83fa16c2..21c606d1 100644 --- a/docs/troubleshooting/performance/how-to-optimise-your-magento-disk-performance.md +++ b/docs/troubleshooting/performance/how-to-optimise-your-magento-disk-performance.md @@ -3,6 +3,8 @@ myst: html_meta: description: Optimising your Magento disk performance could lead to higher speed and a better performance of your shop. Read here how to optimise it on Hypernode. +redirect_from: +- /en/troubleshooting/performance/how-to-optimise-your-magento-disk-performance/ --- diff --git a/docs/troubleshooting/performance/how-to-resolve-a-413-request-entity-too-large-error.md b/docs/troubleshooting/performance/how-to-resolve-a-413-request-entity-too-large-error.md index 9f419b7b..8683bb15 100644 --- a/docs/troubleshooting/performance/how-to-resolve-a-413-request-entity-too-large-error.md +++ b/docs/troubleshooting/performance/how-to-resolve-a-413-request-entity-too-large-error.md @@ -1,3 +1,8 @@ +--- +redirect_from: +- /en/troubleshooting/performance/how-to-resolve-a-413-request-entity-too-large-error/ +--- + # How to Resolve a 413 Request Entity Too Large Error diff --git a/docs/troubleshooting/performance/how-to-solve-the-front-controller-reached-100-router-match-iterations-error.md b/docs/troubleshooting/performance/how-to-solve-the-front-controller-reached-100-router-match-iterations-error.md index d791a15c..879e648c 100644 --- a/docs/troubleshooting/performance/how-to-solve-the-front-controller-reached-100-router-match-iterations-error.md +++ b/docs/troubleshooting/performance/how-to-solve-the-front-controller-reached-100-router-match-iterations-error.md @@ -4,6 +4,8 @@ myst: description: This error 'Front Controller Reached 100 Router Match Iterations' appears when corruption in the cache arises, due to a bug in Magento. Here's how to solve it. +redirect_from: +- /en/troubleshooting/performance/how-to-solve-the-front-controller-reached-100-router-match-iterations-error/ --- diff --git a/docs/troubleshooting/performance/how-to-spot-slow-extensions-using-the-php-slow-logs.md b/docs/troubleshooting/performance/how-to-spot-slow-extensions-using-the-php-slow-logs.md index 19964ce0..b27a08b7 100644 --- a/docs/troubleshooting/performance/how-to-spot-slow-extensions-using-the-php-slow-logs.md +++ b/docs/troubleshooting/performance/how-to-spot-slow-extensions-using-the-php-slow-logs.md @@ -3,6 +3,8 @@ myst: html_meta: description: 'PHP-FPM offers its slow logs, which spots slow extensions in your Magento shop. Read more about it and how to use it in this article. ' +redirect_from: +- /en/troubleshooting/performance/how-to-spot-slow-extensions-using-the-php-slow-logs/ --- diff --git a/docs/troubleshooting/performance/how-to-use-the-mysql-slow-queries-in-the-control-panel.md b/docs/troubleshooting/performance/how-to-use-the-mysql-slow-queries-in-the-control-panel.md index 690d0066..beb196d6 100644 --- a/docs/troubleshooting/performance/how-to-use-the-mysql-slow-queries-in-the-control-panel.md +++ b/docs/troubleshooting/performance/how-to-use-the-mysql-slow-queries-in-the-control-panel.md @@ -3,6 +3,8 @@ myst: html_meta: description: Use the MySQL Slow Logs in the Control Panel to find out what's causing the delay in your database queries to prevent performance issues on your Hypernode. +redirect_from: +- /en/support/solutions/articles/48001154919-how-to-use-the-mysql-slow-queries-in-the-control-panel/ --- From e28512bff9f6258f69d780cba23a30f9b2a3229f Mon Sep 17 00:00:00 2001 From: Timon de Groot Date: Tue, 3 Jan 2023 13:18:39 +0100 Subject: [PATCH 02/51] Dump env in cleanup_acceptance.yaml --- .github/workflows/cleanup_acceptance.yaml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/cleanup_acceptance.yaml b/.github/workflows/cleanup_acceptance.yaml index ee45f91b..5ac4dc11 100644 --- a/.github/workflows/cleanup_acceptance.yaml +++ b/.github/workflows/cleanup_acceptance.yaml @@ -10,6 +10,8 @@ jobs: container: quay.io/hypernode/deploy:3-php8.1-node18 steps: - uses: actions/checkout@v2 + - name: Dump env + run: env - name: Cleanup acceptance environments run: hypernode-deploy cleanup acceptance -vvv env: From 755f017ec71ee3c99c890f3038c2cfcfed059671 Mon Sep 17 00:00:00 2001 From: Timon de Groot Date: Tue, 3 Jan 2023 13:20:51 +0100 Subject: [PATCH 03/51] Reformat docs --- .../about-hypernode/hypernode-and-team-blue.md | 2 +- .../about-hypernode/hypernode-certification-for-agencies.md | 2 +- .../about-hypernode/hypernode-pricing-plans.md | 2 +- .../upgrade-to-debian-buster-technical-implications.md | 2 +- .../what-kind-of-emails-does-hypernode-send.md | 2 +- .../about-hypernode/which-cloud-providers-do-we-use.md | 2 +- .../billing/billing-faq-for-the-control-panel.md | 2 +- .../billing/billing-faq-for-the-service-panel.md | 2 +- .../billing/control-panel-billing-facturen-faq-dutch.md | 2 +- docs/about-hypernode/billing/how-to-cancel-your-plan.md | 2 +- .../billing/how-to-choose-and-order-a-hypernode-plan.md | 2 +- .../billing/how-to-up-or-downgrade-your-hypernode-plan.md | 2 +- .../about-hypernode/billing/our-payment-service-provider.md | 2 +- .../supported-payment-methods-in-the-control-panel.md | 2 +- .../security-policies/hypernode-security-statement.md | 2 +- .../one-of-your-magento-extensions-is-vulnerable.md | 2 +- .../security-policies/responsible-disclosure-policy.md | 2 +- .../security-policies/security-hall-of-fame.md | 2 +- ...at-you-need-to-know-about-the-geo-blocking-regulation.md | 2 +- .../about-hypernode/support/24-7-monitoring-and-alerting.md | 2 +- .../support/conflict-between-merchant-and-webdesigner.md | 2 +- .../support/emergency-support-outside-office-hours.md | 2 +- docs/about-hypernode/support/scope-of-support.md | 2 +- ...create-a-backup-and-download-it-to-your-local-machine.md | 2 +- .../cdn/how-to-use-cloudflare-with-hypernode.md | 2 +- .../database/how-to-run-rabbitmq-on-hypernode.md | 2 +- .../database/how-to-use-heidisql-on-hypernode.md | 2 +- ...an-autoresponder-out-of-office-for-your-email-address.md | 2 +- docs/best-practices/email/how-to-export-your-emails.md | 2 +- docs/best-practices/email/how-to-find-the-mail-headers.md | 2 +- ...event-spam-being-sent-from-your-name-or-email-address.md | 2 +- .../email/how-to-prevent-your-email-being-marked-as-spam.md | 2 +- docs/best-practices/email/how-to-use-e-mail-on-hypernode.md | 2 +- .../performance/how-to-enable-pagespeed-booster.md | 2 +- ...ow-to-find-your-performance-bottleneck-with-new-relic.md | 2 +- ...to-fix-performance-issues-caused-by-bots-and-crawlers.md | 2 +- .../performance/how-to-improve-your-magento-search.md | 2 +- .../how-to-optimize-the-performance-of-your-magento-shop.md | 2 +- .../performance/how-to-optimize-your-images.md | 2 +- ...use-blackfire-on-hypernode-to-find-performance-issues.md | 2 +- docs/best-practices/pwa/hypernode-and-pwa-hosting.md | 2 +- .../security/how-does-hypernode-handle-ddos-attacks.md | 2 +- .../security/how-hypernode-protects-your-magento-shop.md | 2 +- .../best-practices/security/how-to-apply-magento-patches.md | 2 +- .../how-to-fix-malicious-javascript-credit-card-hijack.md | 2 +- ...nerabilty-apsb22-12-cve-2022-24086-and-cve-2022-24087.md | 2 +- ...to-install-magento-patch-supee-8788-and-release-1-9-3.md | 2 +- .../how-to-protect-magento-against-brute-force-attacks.md | 2 +- .../security/how-to-recover-a-hacked-magento-shop.md | 2 +- .../security/how-to-scan-your-hypernode-for-malware.md | 2 +- .../security/how-to-secure-magento-cacheleak.md | 2 +- .../how-to-secure-your-data-using-encryption-and-hashing.md | 2 +- .../security/how-to-use-a-cloud-firewall-on-hypernode.md | 2 +- .../security/hypernodes-not-vulnerable-for-cve-2021-4034.md | 2 +- .../what-you-need-to-know-about-the-visbot-malware.md | 2 +- .../testing/how-to-check-if-everything-works.md | 2 +- .../testing/how-to-go-live-with-your-hypernode.md | 2 +- .../how-to-test-your-website-by-changing-your-hosts-file.md | 2 +- docs/best-practices/testing/hypernode-docker.md | 2 +- .../testing/zero-downtime-deployment-on-hypernode.md | 2 +- .../usage/how-to-handle-composer-memory-issues.md | 2 +- ...o-install-wordpress-next-to-your-magento-installation.md | 2 +- .../akeneo/how-to-install-akeneo-3-on-hypernode.md | 2 +- .../akeneo/how-to-install-akeneo-4-on-hypernode.md | 2 +- .../akeneo/how-to-install-akeneo-5-on-hypernode.md | 2 +- .../akeneo/how-to-install-akeneo-6-on-hypernode.md | 2 +- .../how-to-use-a-basic-staging-environment-with-akeneo-3.md | 2 +- ...o-use-a-basic-staging-environment-with-akeneo-4-and-5.md | 2 +- .../magento-1/how-to-change-the-base-url-in-magento-1-x.md | 2 +- .../magento-1/how-to-clean-the-magento-1-x-logs.md | 2 +- .../magento-1/how-to-configure-redis-for-magento-1.md | 2 +- .../magento-1/how-to-configure-varnish-for-magento-1-x.md | 2 +- .../how-to-create-a-robots-txt-for-your-magento-1-shop.md | 2 +- .../how-to-create-a-sitemap-xml-for-magento-1-x.md | 2 +- .../magento-1/how-to-enable-clean-urls-for-magento.md | 2 +- .../how-to-enable-mysql-query-logging-for-magento-1-x.md | 2 +- .../magento-1/how-to-enable-the-magento-1-api.md | 2 +- .../how-to-enable-the-maintenance-mode-in-magento-1.md | 2 +- ...wsdl-couldnt-load-from-failed-to-load-external-entity.md | 6 +++--- .../magento-1/how-to-flush-the-magento-1-x-caches.md | 2 +- .../magento-1/how-to-flush-the-wsdl-cache.md | 2 +- .../magento-1/how-to-install-magento-1-on-hypernode.md | 2 +- .../how-to-remove-your-magento-1-x-installation.md | 2 +- .../how-to-reset-your-magento-1-x-admin-password.md | 2 +- .../magento-1/how-to-set-magento-1-x-to-the-utc-timezone.md | 2 +- .../how-to-set-the-return-path-for-a-magento-1-shop.md | 2 +- .../how-to-set-up-a-staging-environment-for-magento-1.md | 2 +- .../magento-2/how-to-change-your-magento-2-base-urls.md | 2 +- .../magento-2/how-to-configure-redis-for-magento-2.md | 2 +- .../magento-2/how-to-configure-varnish-for-magento-2-x.md | 2 +- .../magento-2/how-to-create-a-robots-txt-for-magento-2-x.md | 2 +- .../how-to-create-a-sitemap-xml-for-magento-2-x.md | 2 +- .../magento-2/how-to-enable-the-magento-2-api.md | 2 +- .../how-to-enable-the-magento-2-web-setup-wizard.md | 2 +- .../how-to-enable-the-maintenance-mode-in-magento-2.md | 2 +- ...he-general-error-1030-got-error-1-from-storage-engine.md | 2 +- .../magento-2/how-to-flush-the-magento-2-x-caches.md | 2 +- .../magento-2/how-to-install-magento-2-on-hypernode.md | 2 +- ...ow-to-optimize-magento-2-queue-consumers-on-hypernode.md | 2 +- .../magento-2/how-to-protect-the-magento-2-api.md | 2 +- .../how-to-remove-your-magento-2-x-installation.md | 2 +- .../how-to-reset-your-magento-2-x-admin-password.md | 2 +- .../magento-2/how-to-set-magento-2-x-to-the-utc-timezone.md | 2 +- .../how-to-set-mysql-variables-globally-on-hypernode.md | 2 +- .../how-to-set-the-return-path-for-a-magento-2-shop.md | 2 +- ...w-to-set-up-a-basic-staging-environment-for-magento-2.md | 2 +- .../magento-2/how-to-set-up-smart-404-handling.md | 2 +- .../magento-2/how-to-update-magento-2.md | 2 +- ...the-timezone-for-the-order-timestamps-in-shopware-5-x.md | 2 +- .../how-to-change-the-timezone-in-shopware-5-x.md | 2 +- .../shopware-5/how-to-configure-shopware-caching.md | 2 +- .../shopware-5/how-to-configure-varnish-for-shopware-5.md | 2 +- .../shopware-5/how-to-host-shopware-on-hypernode.md | 2 +- .../how-to-install-shopware-5-on-hypernode-docker.md | 2 +- .../shopware-5/how-to-install-shopware-5-on-hypernode.md | 2 +- .../shopware-5/how-to-setup-a-multistore-in-shopware.md | 2 +- .../how-to-use-a-basic-staging-environment-with-shopware.md | 2 +- .../shopware-6/how-to-configure-redis-for-shopware-6.md | 2 +- .../shopware-6/how-to-configure-varnish-for-shopware-6.md | 2 +- .../how-to-install-shopware-6-on-hypernode-docker.md | 2 +- .../shopware-6/how-to-install-shopware-6-on-hypernode.md | 2 +- ...ow-to-use-a-basic-staging-environment-with-shopware-6.md | 2 +- ...ssue-accessing-shopware-6-admin-on-a-development-plan.md | 2 +- .../woocommerce/how-to-install-woocommerce-on-hypernode.md | 2 +- .../how-to-get-started-with-your-hypernode-trial.md | 2 +- .../how-to-order/how-to-order-a-domain-presence-plan.md | 2 +- .../how-to-restore-your-hypernode-from-a-snapshot.md | 2 +- docs/hypernode-platform/backups/hypernode-backup-policy.md | 2 +- docs/hypernode-platform/dns/dns-for-service-panel-users.md | 2 +- .../dns/how-to-manage-your-dns-settings-for-hypernode.md | 2 +- .../dns/how-to-set-up-your-spf-records-for-hypernode.md | 2 +- docs/hypernode-platform/dns/your-dns-is-misconfigured.md | 2 +- .../how-to-activate-a-virus-filter-for-your-email-box.md | 2 +- .../email/how-to-configure-the-spam-filter.md | 2 +- .../email/how-to-manage-your-email-queue.md | 2 +- .../email/how-to-set-up-your-dns-for-outgoing-email.md | 2 +- .../email/how-to-set-up-your-dns-for-using-office365.md | 2 +- docs/hypernode-platform/email/how-to-use-dmarc.md | 2 +- .../email/policy-for-sending-email-on-hypernode.md | 2 +- docs/hypernode-platform/email/spam-run-via-your-website.md | 2 +- .../ftp/how-to-configure-ftp-sftp-on-hypernode.md | 2 +- .../mysql/how-to-configure-a-large-mysql-thread-stack.md | 2 +- .../mysql/how-to-free-disk-space-from-mysql-ibdata1.md | 2 +- .../mysql/how-to-use-mysql-on-hypernode.md | 2 +- docs/hypernode-platform/mysql/how-to-use-phpmyadmin.md | 2 +- .../basic-authentication-on-hypernode-development-plans.md | 2 +- .../how-to-add-custom-http-headers-to-a-file-or-location.md | 2 +- .../nginx/how-to-block-allow-ip-addresses-in-nginx.md | 2 +- .../nginx/how-to-block-spammers-and-scanners.md | 2 +- .../nginx/how-to-block-user-agents-and-referrer-sites.md | 2 +- .../how-to-block-your-webshop-for-specific-countries.md | 2 +- .../nginx/how-to-configure-nginx-for-a-multistore.md | 2 +- .../nginx/how-to-configure-your-shop-to-only-use-https.md | 2 +- ...reate-a-reusable-config-to-include-in-custom-snippets.md | 2 +- .../how-to-deny-access-to-locations-and-directories.md | 2 +- ...-the-top-10-visitors-by-parsing-the-nginx-access-logs.md | 2 +- ...o-protect-your-magento-store-with-a-password-in-nginx.md | 2 +- .../nginx/how-to-redirect-from-or-to-www.md | 2 +- ...o-resolve-rate-limited-requests-429-too-many-requests.md | 2 +- .../nginx/how-to-restrict-access-to-your-admin-area.md | 2 +- .../how-to-rewrite-a-trailing-slash-for-seo-purposes.md | 2 +- .../nginx/how-to-set-the-server-name-in-nginx.md | 2 +- ...speed-up-your-magento-shop-by-tuning-gzip-compression.md | 2 +- ...k-requests-to-sql-and-archive-files-on-your-hypernode.md | 2 +- docs/hypernode-platform/nginx/how-to-use-nginx.md | 2 +- docs/hypernode-platform/nginx/hypernode-managed-vhosts.md | 2 +- docs/hypernode-platform/php/how-to-flush-the-php-opcache.md | 2 +- docs/hypernode-platform/php/how-to-override-php-settings.md | 2 +- .../php/how-to-resolve-502-gateway-errors.md | 2 +- ...rted-php-versions-and-how-to-change-them-on-hypernode.md | 2 +- .../php/what-limits-apply-to-active-php-requests-per-ip.md | 2 +- .../ssh/how-to-log-in-to-the-hypernode-with-ssh.md | 2 +- .../ssh/how-to-use-ssh-keys-on-hypernode.md | 2 +- .../ssl/how-to-upgrade-your-ssl-settings-to-an-a.md | 2 +- .../ssl/how-to-use-lets-encrypt-on-hypernode.md | 2 +- ...ates-on-your-hypernode-when-ordered-via-hypernode-com.md | 2 +- ...cates-on-your-hypernode-when-ordered-via-hypernode-nl.md | 2 +- ...ificate-and-more-frequently-asked-questions-about-ssl.md | 2 +- ...-to-configure-automatic-logfile-rotation-on-hypernode.md | 2 +- .../tools/how-to-configure-automatic-logfile-rotation.md | 2 +- docs/hypernode-platform/tools/how-to-configure-lesti-fpc.md | 2 +- .../how-to-copy-your-hypernode-to-another-hypernode.md | 2 +- ...-to-deploy-your-application-using-hypernode-deploy-v1.md | 2 +- .../tools/how-to-flush-the-redis-cache.md | 2 +- .../tools/how-to-flush-the-varnish-cache.md | 2 +- docs/hypernode-platform/tools/how-to-free-up-disk-space.md | 2 +- .../tools/how-to-migrate-your-shop-to-hypernode.md | 2 +- ...or-oom-command-not-allowed-when-used-memory-maxmemory.md | 2 +- .../tools/how-to-use-composer-2-on-your-hypernode.md | 2 +- .../tools/how-to-use-elasticsearch-on-hypernode.md | 2 +- .../tools/how-to-use-hypernode-development-plans.md | 2 +- .../tools/how-to-use-magento-corediff-on-hypernode.md | 2 +- .../tools/how-to-use-mailhog-on-hypernode.md | 2 +- .../tools/how-to-use-node-js-and-npm-on-hypernode.md | 2 +- .../how-to-use-periodic-tasks-cronjobs-on-hypernode.md | 2 +- docs/hypernode-platform/tools/how-to-use-supervisor.md | 2 +- .../tools/how-to-use-the-hypernode-systemctl-cli-tool.md | 2 +- docs/hypernode-platform/tools/hypernode-brancher.md | 2 +- .../tools/hypernode-cli-tools-and-magerun-plugins.md | 2 +- .../tools/installation-and-configuration-of-pm2.md | 2 +- .../tools/unblocking-and-accessing-magmi-for-hypernode.md | 2 +- .../varnish/how-to-enable-varnish-on-hypernode.md | 2 +- .../control-panel/different-control-panel-scenarios.md | 2 +- docs/services/control-panel/edit-personal-settings.md | 2 +- .../control-panel/how-to-add-keys-to-the-ssh-key-manager.md | 2 +- .../control-panel/how-to-change-your-hypernode-settings.md | 2 +- .../control-panel/how-to-change-your-plan-via-the-cli.md | 2 +- .../how-to-link-your-domain-to-your-hypernode.md | 2 +- ...rder-a-hypernode-and-transfer-ownership-to-a-customer.md | 2 +- .../control-panel/how-to-schedule-an-up-or-downgrade.md | 2 +- ...ransfer-ownership-of-a-hypernode-in-the-control-panel.md | 2 +- .../control-panel/how-to-use-2fa-on-the-control-panel.md | 2 +- docs/services/control-panel/how-to-use-teams.md | 2 +- docs/services/control-panel/how-to-use-the-dns-check.md | 2 +- ...ser-roles-and-permissions-on-hypernodes-control-panel.md | 2 +- .../control-panel/using-logs-in-the-control-panel.md | 2 +- .../everything-about-presence-plans-and-domains.md | 2 +- .../domain-procedures/extension-specific-info-per-domain.md | 2 +- .../how-to-transfer-your-domain-away-from-hypernode.md | 2 +- ...er-your-domain-name-to-another-provider-service-panel.md | 2 +- .../how-to-undo-the-cancellation-of-a-domain-name.md | 2 +- .../how-to-use-domains-in-the-control-panel.md | 2 +- docs/services/magereport/magereport-premium.md | 2 +- .../service-panel/different-service-panel-scenarios.md | 2 +- ...w-to-change-your-customer-details-and-other-questions.md | 2 +- .../service-panel/how-to-log-into-the-service-panel.md | 2 +- .../service-panel/how-to-use-2fa-on-the-service-panel.md | 2 +- docs/troubleshooting/performance/general-troubleshooting.md | 2 +- .../how-to-block-bad-bots-via-the-control-panel.md | 2 +- .../how-to-block-bad-bots-via-the-service-panel.md | 2 +- .../performance/how-to-check-why-my-site-is-slow.md | 2 +- .../performance/how-to-debug-out-of-memory-oom-events.md | 2 +- .../performance/how-to-fix-invalid-form-key-error.md | 2 +- .../how-to-identify-and-stop-long-running-processes.md | 2 +- .../performance/how-to-implement-pagespeed-booster.md | 2 +- .../how-to-optimise-your-magento-disk-performance.md | 2 +- .../how-to-resolve-a-413-request-entity-too-large-error.md | 2 +- ...-controller-reached-100-router-match-iterations-error.md | 2 +- .../how-to-spot-slow-extensions-using-the-php-slow-logs.md | 2 +- ...ow-to-use-the-mysql-slow-queries-in-the-control-panel.md | 2 +- 240 files changed, 242 insertions(+), 242 deletions(-) diff --git a/docs/about-hypernode/about-hypernode/hypernode-and-team-blue.md b/docs/about-hypernode/about-hypernode/hypernode-and-team-blue.md index aca76c8e..49fe3c67 100644 --- a/docs/about-hypernode/about-hypernode/hypernode-and-team-blue.md +++ b/docs/about-hypernode/about-hypernode/hypernode-and-team-blue.md @@ -4,7 +4,7 @@ myst: description: Hypernode is part of team.blue, a leading digital enabler for companies and entrepreneurs. redirect_from: -- /en/about/about-us/hypernode-and-team-blue/ + - /en/about/about-us/hypernode-and-team-blue/ --- diff --git a/docs/about-hypernode/about-hypernode/hypernode-certification-for-agencies.md b/docs/about-hypernode/about-hypernode/hypernode-certification-for-agencies.md index c0fe9891..d73895e6 100644 --- a/docs/about-hypernode/about-hypernode/hypernode-certification-for-agencies.md +++ b/docs/about-hypernode/about-hypernode/hypernode-certification-for-agencies.md @@ -5,7 +5,7 @@ myst: for Magento developers and retailers and how you can become a Hypernode Certified Agency. redirect_from: -- /en/about/about-us/hypernode-certification-for-agencies/ + - /en/about/about-us/hypernode-certification-for-agencies/ --- diff --git a/docs/about-hypernode/about-hypernode/hypernode-pricing-plans.md b/docs/about-hypernode/about-hypernode/hypernode-pricing-plans.md index cc09cc39..1efc2f50 100644 --- a/docs/about-hypernode/about-hypernode/hypernode-pricing-plans.md +++ b/docs/about-hypernode/about-hypernode/hypernode-pricing-plans.md @@ -3,7 +3,7 @@ myst: html_meta: description: Which hosting plans and pricing does Hypernode offer. redirect_from: -- /en/support/solutions/articles/48001228422-hypernode-pricing-plans/ + - /en/support/solutions/articles/48001228422-hypernode-pricing-plans/ --- diff --git a/docs/about-hypernode/about-hypernode/upgrade-to-debian-buster-technical-implications.md b/docs/about-hypernode/about-hypernode/upgrade-to-debian-buster-technical-implications.md index b7a22683..51de72f9 100644 --- a/docs/about-hypernode/about-hypernode/upgrade-to-debian-buster-technical-implications.md +++ b/docs/about-hypernode/about-hypernode/upgrade-to-debian-buster-technical-implications.md @@ -1,6 +1,6 @@ --- redirect_from: -- /en/about/about-us/upgrade-to-debian-buster-technical-implications/ + - /en/about/about-us/upgrade-to-debian-buster-technical-implications/ --- diff --git a/docs/about-hypernode/about-hypernode/what-kind-of-emails-does-hypernode-send.md b/docs/about-hypernode/about-hypernode/what-kind-of-emails-does-hypernode-send.md index df8a5964..b3a71e7b 100644 --- a/docs/about-hypernode/about-hypernode/what-kind-of-emails-does-hypernode-send.md +++ b/docs/about-hypernode/about-hypernode/what-kind-of-emails-does-hypernode-send.md @@ -4,7 +4,7 @@ myst: description: Hypernode sends out different kinds of emails to spread information. In this article you can find which ones we send and why. redirect_from: -- /en/about/about-us/what-kind-of-emails-does-hypernode-send/ + - /en/about/about-us/what-kind-of-emails-does-hypernode-send/ --- diff --git a/docs/about-hypernode/about-hypernode/which-cloud-providers-do-we-use.md b/docs/about-hypernode/about-hypernode/which-cloud-providers-do-we-use.md index c6ecaf5d..36c8f5a6 100644 --- a/docs/about-hypernode/about-hypernode/which-cloud-providers-do-we-use.md +++ b/docs/about-hypernode/about-hypernode/which-cloud-providers-do-we-use.md @@ -5,7 +5,7 @@ myst: cloud provider, which allows us to choose only the best. Read here which providers we use. redirect_from: -- /en/about/about-us/which-cloud-providers-do-we-use/ + - /en/about/about-us/which-cloud-providers-do-we-use/ --- diff --git a/docs/about-hypernode/billing/billing-faq-for-the-control-panel.md b/docs/about-hypernode/billing/billing-faq-for-the-control-panel.md index cd63bb9d..e0dec5cc 100644 --- a/docs/about-hypernode/billing/billing-faq-for-the-control-panel.md +++ b/docs/about-hypernode/billing/billing-faq-for-the-control-panel.md @@ -4,7 +4,7 @@ myst: description: Every first of the month, we send an invoice to our customers. You can easily find all invoices that have been sent in the Control Panel. redirect_from: -- /en/about/billing/billing-faq-for-the-control-panel/ + - /en/about/billing/billing-faq-for-the-control-panel/ --- diff --git a/docs/about-hypernode/billing/billing-faq-for-the-service-panel.md b/docs/about-hypernode/billing/billing-faq-for-the-service-panel.md index fafe1cc6..5d61944b 100644 --- a/docs/about-hypernode/billing/billing-faq-for-the-service-panel.md +++ b/docs/about-hypernode/billing/billing-faq-for-the-service-panel.md @@ -4,7 +4,7 @@ myst: description: 'Read all frequently asked questions about billing and their answers within this article. ' redirect_from: -- /en/about/billing/billing-faq-for-the-service-panel/ + - /en/about/billing/billing-faq-for-the-service-panel/ --- diff --git a/docs/about-hypernode/billing/control-panel-billing-facturen-faq-dutch.md b/docs/about-hypernode/billing/control-panel-billing-facturen-faq-dutch.md index cc627aa1..9219b7a2 100644 --- a/docs/about-hypernode/billing/control-panel-billing-facturen-faq-dutch.md +++ b/docs/about-hypernode/billing/control-panel-billing-facturen-faq-dutch.md @@ -1,6 +1,6 @@ --- redirect_from: -- /en/about/billing/migration-faq/ + - /en/about/billing/migration-faq/ --- diff --git a/docs/about-hypernode/billing/how-to-cancel-your-plan.md b/docs/about-hypernode/billing/how-to-cancel-your-plan.md index a6ebc243..1a9904a5 100644 --- a/docs/about-hypernode/billing/how-to-cancel-your-plan.md +++ b/docs/about-hypernode/billing/how-to-cancel-your-plan.md @@ -4,7 +4,7 @@ myst: description: 'You can cancel your Hypernode subscription anytime you want. Read more about how to do so in this article. ' redirect_from: -- /en/about/billing/how-to-cancel-your-hypernode-plan/ + - /en/about/billing/how-to-cancel-your-hypernode-plan/ --- diff --git a/docs/about-hypernode/billing/how-to-choose-and-order-a-hypernode-plan.md b/docs/about-hypernode/billing/how-to-choose-and-order-a-hypernode-plan.md index 982579fa..1b75798b 100644 --- a/docs/about-hypernode/billing/how-to-choose-and-order-a-hypernode-plan.md +++ b/docs/about-hypernode/billing/how-to-choose-and-order-a-hypernode-plan.md @@ -4,7 +4,7 @@ myst: description: 'Hypernode is a unique e-commerce platform for your Magento or Shopware shop. Read all about our different hosting solutions in this article. ' redirect_from: -- /en/about/billing/how-to-choose-and-order-a-hypernode-plan/ + - /en/about/billing/how-to-choose-and-order-a-hypernode-plan/ --- diff --git a/docs/about-hypernode/billing/how-to-up-or-downgrade-your-hypernode-plan.md b/docs/about-hypernode/billing/how-to-up-or-downgrade-your-hypernode-plan.md index 30f08a42..05a90b73 100644 --- a/docs/about-hypernode/billing/how-to-up-or-downgrade-your-hypernode-plan.md +++ b/docs/about-hypernode/billing/how-to-up-or-downgrade-your-hypernode-plan.md @@ -5,7 +5,7 @@ myst: might want to take precautions and upgrade a bigger Hypernode plan. Read here how to do so. ' redirect_from: -- /en/about/billing/how-to-up-or-downgrade-your-hypernode-plan/ + - /en/about/billing/how-to-up-or-downgrade-your-hypernode-plan/ --- diff --git a/docs/about-hypernode/billing/our-payment-service-provider.md b/docs/about-hypernode/billing/our-payment-service-provider.md index 9251583c..4a16396c 100644 --- a/docs/about-hypernode/billing/our-payment-service-provider.md +++ b/docs/about-hypernode/billing/our-payment-service-provider.md @@ -4,7 +4,7 @@ myst: description: In our Control Panel we use Chargebee as our payment service provider and Stripe as the payment gateway. redirect_from: -- /en/about/billing/our-payment-service-provider/ + - /en/about/billing/our-payment-service-provider/ --- diff --git a/docs/about-hypernode/billing/supported-payment-methods-in-the-control-panel.md b/docs/about-hypernode/billing/supported-payment-methods-in-the-control-panel.md index ede6354c..225dae41 100644 --- a/docs/about-hypernode/billing/supported-payment-methods-in-the-control-panel.md +++ b/docs/about-hypernode/billing/supported-payment-methods-in-the-control-panel.md @@ -4,7 +4,7 @@ myst: description: Read what payment methods are supported for the Hypernode Control Panel here redirect_from: -- /en/about/billing/supported-payment-methods-in-the-control-panel/ + - /en/about/billing/supported-payment-methods-in-the-control-panel/ --- diff --git a/docs/about-hypernode/security-policies/hypernode-security-statement.md b/docs/about-hypernode/security-policies/hypernode-security-statement.md index 7bdd666b..e8aa9b68 100644 --- a/docs/about-hypernode/security-policies/hypernode-security-statement.md +++ b/docs/about-hypernode/security-policies/hypernode-security-statement.md @@ -4,7 +4,7 @@ myst: description: 'An overview of Hypernode security policies and information security certification can be found in this article. ' redirect_from: -- /en/about/security/hypernode-security-statement/ + - /en/about/security/hypernode-security-statement/ --- diff --git a/docs/about-hypernode/security-policies/one-of-your-magento-extensions-is-vulnerable.md b/docs/about-hypernode/security-policies/one-of-your-magento-extensions-is-vulnerable.md index 2e331848..e6d8725e 100644 --- a/docs/about-hypernode/security-policies/one-of-your-magento-extensions-is-vulnerable.md +++ b/docs/about-hypernode/security-policies/one-of-your-magento-extensions-is-vulnerable.md @@ -5,7 +5,7 @@ myst: receiving a warning that one of the extensions in your Magento shop is vulnerable here. redirect_from: -- /en/about/security/one-of-your-magento-extensions-is-vulnerable/ + - /en/about/security/one-of-your-magento-extensions-is-vulnerable/ --- diff --git a/docs/about-hypernode/security-policies/responsible-disclosure-policy.md b/docs/about-hypernode/security-policies/responsible-disclosure-policy.md index 2f4b57a9..8a3f5b5b 100644 --- a/docs/about-hypernode/security-policies/responsible-disclosure-policy.md +++ b/docs/about-hypernode/security-policies/responsible-disclosure-policy.md @@ -4,7 +4,7 @@ myst: description: We take the security of our servers very serious. This policy offers a way to safely report possible security issues to us. redirect_from: -- /en/about/security/responsible-disclosure-policy/ + - /en/about/security/responsible-disclosure-policy/ --- diff --git a/docs/about-hypernode/security-policies/security-hall-of-fame.md b/docs/about-hypernode/security-policies/security-hall-of-fame.md index a9dd9ffe..a54cb4b8 100644 --- a/docs/about-hypernode/security-policies/security-hall-of-fame.md +++ b/docs/about-hypernode/security-policies/security-hall-of-fame.md @@ -4,7 +4,7 @@ myst: description: A list of security researchers we have worked with, that responsibly disclosed vulnerabilities to us. redirect_from: -- /en/about/security/hall-of-fame/ + - /en/about/security/hall-of-fame/ --- diff --git a/docs/about-hypernode/security-policies/what-you-need-to-know-about-the-geo-blocking-regulation.md b/docs/about-hypernode/security-policies/what-you-need-to-know-about-the-geo-blocking-regulation.md index 64ebc3e6..b312c67c 100644 --- a/docs/about-hypernode/security-policies/what-you-need-to-know-about-the-geo-blocking-regulation.md +++ b/docs/about-hypernode/security-policies/what-you-need-to-know-about-the-geo-blocking-regulation.md @@ -4,7 +4,7 @@ myst: description: 'Learn all about GEO-Blocking regulations and its most important rules in this article. ' redirect_from: -- /en/about/security/what-you-need-to-know-about-the-geo-blocking-regulation/ + - /en/about/security/what-you-need-to-know-about-the-geo-blocking-regulation/ --- diff --git a/docs/about-hypernode/support/24-7-monitoring-and-alerting.md b/docs/about-hypernode/support/24-7-monitoring-and-alerting.md index cf2fa93b..4571b2fc 100644 --- a/docs/about-hypernode/support/24-7-monitoring-and-alerting.md +++ b/docs/about-hypernode/support/24-7-monitoring-and-alerting.md @@ -5,7 +5,7 @@ myst: Hypernode 24 hours a day, 7 days a week. Read more about our monitoring in this article. redirect_from: -- /en/about/support/24-7-monitoring-and-alerting/ + - /en/about/support/24-7-monitoring-and-alerting/ --- diff --git a/docs/about-hypernode/support/conflict-between-merchant-and-webdesigner.md b/docs/about-hypernode/support/conflict-between-merchant-and-webdesigner.md index 60b8829d..567d8896 100644 --- a/docs/about-hypernode/support/conflict-between-merchant-and-webdesigner.md +++ b/docs/about-hypernode/support/conflict-between-merchant-and-webdesigner.md @@ -4,7 +4,7 @@ myst: description: What to do when a conflict arises between a Registrant (domain name holder) and the web designer / developer (Contractor and / or Technical administrator)? redirect_from: -- /en/about/support/conflict-between-merchant-and-webdesigner/ + - /en/about/support/conflict-between-merchant-and-webdesigner/ --- diff --git a/docs/about-hypernode/support/emergency-support-outside-office-hours.md b/docs/about-hypernode/support/emergency-support-outside-office-hours.md index 2de8328a..8cdc2243 100644 --- a/docs/about-hypernode/support/emergency-support-outside-office-hours.md +++ b/docs/about-hypernode/support/emergency-support-outside-office-hours.md @@ -4,7 +4,7 @@ myst: description: 'When experiencing a business-critical disruption on your web shop, you can use our Hypernode Emergency Support service for help. ' redirect_from: -- /en/about/support/emergency-support-outside-office-hours-/ + - /en/about/support/emergency-support-outside-office-hours-/ --- diff --git a/docs/about-hypernode/support/scope-of-support.md b/docs/about-hypernode/support/scope-of-support.md index 4339ca2c..9a7e0db3 100644 --- a/docs/about-hypernode/support/scope-of-support.md +++ b/docs/about-hypernode/support/scope-of-support.md @@ -1,6 +1,6 @@ --- redirect_from: -- /en/about/support/scope-of-support/ + - /en/about/support/scope-of-support/ --- diff --git a/docs/best-practices/backups/how-to-create-a-backup-and-download-it-to-your-local-machine.md b/docs/best-practices/backups/how-to-create-a-backup-and-download-it-to-your-local-machine.md index 7b6c6c0f..a6bb16ed 100644 --- a/docs/best-practices/backups/how-to-create-a-backup-and-download-it-to-your-local-machine.md +++ b/docs/best-practices/backups/how-to-create-a-backup-and-download-it-to-your-local-machine.md @@ -1,6 +1,6 @@ --- redirect_from: -- /en/support/solutions/articles/48001208755-how-to-create-a-backup-and-download-it-to-your-local-machine/ + - /en/support/solutions/articles/48001208755-how-to-create-a-backup-and-download-it-to-your-local-machine/ --- diff --git a/docs/best-practices/cdn/how-to-use-cloudflare-with-hypernode.md b/docs/best-practices/cdn/how-to-use-cloudflare-with-hypernode.md index 52afe00e..3ba1b667 100644 --- a/docs/best-practices/cdn/how-to-use-cloudflare-with-hypernode.md +++ b/docs/best-practices/cdn/how-to-use-cloudflare-with-hypernode.md @@ -4,7 +4,7 @@ myst: description: Hypernodes are fully configured and support Cloudflare out of the box. Read here how to use them. redirect_from: -- /en/best-practices/cdn/how-to-use-cloudflare-with-hypernode/ + - /en/best-practices/cdn/how-to-use-cloudflare-with-hypernode/ --- diff --git a/docs/best-practices/database/how-to-run-rabbitmq-on-hypernode.md b/docs/best-practices/database/how-to-run-rabbitmq-on-hypernode.md index dbcf6d34..d5e54cf2 100644 --- a/docs/best-practices/database/how-to-run-rabbitmq-on-hypernode.md +++ b/docs/best-practices/database/how-to-run-rabbitmq-on-hypernode.md @@ -4,7 +4,7 @@ myst: description: RabbitMQ is message-queueing software where queues running in the background can be defined. Read here how to use it on Hypernode. redirect_from: -- /en/best-practices/database/how-to-run-rabbitmq-on-hypernode/ + - /en/best-practices/database/how-to-run-rabbitmq-on-hypernode/ --- diff --git a/docs/best-practices/database/how-to-use-heidisql-on-hypernode.md b/docs/best-practices/database/how-to-use-heidisql-on-hypernode.md index 3300c575..70eedb77 100644 --- a/docs/best-practices/database/how-to-use-heidisql-on-hypernode.md +++ b/docs/best-practices/database/how-to-use-heidisql-on-hypernode.md @@ -5,7 +5,7 @@ myst: MySQL server, Microsoft SQL databases and PostgreSQL. Find here how to use it on Hypernode. redirect_from: -- /en/best-practices/database/how-to-use-heidisql-on-hypernode/ + - /en/best-practices/database/how-to-use-heidisql-on-hypernode/ --- diff --git a/docs/best-practices/email/how-to-enable-an-autoresponder-out-of-office-for-your-email-address.md b/docs/best-practices/email/how-to-enable-an-autoresponder-out-of-office-for-your-email-address.md index 0d9a17b7..77f28efc 100644 --- a/docs/best-practices/email/how-to-enable-an-autoresponder-out-of-office-for-your-email-address.md +++ b/docs/best-practices/email/how-to-enable-an-autoresponder-out-of-office-for-your-email-address.md @@ -4,7 +4,7 @@ myst: description: Read how you can create an autoresponder for your email address in this article redirect_from: -- /en/best-practices/email/how-to-enable-an-autoresponder-out-of-office-for-your-email-address/ + - /en/best-practices/email/how-to-enable-an-autoresponder-out-of-office-for-your-email-address/ --- diff --git a/docs/best-practices/email/how-to-export-your-emails.md b/docs/best-practices/email/how-to-export-your-emails.md index c3fb5218..00dbc395 100644 --- a/docs/best-practices/email/how-to-export-your-emails.md +++ b/docs/best-practices/email/how-to-export-your-emails.md @@ -5,7 +5,7 @@ myst: number of common email clients (such as Outlook and Mac Mail) and our own webmail application. redirect_from: -- /en/best-practices/email/how-to-export-your-emails/ + - /en/best-practices/email/how-to-export-your-emails/ --- diff --git a/docs/best-practices/email/how-to-find-the-mail-headers.md b/docs/best-practices/email/how-to-find-the-mail-headers.md index a7b03e27..5eb521ab 100644 --- a/docs/best-practices/email/how-to-find-the-mail-headers.md +++ b/docs/best-practices/email/how-to-find-the-mail-headers.md @@ -5,7 +5,7 @@ myst: the mail header to see where the email went and discover what might be going wrong. redirect_from: -- /en/best-practices/email/how-to-find-the-mail-headers/ + - /en/best-practices/email/how-to-find-the-mail-headers/ --- diff --git a/docs/best-practices/email/how-to-prevent-spam-being-sent-from-your-name-or-email-address.md b/docs/best-practices/email/how-to-prevent-spam-being-sent-from-your-name-or-email-address.md index 15145958..8a21d254 100644 --- a/docs/best-practices/email/how-to-prevent-spam-being-sent-from-your-name-or-email-address.md +++ b/docs/best-practices/email/how-to-prevent-spam-being-sent-from-your-name-or-email-address.md @@ -4,7 +4,7 @@ myst: description: 'In this article, we explain how to preven spam from being sent from your name or email address. Only available in Dutch. ' redirect_from: -- /en/best-practices/email/how-to-prevent-spam-being-sent-from-your-name-or-email-address/ + - /en/best-practices/email/how-to-prevent-spam-being-sent-from-your-name-or-email-address/ --- diff --git a/docs/best-practices/email/how-to-prevent-your-email-being-marked-as-spam.md b/docs/best-practices/email/how-to-prevent-your-email-being-marked-as-spam.md index cd2f93f6..9d805bc5 100644 --- a/docs/best-practices/email/how-to-prevent-your-email-being-marked-as-spam.md +++ b/docs/best-practices/email/how-to-prevent-your-email-being-marked-as-spam.md @@ -4,7 +4,7 @@ myst: description: Sometimes messages sent from a Hypernode are marked as spam by external spam filters. Follow these steps in this article to fix any misconfigurations. redirect_from: -- /en/best-practices/email/how-to-prevent-your-email-being-marked-as-spam/ + - /en/best-practices/email/how-to-prevent-your-email-being-marked-as-spam/ --- diff --git a/docs/best-practices/email/how-to-use-e-mail-on-hypernode.md b/docs/best-practices/email/how-to-use-e-mail-on-hypernode.md index b888d6ec..7f8d6925 100644 --- a/docs/best-practices/email/how-to-use-e-mail-on-hypernode.md +++ b/docs/best-practices/email/how-to-use-e-mail-on-hypernode.md @@ -5,7 +5,7 @@ myst: use Gsuite (Google) or Office365 (Microsoft) as they are more specialized in e-mail. redirect_from: -- /en/hypernode/email/how-to-use-e-mail-on-hypernode/ + - /en/hypernode/email/how-to-use-e-mail-on-hypernode/ --- diff --git a/docs/best-practices/performance/how-to-enable-pagespeed-booster.md b/docs/best-practices/performance/how-to-enable-pagespeed-booster.md index 95cab2f6..7acee816 100644 --- a/docs/best-practices/performance/how-to-enable-pagespeed-booster.md +++ b/docs/best-practices/performance/how-to-enable-pagespeed-booster.md @@ -4,7 +4,7 @@ myst: description: PageSpeed Booster is a reverse proxy which uses many static optimisation techniques to greatly increase the pagespeed score and performance of your website. redirect_from: -- /en/best-practices/performance/how-to-enable-pagespeed-booster/ + - /en/best-practices/performance/how-to-enable-pagespeed-booster/ --- diff --git a/docs/best-practices/performance/how-to-find-your-performance-bottleneck-with-new-relic.md b/docs/best-practices/performance/how-to-find-your-performance-bottleneck-with-new-relic.md index d5ed811d..435952ed 100644 --- a/docs/best-practices/performance/how-to-find-your-performance-bottleneck-with-new-relic.md +++ b/docs/best-practices/performance/how-to-find-your-performance-bottleneck-with-new-relic.md @@ -5,7 +5,7 @@ myst: the scenes". Find here how you can use it to determine the performance bottleneck of your shop. redirect_from: -- /en/best-practices/performance/how-to-find-your-performance-bottleneck-with-new-relic/ + - /en/best-practices/performance/how-to-find-your-performance-bottleneck-with-new-relic/ --- diff --git a/docs/best-practices/performance/how-to-fix-performance-issues-caused-by-bots-and-crawlers.md b/docs/best-practices/performance/how-to-fix-performance-issues-caused-by-bots-and-crawlers.md index d0784a60..337678ce 100644 --- a/docs/best-practices/performance/how-to-fix-performance-issues-caused-by-bots-and-crawlers.md +++ b/docs/best-practices/performance/how-to-fix-performance-issues-caused-by-bots-and-crawlers.md @@ -4,7 +4,7 @@ myst: description: Excessive bot traffic is the number one reason for bad Magento performance. Read here how to fix such performance issues on Hypernode. redirect_from: -- /en/best-practices/performance/how-to-fix-performance-issues-caused-by-bots-and-crawlers/ + - /en/best-practices/performance/how-to-fix-performance-issues-caused-by-bots-and-crawlers/ --- diff --git a/docs/best-practices/performance/how-to-improve-your-magento-search.md b/docs/best-practices/performance/how-to-improve-your-magento-search.md index 43cd14eb..016d7c75 100644 --- a/docs/best-practices/performance/how-to-improve-your-magento-search.md +++ b/docs/best-practices/performance/how-to-improve-your-magento-search.md @@ -5,7 +5,7 @@ myst: or us and external search engine. In this article, we explain the different possibilities. redirect_from: -- /en/best-practices/performance/how-to-improve-your-magento-search/ + - /en/best-practices/performance/how-to-improve-your-magento-search/ --- diff --git a/docs/best-practices/performance/how-to-optimize-the-performance-of-your-magento-shop.md b/docs/best-practices/performance/how-to-optimize-the-performance-of-your-magento-shop.md index b14566a2..2022d8ac 100644 --- a/docs/best-practices/performance/how-to-optimize-the-performance-of-your-magento-shop.md +++ b/docs/best-practices/performance/how-to-optimize-the-performance-of-your-magento-shop.md @@ -5,7 +5,7 @@ myst: and stability of your shop. Find detailed instructions on the different optimizations here. redirect_from: -- /en/best-practices/performance/how-to-optimize-the-performance-of-your-magento-shop/ + - /en/best-practices/performance/how-to-optimize-the-performance-of-your-magento-shop/ --- diff --git a/docs/best-practices/performance/how-to-optimize-your-images.md b/docs/best-practices/performance/how-to-optimize-your-images.md index 021b2f23..ca0704bd 100644 --- a/docs/best-practices/performance/how-to-optimize-your-images.md +++ b/docs/best-practices/performance/how-to-optimize-your-images.md @@ -4,7 +4,7 @@ myst: description: 'Follow this article to set up automatic image optimization for a faster shop on Hypernode in only a couple of minutes. ' redirect_from: -- /en/best-practices/performance/how-to-optimize-your-images/ + - /en/best-practices/performance/how-to-optimize-your-images/ --- diff --git a/docs/best-practices/performance/how-to-use-blackfire-on-hypernode-to-find-performance-issues.md b/docs/best-practices/performance/how-to-use-blackfire-on-hypernode-to-find-performance-issues.md index ab57b71f..7dd5e9e2 100644 --- a/docs/best-practices/performance/how-to-use-blackfire-on-hypernode-to-find-performance-issues.md +++ b/docs/best-practices/performance/how-to-use-blackfire-on-hypernode-to-find-performance-issues.md @@ -4,7 +4,7 @@ myst: description: All Hypernodes support Blackfire, an amazing tool to find performance bottlenecks in Magento. Read here how to use it on Hypernode. redirect_from: -- /en/best-practices/performance/how-to-use-blackfire-on-hypernode-to-find-performance-issues/ + - /en/best-practices/performance/how-to-use-blackfire-on-hypernode-to-find-performance-issues/ --- diff --git a/docs/best-practices/pwa/hypernode-and-pwa-hosting.md b/docs/best-practices/pwa/hypernode-and-pwa-hosting.md index eaa2c05a..64e324ce 100644 --- a/docs/best-practices/pwa/hypernode-and-pwa-hosting.md +++ b/docs/best-practices/pwa/hypernode-and-pwa-hosting.md @@ -5,7 +5,7 @@ myst: future of web development. Read about its advantages, challenges and hosting requirements here. redirect_from: -- /en/best-practices/pwa/hypernode-and-pwa-hosting/ + - /en/best-practices/pwa/hypernode-and-pwa-hosting/ --- diff --git a/docs/best-practices/security/how-does-hypernode-handle-ddos-attacks.md b/docs/best-practices/security/how-does-hypernode-handle-ddos-attacks.md index f693fdb3..fd16d12c 100644 --- a/docs/best-practices/security/how-does-hypernode-handle-ddos-attacks.md +++ b/docs/best-practices/security/how-does-hypernode-handle-ddos-attacks.md @@ -4,7 +4,7 @@ myst: description: DDoS stands for Distributed Denial of Service. In this article we explain what a DDoS attack is and what Hypernode does when this occurs. redirect_from: -- /en/best-practices/security/how-does-hypernode-handle-ddos-attacks-/ + - /en/best-practices/security/how-does-hypernode-handle-ddos-attacks-/ --- diff --git a/docs/best-practices/security/how-hypernode-protects-your-magento-shop.md b/docs/best-practices/security/how-hypernode-protects-your-magento-shop.md index 7ecc1f58..0292d509 100644 --- a/docs/best-practices/security/how-hypernode-protects-your-magento-shop.md +++ b/docs/best-practices/security/how-hypernode-protects-your-magento-shop.md @@ -1,6 +1,6 @@ --- redirect_from: -- /en/support/solutions/articles/48001158433-how-hypernode-protects-your-magento-shop/ + - /en/support/solutions/articles/48001158433-how-hypernode-protects-your-magento-shop/ --- diff --git a/docs/best-practices/security/how-to-apply-magento-patches.md b/docs/best-practices/security/how-to-apply-magento-patches.md index 44af3533..5cc0824a 100644 --- a/docs/best-practices/security/how-to-apply-magento-patches.md +++ b/docs/best-practices/security/how-to-apply-magento-patches.md @@ -5,7 +5,7 @@ myst: of their software. In this article we explain how you can install them on your webshop. redirect_from: -- /en/best-practices/security/how-to-deploy-magento-patches/ + - /en/best-practices/security/how-to-deploy-magento-patches/ --- diff --git a/docs/best-practices/security/how-to-fix-malicious-javascript-credit-card-hijack.md b/docs/best-practices/security/how-to-fix-malicious-javascript-credit-card-hijack.md index ecb28ad3..ebf3c322 100644 --- a/docs/best-practices/security/how-to-fix-malicious-javascript-credit-card-hijack.md +++ b/docs/best-practices/security/how-to-fix-malicious-javascript-credit-card-hijack.md @@ -5,7 +5,7 @@ myst: hackers to intercept financial data. This article explains more and tells you how to fix it. redirect_from: -- /en/best-practices/security/how-to-fix-malicious-javascript-credit-card-hijack/ + - /en/best-practices/security/how-to-fix-malicious-javascript-credit-card-hijack/ --- diff --git a/docs/best-practices/security/how-to-install-magento-patch-mdva-49935-for-critical-vulnerabilty-apsb22-12-cve-2022-24086-and-cve-2022-24087.md b/docs/best-practices/security/how-to-install-magento-patch-mdva-49935-for-critical-vulnerabilty-apsb22-12-cve-2022-24086-and-cve-2022-24087.md index 3d776e62..149f4250 100644 --- a/docs/best-practices/security/how-to-install-magento-patch-mdva-49935-for-critical-vulnerabilty-apsb22-12-cve-2022-24086-and-cve-2022-24087.md +++ b/docs/best-practices/security/how-to-install-magento-patch-mdva-49935-for-critical-vulnerabilty-apsb22-12-cve-2022-24086-and-cve-2022-24087.md @@ -1,6 +1,6 @@ --- redirect_from: -- /en/best-practices/security/how-to-install-magento-patch-mdva-49935-for-critical-vulnerabilty-apsb22-12-cve-2022-24086/ + - /en/best-practices/security/how-to-install-magento-patch-mdva-49935-for-critical-vulnerabilty-apsb22-12-cve-2022-24086/ --- diff --git a/docs/best-practices/security/how-to-install-magento-patch-supee-8788-and-release-1-9-3.md b/docs/best-practices/security/how-to-install-magento-patch-supee-8788-and-release-1-9-3.md index 03e11603..7d72c938 100644 --- a/docs/best-practices/security/how-to-install-magento-patch-supee-8788-and-release-1-9-3.md +++ b/docs/best-practices/security/how-to-install-magento-patch-supee-8788-and-release-1-9-3.md @@ -5,7 +5,7 @@ myst: some are highly critical. In this article you find guidelines to install the patch. ' redirect_from: -- /en/best-practices/security/how-to-install-magento-patch-supee-8788-and-release-1-9-3/ + - /en/best-practices/security/how-to-install-magento-patch-supee-8788-and-release-1-9-3/ --- diff --git a/docs/best-practices/security/how-to-protect-magento-against-brute-force-attacks.md b/docs/best-practices/security/how-to-protect-magento-against-brute-force-attacks.md index 4fc6bd34..7ce9b44c 100644 --- a/docs/best-practices/security/how-to-protect-magento-against-brute-force-attacks.md +++ b/docs/best-practices/security/how-to-protect-magento-against-brute-force-attacks.md @@ -1,6 +1,6 @@ --- redirect_from: -- /en/best-practices/security/how-to-protect-magento-against-brute-force-attacks/ + - /en/best-practices/security/how-to-protect-magento-against-brute-force-attacks/ --- diff --git a/docs/best-practices/security/how-to-recover-a-hacked-magento-shop.md b/docs/best-practices/security/how-to-recover-a-hacked-magento-shop.md index 2c624c47..a87f00a8 100644 --- a/docs/best-practices/security/how-to-recover-a-hacked-magento-shop.md +++ b/docs/best-practices/security/how-to-recover-a-hacked-magento-shop.md @@ -5,7 +5,7 @@ myst: versions, or plugins. This article explains how to recover a hacked shop on Hypernode. redirect_from: -- /en/best-practices/security/how-to-recover-a-hacked-magento-shop/ + - /en/best-practices/security/how-to-recover-a-hacked-magento-shop/ --- diff --git a/docs/best-practices/security/how-to-scan-your-hypernode-for-malware.md b/docs/best-practices/security/how-to-scan-your-hypernode-for-malware.md index 7760e477..c830484c 100644 --- a/docs/best-practices/security/how-to-scan-your-hypernode-for-malware.md +++ b/docs/best-practices/security/how-to-scan-your-hypernode-for-malware.md @@ -5,7 +5,7 @@ myst: to check their content. Here we explain how to scan your Hypernode for virusses and malware. redirect_from: -- /en/best-practices/security/how-to-scan-your-hypernode-for-malware/ + - /en/best-practices/security/how-to-scan-your-hypernode-for-malware/ --- diff --git a/docs/best-practices/security/how-to-secure-magento-cacheleak.md b/docs/best-practices/security/how-to-secure-magento-cacheleak.md index b8aba3f4..2240f717 100644 --- a/docs/best-practices/security/how-to-secure-magento-cacheleak.md +++ b/docs/best-practices/security/how-to-secure-magento-cacheleak.md @@ -5,7 +5,7 @@ myst: database passwords. To prevent this from happening, read here how to secure Magento cacheleak. redirect_from: -- /en/best-practices/security/how-to-secure-magento-cacheleak/ + - /en/best-practices/security/how-to-secure-magento-cacheleak/ --- diff --git a/docs/best-practices/security/how-to-secure-your-data-using-encryption-and-hashing.md b/docs/best-practices/security/how-to-secure-your-data-using-encryption-and-hashing.md index 22ee6a20..dc860427 100644 --- a/docs/best-practices/security/how-to-secure-your-data-using-encryption-and-hashing.md +++ b/docs/best-practices/security/how-to-secure-your-data-using-encryption-and-hashing.md @@ -5,7 +5,7 @@ myst: we explain both ways of securing information and give examples for how you can use it. redirect_from: -- /en/support/solutions/articles/48001153348-how-to-secure-your-data-using-encryption-and-hashing/ + - /en/support/solutions/articles/48001153348-how-to-secure-your-data-using-encryption-and-hashing/ --- diff --git a/docs/best-practices/security/how-to-use-a-cloud-firewall-on-hypernode.md b/docs/best-practices/security/how-to-use-a-cloud-firewall-on-hypernode.md index df964903..41c51374 100644 --- a/docs/best-practices/security/how-to-use-a-cloud-firewall-on-hypernode.md +++ b/docs/best-practices/security/how-to-use-a-cloud-firewall-on-hypernode.md @@ -1,6 +1,6 @@ --- redirect_from: -- /en/best-practices/security/how-to-use-a-cloud-firewall-on-hypernode/ + - /en/best-practices/security/how-to-use-a-cloud-firewall-on-hypernode/ --- diff --git a/docs/best-practices/security/hypernodes-not-vulnerable-for-cve-2021-4034.md b/docs/best-practices/security/hypernodes-not-vulnerable-for-cve-2021-4034.md index c5a67bdd..b2e5016c 100644 --- a/docs/best-practices/security/hypernodes-not-vulnerable-for-cve-2021-4034.md +++ b/docs/best-practices/security/hypernodes-not-vulnerable-for-cve-2021-4034.md @@ -1,6 +1,6 @@ --- redirect_from: -- /en/support/solutions/articles/48001207826-hypernodes-not-vulnerable-for-cve-2021-4034/ + - /en/support/solutions/articles/48001207826-hypernodes-not-vulnerable-for-cve-2021-4034/ --- diff --git a/docs/best-practices/security/what-you-need-to-know-about-the-visbot-malware.md b/docs/best-practices/security/what-you-need-to-know-about-the-visbot-malware.md index 68569aa8..508599f7 100644 --- a/docs/best-practices/security/what-you-need-to-know-about-the-visbot-malware.md +++ b/docs/best-practices/security/what-you-need-to-know-about-the-visbot-malware.md @@ -4,7 +4,7 @@ myst: description: 'Visbot is a particular type of malware that is found on hacked Magento stores. Learn all about the visbot in this article. ' redirect_from: -- /en/best-practices/security/what-you-need-to-know-about-the-visbot-malware/ + - /en/best-practices/security/what-you-need-to-know-about-the-visbot-malware/ --- diff --git a/docs/best-practices/testing/how-to-check-if-everything-works.md b/docs/best-practices/testing/how-to-check-if-everything-works.md index b777becf..4238c0cf 100644 --- a/docs/best-practices/testing/how-to-check-if-everything-works.md +++ b/docs/best-practices/testing/how-to-check-if-everything-works.md @@ -4,7 +4,7 @@ myst: description: Find out here how to check if everything in your shop is working as it should, before changing the DNS settings of your original domain to Hypernode. redirect_from: -- /en/best-practices/testing/how-to-check-if-everything-works/ + - /en/best-practices/testing/how-to-check-if-everything-works/ --- diff --git a/docs/best-practices/testing/how-to-go-live-with-your-hypernode.md b/docs/best-practices/testing/how-to-go-live-with-your-hypernode.md index a3d8f9db..3fc5c9d2 100644 --- a/docs/best-practices/testing/how-to-go-live-with-your-hypernode.md +++ b/docs/best-practices/testing/how-to-go-live-with-your-hypernode.md @@ -4,7 +4,7 @@ myst: description: After you have copied your shop to Hypernode and tested its functionalities, it's time to go live. Follow these steps for a smooth transition. redirect_from: -- /en/best-practices/testing/how-to-go-live-with-your-hypernode/ + - /en/best-practices/testing/how-to-go-live-with-your-hypernode/ --- diff --git a/docs/best-practices/testing/how-to-test-your-website-by-changing-your-hosts-file.md b/docs/best-practices/testing/how-to-test-your-website-by-changing-your-hosts-file.md index acbb375f..beb4cf1e 100644 --- a/docs/best-practices/testing/how-to-test-your-website-by-changing-your-hosts-file.md +++ b/docs/best-practices/testing/how-to-test-your-website-by-changing-your-hosts-file.md @@ -4,7 +4,7 @@ myst: description: 'In this article, we explain how to adjust the hosts file of the following operating systems: Windows 10, 8 & 7, Linux and Mac OS X.' redirect_from: -- /en/best-practices/testing/how-to-test-your-website-by-changing-your-hosts-file/ + - /en/best-practices/testing/how-to-test-your-website-by-changing-your-hosts-file/ --- diff --git a/docs/best-practices/testing/hypernode-docker.md b/docs/best-practices/testing/hypernode-docker.md index a8c23834..16c8e847 100644 --- a/docs/best-practices/testing/hypernode-docker.md +++ b/docs/best-practices/testing/hypernode-docker.md @@ -5,7 +5,7 @@ myst: used to build a development environment, or as a build machine. Read all about it here. redirect_from: -- /en/best-practices/testing/hypernode-docker/ + - /en/best-practices/testing/hypernode-docker/ --- diff --git a/docs/best-practices/testing/zero-downtime-deployment-on-hypernode.md b/docs/best-practices/testing/zero-downtime-deployment-on-hypernode.md index ce888456..d7cced28 100644 --- a/docs/best-practices/testing/zero-downtime-deployment-on-hypernode.md +++ b/docs/best-practices/testing/zero-downtime-deployment-on-hypernode.md @@ -4,7 +4,7 @@ myst: description: In this article, we explain the ideal process of moving new code from a development environment to production without experiencing downtime. redirect_from: -- /en/best-practices/testing/zero-downtime-deployment-on-hypernode/ + - /en/best-practices/testing/zero-downtime-deployment-on-hypernode/ --- diff --git a/docs/best-practices/usage/how-to-handle-composer-memory-issues.md b/docs/best-practices/usage/how-to-handle-composer-memory-issues.md index 87b5843b..876fa9f9 100644 --- a/docs/best-practices/usage/how-to-handle-composer-memory-issues.md +++ b/docs/best-practices/usage/how-to-handle-composer-memory-issues.md @@ -1,6 +1,6 @@ --- redirect_from: -- /en/support/solutions/articles/48001186354-how-to-handle-composer-memory-issues/ + - /en/support/solutions/articles/48001186354-how-to-handle-composer-memory-issues/ --- diff --git a/docs/best-practices/usage/how-to-install-wordpress-next-to-your-magento-installation.md b/docs/best-practices/usage/how-to-install-wordpress-next-to-your-magento-installation.md index 160134da..bf642a89 100644 --- a/docs/best-practices/usage/how-to-install-wordpress-next-to-your-magento-installation.md +++ b/docs/best-practices/usage/how-to-install-wordpress-next-to-your-magento-installation.md @@ -4,7 +4,7 @@ myst: description: 'Find detailed guidelines on how to install Wordpress on your Hypernode next to your Magento installation in this article. ' redirect_from: -- /en/best-practices/usage/how-to-install-wordpress-next-to-your-magento-installation/ + - /en/best-practices/usage/how-to-install-wordpress-next-to-your-magento-installation/ --- diff --git a/docs/ecommerce-applications/akeneo/how-to-install-akeneo-3-on-hypernode.md b/docs/ecommerce-applications/akeneo/how-to-install-akeneo-3-on-hypernode.md index 04b1b639..da5982be 100644 --- a/docs/ecommerce-applications/akeneo/how-to-install-akeneo-3-on-hypernode.md +++ b/docs/ecommerce-applications/akeneo/how-to-install-akeneo-3-on-hypernode.md @@ -5,7 +5,7 @@ myst: Installing Akeneo 3 can be done by using our Pre-Install or you can install Akeneo 3 manually. redirect_from: -- /en/ecommerce/akeneo/how-to-install-akeneo-3-on-hypernode/ + - /en/ecommerce/akeneo/how-to-install-akeneo-3-on-hypernode/ --- diff --git a/docs/ecommerce-applications/akeneo/how-to-install-akeneo-4-on-hypernode.md b/docs/ecommerce-applications/akeneo/how-to-install-akeneo-4-on-hypernode.md index cd9d053f..4d3657c5 100644 --- a/docs/ecommerce-applications/akeneo/how-to-install-akeneo-4-on-hypernode.md +++ b/docs/ecommerce-applications/akeneo/how-to-install-akeneo-4-on-hypernode.md @@ -5,7 +5,7 @@ myst: Installing Akeneo 4 can be done by using our Pre-Install or you can install Akeneo 4 manually. redirect_from: -- /en/ecommerce/akeneo/how-to-install-akeneo-4-on-hypernode/ + - /en/ecommerce/akeneo/how-to-install-akeneo-4-on-hypernode/ --- diff --git a/docs/ecommerce-applications/akeneo/how-to-install-akeneo-5-on-hypernode.md b/docs/ecommerce-applications/akeneo/how-to-install-akeneo-5-on-hypernode.md index 4e90e65f..6b466756 100644 --- a/docs/ecommerce-applications/akeneo/how-to-install-akeneo-5-on-hypernode.md +++ b/docs/ecommerce-applications/akeneo/how-to-install-akeneo-5-on-hypernode.md @@ -5,7 +5,7 @@ myst: plan or larger. You can either choose to install it on a seperate Hypernode instance or on the same Hypernode as your Magento or Shopware installation. ' redirect_from: -- /en/ecommerce/akeneo/how-to-install-akeneo-5-on-hypernode/ + - /en/ecommerce/akeneo/how-to-install-akeneo-5-on-hypernode/ --- diff --git a/docs/ecommerce-applications/akeneo/how-to-install-akeneo-6-on-hypernode.md b/docs/ecommerce-applications/akeneo/how-to-install-akeneo-6-on-hypernode.md index 94d993c3..5c721d6c 100644 --- a/docs/ecommerce-applications/akeneo/how-to-install-akeneo-6-on-hypernode.md +++ b/docs/ecommerce-applications/akeneo/how-to-install-akeneo-6-on-hypernode.md @@ -1,6 +1,6 @@ --- redirect_from: -- /en/support/solutions/articles/48001220118-how-to-install-akeneo-6-on-hypernode/ + - /en/support/solutions/articles/48001220118-how-to-install-akeneo-6-on-hypernode/ --- diff --git a/docs/ecommerce-applications/akeneo/how-to-use-a-basic-staging-environment-with-akeneo-3.md b/docs/ecommerce-applications/akeneo/how-to-use-a-basic-staging-environment-with-akeneo-3.md index 72415b5c..31fcbe59 100644 --- a/docs/ecommerce-applications/akeneo/how-to-use-a-basic-staging-environment-with-akeneo-3.md +++ b/docs/ecommerce-applications/akeneo/how-to-use-a-basic-staging-environment-with-akeneo-3.md @@ -4,7 +4,7 @@ myst: description: Hypernode offers a staging environment so it can be used as a sandbox for your Akeneo PIM project. redirect_from: -- /en/ecommerce/akeneo/how-to-use-a-basic-staging-environment-with-akeneo/ + - /en/ecommerce/akeneo/how-to-use-a-basic-staging-environment-with-akeneo/ --- diff --git a/docs/ecommerce-applications/akeneo/how-to-use-a-basic-staging-environment-with-akeneo-4-and-5.md b/docs/ecommerce-applications/akeneo/how-to-use-a-basic-staging-environment-with-akeneo-4-and-5.md index 9f749b48..70633d24 100644 --- a/docs/ecommerce-applications/akeneo/how-to-use-a-basic-staging-environment-with-akeneo-4-and-5.md +++ b/docs/ecommerce-applications/akeneo/how-to-use-a-basic-staging-environment-with-akeneo-4-and-5.md @@ -4,7 +4,7 @@ myst: description: Hypernode offers a staging environment so it can be used as a sandbox for your Akeneo PIM project. redirect_from: -- /en/support/solutions/articles/48001183489-how-to-use-a-basic-staging-environment-with-akeneo-4-and-5/ + - /en/support/solutions/articles/48001183489-how-to-use-a-basic-staging-environment-with-akeneo-4-and-5/ --- diff --git a/docs/ecommerce-applications/magento-1/how-to-change-the-base-url-in-magento-1-x.md b/docs/ecommerce-applications/magento-1/how-to-change-the-base-url-in-magento-1-x.md index ecdf4051..4a275d17 100644 --- a/docs/ecommerce-applications/magento-1/how-to-change-the-base-url-in-magento-1-x.md +++ b/docs/ecommerce-applications/magento-1/how-to-change-the-base-url-in-magento-1-x.md @@ -4,7 +4,7 @@ myst: description: 'There are several ways to change the Base URL of your Magento 1.x storefronts. Find detailed instructions for each in this article. ' redirect_from: -- /en/ecommerce/magento-1/how-to-change-the-base-url-in-magento-1-x/ + - /en/ecommerce/magento-1/how-to-change-the-base-url-in-magento-1-x/ --- diff --git a/docs/ecommerce-applications/magento-1/how-to-clean-the-magento-1-x-logs.md b/docs/ecommerce-applications/magento-1/how-to-clean-the-magento-1-x-logs.md index 4168bc72..a7ba2209 100644 --- a/docs/ecommerce-applications/magento-1/how-to-clean-the-magento-1-x-logs.md +++ b/docs/ecommerce-applications/magento-1/how-to-clean-the-magento-1-x-logs.md @@ -5,7 +5,7 @@ myst: and optimizing your database(s). Find instructions on cleaning your Magento 1.x logs here. redirect_from: -- /en/ecommerce/magento-1/how-to-clean-the-magento-1-x-logs/ + - /en/ecommerce/magento-1/how-to-clean-the-magento-1-x-logs/ --- diff --git a/docs/ecommerce-applications/magento-1/how-to-configure-redis-for-magento-1.md b/docs/ecommerce-applications/magento-1/how-to-configure-redis-for-magento-1.md index a41b4adc..0312b32b 100644 --- a/docs/ecommerce-applications/magento-1/how-to-configure-redis-for-magento-1.md +++ b/docs/ecommerce-applications/magento-1/how-to-configure-redis-for-magento-1.md @@ -5,7 +5,7 @@ myst: and frontend of your shop. Here's how to configure it on Magento 1 and how redis-cli works. redirect_from: -- /en/ecommerce/magento-1/how-to-configure-redis-for-magento-1/ + - /en/ecommerce/magento-1/how-to-configure-redis-for-magento-1/ --- diff --git a/docs/ecommerce-applications/magento-1/how-to-configure-varnish-for-magento-1-x.md b/docs/ecommerce-applications/magento-1/how-to-configure-varnish-for-magento-1-x.md index 885ceb1b..ece4f80d 100644 --- a/docs/ecommerce-applications/magento-1/how-to-configure-varnish-for-magento-1-x.md +++ b/docs/ecommerce-applications/magento-1/how-to-configure-varnish-for-magento-1-x.md @@ -4,7 +4,7 @@ myst: description: This article explains how you can configure Varnish for your Hypernode in order to boost your Magento shop. redirect_from: -- /en/ecommerce/magento-1/how-to-configure-varnish-for-magento-1-x/ + - /en/ecommerce/magento-1/how-to-configure-varnish-for-magento-1-x/ --- diff --git a/docs/ecommerce-applications/magento-1/how-to-create-a-robots-txt-for-your-magento-1-shop.md b/docs/ecommerce-applications/magento-1/how-to-create-a-robots-txt-for-your-magento-1-shop.md index 113118da..1030828d 100644 --- a/docs/ecommerce-applications/magento-1/how-to-create-a-robots-txt-for-your-magento-1-shop.md +++ b/docs/ecommerce-applications/magento-1/how-to-create-a-robots-txt-for-your-magento-1-shop.md @@ -5,7 +5,7 @@ myst: article we explain how to configure your Hypernode to serve a robots.txt for storefront(s). redirect_from: -- /en/ecommerce/magento-1/how-to-create-a-robots-txt-for-your-magento-1-shop/ + - /en/ecommerce/magento-1/how-to-create-a-robots-txt-for-your-magento-1-shop/ --- diff --git a/docs/ecommerce-applications/magento-1/how-to-create-a-sitemap-xml-for-magento-1-x.md b/docs/ecommerce-applications/magento-1/how-to-create-a-sitemap-xml-for-magento-1-x.md index feb2e7c0..eb50a437 100644 --- a/docs/ecommerce-applications/magento-1/how-to-create-a-sitemap-xml-for-magento-1-x.md +++ b/docs/ecommerce-applications/magento-1/how-to-create-a-sitemap-xml-for-magento-1-x.md @@ -4,7 +4,7 @@ myst: description: 'Find detailed guidelines on how to create a sitemap.xml for Magento 1.x versions here. ' redirect_from: -- /en/ecommerce/magento-1/how-to-create-a-sitemap-xml-for-magento-1-x/ + - /en/ecommerce/magento-1/how-to-create-a-sitemap-xml-for-magento-1-x/ --- diff --git a/docs/ecommerce-applications/magento-1/how-to-enable-clean-urls-for-magento.md b/docs/ecommerce-applications/magento-1/how-to-enable-clean-urls-for-magento.md index 7f76d074..1d918203 100644 --- a/docs/ecommerce-applications/magento-1/how-to-enable-clean-urls-for-magento.md +++ b/docs/ecommerce-applications/magento-1/how-to-enable-clean-urls-for-magento.md @@ -5,7 +5,7 @@ myst: \ effect on search index optimization (SEO) as well. Find out how to enable\ \ them here. " redirect_from: -- /en/ecommerce/magento-1/how-to-enable-clean-url-s-for-magento-1/ + - /en/ecommerce/magento-1/how-to-enable-clean-url-s-for-magento-1/ --- diff --git a/docs/ecommerce-applications/magento-1/how-to-enable-mysql-query-logging-for-magento-1-x.md b/docs/ecommerce-applications/magento-1/how-to-enable-mysql-query-logging-for-magento-1-x.md index ba5306d8..c02fbae4 100644 --- a/docs/ecommerce-applications/magento-1/how-to-enable-mysql-query-logging-for-magento-1-x.md +++ b/docs/ecommerce-applications/magento-1/how-to-enable-mysql-query-logging-for-magento-1-x.md @@ -5,7 +5,7 @@ myst: database queries to a log file. Find out here how to enable MySQL Query logging for Magento 1. redirect_from: -- /en/ecommerce/magento-1/how-to-enable-mysql-query-logging-for-magento-1-x/ + - /en/ecommerce/magento-1/how-to-enable-mysql-query-logging-for-magento-1-x/ --- diff --git a/docs/ecommerce-applications/magento-1/how-to-enable-the-magento-1-api.md b/docs/ecommerce-applications/magento-1/how-to-enable-the-magento-1-api.md index e0e007b9..fb4de824 100644 --- a/docs/ecommerce-applications/magento-1/how-to-enable-the-magento-1-api.md +++ b/docs/ecommerce-applications/magento-1/how-to-enable-the-magento-1-api.md @@ -4,7 +4,7 @@ myst: description: 'In this article you can find how to enable the Magento 1 API on Hypernode by creating correct users (and code to solve 404 errors). ' redirect_from: -- /en/ecommerce/magento-1/how-to-enable-the-magento-1-api/ + - /en/ecommerce/magento-1/how-to-enable-the-magento-1-api/ --- diff --git a/docs/ecommerce-applications/magento-1/how-to-enable-the-maintenance-mode-in-magento-1.md b/docs/ecommerce-applications/magento-1/how-to-enable-the-maintenance-mode-in-magento-1.md index 2a78707f..3b6f253f 100644 --- a/docs/ecommerce-applications/magento-1/how-to-enable-the-maintenance-mode-in-magento-1.md +++ b/docs/ecommerce-applications/magento-1/how-to-enable-the-maintenance-mode-in-magento-1.md @@ -4,7 +4,7 @@ myst: description: Maintenance mode is a shortcut to serve a temporary error notification to all customers. Find here how to enable it in Magento 1. redirect_from: -- /en/ecommerce/magento-1/how-to-enable-the-maintenance-mode-in-magento-1/ + - /en/ecommerce/magento-1/how-to-enable-the-maintenance-mode-in-magento-1/ --- diff --git a/docs/ecommerce-applications/magento-1/how-to-fix-soap-error-parsing-wsdl-couldnt-load-from-failed-to-load-external-entity.md b/docs/ecommerce-applications/magento-1/how-to-fix-soap-error-parsing-wsdl-couldnt-load-from-failed-to-load-external-entity.md index d89de9b1..29f80142 100644 --- a/docs/ecommerce-applications/magento-1/how-to-fix-soap-error-parsing-wsdl-couldnt-load-from-failed-to-load-external-entity.md +++ b/docs/ecommerce-applications/magento-1/how-to-fix-soap-error-parsing-wsdl-couldnt-load-from-failed-to-load-external-entity.md @@ -2,10 +2,10 @@ myst: html_meta: description: "Get errors like these when trying to perform HTTP requests: \"Parsing\ - \ WSDL: Couldn't load from '': failed to load external entity\"? Here's how to\ - \ Fix SOAP errors." + \ WSDL: Couldn't load from '': failed to load external entity\"? Here's how\ + \ to Fix SOAP errors." redirect_from: -- /en/ecommerce/magento-1/how-to-fix-soap-error-parsing-wsdl-couldn-t-load-from-failed-to-load-external-entity/ + - /en/ecommerce/magento-1/how-to-fix-soap-error-parsing-wsdl-couldn-t-load-from-failed-to-load-external-entity/ --- diff --git a/docs/ecommerce-applications/magento-1/how-to-flush-the-magento-1-x-caches.md b/docs/ecommerce-applications/magento-1/how-to-flush-the-magento-1-x-caches.md index ab0756e0..82d75ec8 100644 --- a/docs/ecommerce-applications/magento-1/how-to-flush-the-magento-1-x-caches.md +++ b/docs/ecommerce-applications/magento-1/how-to-flush-the-magento-1-x-caches.md @@ -4,7 +4,7 @@ myst: description: 'There are different ways to flush your Magento 1.x caches, via the commandline or the backend for example. Read instructions per way in this article. ' redirect_from: -- /en/ecommerce/magento-1/how-to-flush-the-magento-1-x-caches/ + - /en/ecommerce/magento-1/how-to-flush-the-magento-1-x-caches/ --- diff --git a/docs/ecommerce-applications/magento-1/how-to-flush-the-wsdl-cache.md b/docs/ecommerce-applications/magento-1/how-to-flush-the-wsdl-cache.md index 67f024a6..cab49df8 100644 --- a/docs/ecommerce-applications/magento-1/how-to-flush-the-wsdl-cache.md +++ b/docs/ecommerce-applications/magento-1/how-to-flush-the-wsdl-cache.md @@ -4,7 +4,7 @@ myst: description: The WSDL cache is used for API soap calls to Magento. Read here how to flush it in case of corruptions causing errors on all API calls to Magento. redirect_from: -- /en/ecommerce/magento-1/how-to-flush-the-wsdl-cache/ + - /en/ecommerce/magento-1/how-to-flush-the-wsdl-cache/ --- diff --git a/docs/ecommerce-applications/magento-1/how-to-install-magento-1-on-hypernode.md b/docs/ecommerce-applications/magento-1/how-to-install-magento-1-on-hypernode.md index 44296047..b7d10923 100644 --- a/docs/ecommerce-applications/magento-1/how-to-install-magento-1-on-hypernode.md +++ b/docs/ecommerce-applications/magento-1/how-to-install-magento-1-on-hypernode.md @@ -4,7 +4,7 @@ myst: description: Starting over and in need of a fresh Magento 1 installation? Follow the steps in this article to install a Magento 1 installation on Hypernode. redirect_from: -- /en/ecommerce/magento-1/how-to-install-magento-1-on-hypernode/ + - /en/ecommerce/magento-1/how-to-install-magento-1-on-hypernode/ --- diff --git a/docs/ecommerce-applications/magento-1/how-to-remove-your-magento-1-x-installation.md b/docs/ecommerce-applications/magento-1/how-to-remove-your-magento-1-x-installation.md index 20ee4ca5..891b5449 100644 --- a/docs/ecommerce-applications/magento-1/how-to-remove-your-magento-1-x-installation.md +++ b/docs/ecommerce-applications/magento-1/how-to-remove-your-magento-1-x-installation.md @@ -4,7 +4,7 @@ myst: description: 'Within this article you can find snippets, which can be used for the removal of your Magento 1.x installation. ' redirect_from: -- /en/ecommerce/magento-1/how-to-remove-your-magento-1-x-installation/ + - /en/ecommerce/magento-1/how-to-remove-your-magento-1-x-installation/ --- diff --git a/docs/ecommerce-applications/magento-1/how-to-reset-your-magento-1-x-admin-password.md b/docs/ecommerce-applications/magento-1/how-to-reset-your-magento-1-x-admin-password.md index bf70bf5d..bef0e530 100644 --- a/docs/ecommerce-applications/magento-1/how-to-reset-your-magento-1-x-admin-password.md +++ b/docs/ecommerce-applications/magento-1/how-to-reset-your-magento-1-x-admin-password.md @@ -5,7 +5,7 @@ myst: methods to retrieve a new password to log back in. Check out here how to reset your password. redirect_from: -- /en/support/solutions/articles/48000970831-how-to-reset-your-magento-1-x-admin-password/ + - /en/support/solutions/articles/48000970831-how-to-reset-your-magento-1-x-admin-password/ --- diff --git a/docs/ecommerce-applications/magento-1/how-to-set-magento-1-x-to-the-utc-timezone.md b/docs/ecommerce-applications/magento-1/how-to-set-magento-1-x-to-the-utc-timezone.md index 90f50547..888f03ba 100644 --- a/docs/ecommerce-applications/magento-1/how-to-set-magento-1-x-to-the-utc-timezone.md +++ b/docs/ecommerce-applications/magento-1/how-to-set-magento-1-x-to-the-utc-timezone.md @@ -5,7 +5,7 @@ myst: timezone setting to your customers, check out how change the timezone on Magento 1.x. redirect_from: -- /en/ecommerce/magento-1/how-to-set-magento-1-x-to-the-utc-timezone/ + - /en/ecommerce/magento-1/how-to-set-magento-1-x-to-the-utc-timezone/ --- diff --git a/docs/ecommerce-applications/magento-1/how-to-set-the-return-path-for-a-magento-1-shop.md b/docs/ecommerce-applications/magento-1/how-to-set-the-return-path-for-a-magento-1-shop.md index 9ef2da63..97b5550b 100644 --- a/docs/ecommerce-applications/magento-1/how-to-set-the-return-path-for-a-magento-1-shop.md +++ b/docs/ecommerce-applications/magento-1/how-to-set-the-return-path-for-a-magento-1-shop.md @@ -5,7 +5,7 @@ myst: the email return-path for your outgoing email to a valid address. Check here how to do so. redirect_from: -- /en/ecommerce/magento-1/how-to-set-the-return-path-for-a-magento-1-shop/ + - /en/ecommerce/magento-1/how-to-set-the-return-path-for-a-magento-1-shop/ --- diff --git a/docs/ecommerce-applications/magento-1/how-to-set-up-a-staging-environment-for-magento-1.md b/docs/ecommerce-applications/magento-1/how-to-set-up-a-staging-environment-for-magento-1.md index 17330ba4..b06175ce 100644 --- a/docs/ecommerce-applications/magento-1/how-to-set-up-a-staging-environment-for-magento-1.md +++ b/docs/ecommerce-applications/magento-1/how-to-set-up-a-staging-environment-for-magento-1.md @@ -5,7 +5,7 @@ myst: we explain how to set up a staging environment on Hypernode for a Magento 1 shop. redirect_from: -- /en/ecommerce/magento-1/how-to-set-up-a-staging-environment-for-magento-1/ + - /en/ecommerce/magento-1/how-to-set-up-a-staging-environment-for-magento-1/ --- diff --git a/docs/ecommerce-applications/magento-2/how-to-change-your-magento-2-base-urls.md b/docs/ecommerce-applications/magento-2/how-to-change-your-magento-2-base-urls.md index 9d1d4f13..b1894c07 100644 --- a/docs/ecommerce-applications/magento-2/how-to-change-your-magento-2-base-urls.md +++ b/docs/ecommerce-applications/magento-2/how-to-change-your-magento-2-base-urls.md @@ -4,7 +4,7 @@ myst: description: There are several ways to configure the base_url settings of your Magento 2 shop. Find detailed instructions on the different ways here. redirect_from: -- /en/ecommerce/magento-2/how-to-change-your-magento-2-base-urls/ + - /en/ecommerce/magento-2/how-to-change-your-magento-2-base-urls/ --- diff --git a/docs/ecommerce-applications/magento-2/how-to-configure-redis-for-magento-2.md b/docs/ecommerce-applications/magento-2/how-to-configure-redis-for-magento-2.md index e813e54a..177c7734 100644 --- a/docs/ecommerce-applications/magento-2/how-to-configure-redis-for-magento-2.md +++ b/docs/ecommerce-applications/magento-2/how-to-configure-redis-for-magento-2.md @@ -5,7 +5,7 @@ myst: and frontend of your shop. Here's how to configure it on Magento 2 and how redis-cli works. redirect_from: -- /en/ecommerce/magento-2/how-to-configure-redis-for-magento-2/ + - /en/ecommerce/magento-2/how-to-configure-redis-for-magento-2/ --- diff --git a/docs/ecommerce-applications/magento-2/how-to-configure-varnish-for-magento-2-x.md b/docs/ecommerce-applications/magento-2/how-to-configure-varnish-for-magento-2-x.md index cce267d2..32882e92 100644 --- a/docs/ecommerce-applications/magento-2/how-to-configure-varnish-for-magento-2-x.md +++ b/docs/ecommerce-applications/magento-2/how-to-configure-varnish-for-magento-2-x.md @@ -4,7 +4,7 @@ myst: description: This article explains how you can configure Varnish for your Hypernode in order to boost your Magento 2.x shop. redirect_from: -- /en/ecommerce/magento-2/how-to-configure-varnish-for-magento-2-x/ + - /en/ecommerce/magento-2/how-to-configure-varnish-for-magento-2-x/ --- diff --git a/docs/ecommerce-applications/magento-2/how-to-create-a-robots-txt-for-magento-2-x.md b/docs/ecommerce-applications/magento-2/how-to-create-a-robots-txt-for-magento-2-x.md index 49f8a6f7..5fbea505 100644 --- a/docs/ecommerce-applications/magento-2/how-to-create-a-robots-txt-for-magento-2-x.md +++ b/docs/ecommerce-applications/magento-2/how-to-create-a-robots-txt-for-magento-2-x.md @@ -4,7 +4,7 @@ myst: description: Using a robots.txt is essential to handle bots and crawlers. In this article we explain how to generate and configure Robot.txt on Magento 2.x. redirect_from: -- /en/ecommerce/magento-2/how-to-create-a-robots-txt-for-magento-2-x/ + - /en/ecommerce/magento-2/how-to-create-a-robots-txt-for-magento-2-x/ --- diff --git a/docs/ecommerce-applications/magento-2/how-to-create-a-sitemap-xml-for-magento-2-x.md b/docs/ecommerce-applications/magento-2/how-to-create-a-sitemap-xml-for-magento-2-x.md index 3244a686..ccded66d 100644 --- a/docs/ecommerce-applications/magento-2/how-to-create-a-sitemap-xml-for-magento-2-x.md +++ b/docs/ecommerce-applications/magento-2/how-to-create-a-sitemap-xml-for-magento-2-x.md @@ -4,7 +4,7 @@ myst: description: Find detailed guidelines on how to create a sitemap.xml for Magento 2.x versions here. redirect_from: -- /en/ecommerce/magento-2/how-to-create-a-sitemap-xml-for-magento-2-x/ + - /en/ecommerce/magento-2/how-to-create-a-sitemap-xml-for-magento-2-x/ --- diff --git a/docs/ecommerce-applications/magento-2/how-to-enable-the-magento-2-api.md b/docs/ecommerce-applications/magento-2/how-to-enable-the-magento-2-api.md index 5634130d..a2856e20 100644 --- a/docs/ecommerce-applications/magento-2/how-to-enable-the-magento-2-api.md +++ b/docs/ecommerce-applications/magento-2/how-to-enable-the-magento-2-api.md @@ -4,7 +4,7 @@ myst: description: 'In this article you can find how to enable the Magento 2 API on Hypernode by creating correct users (and code to solve 404 errors). ' redirect_from: -- /en/ecommerce/magento-2/how-to-enable-the-magento-2-api/ + - /en/ecommerce/magento-2/how-to-enable-the-magento-2-api/ --- diff --git a/docs/ecommerce-applications/magento-2/how-to-enable-the-magento-2-web-setup-wizard.md b/docs/ecommerce-applications/magento-2/how-to-enable-the-magento-2-web-setup-wizard.md index 30b33018..a3b11bc4 100644 --- a/docs/ecommerce-applications/magento-2/how-to-enable-the-magento-2-web-setup-wizard.md +++ b/docs/ecommerce-applications/magento-2/how-to-enable-the-magento-2-web-setup-wizard.md @@ -4,7 +4,7 @@ myst: description: In this article, we explain how to configure and deconfigure the Web Setup Wizard for your Magento 2 shop. redirect_from: -- /en/ecommerce/magento-2/how-to-enable-the-magento-2-web-setup-wizard/ + - /en/ecommerce/magento-2/how-to-enable-the-magento-2-web-setup-wizard/ --- diff --git a/docs/ecommerce-applications/magento-2/how-to-enable-the-maintenance-mode-in-magento-2.md b/docs/ecommerce-applications/magento-2/how-to-enable-the-maintenance-mode-in-magento-2.md index 0e30b4e0..36d26f52 100644 --- a/docs/ecommerce-applications/magento-2/how-to-enable-the-maintenance-mode-in-magento-2.md +++ b/docs/ecommerce-applications/magento-2/how-to-enable-the-maintenance-mode-in-magento-2.md @@ -4,7 +4,7 @@ myst: description: Maintenance mode is a shortcut to serve a temporary error notification to all customers. Find here how to enable it in Magento 2. redirect_from: -- /en/ecommerce/magento-2/how-to-enable-the-maintenance-mode-in-magento-2/ + - /en/ecommerce/magento-2/how-to-enable-the-maintenance-mode-in-magento-2/ --- diff --git a/docs/ecommerce-applications/magento-2/how-to-fix-the-general-error-1030-got-error-1-from-storage-engine.md b/docs/ecommerce-applications/magento-2/how-to-fix-the-general-error-1030-got-error-1-from-storage-engine.md index 7b9b0156..b7a6557d 100644 --- a/docs/ecommerce-applications/magento-2/how-to-fix-the-general-error-1030-got-error-1-from-storage-engine.md +++ b/docs/ecommerce-applications/magento-2/how-to-fix-the-general-error-1030-got-error-1-from-storage-engine.md @@ -4,7 +4,7 @@ myst: description: 'This article describes how to fix the "General error: 1030 Got error 1 from storage engine" on your Hypernode.' redirect_from: -- /en/ecommerce/magento-2/how-to-fix-the-general-error-1030-got-error-1-from-storage-engine/ + - /en/ecommerce/magento-2/how-to-fix-the-general-error-1030-got-error-1-from-storage-engine/ --- diff --git a/docs/ecommerce-applications/magento-2/how-to-flush-the-magento-2-x-caches.md b/docs/ecommerce-applications/magento-2/how-to-flush-the-magento-2-x-caches.md index 1d53cf09..87266bdc 100644 --- a/docs/ecommerce-applications/magento-2/how-to-flush-the-magento-2-x-caches.md +++ b/docs/ecommerce-applications/magento-2/how-to-flush-the-magento-2-x-caches.md @@ -4,7 +4,7 @@ myst: description: 'There are different ways to flush your Magento 2.x caches, via the commandline or the backend for example. Read instructions per way in this article. ' redirect_from: -- /en/ecommerce/magento-2/how-to-flush-the-magento-2-x-caches/ + - /en/ecommerce/magento-2/how-to-flush-the-magento-2-x-caches/ --- diff --git a/docs/ecommerce-applications/magento-2/how-to-install-magento-2-on-hypernode.md b/docs/ecommerce-applications/magento-2/how-to-install-magento-2-on-hypernode.md index c9081b4a..0c50a0ba 100644 --- a/docs/ecommerce-applications/magento-2/how-to-install-magento-2-on-hypernode.md +++ b/docs/ecommerce-applications/magento-2/how-to-install-magento-2-on-hypernode.md @@ -4,7 +4,7 @@ myst: description: Follow the steps in this article to install a Magento 2 installation on Hypernode. It will only take you 5-10 minutes. redirect_from: -- /en/ecommerce/magento-2/how-to-install-magento-2-on-hypernode/ + - /en/ecommerce/magento-2/how-to-install-magento-2-on-hypernode/ --- diff --git a/docs/ecommerce-applications/magento-2/how-to-optimize-magento-2-queue-consumers-on-hypernode.md b/docs/ecommerce-applications/magento-2/how-to-optimize-magento-2-queue-consumers-on-hypernode.md index 46b7ade8..25be3716 100644 --- a/docs/ecommerce-applications/magento-2/how-to-optimize-magento-2-queue-consumers-on-hypernode.md +++ b/docs/ecommerce-applications/magento-2/how-to-optimize-magento-2-queue-consumers-on-hypernode.md @@ -5,7 +5,7 @@ myst: of a default setting in Magento 2 causing the consumers to never end. Here's the fix. redirect_from: -- /en/support/solutions/articles/48001186343-how-to-optimize-magento-2-queue-consumers-on-hypernode/ + - /en/support/solutions/articles/48001186343-how-to-optimize-magento-2-queue-consumers-on-hypernode/ --- diff --git a/docs/ecommerce-applications/magento-2/how-to-protect-the-magento-2-api.md b/docs/ecommerce-applications/magento-2/how-to-protect-the-magento-2-api.md index 40ffd67b..4b864f58 100644 --- a/docs/ecommerce-applications/magento-2/how-to-protect-the-magento-2-api.md +++ b/docs/ecommerce-applications/magento-2/how-to-protect-the-magento-2-api.md @@ -1,6 +1,6 @@ --- redirect_from: -- /en/ecommerce/magento-2/how-to-protect-the-magento-2-api/ + - /en/ecommerce/magento-2/how-to-protect-the-magento-2-api/ --- diff --git a/docs/ecommerce-applications/magento-2/how-to-remove-your-magento-2-x-installation.md b/docs/ecommerce-applications/magento-2/how-to-remove-your-magento-2-x-installation.md index d59df020..7a97db04 100644 --- a/docs/ecommerce-applications/magento-2/how-to-remove-your-magento-2-x-installation.md +++ b/docs/ecommerce-applications/magento-2/how-to-remove-your-magento-2-x-installation.md @@ -4,7 +4,7 @@ myst: description: 'Within this article you can find snippets, which can be used for the removal of your Magento 2.x installation. ' redirect_from: -- /en/ecommerce/magento-2/how-to-remove-your-magento-2-x-installation/ + - /en/ecommerce/magento-2/how-to-remove-your-magento-2-x-installation/ --- diff --git a/docs/ecommerce-applications/magento-2/how-to-reset-your-magento-2-x-admin-password.md b/docs/ecommerce-applications/magento-2/how-to-reset-your-magento-2-x-admin-password.md index fe147e1e..eef58461 100644 --- a/docs/ecommerce-applications/magento-2/how-to-reset-your-magento-2-x-admin-password.md +++ b/docs/ecommerce-applications/magento-2/how-to-reset-your-magento-2-x-admin-password.md @@ -5,7 +5,7 @@ myst: methods to retrieve a new password to log in. Check out here how to reset your password. redirect_from: -- /en/ecommerce/magento-2/how-to-reset-your-magento-2-x-admin-password/ + - /en/ecommerce/magento-2/how-to-reset-your-magento-2-x-admin-password/ --- diff --git a/docs/ecommerce-applications/magento-2/how-to-set-magento-2-x-to-the-utc-timezone.md b/docs/ecommerce-applications/magento-2/how-to-set-magento-2-x-to-the-utc-timezone.md index cea479ce..6f6b42ee 100644 --- a/docs/ecommerce-applications/magento-2/how-to-set-magento-2-x-to-the-utc-timezone.md +++ b/docs/ecommerce-applications/magento-2/how-to-set-magento-2-x-to-the-utc-timezone.md @@ -5,7 +5,7 @@ myst: timezone setting to your customers, check out how change the timezone on Magento 2.x. redirect_from: -- /en/ecommerce/magento-2/how-to-set-magento-2-x-to-the-utc-timezone/ + - /en/ecommerce/magento-2/how-to-set-magento-2-x-to-the-utc-timezone/ --- diff --git a/docs/ecommerce-applications/magento-2/how-to-set-mysql-variables-globally-on-hypernode.md b/docs/ecommerce-applications/magento-2/how-to-set-mysql-variables-globally-on-hypernode.md index 42fa2851..deba45af 100644 --- a/docs/ecommerce-applications/magento-2/how-to-set-mysql-variables-globally-on-hypernode.md +++ b/docs/ecommerce-applications/magento-2/how-to-set-mysql-variables-globally-on-hypernode.md @@ -4,7 +4,7 @@ myst: description: This article explains how to set MySQL variables globally on Hypernode by configuring the initStaments in the env.php file redirect_from: -- /en/support/solutions/articles/48001208261-how-to-set-mysql-variables-globally-on-hypernode/ + - /en/support/solutions/articles/48001208261-how-to-set-mysql-variables-globally-on-hypernode/ --- diff --git a/docs/ecommerce-applications/magento-2/how-to-set-the-return-path-for-a-magento-2-shop.md b/docs/ecommerce-applications/magento-2/how-to-set-the-return-path-for-a-magento-2-shop.md index 2970d014..2df32180 100644 --- a/docs/ecommerce-applications/magento-2/how-to-set-the-return-path-for-a-magento-2-shop.md +++ b/docs/ecommerce-applications/magento-2/how-to-set-the-return-path-for-a-magento-2-shop.md @@ -5,7 +5,7 @@ myst: mail return-path for your outgoing email to a valid address. Here's how to do so in Magento 2. redirect_from: -- /en/ecommerce/magento-2/how-to-set-the-return-path-for-a-magento-2-shop/ + - /en/ecommerce/magento-2/how-to-set-the-return-path-for-a-magento-2-shop/ --- diff --git a/docs/ecommerce-applications/magento-2/how-to-set-up-a-basic-staging-environment-for-magento-2.md b/docs/ecommerce-applications/magento-2/how-to-set-up-a-basic-staging-environment-for-magento-2.md index aef6e734..ed0ad2b5 100644 --- a/docs/ecommerce-applications/magento-2/how-to-set-up-a-basic-staging-environment-for-magento-2.md +++ b/docs/ecommerce-applications/magento-2/how-to-set-up-a-basic-staging-environment-for-magento-2.md @@ -5,7 +5,7 @@ myst: we explain how to set up a staging environment on Hypernode for a Magento 2 shop. redirect_from: -- /en/ecommerce/magento-2/how-to-set-up-a-basic-staging-environment-for-magento-2/ + - /en/ecommerce/magento-2/how-to-set-up-a-basic-staging-environment-for-magento-2/ --- diff --git a/docs/ecommerce-applications/magento-2/how-to-set-up-smart-404-handling.md b/docs/ecommerce-applications/magento-2/how-to-set-up-smart-404-handling.md index d8b1b288..0f0d5e98 100644 --- a/docs/ecommerce-applications/magento-2/how-to-set-up-smart-404-handling.md +++ b/docs/ecommerce-applications/magento-2/how-to-set-up-smart-404-handling.md @@ -4,7 +4,7 @@ myst: description: In this article, you can read about setting up smart 404 handlings on Hypernode. redirect_from: -- /en/best-practices/performance/how-to-set-up-smart-404-handling/ + - /en/best-practices/performance/how-to-set-up-smart-404-handling/ --- diff --git a/docs/ecommerce-applications/magento-2/how-to-update-magento-2.md b/docs/ecommerce-applications/magento-2/how-to-update-magento-2.md index 96c56088..3e00c57c 100644 --- a/docs/ecommerce-applications/magento-2/how-to-update-magento-2.md +++ b/docs/ecommerce-applications/magento-2/how-to-update-magento-2.md @@ -4,7 +4,7 @@ myst: description: Does your Magento 2 version need an upgrade? This article explains how to upgrade to the latest Magento 2 version. redirect_from: -- /en/ecommerce/magento-2/how-to-update-magento-2/ + - /en/ecommerce/magento-2/how-to-update-magento-2/ --- diff --git a/docs/ecommerce-applications/shopware-5/how-to-change-the-timezone-for-the-order-timestamps-in-shopware-5-x.md b/docs/ecommerce-applications/shopware-5/how-to-change-the-timezone-for-the-order-timestamps-in-shopware-5-x.md index 5c756757..016bc1e3 100644 --- a/docs/ecommerce-applications/shopware-5/how-to-change-the-timezone-for-the-order-timestamps-in-shopware-5-x.md +++ b/docs/ecommerce-applications/shopware-5/how-to-change-the-timezone-for-the-order-timestamps-in-shopware-5-x.md @@ -1,6 +1,6 @@ --- redirect_from: -- /en/support/solutions/articles/48001166328-how-to-change-the-timezone-for-the-order-timestamps-in-shopware-5-x/ + - /en/support/solutions/articles/48001166328-how-to-change-the-timezone-for-the-order-timestamps-in-shopware-5-x/ --- diff --git a/docs/ecommerce-applications/shopware-5/how-to-change-the-timezone-in-shopware-5-x.md b/docs/ecommerce-applications/shopware-5/how-to-change-the-timezone-in-shopware-5-x.md index 2bee087b..4b955ebb 100644 --- a/docs/ecommerce-applications/shopware-5/how-to-change-the-timezone-in-shopware-5-x.md +++ b/docs/ecommerce-applications/shopware-5/how-to-change-the-timezone-in-shopware-5-x.md @@ -4,7 +4,7 @@ myst: description: This article describes how to change the timezone in Shopware 5.x on a Hypernode. redirect_from: -- /en/support/solutions/articles/48001170559-how-to-change-the-timezone-in-shopware-5-x/ + - /en/support/solutions/articles/48001170559-how-to-change-the-timezone-in-shopware-5-x/ --- diff --git a/docs/ecommerce-applications/shopware-5/how-to-configure-shopware-caching.md b/docs/ecommerce-applications/shopware-5/how-to-configure-shopware-caching.md index e5c83f3f..a3afd454 100644 --- a/docs/ecommerce-applications/shopware-5/how-to-configure-shopware-caching.md +++ b/docs/ecommerce-applications/shopware-5/how-to-configure-shopware-caching.md @@ -4,7 +4,7 @@ myst: description: Shopware provides a built-in HTTP cache to improve the performance and user experience of your shop. We explain how to set it up step by step. redirect_from: -- /en/ecommerce/shopware/how-to-configure-shopware-caching/ + - /en/ecommerce/shopware/how-to-configure-shopware-caching/ --- diff --git a/docs/ecommerce-applications/shopware-5/how-to-configure-varnish-for-shopware-5.md b/docs/ecommerce-applications/shopware-5/how-to-configure-varnish-for-shopware-5.md index 3c804989..20d23ae9 100644 --- a/docs/ecommerce-applications/shopware-5/how-to-configure-varnish-for-shopware-5.md +++ b/docs/ecommerce-applications/shopware-5/how-to-configure-varnish-for-shopware-5.md @@ -4,7 +4,7 @@ myst: description: Shopware 5 applications can greatly benefit from Varnish caching. On the client side, pages load faster, while on the server side, the load decreases. redirect_from: -- /en/support/solutions/articles/48001207016-how-to-configure-varnish-for-shopware-5/ + - /en/support/solutions/articles/48001207016-how-to-configure-varnish-for-shopware-5/ --- diff --git a/docs/ecommerce-applications/shopware-5/how-to-host-shopware-on-hypernode.md b/docs/ecommerce-applications/shopware-5/how-to-host-shopware-on-hypernode.md index f844fab9..3b6224f6 100644 --- a/docs/ecommerce-applications/shopware-5/how-to-host-shopware-on-hypernode.md +++ b/docs/ecommerce-applications/shopware-5/how-to-host-shopware-on-hypernode.md @@ -4,7 +4,7 @@ myst: description: Hosting the popular CMS, Shopware, can (of course) be done on Hypernode. You only need a specific Nginx configuration. Check out how to use it here. redirect_from: -- /en/ecommerce/shopware/how-to-host-shopware-on-hypernode/ + - /en/ecommerce/shopware/how-to-host-shopware-on-hypernode/ --- diff --git a/docs/ecommerce-applications/shopware-5/how-to-install-shopware-5-on-hypernode-docker.md b/docs/ecommerce-applications/shopware-5/how-to-install-shopware-5-on-hypernode-docker.md index 321e85e2..63ae8279 100644 --- a/docs/ecommerce-applications/shopware-5/how-to-install-shopware-5-on-hypernode-docker.md +++ b/docs/ecommerce-applications/shopware-5/how-to-install-shopware-5-on-hypernode-docker.md @@ -4,7 +4,7 @@ myst: description: The Hypernode Docker Image can be used to set up a local test environment for Shopware. This article explains how to install Shopware 5 on a Docker environment. redirect_from: -- /en/ecommerce/shopware/how-to-install-shopware-5-on-hypernode-docker/ + - /en/ecommerce/shopware/how-to-install-shopware-5-on-hypernode-docker/ --- diff --git a/docs/ecommerce-applications/shopware-5/how-to-install-shopware-5-on-hypernode.md b/docs/ecommerce-applications/shopware-5/how-to-install-shopware-5-on-hypernode.md index 583b58ee..9b7c5220 100644 --- a/docs/ecommerce-applications/shopware-5/how-to-install-shopware-5-on-hypernode.md +++ b/docs/ecommerce-applications/shopware-5/how-to-install-shopware-5-on-hypernode.md @@ -4,7 +4,7 @@ myst: description: 'In this article we guide you through the steps of setting up the latest version of Shopware 5 as easy as possible. ' redirect_from: -- /en/ecommerce/shopware/how-to-install-shopware-5-on-hypernode/ + - /en/ecommerce/shopware/how-to-install-shopware-5-on-hypernode/ --- diff --git a/docs/ecommerce-applications/shopware-5/how-to-setup-a-multistore-in-shopware.md b/docs/ecommerce-applications/shopware-5/how-to-setup-a-multistore-in-shopware.md index d6cdfefc..8c64cfe3 100644 --- a/docs/ecommerce-applications/shopware-5/how-to-setup-a-multistore-in-shopware.md +++ b/docs/ecommerce-applications/shopware-5/how-to-setup-a-multistore-in-shopware.md @@ -5,7 +5,7 @@ myst: in different languages and use different currencies. Check out how to set it up here. redirect_from: -- /en/ecommerce/shopware/how-to-setup-a-multistore-in-shopware/ + - /en/ecommerce/shopware/how-to-setup-a-multistore-in-shopware/ --- diff --git a/docs/ecommerce-applications/shopware-5/how-to-use-a-basic-staging-environment-with-shopware.md b/docs/ecommerce-applications/shopware-5/how-to-use-a-basic-staging-environment-with-shopware.md index e798f960..afb4296d 100644 --- a/docs/ecommerce-applications/shopware-5/how-to-use-a-basic-staging-environment-with-shopware.md +++ b/docs/ecommerce-applications/shopware-5/how-to-use-a-basic-staging-environment-with-shopware.md @@ -4,7 +4,7 @@ myst: description: A staging environment is very useful to test your shop. In this article we explain how to set up a staging environment on Hypernode for a Shopware shop. redirect_from: -- /en/ecommerce/shopware/how-to-use-a-basic-staging-environment-with-shopware/ + - /en/ecommerce/shopware/how-to-use-a-basic-staging-environment-with-shopware/ --- diff --git a/docs/ecommerce-applications/shopware-6/how-to-configure-redis-for-shopware-6.md b/docs/ecommerce-applications/shopware-6/how-to-configure-redis-for-shopware-6.md index 0d466a87..393c09aa 100644 --- a/docs/ecommerce-applications/shopware-6/how-to-configure-redis-for-shopware-6.md +++ b/docs/ecommerce-applications/shopware-6/how-to-configure-redis-for-shopware-6.md @@ -1,6 +1,6 @@ --- redirect_from: -- /en/support/solutions/articles/48001200521-how-to-configure-redis-for-shopware-6/ + - /en/support/solutions/articles/48001200521-how-to-configure-redis-for-shopware-6/ --- diff --git a/docs/ecommerce-applications/shopware-6/how-to-configure-varnish-for-shopware-6.md b/docs/ecommerce-applications/shopware-6/how-to-configure-varnish-for-shopware-6.md index 6e123787..43aa32b3 100644 --- a/docs/ecommerce-applications/shopware-6/how-to-configure-varnish-for-shopware-6.md +++ b/docs/ecommerce-applications/shopware-6/how-to-configure-varnish-for-shopware-6.md @@ -1,6 +1,6 @@ --- redirect_from: -- /en/support/solutions/articles/48001200525-how-to-configure-varnish-for-shopware-6/ + - /en/support/solutions/articles/48001200525-how-to-configure-varnish-for-shopware-6/ --- diff --git a/docs/ecommerce-applications/shopware-6/how-to-install-shopware-6-on-hypernode-docker.md b/docs/ecommerce-applications/shopware-6/how-to-install-shopware-6-on-hypernode-docker.md index 6b5a6898..aed14a2b 100644 --- a/docs/ecommerce-applications/shopware-6/how-to-install-shopware-6-on-hypernode-docker.md +++ b/docs/ecommerce-applications/shopware-6/how-to-install-shopware-6-on-hypernode-docker.md @@ -4,7 +4,7 @@ myst: description: The Hypernode Docker Image can be used to set up a local test environment for Shopware. This article explains how to install Shopware 6 on a Docker environment. redirect_from: -- /en/ecommerce/shopware/how-to-install-shopware-6-on-hypernode-docker/ + - /en/ecommerce/shopware/how-to-install-shopware-6-on-hypernode-docker/ --- diff --git a/docs/ecommerce-applications/shopware-6/how-to-install-shopware-6-on-hypernode.md b/docs/ecommerce-applications/shopware-6/how-to-install-shopware-6-on-hypernode.md index 98c4a7bf..8317c055 100644 --- a/docs/ecommerce-applications/shopware-6/how-to-install-shopware-6-on-hypernode.md +++ b/docs/ecommerce-applications/shopware-6/how-to-install-shopware-6-on-hypernode.md @@ -4,7 +4,7 @@ myst: description: 'In this article we guide you through the steps of setting up the latest version of Shopware 6 as easy as possible. ' redirect_from: -- /en/ecommerce/shopware/how-to-install-shopware-6-on-hypernode/ + - /en/ecommerce/shopware/how-to-install-shopware-6-on-hypernode/ --- diff --git a/docs/ecommerce-applications/shopware-6/how-to-use-a-basic-staging-environment-with-shopware-6.md b/docs/ecommerce-applications/shopware-6/how-to-use-a-basic-staging-environment-with-shopware-6.md index bff1f8d9..7368ffa4 100644 --- a/docs/ecommerce-applications/shopware-6/how-to-use-a-basic-staging-environment-with-shopware-6.md +++ b/docs/ecommerce-applications/shopware-6/how-to-use-a-basic-staging-environment-with-shopware-6.md @@ -5,7 +5,7 @@ myst: we explain how to set up a staging environment on Hypernode for a Shopware 6 shop. redirect_from: -- /en/ecommerce/shopware/how-to-use-a-basic-staging-environment-with-shopware-6/ + - /en/ecommerce/shopware/how-to-use-a-basic-staging-environment-with-shopware-6/ --- diff --git a/docs/ecommerce-applications/shopware-6/workaround-for-known-issue-accessing-shopware-6-admin-on-a-development-plan.md b/docs/ecommerce-applications/shopware-6/workaround-for-known-issue-accessing-shopware-6-admin-on-a-development-plan.md index e4a4667b..acd43cd1 100644 --- a/docs/ecommerce-applications/shopware-6/workaround-for-known-issue-accessing-shopware-6-admin-on-a-development-plan.md +++ b/docs/ecommerce-applications/shopware-6/workaround-for-known-issue-accessing-shopware-6-admin-on-a-development-plan.md @@ -1,6 +1,6 @@ --- redirect_from: -- /en/support/solutions/articles/48001207548-workaround-for-known-issue-accessing-shopware-6-admin-on-a-development-plan/ + - /en/support/solutions/articles/48001207548-workaround-for-known-issue-accessing-shopware-6-admin-on-a-development-plan/ --- diff --git a/docs/ecommerce-applications/woocommerce/how-to-install-woocommerce-on-hypernode.md b/docs/ecommerce-applications/woocommerce/how-to-install-woocommerce-on-hypernode.md index c36b2458..2b931c1f 100644 --- a/docs/ecommerce-applications/woocommerce/how-to-install-woocommerce-on-hypernode.md +++ b/docs/ecommerce-applications/woocommerce/how-to-install-woocommerce-on-hypernode.md @@ -1,6 +1,6 @@ --- redirect_from: -- /en/support/solutions/articles/48001213397-how-to-install-woocommerce-on-hypernode/ + - /en/support/solutions/articles/48001213397-how-to-install-woocommerce-on-hypernode/ --- diff --git a/docs/getting-started/how-to-order/how-to-get-started-with-your-hypernode-trial.md b/docs/getting-started/how-to-order/how-to-get-started-with-your-hypernode-trial.md index 7cc17393..253e82c4 100644 --- a/docs/getting-started/how-to-order/how-to-get-started-with-your-hypernode-trial.md +++ b/docs/getting-started/how-to-order/how-to-get-started-with-your-hypernode-trial.md @@ -4,7 +4,7 @@ myst: description: 'Your trial gives you 14 days of free testing on our Hypernode platform. Find out how to get started and test all features on the platform in this article. ' redirect_from: -- /en/getting-started/how-to-order/how-to-get-started-with-your-hypernode-trial/ + - /en/getting-started/how-to-order/how-to-get-started-with-your-hypernode-trial/ --- diff --git a/docs/getting-started/how-to-order/how-to-order-a-domain-presence-plan.md b/docs/getting-started/how-to-order/how-to-order-a-domain-presence-plan.md index 237830ff..cb925231 100644 --- a/docs/getting-started/how-to-order/how-to-order-a-domain-presence-plan.md +++ b/docs/getting-started/how-to-order/how-to-order-a-domain-presence-plan.md @@ -4,7 +4,7 @@ myst: description: 'Find out here about the two different Presence plans Hypernode offers and how to order them. ' redirect_from: -- /en/getting-started/how-to-order/how-to-order-a-domain-presence-plan/ + - /en/getting-started/how-to-order/how-to-order-a-domain-presence-plan/ --- diff --git a/docs/hypernode-platform/backups/how-to-restore-your-hypernode-from-a-snapshot.md b/docs/hypernode-platform/backups/how-to-restore-your-hypernode-from-a-snapshot.md index 1160e0e6..06d60cdd 100644 --- a/docs/hypernode-platform/backups/how-to-restore-your-hypernode-from-a-snapshot.md +++ b/docs/hypernode-platform/backups/how-to-restore-your-hypernode-from-a-snapshot.md @@ -4,7 +4,7 @@ myst: description: 'Find detailed guidelines on how to restore your Hypernode from a backup here, if needed after a mistake. We restore backups with snapshots. ' redirect_from: -- /en/hypernode/backups/how-to-restore-your-hypernode-from-a-backup/ + - /en/hypernode/backups/how-to-restore-your-hypernode-from-a-backup/ --- diff --git a/docs/hypernode-platform/backups/hypernode-backup-policy.md b/docs/hypernode-platform/backups/hypernode-backup-policy.md index cc08a0cd..2b7d71d7 100644 --- a/docs/hypernode-platform/backups/hypernode-backup-policy.md +++ b/docs/hypernode-platform/backups/hypernode-backup-policy.md @@ -4,7 +4,7 @@ myst: description: 'When things go wrong, you want to restore the appropriate database table, files or directories from the backup. We offer this with snapshots. ' redirect_from: -- /en/hypernode/backups/hypernode-backup-policy/ + - /en/hypernode/backups/hypernode-backup-policy/ --- diff --git a/docs/hypernode-platform/dns/dns-for-service-panel-users.md b/docs/hypernode-platform/dns/dns-for-service-panel-users.md index 84bd9c09..9ef52688 100644 --- a/docs/hypernode-platform/dns/dns-for-service-panel-users.md +++ b/docs/hypernode-platform/dns/dns-for-service-panel-users.md @@ -5,7 +5,7 @@ myst: the internet. Read here how you can configure the DNS for your domain name at Hypernode. redirect_from: -- /en/support/solutions/articles/48001153093-dns-for-service-panel-users/ + - /en/support/solutions/articles/48001153093-dns-for-service-panel-users/ --- diff --git a/docs/hypernode-platform/dns/how-to-manage-your-dns-settings-for-hypernode.md b/docs/hypernode-platform/dns/how-to-manage-your-dns-settings-for-hypernode.md index ef87e954..c6fe5217 100644 --- a/docs/hypernode-platform/dns/how-to-manage-your-dns-settings-for-hypernode.md +++ b/docs/hypernode-platform/dns/how-to-manage-your-dns-settings-for-hypernode.md @@ -4,7 +4,7 @@ myst: description: 'Find out how to manage your DNS settings on Hypernode in order to avoid downtime when up- or downgrading here. ' redirect_from: -- /en/hypernode/dns/how-to-manage-your-dns-settings-for-hypernode/ + - /en/hypernode/dns/how-to-manage-your-dns-settings-for-hypernode/ --- diff --git a/docs/hypernode-platform/dns/how-to-set-up-your-spf-records-for-hypernode.md b/docs/hypernode-platform/dns/how-to-set-up-your-spf-records-for-hypernode.md index 2a4a76f7..1153f232 100644 --- a/docs/hypernode-platform/dns/how-to-set-up-your-spf-records-for-hypernode.md +++ b/docs/hypernode-platform/dns/how-to-set-up-your-spf-records-for-hypernode.md @@ -4,7 +4,7 @@ myst: description: Sender Policy Framework, SPF, is a technique used to fight spam. Find out here how to set it up for Hypernode. redirect_from: -- /en/hypernode/dns/how-to-set-up-your-spf-records-for-hypernode/ + - /en/hypernode/dns/how-to-set-up-your-spf-records-for-hypernode/ --- diff --git a/docs/hypernode-platform/dns/your-dns-is-misconfigured.md b/docs/hypernode-platform/dns/your-dns-is-misconfigured.md index 09831c31..0465ff84 100644 --- a/docs/hypernode-platform/dns/your-dns-is-misconfigured.md +++ b/docs/hypernode-platform/dns/your-dns-is-misconfigured.md @@ -4,7 +4,7 @@ myst: description: The administrator of this domain has pointed www.domain.com to our DNS service, instead of appointing a CNAME to his/her Hypernode. redirect_from: -- /en/hypernode/dns/your-dns-is-misconfigured/ + - /en/hypernode/dns/your-dns-is-misconfigured/ --- diff --git a/docs/hypernode-platform/email/how-to-activate-a-virus-filter-for-your-email-box.md b/docs/hypernode-platform/email/how-to-activate-a-virus-filter-for-your-email-box.md index 7138f1ab..2285664d 100644 --- a/docs/hypernode-platform/email/how-to-activate-a-virus-filter-for-your-email-box.md +++ b/docs/hypernode-platform/email/how-to-activate-a-virus-filter-for-your-email-box.md @@ -5,7 +5,7 @@ myst: In this article we explain how Hypernodes virus filter works and how to deactive it. redirect_from: -- /en/best-practices/email/how-to-activate-a-virus-filter-for-your-email-box/ + - /en/best-practices/email/how-to-activate-a-virus-filter-for-your-email-box/ --- diff --git a/docs/hypernode-platform/email/how-to-configure-the-spam-filter.md b/docs/hypernode-platform/email/how-to-configure-the-spam-filter.md index b751577c..a4606548 100644 --- a/docs/hypernode-platform/email/how-to-configure-the-spam-filter.md +++ b/docs/hypernode-platform/email/how-to-configure-the-spam-filter.md @@ -5,7 +5,7 @@ myst: you receive a lot of spam, we at Hypernode recommend you to configure a spam filter. redirect_from: -- /en/best-practices/email/how-to-configure-the-spam-filter/ + - /en/best-practices/email/how-to-configure-the-spam-filter/ --- diff --git a/docs/hypernode-platform/email/how-to-manage-your-email-queue.md b/docs/hypernode-platform/email/how-to-manage-your-email-queue.md index b6503cef..90b687ee 100644 --- a/docs/hypernode-platform/email/how-to-manage-your-email-queue.md +++ b/docs/hypernode-platform/email/how-to-manage-your-email-queue.md @@ -5,7 +5,7 @@ myst: you will want to know how you can manage your email queue. Find out how to do this here. redirect_from: -- /en/hypernode/email/how-to-manage-your-email-queue/ + - /en/hypernode/email/how-to-manage-your-email-queue/ --- diff --git a/docs/hypernode-platform/email/how-to-set-up-your-dns-for-outgoing-email.md b/docs/hypernode-platform/email/how-to-set-up-your-dns-for-outgoing-email.md index 153d3b7c..7bbe97af 100644 --- a/docs/hypernode-platform/email/how-to-set-up-your-dns-for-outgoing-email.md +++ b/docs/hypernode-platform/email/how-to-set-up-your-dns-for-outgoing-email.md @@ -4,7 +4,7 @@ myst: description: If your domain is hosted externally and you want to send email from your Hypernode there are records that need to be added to the external DNS. redirect_from: -- /en/hypernode/email/how-to-set-up-your-dns-for-outgoing-email/ + - /en/hypernode/email/how-to-set-up-your-dns-for-outgoing-email/ --- diff --git a/docs/hypernode-platform/email/how-to-set-up-your-dns-for-using-office365.md b/docs/hypernode-platform/email/how-to-set-up-your-dns-for-using-office365.md index 73bab199..5fc67f6a 100644 --- a/docs/hypernode-platform/email/how-to-set-up-your-dns-for-using-office365.md +++ b/docs/hypernode-platform/email/how-to-set-up-your-dns-for-using-office365.md @@ -4,7 +4,7 @@ myst: description: How to set up your DNS when you want to use Office365 on a domain that is hosted at Hypernode redirect_from: -- /en/best-practices/email/how-to-set-up-your-dns-for-using-office365/ + - /en/best-practices/email/how-to-set-up-your-dns-for-using-office365/ --- diff --git a/docs/hypernode-platform/email/how-to-use-dmarc.md b/docs/hypernode-platform/email/how-to-use-dmarc.md index c9ca6429..78118bc9 100644 --- a/docs/hypernode-platform/email/how-to-use-dmarc.md +++ b/docs/hypernode-platform/email/how-to-use-dmarc.md @@ -4,7 +4,7 @@ myst: description: Hypernode offers DMARC (Domain-based Message Authentication, Reporting and Conformance) for Service Panel users. Read how to configure it in this article. redirect_from: -- /en/best-practices/email/how-to-use-dmarc/ + - /en/best-practices/email/how-to-use-dmarc/ --- diff --git a/docs/hypernode-platform/email/policy-for-sending-email-on-hypernode.md b/docs/hypernode-platform/email/policy-for-sending-email-on-hypernode.md index 5e99479a..4fe861a1 100644 --- a/docs/hypernode-platform/email/policy-for-sending-email-on-hypernode.md +++ b/docs/hypernode-platform/email/policy-for-sending-email-on-hypernode.md @@ -4,7 +4,7 @@ myst: description: 'All emails send from a Hypernode are routed through a central outgoing email platform that filters spam and infected emails. Read here about its policies. ' redirect_from: -- /en/hypernode/email/policy-for-sending-email-on-hypernode/ + - /en/hypernode/email/policy-for-sending-email-on-hypernode/ --- diff --git a/docs/hypernode-platform/email/spam-run-via-your-website.md b/docs/hypernode-platform/email/spam-run-via-your-website.md index c232bb44..1bfdb233 100644 --- a/docs/hypernode-platform/email/spam-run-via-your-website.md +++ b/docs/hypernode-platform/email/spam-run-via-your-website.md @@ -5,7 +5,7 @@ myst: \ this article to find out what happened and how to prevent spam runs from your\ \ website. " redirect_from: -- /en/hypernode/email/spam-run-via-your-website/ + - /en/hypernode/email/spam-run-via-your-website/ --- diff --git a/docs/hypernode-platform/ftp/how-to-configure-ftp-sftp-on-hypernode.md b/docs/hypernode-platform/ftp/how-to-configure-ftp-sftp-on-hypernode.md index 0ea1b435..0dd857f0 100644 --- a/docs/hypernode-platform/ftp/how-to-configure-ftp-sftp-on-hypernode.md +++ b/docs/hypernode-platform/ftp/how-to-configure-ftp-sftp-on-hypernode.md @@ -4,7 +4,7 @@ myst: description: In this article we’ll explain how you can configure FTP/SFTP (create/delete users) and which credentials to use to make a FTP/SFTP connection. redirect_from: -- /en/hypernode/ftp/how-to-configure-ftp-sftp-on-hypernode/ + - /en/hypernode/ftp/how-to-configure-ftp-sftp-on-hypernode/ --- diff --git a/docs/hypernode-platform/mysql/how-to-configure-a-large-mysql-thread-stack.md b/docs/hypernode-platform/mysql/how-to-configure-a-large-mysql-thread-stack.md index 6a3715fa..7eaab602 100644 --- a/docs/hypernode-platform/mysql/how-to-configure-a-large-mysql-thread-stack.md +++ b/docs/hypernode-platform/mysql/how-to-configure-a-large-mysql-thread-stack.md @@ -5,7 +5,7 @@ myst: facilitate some flexibility (because it is not possible to change root-owned MySQL related config files.) redirect_from: -- /en/hypernode/mysql/how-to-configure-a-large-mysql-thread-stack/ + - /en/hypernode/mysql/how-to-configure-a-large-mysql-thread-stack/ --- diff --git a/docs/hypernode-platform/mysql/how-to-free-disk-space-from-mysql-ibdata1.md b/docs/hypernode-platform/mysql/how-to-free-disk-space-from-mysql-ibdata1.md index eb282c91..2e48abb7 100644 --- a/docs/hypernode-platform/mysql/how-to-free-disk-space-from-mysql-ibdata1.md +++ b/docs/hypernode-platform/mysql/how-to-free-disk-space-from-mysql-ibdata1.md @@ -5,7 +5,7 @@ myst: example, which can grow quickly and is hard to remove. Read here how to free up disk space. redirect_from: -- /en/hypernode/mysql/how-to-free-disk-space-from-mysql-ibdata1/ + - /en/hypernode/mysql/how-to-free-disk-space-from-mysql-ibdata1/ --- diff --git a/docs/hypernode-platform/mysql/how-to-use-mysql-on-hypernode.md b/docs/hypernode-platform/mysql/how-to-use-mysql-on-hypernode.md index 6e18d9fe..07fd61c6 100644 --- a/docs/hypernode-platform/mysql/how-to-use-mysql-on-hypernode.md +++ b/docs/hypernode-platform/mysql/how-to-use-mysql-on-hypernode.md @@ -5,7 +5,7 @@ myst: as finding your credentials, whitelisting your IP address and using PHPMyAdmin are included. redirect_from: -- /en/hypernode/mysql/how-to-use-mysql-on-hypernode/ + - /en/hypernode/mysql/how-to-use-mysql-on-hypernode/ --- diff --git a/docs/hypernode-platform/mysql/how-to-use-phpmyadmin.md b/docs/hypernode-platform/mysql/how-to-use-phpmyadmin.md index b4bbfc37..939e1b8c 100644 --- a/docs/hypernode-platform/mysql/how-to-use-phpmyadmin.md +++ b/docs/hypernode-platform/mysql/how-to-use-phpmyadmin.md @@ -4,7 +4,7 @@ myst: description: 'In this article, we provide you with a detailed roadmap about how you can use PHPMyAdmin and how to create a database dump. ' redirect_from: -- /en/hypernode/mysql/how-to-use-phpmyadmin/ + - /en/hypernode/mysql/how-to-use-phpmyadmin/ --- diff --git a/docs/hypernode-platform/nginx/basic-authentication-on-hypernode-development-plans.md b/docs/hypernode-platform/nginx/basic-authentication-on-hypernode-development-plans.md index 7f174957..c709d043 100644 --- a/docs/hypernode-platform/nginx/basic-authentication-on-hypernode-development-plans.md +++ b/docs/hypernode-platform/nginx/basic-authentication-on-hypernode-development-plans.md @@ -4,7 +4,7 @@ myst: description: 'Development Hypernodes are by default configured to offer a Basic Authentication challenge to all visitors. Read all about it in this article. ' redirect_from: -- /en/hypernode/nginx/basic-authentication-on-hypernode-development-plans/ + - /en/hypernode/nginx/basic-authentication-on-hypernode-development-plans/ --- diff --git a/docs/hypernode-platform/nginx/how-to-add-custom-http-headers-to-a-file-or-location.md b/docs/hypernode-platform/nginx/how-to-add-custom-http-headers-to-a-file-or-location.md index 2cc95ab0..39226277 100644 --- a/docs/hypernode-platform/nginx/how-to-add-custom-http-headers-to-a-file-or-location.md +++ b/docs/hypernode-platform/nginx/how-to-add-custom-http-headers-to-a-file-or-location.md @@ -4,7 +4,7 @@ myst: description: 'By adding HTTP headers to a file or location, you can provide additional information for several reasons. Find out how to add customer HTTP headers here. ' redirect_from: -- /en/hypernode/nginx/how-to-add-custom-http-headers-to-a-file-or-location/ + - /en/hypernode/nginx/how-to-add-custom-http-headers-to-a-file-or-location/ --- diff --git a/docs/hypernode-platform/nginx/how-to-block-allow-ip-addresses-in-nginx.md b/docs/hypernode-platform/nginx/how-to-block-allow-ip-addresses-in-nginx.md index adef9bda..8e119b47 100644 --- a/docs/hypernode-platform/nginx/how-to-block-allow-ip-addresses-in-nginx.md +++ b/docs/hypernode-platform/nginx/how-to-block-allow-ip-addresses-in-nginx.md @@ -4,7 +4,7 @@ myst: description: 'In Nginx blocking and allowing IP-addresses is done using the access module. Find thorough guidelines in this article. ' redirect_from: -- /en/hypernode/nginx/how-to-block-allow-ip-addresses-in-nginx/ + - /en/hypernode/nginx/how-to-block-allow-ip-addresses-in-nginx/ --- diff --git a/docs/hypernode-platform/nginx/how-to-block-spammers-and-scanners.md b/docs/hypernode-platform/nginx/how-to-block-spammers-and-scanners.md index 7057fe6f..ae79294d 100644 --- a/docs/hypernode-platform/nginx/how-to-block-spammers-and-scanners.md +++ b/docs/hypernode-platform/nginx/how-to-block-spammers-and-scanners.md @@ -4,7 +4,7 @@ myst: description: It is increasingly common for spammers to crawl your site and a slow site for real visitors. Here are some strategies for finding and blocking them. redirect_from: -- /en/support/solutions/articles/48001165533-how-to-block-spammers-and-scanners/ + - /en/support/solutions/articles/48001165533-how-to-block-spammers-and-scanners/ --- diff --git a/docs/hypernode-platform/nginx/how-to-block-user-agents-and-referrer-sites.md b/docs/hypernode-platform/nginx/how-to-block-user-agents-and-referrer-sites.md index 3ae836b3..0a244d56 100644 --- a/docs/hypernode-platform/nginx/how-to-block-user-agents-and-referrer-sites.md +++ b/docs/hypernode-platform/nginx/how-to-block-user-agents-and-referrer-sites.md @@ -4,7 +4,7 @@ myst: description: 'Find a thorough step by step guide on blocking user agents and referrer sites here. ' redirect_from: -- /en/hypernode/nginx/how-to-block-user-agents-and-referrer-sites/ + - /en/hypernode/nginx/how-to-block-user-agents-and-referrer-sites/ --- diff --git a/docs/hypernode-platform/nginx/how-to-block-your-webshop-for-specific-countries.md b/docs/hypernode-platform/nginx/how-to-block-your-webshop-for-specific-countries.md index 54dc99aa..f5a39d5f 100644 --- a/docs/hypernode-platform/nginx/how-to-block-your-webshop-for-specific-countries.md +++ b/docs/hypernode-platform/nginx/how-to-block-your-webshop-for-specific-countries.md @@ -4,7 +4,7 @@ myst: description: Sometimes spam and abuse comes from specific countries. You could block these countries, if needed. This article explains how to block them specifically. redirect_from: -- /en/hypernode/nginx/how-to-block-your-webshop-for-specific-countries/ + - /en/hypernode/nginx/how-to-block-your-webshop-for-specific-countries/ --- diff --git a/docs/hypernode-platform/nginx/how-to-configure-nginx-for-a-multistore.md b/docs/hypernode-platform/nginx/how-to-configure-nginx-for-a-multistore.md index 845ecaaf..af1c3f02 100644 --- a/docs/hypernode-platform/nginx/how-to-configure-nginx-for-a-multistore.md +++ b/docs/hypernode-platform/nginx/how-to-configure-nginx-for-a-multistore.md @@ -4,7 +4,7 @@ myst: description: Using domains or subdirectories for storefronts can be done by configuring your Magento shop. Read about how to configure the store codes in Nginx here. redirect_from: -- /en/hypernode/nginx/how-to-configure-nginx-for-a-multistore/ + - /en/hypernode/nginx/how-to-configure-nginx-for-a-multistore/ --- diff --git a/docs/hypernode-platform/nginx/how-to-configure-your-shop-to-only-use-https.md b/docs/hypernode-platform/nginx/how-to-configure-your-shop-to-only-use-https.md index 38365d62..b38de45d 100644 --- a/docs/hypernode-platform/nginx/how-to-configure-your-shop-to-only-use-https.md +++ b/docs/hypernode-platform/nginx/how-to-configure-your-shop-to-only-use-https.md @@ -5,7 +5,7 @@ myst: more safety and a better search index optimization. Read how to do so in this article. redirect_from: -- /en/hypernode/nginx/how-to-configure-your-shop-to-only-use-https/ + - /en/hypernode/nginx/how-to-configure-your-shop-to-only-use-https/ --- diff --git a/docs/hypernode-platform/nginx/how-to-create-a-reusable-config-to-include-in-custom-snippets.md b/docs/hypernode-platform/nginx/how-to-create-a-reusable-config-to-include-in-custom-snippets.md index bfc49c77..892d3c6e 100644 --- a/docs/hypernode-platform/nginx/how-to-create-a-reusable-config-to-include-in-custom-snippets.md +++ b/docs/hypernode-platform/nginx/how-to-create-a-reusable-config-to-include-in-custom-snippets.md @@ -5,7 +5,7 @@ myst: for multiple locations. In this article we explain the different options for you. ' redirect_from: -- /en/hypernode/nginx/how-to-create-a-reusable-config-to-include-in-custom-snippets/ + - /en/hypernode/nginx/how-to-create-a-reusable-config-to-include-in-custom-snippets/ --- diff --git a/docs/hypernode-platform/nginx/how-to-deny-access-to-locations-and-directories.md b/docs/hypernode-platform/nginx/how-to-deny-access-to-locations-and-directories.md index 47997ebf..e7074d46 100644 --- a/docs/hypernode-platform/nginx/how-to-deny-access-to-locations-and-directories.md +++ b/docs/hypernode-platform/nginx/how-to-deny-access-to-locations-and-directories.md @@ -4,7 +4,7 @@ myst: description: In this article we explain how to protect a directory from being accessed through the web, create a location and deny access to it. redirect_from: -- /en/hypernode/nginx/how-to-deny-access-to-locations-and-directories/ + - /en/hypernode/nginx/how-to-deny-access-to-locations-and-directories/ --- diff --git a/docs/hypernode-platform/nginx/how-to-find-the-the-top-10-visitors-by-parsing-the-nginx-access-logs.md b/docs/hypernode-platform/nginx/how-to-find-the-the-top-10-visitors-by-parsing-the-nginx-access-logs.md index c2625f82..4dc44027 100644 --- a/docs/hypernode-platform/nginx/how-to-find-the-the-top-10-visitors-by-parsing-the-nginx-access-logs.md +++ b/docs/hypernode-platform/nginx/how-to-find-the-the-top-10-visitors-by-parsing-the-nginx-access-logs.md @@ -4,7 +4,7 @@ myst: description: 'Having statistics on the top 10 visitors could be very usefull. Read here how you can easily use the Nginx access logging to find out. ' redirect_from: -- /en/hypernode/nginx/how-to-find-the-the-top-10-visitors-by-parsing-the-nginx-access-logs/ + - /en/hypernode/nginx/how-to-find-the-the-top-10-visitors-by-parsing-the-nginx-access-logs/ --- diff --git a/docs/hypernode-platform/nginx/how-to-protect-your-magento-store-with-a-password-in-nginx.md b/docs/hypernode-platform/nginx/how-to-protect-your-magento-store-with-a-password-in-nginx.md index f310ce8e..a0619fb2 100644 --- a/docs/hypernode-platform/nginx/how-to-protect-your-magento-store-with-a-password-in-nginx.md +++ b/docs/hypernode-platform/nginx/how-to-protect-your-magento-store-with-a-password-in-nginx.md @@ -4,7 +4,7 @@ myst: description: 'To protect your Magento shop, you can use a password in Nginx. Read about restricing access to a directory, specific domain or more in this article. ' redirect_from: -- /en/hypernode/nginx/how-to-protect-your-magento-store-with-a-password-in-nginx/ + - /en/hypernode/nginx/how-to-protect-your-magento-store-with-a-password-in-nginx/ --- diff --git a/docs/hypernode-platform/nginx/how-to-redirect-from-or-to-www.md b/docs/hypernode-platform/nginx/how-to-redirect-from-or-to-www.md index 49332f34..2d07ac0f 100644 --- a/docs/hypernode-platform/nginx/how-to-redirect-from-or-to-www.md +++ b/docs/hypernode-platform/nginx/how-to-redirect-from-or-to-www.md @@ -5,7 +5,7 @@ myst: without. Many constructions are possible. Check out how to redirect from or to WWW here. redirect_from: -- /en/hypernode/nginx/how-to-redirect-from-or-to-www/ + - /en/hypernode/nginx/how-to-redirect-from-or-to-www/ --- diff --git a/docs/hypernode-platform/nginx/how-to-resolve-rate-limited-requests-429-too-many-requests.md b/docs/hypernode-platform/nginx/how-to-resolve-rate-limited-requests-429-too-many-requests.md index 433bba1c..af5bca25 100644 --- a/docs/hypernode-platform/nginx/how-to-resolve-rate-limited-requests-429-too-many-requests.md +++ b/docs/hypernode-platform/nginx/how-to-resolve-rate-limited-requests-429-too-many-requests.md @@ -4,7 +4,7 @@ myst: description: This article explains the differences between rate limiting methods and show you how to find which one applies and if needed, how to override them. redirect_from: -- /en/hypernode/nginx/how-to-resolve-rate-limited-requests-429-too-many-requests/ + - /en/hypernode/nginx/how-to-resolve-rate-limited-requests-429-too-many-requests/ --- diff --git a/docs/hypernode-platform/nginx/how-to-restrict-access-to-your-admin-area.md b/docs/hypernode-platform/nginx/how-to-restrict-access-to-your-admin-area.md index faffd42a..4a1bb553 100644 --- a/docs/hypernode-platform/nginx/how-to-restrict-access-to-your-admin-area.md +++ b/docs/hypernode-platform/nginx/how-to-restrict-access-to-your-admin-area.md @@ -5,7 +5,7 @@ myst: keep hackers from having access to all your data. In this article we explain how to do so. redirect_from: -- /en/hypernode/nginx/how-to-restrict-access-to-your-admin-area/ + - /en/hypernode/nginx/how-to-restrict-access-to-your-admin-area/ --- diff --git a/docs/hypernode-platform/nginx/how-to-rewrite-a-trailing-slash-for-seo-purposes.md b/docs/hypernode-platform/nginx/how-to-rewrite-a-trailing-slash-for-seo-purposes.md index 07a10c61..70274390 100644 --- a/docs/hypernode-platform/nginx/how-to-rewrite-a-trailing-slash-for-seo-purposes.md +++ b/docs/hypernode-platform/nginx/how-to-rewrite-a-trailing-slash-for-seo-purposes.md @@ -4,7 +4,7 @@ myst: description: Rewriting trailing slash for a better result in search engines requires some Nginx configuration. In this article we explain how to rewrite them. redirect_from: -- /en/hypernode/nginx/how-to-rewrite-a-trailing-slash-for-seo-purposes/ + - /en/hypernode/nginx/how-to-rewrite-a-trailing-slash-for-seo-purposes/ --- diff --git a/docs/hypernode-platform/nginx/how-to-set-the-server-name-in-nginx.md b/docs/hypernode-platform/nginx/how-to-set-the-server-name-in-nginx.md index 955234d0..404c3d64 100644 --- a/docs/hypernode-platform/nginx/how-to-set-the-server-name-in-nginx.md +++ b/docs/hypernode-platform/nginx/how-to-set-the-server-name-in-nginx.md @@ -4,7 +4,7 @@ myst: description: Hypernode makes use of Nginx for better performance and to allow more visitors. This article explains how to set the server name in Nginx. redirect_from: -- /en/hypernode/nginx/how-to-set-the-server-name-in-nginx/ + - /en/hypernode/nginx/how-to-set-the-server-name-in-nginx/ --- diff --git a/docs/hypernode-platform/nginx/how-to-speed-up-your-magento-shop-by-tuning-gzip-compression.md b/docs/hypernode-platform/nginx/how-to-speed-up-your-magento-shop-by-tuning-gzip-compression.md index f22a2c9b..757c4c91 100644 --- a/docs/hypernode-platform/nginx/how-to-speed-up-your-magento-shop-by-tuning-gzip-compression.md +++ b/docs/hypernode-platform/nginx/how-to-speed-up-your-magento-shop-by-tuning-gzip-compression.md @@ -5,7 +5,7 @@ myst: responses larger than 1000 bytes. For experts however, it is possible to make your own adjustments to tune GZIP Compression. redirect_from: -- /en/hypernode/nginx/how-to-speed-up-your-magento-shop-by-tuning-gzip-compression/ + - /en/hypernode/nginx/how-to-speed-up-your-magento-shop-by-tuning-gzip-compression/ --- diff --git a/docs/hypernode-platform/nginx/how-to-unblock-requests-to-sql-and-archive-files-on-your-hypernode.md b/docs/hypernode-platform/nginx/how-to-unblock-requests-to-sql-and-archive-files-on-your-hypernode.md index 92932609..c0342074 100644 --- a/docs/hypernode-platform/nginx/how-to-unblock-requests-to-sql-and-archive-files-on-your-hypernode.md +++ b/docs/hypernode-platform/nginx/how-to-unblock-requests-to-sql-and-archive-files-on-your-hypernode.md @@ -4,7 +4,7 @@ myst: description: By default .sql files and archive files are blocked on Hypernode. This article explains how you can unblock those files and make them downloadable redirect_from: -- /en/hypernode/nginx/how-to-unblock-requests-to-sql-and-archive-files/ + - /en/hypernode/nginx/how-to-unblock-requests-to-sql-and-archive-files/ --- diff --git a/docs/hypernode-platform/nginx/how-to-use-nginx.md b/docs/hypernode-platform/nginx/how-to-use-nginx.md index beec4196..c6340788 100644 --- a/docs/hypernode-platform/nginx/how-to-use-nginx.md +++ b/docs/hypernode-platform/nginx/how-to-use-nginx.md @@ -4,7 +4,7 @@ myst: description: 'Using Nginx instead of Apache increases performance and allows more visitors. Read here how to use Nginx on Hypernode. ' redirect_from: -- /en/hypernode/nginx/how-to-use-nginx/ + - /en/hypernode/nginx/how-to-use-nginx/ --- diff --git a/docs/hypernode-platform/nginx/hypernode-managed-vhosts.md b/docs/hypernode-platform/nginx/hypernode-managed-vhosts.md index 01fe1dcc..eeab91c2 100644 --- a/docs/hypernode-platform/nginx/hypernode-managed-vhosts.md +++ b/docs/hypernode-platform/nginx/hypernode-managed-vhosts.md @@ -5,7 +5,7 @@ myst: to setup multiple domainnames with an own independant configuration. Reall all about it here. redirect_from: -- /en/hypernode/nginx/hypernode-managed-vhosts/ + - /en/hypernode/nginx/hypernode-managed-vhosts/ --- diff --git a/docs/hypernode-platform/php/how-to-flush-the-php-opcache.md b/docs/hypernode-platform/php/how-to-flush-the-php-opcache.md index 40f9ce40..c341a1be 100644 --- a/docs/hypernode-platform/php/how-to-flush-the-php-opcache.md +++ b/docs/hypernode-platform/php/how-to-flush-the-php-opcache.md @@ -5,7 +5,7 @@ myst: need to be able to flush the OPcache from the command line. Read here how to do so. ' redirect_from: -- /en/hypernode/php/how-to-flush-the-php-opcache/ + - /en/hypernode/php/how-to-flush-the-php-opcache/ --- diff --git a/docs/hypernode-platform/php/how-to-override-php-settings.md b/docs/hypernode-platform/php/how-to-override-php-settings.md index 66d7ee33..32060f8a 100644 --- a/docs/hypernode-platform/php/how-to-override-php-settings.md +++ b/docs/hypernode-platform/php/how-to-override-php-settings.md @@ -5,7 +5,7 @@ myst: are required. 'Max_execution_time' for example. Here's how to override default PHP settings. redirect_from: -- /en/hypernode/php/how-to-override-php-settings/ + - /en/hypernode/php/how-to-override-php-settings/ --- diff --git a/docs/hypernode-platform/php/how-to-resolve-502-gateway-errors.md b/docs/hypernode-platform/php/how-to-resolve-502-gateway-errors.md index c9faacc8..61172dec 100644 --- a/docs/hypernode-platform/php/how-to-resolve-502-gateway-errors.md +++ b/docs/hypernode-platform/php/how-to-resolve-502-gateway-errors.md @@ -5,7 +5,7 @@ myst: within PHP, which resulted in the site not being rendered. Check out how to solve it here. redirect_from: -- /en/hypernode/php/how-to-resolve-502-gateway-errors/ + - /en/hypernode/php/how-to-resolve-502-gateway-errors/ --- diff --git a/docs/hypernode-platform/php/supported-php-versions-and-how-to-change-them-on-hypernode.md b/docs/hypernode-platform/php/supported-php-versions-and-how-to-change-them-on-hypernode.md index db107378..281afb36 100644 --- a/docs/hypernode-platform/php/supported-php-versions-and-how-to-change-them-on-hypernode.md +++ b/docs/hypernode-platform/php/supported-php-versions-and-how-to-change-them-on-hypernode.md @@ -4,7 +4,7 @@ myst: description: 'On Hypernode you can choose from a range of PHP versions. Check out which ones and how to change them here. ' redirect_from: -- /en/hypernode/php/supported-php-versions-and-how-to-change-them-on-hypernode/ + - /en/hypernode/php/supported-php-versions-and-how-to-change-them-on-hypernode/ --- diff --git a/docs/hypernode-platform/php/what-limits-apply-to-active-php-requests-per-ip.md b/docs/hypernode-platform/php/what-limits-apply-to-active-php-requests-per-ip.md index 55922001..6e427253 100644 --- a/docs/hypernode-platform/php/what-limits-apply-to-active-php-requests-per-ip.md +++ b/docs/hypernode-platform/php/what-limits-apply-to-active-php-requests-per-ip.md @@ -5,7 +5,7 @@ myst: pages causing a few limitations to PHP requests per IP. Read all about the details here. redirect_from: -- /en/support/solutions/articles/48000967652-what-limits-apply-to-active-php-requests-per-ip/ + - /en/support/solutions/articles/48000967652-what-limits-apply-to-active-php-requests-per-ip/ --- diff --git a/docs/hypernode-platform/ssh/how-to-log-in-to-the-hypernode-with-ssh.md b/docs/hypernode-platform/ssh/how-to-log-in-to-the-hypernode-with-ssh.md index 1db215f6..162f49d6 100644 --- a/docs/hypernode-platform/ssh/how-to-log-in-to-the-hypernode-with-ssh.md +++ b/docs/hypernode-platform/ssh/how-to-log-in-to-the-hypernode-with-ssh.md @@ -4,7 +4,7 @@ myst: description: 'To access a new Hypernode, you need to use an SSH client. This tutorial shows how to log in to the Hypernode with PuTTY or Terminal using SSH. ' redirect_from: -- /en/hypernode/ssh/how-to-log-in-to-the-hypernode-with-ssh/ + - /en/hypernode/ssh/how-to-log-in-to-the-hypernode-with-ssh/ --- diff --git a/docs/hypernode-platform/ssh/how-to-use-ssh-keys-on-hypernode.md b/docs/hypernode-platform/ssh/how-to-use-ssh-keys-on-hypernode.md index 10d664ef..5c659518 100644 --- a/docs/hypernode-platform/ssh/how-to-use-ssh-keys-on-hypernode.md +++ b/docs/hypernode-platform/ssh/how-to-use-ssh-keys-on-hypernode.md @@ -4,7 +4,7 @@ myst: description: This tutorial shows how to create a keypair and use PuTTY (for Windows users) or Terminal (Linux and Mac OSX) to log in to your Hypernode. redirect_from: -- /en/hypernode/ssh/how-to-use-ssh-keys-on-hypernode/ + - /en/hypernode/ssh/how-to-use-ssh-keys-on-hypernode/ --- diff --git a/docs/hypernode-platform/ssl/how-to-upgrade-your-ssl-settings-to-an-a.md b/docs/hypernode-platform/ssl/how-to-upgrade-your-ssl-settings-to-an-a.md index 26821ce9..5e344742 100644 --- a/docs/hypernode-platform/ssl/how-to-upgrade-your-ssl-settings-to-an-a.md +++ b/docs/hypernode-platform/ssl/how-to-upgrade-your-ssl-settings-to-an-a.md @@ -4,7 +4,7 @@ myst: description: Many developers validate their SSL setting on Hypernode with Qualys SSL labs. This article explains how to get an A+ rating for your SSL configuration. redirect_from: -- /en/hypernode/ssl/how-to-upgrade-your-ssl-settings-to-an-a-plus/ + - /en/hypernode/ssl/how-to-upgrade-your-ssl-settings-to-an-a-plus/ --- diff --git a/docs/hypernode-platform/ssl/how-to-use-lets-encrypt-on-hypernode.md b/docs/hypernode-platform/ssl/how-to-use-lets-encrypt-on-hypernode.md index e4badd9a..bc21160e 100644 --- a/docs/hypernode-platform/ssl/how-to-use-lets-encrypt-on-hypernode.md +++ b/docs/hypernode-platform/ssl/how-to-use-lets-encrypt-on-hypernode.md @@ -5,7 +5,7 @@ myst: through domain validation and automated retrieval. Find here how to use it on Hypernode. redirect_from: -- /en/hypernode/ssl/how-to-use-let-s-encrypt-on-hypernode/ + - /en/hypernode/ssl/how-to-use-let-s-encrypt-on-hypernode/ --- diff --git a/docs/hypernode-platform/ssl/how-to-use-ssl-certificates-on-your-hypernode-when-ordered-via-hypernode-com.md b/docs/hypernode-platform/ssl/how-to-use-ssl-certificates-on-your-hypernode-when-ordered-via-hypernode-com.md index c18d79e8..adf38bbd 100644 --- a/docs/hypernode-platform/ssl/how-to-use-ssl-certificates-on-your-hypernode-when-ordered-via-hypernode-com.md +++ b/docs/hypernode-platform/ssl/how-to-use-ssl-certificates-on-your-hypernode-when-ordered-via-hypernode-com.md @@ -4,7 +4,7 @@ myst: description: 'This article explains how to install SSL certificates on your Hypernode when you have order them via hypernode.com. ' redirect_from: -- /en/hypernode/ssl/how-to-use-ssl-certificates-on-your-hypernode-when-ordered-via-hypernode-com/ + - /en/hypernode/ssl/how-to-use-ssl-certificates-on-your-hypernode-when-ordered-via-hypernode-com/ --- diff --git a/docs/hypernode-platform/ssl/how-to-use-ssl-certificates-on-your-hypernode-when-ordered-via-hypernode-nl.md b/docs/hypernode-platform/ssl/how-to-use-ssl-certificates-on-your-hypernode-when-ordered-via-hypernode-nl.md index 1d825b24..5fe19d43 100644 --- a/docs/hypernode-platform/ssl/how-to-use-ssl-certificates-on-your-hypernode-when-ordered-via-hypernode-nl.md +++ b/docs/hypernode-platform/ssl/how-to-use-ssl-certificates-on-your-hypernode-when-ordered-via-hypernode-nl.md @@ -5,7 +5,7 @@ myst: and helps to gain confidence of customers. Read here how to use SSL ordered via Byte.nl. redirect_from: -- /en/hypernode/ssl/how-to-use-ssl-certificates-on-your-hypernode-when-ordered-via-byte-nl/ + - /en/hypernode/ssl/how-to-use-ssl-certificates-on-your-hypernode-when-ordered-via-byte-nl/ --- diff --git a/docs/hypernode-platform/ssl/how-to-validate-your-ssl-certificate-and-more-frequently-asked-questions-about-ssl.md b/docs/hypernode-platform/ssl/how-to-validate-your-ssl-certificate-and-more-frequently-asked-questions-about-ssl.md index 4e8be4a7..d1fe0a04 100644 --- a/docs/hypernode-platform/ssl/how-to-validate-your-ssl-certificate-and-more-frequently-asked-questions-about-ssl.md +++ b/docs/hypernode-platform/ssl/how-to-validate-your-ssl-certificate-and-more-frequently-asked-questions-about-ssl.md @@ -4,7 +4,7 @@ myst: description: Read here how to validate your SSL certificate and more frequently asked question about SSL. Only available in Dutch. redirect_from: -- /en/hypernode/ssl/how-to-validate-your-ssl-certificate-and-more-frequently-asked-questions-about-ssl/ + - /en/hypernode/ssl/how-to-validate-your-ssl-certificate-and-more-frequently-asked-questions-about-ssl/ --- diff --git a/docs/hypernode-platform/tools/how-to-configure-automatic-logfile-rotation-on-hypernode.md b/docs/hypernode-platform/tools/how-to-configure-automatic-logfile-rotation-on-hypernode.md index 1ff51156..4dc80586 100644 --- a/docs/hypernode-platform/tools/how-to-configure-automatic-logfile-rotation-on-hypernode.md +++ b/docs/hypernode-platform/tools/how-to-configure-automatic-logfile-rotation-on-hypernode.md @@ -1,6 +1,6 @@ --- redirect_from: -- /en/support/solutions/articles/48001185227-how-to-configure-automatic-logfile-rotation-on-hypernode/ + - /en/support/solutions/articles/48001185227-how-to-configure-automatic-logfile-rotation-on-hypernode/ --- diff --git a/docs/hypernode-platform/tools/how-to-configure-automatic-logfile-rotation.md b/docs/hypernode-platform/tools/how-to-configure-automatic-logfile-rotation.md index f4863f5e..77d147a2 100644 --- a/docs/hypernode-platform/tools/how-to-configure-automatic-logfile-rotation.md +++ b/docs/hypernode-platform/tools/how-to-configure-automatic-logfile-rotation.md @@ -4,7 +4,7 @@ myst: description: This article explains how to use hypernode-auto-logrotate, a tool that automatically rotates log files, which helps to avoid disk space issues. redirect_from: -- /en/hypernode/tools/how-to-configure-automatic-logfile-rotation/ + - /en/hypernode/tools/how-to-configure-automatic-logfile-rotation/ --- diff --git a/docs/hypernode-platform/tools/how-to-configure-lesti-fpc.md b/docs/hypernode-platform/tools/how-to-configure-lesti-fpc.md index e8de8d67..d09e5a46 100644 --- a/docs/hypernode-platform/tools/how-to-configure-lesti-fpc.md +++ b/docs/hypernode-platform/tools/how-to-configure-lesti-fpc.md @@ -5,7 +5,7 @@ myst: as it is faster than using the default file caching mechanism. Read here how to do so redirect_from: -- /en/hypernode/tools/how-to-configure-lesti-fpc/ + - /en/hypernode/tools/how-to-configure-lesti-fpc/ --- diff --git a/docs/hypernode-platform/tools/how-to-copy-your-hypernode-to-another-hypernode.md b/docs/hypernode-platform/tools/how-to-copy-your-hypernode-to-another-hypernode.md index 265cd858..877f7f3b 100644 --- a/docs/hypernode-platform/tools/how-to-copy-your-hypernode-to-another-hypernode.md +++ b/docs/hypernode-platform/tools/how-to-copy-your-hypernode-to-another-hypernode.md @@ -1,6 +1,6 @@ --- redirect_from: -- /en/hypernode/tools/how-to-copy-your-hypernode-to-another-hypernode/ + - /en/hypernode/tools/how-to-copy-your-hypernode-to-another-hypernode/ --- diff --git a/docs/hypernode-platform/tools/how-to-deploy-your-application-using-hypernode-deploy-v1.md b/docs/hypernode-platform/tools/how-to-deploy-your-application-using-hypernode-deploy-v1.md index 73d1933f..7467827a 100644 --- a/docs/hypernode-platform/tools/how-to-deploy-your-application-using-hypernode-deploy-v1.md +++ b/docs/hypernode-platform/tools/how-to-deploy-your-application-using-hypernode-deploy-v1.md @@ -1,6 +1,6 @@ --- redirect_from: -- /en/support/solutions/articles/48001219280-how-to-deploy-your-application-using-hypernode-deploy-v1/ + - /en/support/solutions/articles/48001219280-how-to-deploy-your-application-using-hypernode-deploy-v1/ --- diff --git a/docs/hypernode-platform/tools/how-to-flush-the-redis-cache.md b/docs/hypernode-platform/tools/how-to-flush-the-redis-cache.md index d9a88e72..8ec77e25 100644 --- a/docs/hypernode-platform/tools/how-to-flush-the-redis-cache.md +++ b/docs/hypernode-platform/tools/how-to-flush-the-redis-cache.md @@ -5,7 +5,7 @@ myst: than using the file caching mechanism that is enabled by default. Read here how to do so. ' redirect_from: -- /en/hypernode/tools/how-to-flush-the-redis-cache/ + - /en/hypernode/tools/how-to-flush-the-redis-cache/ --- diff --git a/docs/hypernode-platform/tools/how-to-flush-the-varnish-cache.md b/docs/hypernode-platform/tools/how-to-flush-the-varnish-cache.md index a155dbde..95bacbe4 100644 --- a/docs/hypernode-platform/tools/how-to-flush-the-varnish-cache.md +++ b/docs/hypernode-platform/tools/how-to-flush-the-varnish-cache.md @@ -5,7 +5,7 @@ myst: panel, but if needed, you might want to be able to flush the cache from the command line. redirect_from: -- /en/support/solutions/articles/48000982378-how-to-flush-the-varnish-cache/ + - /en/support/solutions/articles/48000982378-how-to-flush-the-varnish-cache/ --- diff --git a/docs/hypernode-platform/tools/how-to-free-up-disk-space.md b/docs/hypernode-platform/tools/how-to-free-up-disk-space.md index ffbe2448..fdf27afa 100644 --- a/docs/hypernode-platform/tools/how-to-free-up-disk-space.md +++ b/docs/hypernode-platform/tools/how-to-free-up-disk-space.md @@ -4,7 +4,7 @@ myst: description: 'When your disk is full, you can try to free up disk space on your Hypernode before having to upgrade. Check out how to do so here. ' redirect_from: -- /en/hypernode/tools/how-to-free-up-disk-space/ + - /en/hypernode/tools/how-to-free-up-disk-space/ --- diff --git a/docs/hypernode-platform/tools/how-to-migrate-your-shop-to-hypernode.md b/docs/hypernode-platform/tools/how-to-migrate-your-shop-to-hypernode.md index 46d2db7c..eff12511 100644 --- a/docs/hypernode-platform/tools/how-to-migrate-your-shop-to-hypernode.md +++ b/docs/hypernode-platform/tools/how-to-migrate-your-shop-to-hypernode.md @@ -4,7 +4,7 @@ myst: description: 'Congratulations on your new Hypernode! Find out how to migrate your shop to Hypernode for testing on this page. ' redirect_from: -- /en/hypernode/tools/how-to-migrate-your-shop-to-hypernode/ + - /en/hypernode/tools/how-to-migrate-your-shop-to-hypernode/ --- diff --git a/docs/hypernode-platform/tools/how-to-solve-redis-error-oom-command-not-allowed-when-used-memory-maxmemory.md b/docs/hypernode-platform/tools/how-to-solve-redis-error-oom-command-not-allowed-when-used-memory-maxmemory.md index 348d15ad..4294e3d5 100644 --- a/docs/hypernode-platform/tools/how-to-solve-redis-error-oom-command-not-allowed-when-used-memory-maxmemory.md +++ b/docs/hypernode-platform/tools/how-to-solve-redis-error-oom-command-not-allowed-when-used-memory-maxmemory.md @@ -4,7 +4,7 @@ myst: description: 'When Magento is trying to store more data in the Redis Cache than possible, this error appears "OOM command not allowed when used memory > ‘maxmemory’". ' redirect_from: -- /en/hypernode/tools/how-to-solve-redis-error-oom-command-not-allowed-when-used-memory-maxmemory-/ + - /en/hypernode/tools/how-to-solve-redis-error-oom-command-not-allowed-when-used-memory-maxmemory-/ --- diff --git a/docs/hypernode-platform/tools/how-to-use-composer-2-on-your-hypernode.md b/docs/hypernode-platform/tools/how-to-use-composer-2-on-your-hypernode.md index bc6b68c0..8e30e7c0 100644 --- a/docs/hypernode-platform/tools/how-to-use-composer-2-on-your-hypernode.md +++ b/docs/hypernode-platform/tools/how-to-use-composer-2-on-your-hypernode.md @@ -1,6 +1,6 @@ --- redirect_from: -- /en/support/solutions/articles/48001184546-how-to-use-composer-2-on-your-hypernode/ + - /en/support/solutions/articles/48001184546-how-to-use-composer-2-on-your-hypernode/ --- diff --git a/docs/hypernode-platform/tools/how-to-use-elasticsearch-on-hypernode.md b/docs/hypernode-platform/tools/how-to-use-elasticsearch-on-hypernode.md index c695cd70..a4340d2b 100644 --- a/docs/hypernode-platform/tools/how-to-use-elasticsearch-on-hypernode.md +++ b/docs/hypernode-platform/tools/how-to-use-elasticsearch-on-hypernode.md @@ -5,7 +5,7 @@ myst: any external service or configuration. This article explains how to enable and configure it. redirect_from: -- /en/hypernode/tools/how-to-use-elasticsearch-on-hypernode/ + - /en/hypernode/tools/how-to-use-elasticsearch-on-hypernode/ --- diff --git a/docs/hypernode-platform/tools/how-to-use-hypernode-development-plans.md b/docs/hypernode-platform/tools/how-to-use-hypernode-development-plans.md index 019fd68f..5e12d9d4 100644 --- a/docs/hypernode-platform/tools/how-to-use-hypernode-development-plans.md +++ b/docs/hypernode-platform/tools/how-to-use-hypernode-development-plans.md @@ -5,7 +5,7 @@ myst: the regular Hypernode plans for development and testing. Read more about these plans here. ' redirect_from: -- /en/hypernode/tools/how-to-use-hypernode-development-plans/ + - /en/hypernode/tools/how-to-use-hypernode-development-plans/ --- diff --git a/docs/hypernode-platform/tools/how-to-use-magento-corediff-on-hypernode.md b/docs/hypernode-platform/tools/how-to-use-magento-corediff-on-hypernode.md index eedf1141..10999ff4 100644 --- a/docs/hypernode-platform/tools/how-to-use-magento-corediff-on-hypernode.md +++ b/docs/hypernode-platform/tools/how-to-use-magento-corediff-on-hypernode.md @@ -5,7 +5,7 @@ myst: a Magento 1 or 2. As it's installed on all Hypernodes this helps protect and secure your shop redirect_from: -- /en/hypernode/tools/how-to-use-magento-corediff-on-hypernode/ + - /en/hypernode/tools/how-to-use-magento-corediff-on-hypernode/ --- diff --git a/docs/hypernode-platform/tools/how-to-use-mailhog-on-hypernode.md b/docs/hypernode-platform/tools/how-to-use-mailhog-on-hypernode.md index fb587cf1..18c4936f 100644 --- a/docs/hypernode-platform/tools/how-to-use-mailhog-on-hypernode.md +++ b/docs/hypernode-platform/tools/how-to-use-mailhog-on-hypernode.md @@ -5,7 +5,7 @@ myst: mails from a webshop. MailHog is an email testing tool for it, which we explain here. redirect_from: -- /en/hypernode/tools/how-to-use-mailhog-on-hypernode/ + - /en/hypernode/tools/how-to-use-mailhog-on-hypernode/ --- diff --git a/docs/hypernode-platform/tools/how-to-use-node-js-and-npm-on-hypernode.md b/docs/hypernode-platform/tools/how-to-use-node-js-and-npm-on-hypernode.md index c3402956..28794702 100644 --- a/docs/hypernode-platform/tools/how-to-use-node-js-and-npm-on-hypernode.md +++ b/docs/hypernode-platform/tools/how-to-use-node-js-and-npm-on-hypernode.md @@ -4,7 +4,7 @@ myst: description: This article explains how you can install node.js and NPM on a Hypernode and how to use this. redirect_from: -- /en/hypernode/tools/how-to-use-node-js-and-npm-on-hypernode/ + - /en/hypernode/tools/how-to-use-node-js-and-npm-on-hypernode/ --- diff --git a/docs/hypernode-platform/tools/how-to-use-periodic-tasks-cronjobs-on-hypernode.md b/docs/hypernode-platform/tools/how-to-use-periodic-tasks-cronjobs-on-hypernode.md index 98351611..aead84ed 100644 --- a/docs/hypernode-platform/tools/how-to-use-periodic-tasks-cronjobs-on-hypernode.md +++ b/docs/hypernode-platform/tools/how-to-use-periodic-tasks-cronjobs-on-hypernode.md @@ -5,7 +5,7 @@ myst: for maintenance, such as cleaning up logs or importing products. Here's how to use them. redirect_from: -- /en/hypernode/tools/how-to-use-periodic-tasks-cronjobs-on-hypernode/ + - /en/hypernode/tools/how-to-use-periodic-tasks-cronjobs-on-hypernode/ --- diff --git a/docs/hypernode-platform/tools/how-to-use-supervisor.md b/docs/hypernode-platform/tools/how-to-use-supervisor.md index b3e9a775..d0532223 100644 --- a/docs/hypernode-platform/tools/how-to-use-supervisor.md +++ b/docs/hypernode-platform/tools/how-to-use-supervisor.md @@ -5,7 +5,7 @@ myst: time on your Hypernode. Supervisor watches your programs and restarts them if they might fail. ' redirect_from: -- /en/hypernode/tools/how-to-use-supervisor/ + - /en/hypernode/tools/how-to-use-supervisor/ --- diff --git a/docs/hypernode-platform/tools/how-to-use-the-hypernode-systemctl-cli-tool.md b/docs/hypernode-platform/tools/how-to-use-the-hypernode-systemctl-cli-tool.md index bb35bcf8..c15badad 100644 --- a/docs/hypernode-platform/tools/how-to-use-the-hypernode-systemctl-cli-tool.md +++ b/docs/hypernode-platform/tools/how-to-use-the-hypernode-systemctl-cli-tool.md @@ -5,7 +5,7 @@ myst: via the command line interface. It makes Magento development and maintenance easier. redirect_from: -- /en/hypernode/tools/how-to-use-the-hypernode-systemctl-cli-tool/ + - /en/hypernode/tools/how-to-use-the-hypernode-systemctl-cli-tool/ --- diff --git a/docs/hypernode-platform/tools/hypernode-brancher.md b/docs/hypernode-platform/tools/hypernode-brancher.md index 0454bc53..691b6a7c 100644 --- a/docs/hypernode-platform/tools/hypernode-brancher.md +++ b/docs/hypernode-platform/tools/hypernode-brancher.md @@ -1,6 +1,6 @@ --- redirect_from: -- /en/support/solutions/articles/48001227297-hypernode-brancher/ + - /en/support/solutions/articles/48001227297-hypernode-brancher/ --- diff --git a/docs/hypernode-platform/tools/hypernode-cli-tools-and-magerun-plugins.md b/docs/hypernode-platform/tools/hypernode-cli-tools-and-magerun-plugins.md index 208f4498..b0922252 100644 --- a/docs/hypernode-platform/tools/hypernode-cli-tools-and-magerun-plugins.md +++ b/docs/hypernode-platform/tools/hypernode-cli-tools-and-magerun-plugins.md @@ -4,7 +4,7 @@ myst: description: This page offers an overview of all tools available on Hypernodes and hypernode-vagrant to Hypernode users to make your life as a developer easier. redirect_from: -- /en/hypernode/tools/hypernode-cli-tools-and-magerun-plugins/ + - /en/hypernode/tools/hypernode-cli-tools-and-magerun-plugins/ --- diff --git a/docs/hypernode-platform/tools/installation-and-configuration-of-pm2.md b/docs/hypernode-platform/tools/installation-and-configuration-of-pm2.md index 1e350014..ffa82a9e 100644 --- a/docs/hypernode-platform/tools/installation-and-configuration-of-pm2.md +++ b/docs/hypernode-platform/tools/installation-and-configuration-of-pm2.md @@ -1,6 +1,6 @@ --- redirect_from: -- /en/support/solutions/articles/48001208544-installation-and-configuration-of-pm2/ + - /en/support/solutions/articles/48001208544-installation-and-configuration-of-pm2/ --- diff --git a/docs/hypernode-platform/tools/unblocking-and-accessing-magmi-for-hypernode.md b/docs/hypernode-platform/tools/unblocking-and-accessing-magmi-for-hypernode.md index c0aa616d..5797a316 100644 --- a/docs/hypernode-platform/tools/unblocking-and-accessing-magmi-for-hypernode.md +++ b/docs/hypernode-platform/tools/unblocking-and-accessing-magmi-for-hypernode.md @@ -5,7 +5,7 @@ myst: offering better performance than the default. Here's how to unblock and access it. redirect_from: -- /en/hypernode/tools/unblocking-and-accessing-magmi-for-hypernode/ + - /en/hypernode/tools/unblocking-and-accessing-magmi-for-hypernode/ --- diff --git a/docs/hypernode-platform/varnish/how-to-enable-varnish-on-hypernode.md b/docs/hypernode-platform/varnish/how-to-enable-varnish-on-hypernode.md index 8aa7dc61..fa6e116e 100644 --- a/docs/hypernode-platform/varnish/how-to-enable-varnish-on-hypernode.md +++ b/docs/hypernode-platform/varnish/how-to-enable-varnish-on-hypernode.md @@ -1,6 +1,6 @@ --- redirect_from: -- /en/hypernode/varnish/how-to-enable-varnish-on-hypernode/ + - /en/hypernode/varnish/how-to-enable-varnish-on-hypernode/ --- diff --git a/docs/services/control-panel/different-control-panel-scenarios.md b/docs/services/control-panel/different-control-panel-scenarios.md index af391dcf..7e228497 100644 --- a/docs/services/control-panel/different-control-panel-scenarios.md +++ b/docs/services/control-panel/different-control-panel-scenarios.md @@ -4,7 +4,7 @@ myst: description: "For security and usability, the Hypernode Control Panel's features\ \ are available to users based on the role assigned to the individual user. " redirect_from: -- /en/services/control-panel/different-control-panel-scenarios/ + - /en/services/control-panel/different-control-panel-scenarios/ --- diff --git a/docs/services/control-panel/edit-personal-settings.md b/docs/services/control-panel/edit-personal-settings.md index b0af2482..5dc756b1 100644 --- a/docs/services/control-panel/edit-personal-settings.md +++ b/docs/services/control-panel/edit-personal-settings.md @@ -4,7 +4,7 @@ myst: description: 'You can modify your personal settings from the Hypernode control panel. In this article, we explain you how to edit them. ' redirect_from: -- /en/services/control-panel/edit-personal-settings/ + - /en/services/control-panel/edit-personal-settings/ --- diff --git a/docs/services/control-panel/how-to-add-keys-to-the-ssh-key-manager.md b/docs/services/control-panel/how-to-add-keys-to-the-ssh-key-manager.md index 146dbdf6..f0067b03 100644 --- a/docs/services/control-panel/how-to-add-keys-to-the-ssh-key-manager.md +++ b/docs/services/control-panel/how-to-add-keys-to-the-ssh-key-manager.md @@ -4,7 +4,7 @@ myst: description: 'You can add SSH Keys to your Hypernode via the Control Panel. Find out the steps to add SSH Keys in this article. ' redirect_from: -- /en/services/control-panel/how-to-add-keys-to-the-ssh-keymanager/ + - /en/services/control-panel/how-to-add-keys-to-the-ssh-keymanager/ --- diff --git a/docs/services/control-panel/how-to-change-your-hypernode-settings.md b/docs/services/control-panel/how-to-change-your-hypernode-settings.md index ef994b07..99646c98 100644 --- a/docs/services/control-panel/how-to-change-your-hypernode-settings.md +++ b/docs/services/control-panel/how-to-change-your-hypernode-settings.md @@ -4,7 +4,7 @@ myst: description: The Control Panel offers an overview of your Hypernode’s statistics and settings. This article offers an in-depth explanation of these values. redirect_from: -- /en/support/solutions/articles/48001155575-how-to-change-your-hypernode-settings/ + - /en/support/solutions/articles/48001155575-how-to-change-your-hypernode-settings/ --- diff --git a/docs/services/control-panel/how-to-change-your-plan-via-the-cli.md b/docs/services/control-panel/how-to-change-your-plan-via-the-cli.md index 24c3b79a..0dae286d 100644 --- a/docs/services/control-panel/how-to-change-your-plan-via-the-cli.md +++ b/docs/services/control-panel/how-to-change-your-plan-via-the-cli.md @@ -1,6 +1,6 @@ --- redirect_from: -- /en/services/control-panel/how-to-change-your-plan-via-the-cli/ + - /en/services/control-panel/how-to-change-your-plan-via-the-cli/ --- diff --git a/docs/services/control-panel/how-to-link-your-domain-to-your-hypernode.md b/docs/services/control-panel/how-to-link-your-domain-to-your-hypernode.md index e8afd731..35bc85d1 100644 --- a/docs/services/control-panel/how-to-link-your-domain-to-your-hypernode.md +++ b/docs/services/control-panel/how-to-link-your-domain-to-your-hypernode.md @@ -4,7 +4,7 @@ myst: description: 'In this article, you find detailed guidelines on how to link your domain to your Hypernode. ' redirect_from: -- /en/best-practices/usage/how-to-link-your-domain-to-your-hypernode/ + - /en/best-practices/usage/how-to-link-your-domain-to-your-hypernode/ --- diff --git a/docs/services/control-panel/how-to-order-a-hypernode-and-transfer-ownership-to-a-customer.md b/docs/services/control-panel/how-to-order-a-hypernode-and-transfer-ownership-to-a-customer.md index b47a17fe..41d819ba 100644 --- a/docs/services/control-panel/how-to-order-a-hypernode-and-transfer-ownership-to-a-customer.md +++ b/docs/services/control-panel/how-to-order-a-hypernode-and-transfer-ownership-to-a-customer.md @@ -5,7 +5,7 @@ myst: customer. This means a different account will be charged for the subscription. The steps are:' redirect_from: -- /en/services/control-panel/how-to-order-a-hypernode-and-transfer-ownership-to-a-customer/ + - /en/services/control-panel/how-to-order-a-hypernode-and-transfer-ownership-to-a-customer/ --- diff --git a/docs/services/control-panel/how-to-schedule-an-up-or-downgrade.md b/docs/services/control-panel/how-to-schedule-an-up-or-downgrade.md index 017b11e9..572f514a 100644 --- a/docs/services/control-panel/how-to-schedule-an-up-or-downgrade.md +++ b/docs/services/control-panel/how-to-schedule-an-up-or-downgrade.md @@ -1,6 +1,6 @@ --- redirect_from: -- /en/services/control-panel/how-to-schedule-an-up-or-downgrade/ + - /en/services/control-panel/how-to-schedule-an-up-or-downgrade/ --- diff --git a/docs/services/control-panel/how-to-transfer-ownership-of-a-hypernode-in-the-control-panel.md b/docs/services/control-panel/how-to-transfer-ownership-of-a-hypernode-in-the-control-panel.md index a168f6e7..fcff2940 100644 --- a/docs/services/control-panel/how-to-transfer-ownership-of-a-hypernode-in-the-control-panel.md +++ b/docs/services/control-panel/how-to-transfer-ownership-of-a-hypernode-in-the-control-panel.md @@ -4,7 +4,7 @@ myst: description: 'On Hypernode you can transfer ownership. This means a different account will be charged for the subscription. Read here how to do this. ' redirect_from: -- /en/services/control-panel/transfer-ownership/ + - /en/services/control-panel/transfer-ownership/ --- diff --git a/docs/services/control-panel/how-to-use-2fa-on-the-control-panel.md b/docs/services/control-panel/how-to-use-2fa-on-the-control-panel.md index da08ca05..4561e433 100644 --- a/docs/services/control-panel/how-to-use-2fa-on-the-control-panel.md +++ b/docs/services/control-panel/how-to-use-2fa-on-the-control-panel.md @@ -1,6 +1,6 @@ --- redirect_from: -- /en/services/control-panel/how-to-use-2fa-on-the-control-panel/ + - /en/services/control-panel/how-to-use-2fa-on-the-control-panel/ --- diff --git a/docs/services/control-panel/how-to-use-teams.md b/docs/services/control-panel/how-to-use-teams.md index d404d2b8..c3444159 100644 --- a/docs/services/control-panel/how-to-use-teams.md +++ b/docs/services/control-panel/how-to-use-teams.md @@ -4,7 +4,7 @@ myst: description: 'In this article, we explain how to manage teams on the Hypernode control panel. You can invite developers, merchants or an agency. ' redirect_from: -- /en/services/control-panel/how-to-use-teams/ + - /en/services/control-panel/how-to-use-teams/ --- diff --git a/docs/services/control-panel/how-to-use-the-dns-check.md b/docs/services/control-panel/how-to-use-the-dns-check.md index 0dc34c70..e18a2007 100644 --- a/docs/services/control-panel/how-to-use-the-dns-check.md +++ b/docs/services/control-panel/how-to-use-the-dns-check.md @@ -4,7 +4,7 @@ myst: description: 'Use the DNS check in the Control Panel to ensure your externally hosted domain is properly configured to send email via Hypernode. ' redirect_from: -- /en/services/control-panel/how-to-use-the-dns-check/ + - /en/services/control-panel/how-to-use-the-dns-check/ --- diff --git a/docs/services/control-panel/user-roles-and-permissions-on-hypernodes-control-panel.md b/docs/services/control-panel/user-roles-and-permissions-on-hypernodes-control-panel.md index 51e16e60..addb70f6 100644 --- a/docs/services/control-panel/user-roles-and-permissions-on-hypernodes-control-panel.md +++ b/docs/services/control-panel/user-roles-and-permissions-on-hypernodes-control-panel.md @@ -5,7 +5,7 @@ myst: are available to users based on the role assigned to the individual user. Read more here. redirect_from: -- /en/services/control-panel/user-roles-and-permissions-on-hypernodes-control-panel/ + - /en/services/control-panel/user-roles-and-permissions-on-hypernodes-control-panel/ --- diff --git a/docs/services/control-panel/using-logs-in-the-control-panel.md b/docs/services/control-panel/using-logs-in-the-control-panel.md index ecea23d8..f20b294e 100644 --- a/docs/services/control-panel/using-logs-in-the-control-panel.md +++ b/docs/services/control-panel/using-logs-in-the-control-panel.md @@ -4,7 +4,7 @@ myst: description: This article explains how to use the logs in the Control Panel to get a better understanding of actions you or others have performed. redirect_from: -- /en/services/control-panel/using-logs-in-the-control-panel/ + - /en/services/control-panel/using-logs-in-the-control-panel/ --- diff --git a/docs/services/domain-procedures/everything-about-presence-plans-and-domains.md b/docs/services/domain-procedures/everything-about-presence-plans-and-domains.md index 7be524d8..dffccf2b 100644 --- a/docs/services/domain-procedures/everything-about-presence-plans-and-domains.md +++ b/docs/services/domain-procedures/everything-about-presence-plans-and-domains.md @@ -5,7 +5,7 @@ myst: your domain to a website. Read how you can use a Presence plan at Hypernode here redirect_from: -- /en/services/domains/everything-about-presence-plans-and-domains/ + - /en/services/domains/everything-about-presence-plans-and-domains/ --- diff --git a/docs/services/domain-procedures/extension-specific-info-per-domain.md b/docs/services/domain-procedures/extension-specific-info-per-domain.md index 2f83ad64..fc25f268 100644 --- a/docs/services/domain-procedures/extension-specific-info-per-domain.md +++ b/docs/services/domain-procedures/extension-specific-info-per-domain.md @@ -1,6 +1,6 @@ --- redirect_from: -- /en/services/domains/extension-specific-info-per-domain/ + - /en/services/domains/extension-specific-info-per-domain/ --- diff --git a/docs/services/domain-procedures/how-to-transfer-your-domain-away-from-hypernode.md b/docs/services/domain-procedures/how-to-transfer-your-domain-away-from-hypernode.md index e1d3b5a2..aa63c56a 100644 --- a/docs/services/domain-procedures/how-to-transfer-your-domain-away-from-hypernode.md +++ b/docs/services/domain-procedures/how-to-transfer-your-domain-away-from-hypernode.md @@ -1,6 +1,6 @@ --- redirect_from: -- /en/services/domains/how-to-transfer-your-domain-away-from-hypernode/ + - /en/services/domains/how-to-transfer-your-domain-away-from-hypernode/ --- diff --git a/docs/services/domain-procedures/how-to-transfer-your-domain-name-to-another-provider-service-panel.md b/docs/services/domain-procedures/how-to-transfer-your-domain-name-to-another-provider-service-panel.md index 5b7799a3..cd4321d4 100644 --- a/docs/services/domain-procedures/how-to-transfer-your-domain-name-to-another-provider-service-panel.md +++ b/docs/services/domain-procedures/how-to-transfer-your-domain-name-to-another-provider-service-panel.md @@ -4,7 +4,7 @@ myst: description: This article explains which steps you need to take if you choose to transfer your domain from Hypernode to another provider. redirect_from: -- /en/services/domains/how-to-transfer-your-domain-name-to-another-provider/ + - /en/services/domains/how-to-transfer-your-domain-name-to-another-provider/ --- diff --git a/docs/services/domain-procedures/how-to-undo-the-cancellation-of-a-domain-name.md b/docs/services/domain-procedures/how-to-undo-the-cancellation-of-a-domain-name.md index bdc8aac5..68ad3d00 100644 --- a/docs/services/domain-procedures/how-to-undo-the-cancellation-of-a-domain-name.md +++ b/docs/services/domain-procedures/how-to-undo-the-cancellation-of-a-domain-name.md @@ -3,7 +3,7 @@ myst: html_meta: description: This article explains how to undo the cancellation of a domain name. redirect_from: -- /en/services/domains/undoing-the-cancellation-of-a-domain-name/ + - /en/services/domains/undoing-the-cancellation-of-a-domain-name/ --- diff --git a/docs/services/domain-procedures/how-to-use-domains-in-the-control-panel.md b/docs/services/domain-procedures/how-to-use-domains-in-the-control-panel.md index 17d88c48..0561c44a 100644 --- a/docs/services/domain-procedures/how-to-use-domains-in-the-control-panel.md +++ b/docs/services/domain-procedures/how-to-use-domains-in-the-control-panel.md @@ -1,6 +1,6 @@ --- redirect_from: -- /en/services/domains/how-to-use-domains-in-the-control-panel/ + - /en/services/domains/how-to-use-domains-in-the-control-panel/ --- diff --git a/docs/services/magereport/magereport-premium.md b/docs/services/magereport/magereport-premium.md index 60ca7cbd..45cd9f64 100644 --- a/docs/services/magereport/magereport-premium.md +++ b/docs/services/magereport/magereport-premium.md @@ -5,7 +5,7 @@ myst: about the performance of their Magento shop. This article explains more about MR Premium. redirect_from: -- /en/services/magereport/magereport-premium/ + - /en/services/magereport/magereport-premium/ --- diff --git a/docs/services/service-panel/different-service-panel-scenarios.md b/docs/services/service-panel/different-service-panel-scenarios.md index 2be6d61e..1f190133 100644 --- a/docs/services/service-panel/different-service-panel-scenarios.md +++ b/docs/services/service-panel/different-service-panel-scenarios.md @@ -4,7 +4,7 @@ myst: description: The Service Panel works with a central login, which enables users to easily manage multiple plans. This article explains different scenarios. redirect_from: -- /en/about/support/different-service-panel-scenarios/ + - /en/about/support/different-service-panel-scenarios/ --- diff --git a/docs/services/service-panel/how-to-change-your-customer-details-and-other-questions.md b/docs/services/service-panel/how-to-change-your-customer-details-and-other-questions.md index f4dd3383..41a5bd36 100644 --- a/docs/services/service-panel/how-to-change-your-customer-details-and-other-questions.md +++ b/docs/services/service-panel/how-to-change-your-customer-details-and-other-questions.md @@ -4,7 +4,7 @@ myst: description: 'Administrative changes can be done through the Service Panel (or via a letter) due to security reasons. Read how to change customer details here. ' redirect_from: -- /en/about/billing/how-to-change-your-customer-details-and-other-questions/ + - /en/about/billing/how-to-change-your-customer-details-and-other-questions/ --- diff --git a/docs/services/service-panel/how-to-log-into-the-service-panel.md b/docs/services/service-panel/how-to-log-into-the-service-panel.md index 4147c4a0..3a2a5c7a 100644 --- a/docs/services/service-panel/how-to-log-into-the-service-panel.md +++ b/docs/services/service-panel/how-to-log-into-the-service-panel.md @@ -4,7 +4,7 @@ myst: description: This guide will explain how you can log in to the Service Panel and what to do if you don't have access to your data anymore. redirect_from: -- /en/about/support/how-to-log-into-the-service-panel/ + - /en/about/support/how-to-log-into-the-service-panel/ --- diff --git a/docs/services/service-panel/how-to-use-2fa-on-the-service-panel.md b/docs/services/service-panel/how-to-use-2fa-on-the-service-panel.md index a46b6ba8..2fcd94a9 100644 --- a/docs/services/service-panel/how-to-use-2fa-on-the-service-panel.md +++ b/docs/services/service-panel/how-to-use-2fa-on-the-service-panel.md @@ -4,7 +4,7 @@ myst: description: In this article, we explain how to use 2FA for the Control Panel. Not available yet. redirect_from: -- /en/services/service-panel/how-to-use-2fa-for-the-service-panel/ + - /en/services/service-panel/how-to-use-2fa-for-the-service-panel/ --- diff --git a/docs/troubleshooting/performance/general-troubleshooting.md b/docs/troubleshooting/performance/general-troubleshooting.md index 32be3434..2db67888 100644 --- a/docs/troubleshooting/performance/general-troubleshooting.md +++ b/docs/troubleshooting/performance/general-troubleshooting.md @@ -5,7 +5,7 @@ myst: a suspicious or unwanted situation. Learn where to look and reach a conclusion fast. redirect_from: -- /en/troubleshooting/performance/general-troubleshooting/ + - /en/troubleshooting/performance/general-troubleshooting/ --- diff --git a/docs/troubleshooting/performance/how-to-block-bad-bots-via-the-control-panel.md b/docs/troubleshooting/performance/how-to-block-bad-bots-via-the-control-panel.md index 7ff98fc0..4a92a1e7 100644 --- a/docs/troubleshooting/performance/how-to-block-bad-bots-via-the-control-panel.md +++ b/docs/troubleshooting/performance/how-to-block-bad-bots-via-the-control-panel.md @@ -5,7 +5,7 @@ myst: your webshop. Hypernode offers you the possibility to block bad bots in your control panel. redirect_from: -- /en/services/control-panel/block-bad-bots-via-the-control-panel/ + - /en/services/control-panel/block-bad-bots-via-the-control-panel/ --- diff --git a/docs/troubleshooting/performance/how-to-block-bad-bots-via-the-service-panel.md b/docs/troubleshooting/performance/how-to-block-bad-bots-via-the-service-panel.md index 547b757a..490f208d 100644 --- a/docs/troubleshooting/performance/how-to-block-bad-bots-via-the-service-panel.md +++ b/docs/troubleshooting/performance/how-to-block-bad-bots-via-the-service-panel.md @@ -4,7 +4,7 @@ myst: description: A lot of bot traffic has a negative impact on the performance of your webshop. At Hypernode you can block unwanted bots in your Service Panel. redirect_from: -- /en/support/solutions/articles/48001163357-how-to-block-bad-bots-via-the-service-panel/ + - /en/support/solutions/articles/48001163357-how-to-block-bad-bots-via-the-service-panel/ --- diff --git a/docs/troubleshooting/performance/how-to-check-why-my-site-is-slow.md b/docs/troubleshooting/performance/how-to-check-why-my-site-is-slow.md index 31797c3f..0b86bd9f 100644 --- a/docs/troubleshooting/performance/how-to-check-why-my-site-is-slow.md +++ b/docs/troubleshooting/performance/how-to-check-why-my-site-is-slow.md @@ -5,7 +5,7 @@ myst: be and you have no idea what's going on. In this article you will find some initial checks. redirect_from: -- /en/troubleshooting/performance/how-to-check-why-my-site-is-slow/ + - /en/troubleshooting/performance/how-to-check-why-my-site-is-slow/ --- diff --git a/docs/troubleshooting/performance/how-to-debug-out-of-memory-oom-events.md b/docs/troubleshooting/performance/how-to-debug-out-of-memory-oom-events.md index c9e4ca81..8f81e33a 100644 --- a/docs/troubleshooting/performance/how-to-debug-out-of-memory-oom-events.md +++ b/docs/troubleshooting/performance/how-to-debug-out-of-memory-oom-events.md @@ -4,7 +4,7 @@ myst: description: When processes on your Hypernode require more memory than is available, there is a risk of downtime. This article explains more about the Linux oom-killer. redirect_from: -- /en/troubleshooting/performance/how-to-debug-out-of-memory-oom-events/ + - /en/troubleshooting/performance/how-to-debug-out-of-memory-oom-events/ --- diff --git a/docs/troubleshooting/performance/how-to-fix-invalid-form-key-error.md b/docs/troubleshooting/performance/how-to-fix-invalid-form-key-error.md index f35a84f5..c5b9888b 100644 --- a/docs/troubleshooting/performance/how-to-fix-invalid-form-key-error.md +++ b/docs/troubleshooting/performance/how-to-fix-invalid-form-key-error.md @@ -5,7 +5,7 @@ myst: or working in the admin, something is wrong with your setup. Read here how to fix this. redirect_from: -- /en/troubleshooting/performance/how-to-fix-invalid-form-key-error/ + - /en/troubleshooting/performance/how-to-fix-invalid-form-key-error/ --- diff --git a/docs/troubleshooting/performance/how-to-identify-and-stop-long-running-processes.md b/docs/troubleshooting/performance/how-to-identify-and-stop-long-running-processes.md index 7e8d8937..6282cb55 100644 --- a/docs/troubleshooting/performance/how-to-identify-and-stop-long-running-processes.md +++ b/docs/troubleshooting/performance/how-to-identify-and-stop-long-running-processes.md @@ -5,7 +5,7 @@ myst: \ an index (SQL), inefficient or erroneous code (PHP), or a deadlock. Here's\ \ how to identify them." redirect_from: -- /en/troubleshooting/performance/how-to-identify-and-stop-long-running-processes/ + - /en/troubleshooting/performance/how-to-identify-and-stop-long-running-processes/ --- diff --git a/docs/troubleshooting/performance/how-to-implement-pagespeed-booster.md b/docs/troubleshooting/performance/how-to-implement-pagespeed-booster.md index e4dc3099..70ef41cf 100644 --- a/docs/troubleshooting/performance/how-to-implement-pagespeed-booster.md +++ b/docs/troubleshooting/performance/how-to-implement-pagespeed-booster.md @@ -4,7 +4,7 @@ myst: description: PageSpeed Booster is a reverse proxy which uses many static optimisation techniques to greatly increase the pagespeed score and performance of your website. redirect_from: -- /en/troubleshooting/performance/how-to-implement-pagespeed-booster/ + - /en/troubleshooting/performance/how-to-implement-pagespeed-booster/ --- diff --git a/docs/troubleshooting/performance/how-to-optimise-your-magento-disk-performance.md b/docs/troubleshooting/performance/how-to-optimise-your-magento-disk-performance.md index 21c606d1..a151c195 100644 --- a/docs/troubleshooting/performance/how-to-optimise-your-magento-disk-performance.md +++ b/docs/troubleshooting/performance/how-to-optimise-your-magento-disk-performance.md @@ -4,7 +4,7 @@ myst: description: Optimising your Magento disk performance could lead to higher speed and a better performance of your shop. Read here how to optimise it on Hypernode. redirect_from: -- /en/troubleshooting/performance/how-to-optimise-your-magento-disk-performance/ + - /en/troubleshooting/performance/how-to-optimise-your-magento-disk-performance/ --- diff --git a/docs/troubleshooting/performance/how-to-resolve-a-413-request-entity-too-large-error.md b/docs/troubleshooting/performance/how-to-resolve-a-413-request-entity-too-large-error.md index 8683bb15..772b007a 100644 --- a/docs/troubleshooting/performance/how-to-resolve-a-413-request-entity-too-large-error.md +++ b/docs/troubleshooting/performance/how-to-resolve-a-413-request-entity-too-large-error.md @@ -1,6 +1,6 @@ --- redirect_from: -- /en/troubleshooting/performance/how-to-resolve-a-413-request-entity-too-large-error/ + - /en/troubleshooting/performance/how-to-resolve-a-413-request-entity-too-large-error/ --- diff --git a/docs/troubleshooting/performance/how-to-solve-the-front-controller-reached-100-router-match-iterations-error.md b/docs/troubleshooting/performance/how-to-solve-the-front-controller-reached-100-router-match-iterations-error.md index 879e648c..392e4b62 100644 --- a/docs/troubleshooting/performance/how-to-solve-the-front-controller-reached-100-router-match-iterations-error.md +++ b/docs/troubleshooting/performance/how-to-solve-the-front-controller-reached-100-router-match-iterations-error.md @@ -5,7 +5,7 @@ myst: appears when corruption in the cache arises, due to a bug in Magento. Here's how to solve it. redirect_from: -- /en/troubleshooting/performance/how-to-solve-the-front-controller-reached-100-router-match-iterations-error/ + - /en/troubleshooting/performance/how-to-solve-the-front-controller-reached-100-router-match-iterations-error/ --- diff --git a/docs/troubleshooting/performance/how-to-spot-slow-extensions-using-the-php-slow-logs.md b/docs/troubleshooting/performance/how-to-spot-slow-extensions-using-the-php-slow-logs.md index b27a08b7..69f03ed9 100644 --- a/docs/troubleshooting/performance/how-to-spot-slow-extensions-using-the-php-slow-logs.md +++ b/docs/troubleshooting/performance/how-to-spot-slow-extensions-using-the-php-slow-logs.md @@ -4,7 +4,7 @@ myst: description: 'PHP-FPM offers its slow logs, which spots slow extensions in your Magento shop. Read more about it and how to use it in this article. ' redirect_from: -- /en/troubleshooting/performance/how-to-spot-slow-extensions-using-the-php-slow-logs/ + - /en/troubleshooting/performance/how-to-spot-slow-extensions-using-the-php-slow-logs/ --- diff --git a/docs/troubleshooting/performance/how-to-use-the-mysql-slow-queries-in-the-control-panel.md b/docs/troubleshooting/performance/how-to-use-the-mysql-slow-queries-in-the-control-panel.md index beb196d6..0245ce43 100644 --- a/docs/troubleshooting/performance/how-to-use-the-mysql-slow-queries-in-the-control-panel.md +++ b/docs/troubleshooting/performance/how-to-use-the-mysql-slow-queries-in-the-control-panel.md @@ -4,7 +4,7 @@ myst: description: Use the MySQL Slow Logs in the Control Panel to find out what's causing the delay in your database queries to prevent performance issues on your Hypernode. redirect_from: -- /en/support/solutions/articles/48001154919-how-to-use-the-mysql-slow-queries-in-the-control-panel/ + - /en/support/solutions/articles/48001154919-how-to-use-the-mysql-slow-queries-in-the-control-panel/ --- From 4932b83da0c9f360ff70a0b09931e6c1b108f401 Mon Sep 17 00:00:00 2001 From: Timon de Groot Date: Tue, 3 Jan 2023 14:21:32 +0100 Subject: [PATCH 04/51] ci: Use GITHUB_HEAD_REF instead of GITHUB_REF The `GITHUB_REF` env is not the same when a PR is opened and when it's merged. The `GITHUB_HEAD_REF` env contains the source branch name in all pull_request event types --- deploy.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/deploy.php b/deploy.php index 0c2b05ae..1d657186 100644 --- a/deploy.php +++ b/deploy.php @@ -104,6 +104,6 @@ $testingStage = $configuration->addStage("acceptance", "docs"); $testingStage->addBrancherServer("hntestgroot") - ->setLabels(['stage=acceptance', 'ci_ref=' . (\getenv('GITHUB_REF') ?: 'none')]); + ->setLabels(['stage=acceptance', 'ci_ref=' . (\getenv('GITHUB_HEAD_REF') ?: 'none')]); return $configuration; From ddf795ab30a0a02c335b6608e338bd58ecbdb428 Mon Sep 17 00:00:00 2001 From: Timon de Groot Date: Tue, 3 Jan 2023 14:51:51 +0100 Subject: [PATCH 05/51] docs: Add category/folder redirects --- docs/about-hypernode/about-hypernode.md | 5 +++++ docs/about-hypernode/billing.md | 5 +++++ docs/about-hypernode/security-policies.md | 5 +++++ docs/about-hypernode/support.md | 5 +++++ docs/best-practices/backups.md | 5 +++++ docs/best-practices/cdn.md | 5 +++++ docs/best-practices/database.md | 5 +++++ docs/best-practices/email.md | 5 +++++ docs/best-practices/performance.md | 5 +++++ docs/best-practices/pwa.md | 5 +++++ docs/best-practices/security.md | 5 +++++ docs/best-practices/testing.md | 5 +++++ docs/best-practices/usage.md | 5 +++++ docs/ecommerce-applications/akeneo.md | 5 +++++ docs/ecommerce-applications/magento-1.md | 5 +++++ docs/ecommerce-applications/magento-2.md | 5 +++++ docs/ecommerce-applications/shopware-6.md | 5 +++++ docs/ecommerce-applications/woocommerce.md | 5 +++++ docs/getting-started/how-to-order.md | 5 +++++ docs/hypernode-platform/backups.md | 5 +++++ docs/hypernode-platform/dns.md | 5 +++++ docs/hypernode-platform/email.md | 5 +++++ docs/hypernode-platform/ftp.md | 5 +++++ docs/hypernode-platform/mysql.md | 5 +++++ docs/hypernode-platform/nginx.md | 5 +++++ docs/hypernode-platform/php.md | 5 +++++ docs/hypernode-platform/ssh.md | 5 +++++ docs/hypernode-platform/ssl.md | 5 +++++ docs/hypernode-platform/tools.md | 5 +++++ docs/hypernode-platform/varnish.md | 5 +++++ docs/index.md | 13 +++++++++++++ docs/services/control-panel.md | 5 +++++ docs/services/domain-procedures.md | 5 +++++ docs/services/magereport.md | 5 +++++ docs/services/service-panel.md | 5 +++++ docs/troubleshooting/performance.md | 5 +++++ 36 files changed, 188 insertions(+) diff --git a/docs/about-hypernode/about-hypernode.md b/docs/about-hypernode/about-hypernode.md index 838d661c..e00092b0 100644 --- a/docs/about-hypernode/about-hypernode.md +++ b/docs/about-hypernode/about-hypernode.md @@ -1,3 +1,8 @@ +--- +redirect_from: + - /en/about/ +--- + # About Hypernode ```{toctree} diff --git a/docs/about-hypernode/billing.md b/docs/about-hypernode/billing.md index dc89f49e..44dbf6aa 100644 --- a/docs/about-hypernode/billing.md +++ b/docs/about-hypernode/billing.md @@ -1,3 +1,8 @@ +--- +redirect_from: + - /en/about/billing/ +--- + # Billing ```{toctree} diff --git a/docs/about-hypernode/security-policies.md b/docs/about-hypernode/security-policies.md index a21eeb08..58e8a50c 100644 --- a/docs/about-hypernode/security-policies.md +++ b/docs/about-hypernode/security-policies.md @@ -1,3 +1,8 @@ +--- +redirect_from: + - /en/about/security/ +--- + # Security Policies ```{toctree} diff --git a/docs/about-hypernode/support.md b/docs/about-hypernode/support.md index f3da5dd1..c3c62dbc 100644 --- a/docs/about-hypernode/support.md +++ b/docs/about-hypernode/support.md @@ -1,3 +1,8 @@ +--- +redirect_from: + - /en/about/support/ +--- + # Support ```{toctree} diff --git a/docs/best-practices/backups.md b/docs/best-practices/backups.md index a2e4a7dc..3f440882 100644 --- a/docs/best-practices/backups.md +++ b/docs/best-practices/backups.md @@ -1,3 +1,8 @@ +--- +redirect_from: + - /en/best-practices/backups/ +--- + # Backups ```{toctree} diff --git a/docs/best-practices/cdn.md b/docs/best-practices/cdn.md index 9b790cff..e29d27a3 100644 --- a/docs/best-practices/cdn.md +++ b/docs/best-practices/cdn.md @@ -1,3 +1,8 @@ +--- +redirect_from: + - /en/best-practices/cdn/ +--- + # CDN ```{toctree} diff --git a/docs/best-practices/database.md b/docs/best-practices/database.md index 82c3bb0e..6c49dbe9 100644 --- a/docs/best-practices/database.md +++ b/docs/best-practices/database.md @@ -1,3 +1,8 @@ +--- +redirect_from: + - /en/best-practices/database/ +--- + # Database ```{toctree} diff --git a/docs/best-practices/email.md b/docs/best-practices/email.md index 2d9baefb..f71ae05a 100644 --- a/docs/best-practices/email.md +++ b/docs/best-practices/email.md @@ -1,3 +1,8 @@ +--- +redirect_from: + - /en/best-practices/email/ +--- + # Email ```{toctree} diff --git a/docs/best-practices/performance.md b/docs/best-practices/performance.md index 6d80cf64..b534c393 100644 --- a/docs/best-practices/performance.md +++ b/docs/best-practices/performance.md @@ -1,3 +1,8 @@ +--- +redirect_from: + - /en/best-practices/performance/ +--- + # Performance ```{toctree} diff --git a/docs/best-practices/pwa.md b/docs/best-practices/pwa.md index 024532fd..2aa1b4fc 100644 --- a/docs/best-practices/pwa.md +++ b/docs/best-practices/pwa.md @@ -1,3 +1,8 @@ +--- +redirect_from: + - /en/best-practices/pwa/ +--- + # PWA ```{toctree} diff --git a/docs/best-practices/security.md b/docs/best-practices/security.md index 088f6f98..bca13794 100644 --- a/docs/best-practices/security.md +++ b/docs/best-practices/security.md @@ -1,3 +1,8 @@ +--- +redirect_from: + - /en/best-practices/security/ +--- + # Security ```{toctree} diff --git a/docs/best-practices/testing.md b/docs/best-practices/testing.md index 06600c55..a13ef0ba 100644 --- a/docs/best-practices/testing.md +++ b/docs/best-practices/testing.md @@ -1,3 +1,8 @@ +--- +redirect_from: + - /en/best-practices/testing/ +--- + # Testing ```{toctree} diff --git a/docs/best-practices/usage.md b/docs/best-practices/usage.md index 0da2cbad..f4c99daa 100644 --- a/docs/best-practices/usage.md +++ b/docs/best-practices/usage.md @@ -1,3 +1,8 @@ +--- +redirect_from: + - /en/best-practices/usage/ +--- + # Usage ```{toctree} diff --git a/docs/ecommerce-applications/akeneo.md b/docs/ecommerce-applications/akeneo.md index 537dbcfc..6cc9f0ef 100644 --- a/docs/ecommerce-applications/akeneo.md +++ b/docs/ecommerce-applications/akeneo.md @@ -1,3 +1,8 @@ +--- +redirect_from: + - /en/ecommerce/akeneo/ +--- + # Akeneo ```{toctree} diff --git a/docs/ecommerce-applications/magento-1.md b/docs/ecommerce-applications/magento-1.md index df58ddeb..1413ac80 100644 --- a/docs/ecommerce-applications/magento-1.md +++ b/docs/ecommerce-applications/magento-1.md @@ -1,3 +1,8 @@ +--- +redirect_from: + - /en/ecommerce/magento-1/ +--- + # Magento 1 ```{toctree} diff --git a/docs/ecommerce-applications/magento-2.md b/docs/ecommerce-applications/magento-2.md index d7b32654..905d9fe5 100644 --- a/docs/ecommerce-applications/magento-2.md +++ b/docs/ecommerce-applications/magento-2.md @@ -1,3 +1,8 @@ +--- +redirect_from: + - /en/ecommerce/magento-2/ +--- + # Magento 2 ```{toctree} diff --git a/docs/ecommerce-applications/shopware-6.md b/docs/ecommerce-applications/shopware-6.md index 72fc1083..010a32f7 100644 --- a/docs/ecommerce-applications/shopware-6.md +++ b/docs/ecommerce-applications/shopware-6.md @@ -1,3 +1,8 @@ +--- +redirect_from: + - /en/ecommerce/shopware/ +--- + # Shopware 6 ```{toctree} diff --git a/docs/ecommerce-applications/woocommerce.md b/docs/ecommerce-applications/woocommerce.md index f77de040..0e743d4b 100644 --- a/docs/ecommerce-applications/woocommerce.md +++ b/docs/ecommerce-applications/woocommerce.md @@ -1,3 +1,8 @@ +--- +redirect_from: + - /en/support/solutions/folders/48000684907 +--- + # WooCommerce ```{toctree} diff --git a/docs/getting-started/how-to-order.md b/docs/getting-started/how-to-order.md index b3cdf4e4..c91b441b 100644 --- a/docs/getting-started/how-to-order.md +++ b/docs/getting-started/how-to-order.md @@ -1,3 +1,8 @@ +--- +redirect_from: + - /en/getting-started/ +--- + # Getting Started ```{toctree} diff --git a/docs/hypernode-platform/backups.md b/docs/hypernode-platform/backups.md index a2e4a7dc..71326386 100644 --- a/docs/hypernode-platform/backups.md +++ b/docs/hypernode-platform/backups.md @@ -1,3 +1,8 @@ +--- +redirect_from: + - /en/hypernode/backups/ +--- + # Backups ```{toctree} diff --git a/docs/hypernode-platform/dns.md b/docs/hypernode-platform/dns.md index d63df1da..cb6fe7d6 100644 --- a/docs/hypernode-platform/dns.md +++ b/docs/hypernode-platform/dns.md @@ -1,3 +1,8 @@ +--- +redirect_from: + - /en/hypernode/dns/ +--- + # DNS ```{toctree} diff --git a/docs/hypernode-platform/email.md b/docs/hypernode-platform/email.md index 2d9baefb..7f913807 100644 --- a/docs/hypernode-platform/email.md +++ b/docs/hypernode-platform/email.md @@ -1,3 +1,8 @@ +--- +redirect_from: + - /en/hypernode/email/ +--- + # Email ```{toctree} diff --git a/docs/hypernode-platform/ftp.md b/docs/hypernode-platform/ftp.md index f0310cb9..12b6e1cd 100644 --- a/docs/hypernode-platform/ftp.md +++ b/docs/hypernode-platform/ftp.md @@ -1,3 +1,8 @@ +--- +redirect_from: + - /en/hypernode/ftp/ +--- + # FTP ```{toctree} diff --git a/docs/hypernode-platform/mysql.md b/docs/hypernode-platform/mysql.md index 89597b42..2cfc89ff 100644 --- a/docs/hypernode-platform/mysql.md +++ b/docs/hypernode-platform/mysql.md @@ -1,3 +1,8 @@ +--- +redirect_from: + - /en/hypernode/mysql/ +--- + # MySQL ```{toctree} diff --git a/docs/hypernode-platform/nginx.md b/docs/hypernode-platform/nginx.md index f6be8c65..f70b49df 100644 --- a/docs/hypernode-platform/nginx.md +++ b/docs/hypernode-platform/nginx.md @@ -1,3 +1,8 @@ +--- +redirect_from: + - /en/hypernode/nginx/ +--- + # NGINX ```{toctree} diff --git a/docs/hypernode-platform/php.md b/docs/hypernode-platform/php.md index 3605f743..47bd57fc 100644 --- a/docs/hypernode-platform/php.md +++ b/docs/hypernode-platform/php.md @@ -1,3 +1,8 @@ +--- +redirect_from: + - /en/hypernode/php/ +--- + # PHP ```{toctree} diff --git a/docs/hypernode-platform/ssh.md b/docs/hypernode-platform/ssh.md index 5899c2a8..77581d95 100644 --- a/docs/hypernode-platform/ssh.md +++ b/docs/hypernode-platform/ssh.md @@ -1,3 +1,8 @@ +--- +redirect_from: + - /en/hypernode/ssh/ +--- + # SSH ```{toctree} diff --git a/docs/hypernode-platform/ssl.md b/docs/hypernode-platform/ssl.md index 672dbe88..09cf4fa2 100644 --- a/docs/hypernode-platform/ssl.md +++ b/docs/hypernode-platform/ssl.md @@ -1,3 +1,8 @@ +--- +redirect_from: + - /en/hypernode/ssl/ +--- + # SSL ```{toctree} diff --git a/docs/hypernode-platform/tools.md b/docs/hypernode-platform/tools.md index 1f3443a9..24d27765 100644 --- a/docs/hypernode-platform/tools.md +++ b/docs/hypernode-platform/tools.md @@ -1,3 +1,8 @@ +--- +redirect_from: + - /en/hypernode/tools/ +--- + # Tools ```{toctree} diff --git a/docs/hypernode-platform/varnish.md b/docs/hypernode-platform/varnish.md index b413dd55..edc264f6 100644 --- a/docs/hypernode-platform/varnish.md +++ b/docs/hypernode-platform/varnish.md @@ -1,3 +1,8 @@ +--- +redirect_from: + - /en/hypernode/varnish/ +--- + # Varnish ```{toctree} diff --git a/docs/index.md b/docs/index.md index d6e83659..c4f9f119 100644 --- a/docs/index.md +++ b/docs/index.md @@ -1,3 +1,16 @@ +--- +redirect_from: + - /en/ + - /en/support/ + - /en/support/login/ + - /en/support/solutions/ + - /en/ecommerce/ + - /en/getting-started/ + - /en/hypernode-platform/ + - /en/services/ + - /en/troubleshooting/ +--- + # Welcome to Hypernode Docs ```{toctree} diff --git a/docs/services/control-panel.md b/docs/services/control-panel.md index d744ba15..6d3b6e0f 100644 --- a/docs/services/control-panel.md +++ b/docs/services/control-panel.md @@ -1,3 +1,8 @@ +--- +redirect_from: + - /en/services/control-panel/ +--- + # Control Panel ```{toctree} diff --git a/docs/services/domain-procedures.md b/docs/services/domain-procedures.md index 972af7db..d7437be8 100644 --- a/docs/services/domain-procedures.md +++ b/docs/services/domain-procedures.md @@ -1,3 +1,8 @@ +--- +redirect_from: + - /en/services/domains/ +--- + # Domain Procedures ```{toctree} diff --git a/docs/services/magereport.md b/docs/services/magereport.md index 9b7f0a8f..acf277c7 100644 --- a/docs/services/magereport.md +++ b/docs/services/magereport.md @@ -1,3 +1,8 @@ +--- +redirect_from: + - /en/services/magereport/ +--- + # Magereport ```{toctree} diff --git a/docs/services/service-panel.md b/docs/services/service-panel.md index 49017c13..bdf6106a 100644 --- a/docs/services/service-panel.md +++ b/docs/services/service-panel.md @@ -1,3 +1,8 @@ +--- +redirect_from: + - /en/services/service-panel/ +--- + # Service Panel ```{toctree} diff --git a/docs/troubleshooting/performance.md b/docs/troubleshooting/performance.md index 6d80cf64..d7ed1baf 100644 --- a/docs/troubleshooting/performance.md +++ b/docs/troubleshooting/performance.md @@ -1,3 +1,8 @@ +--- +redirect_from: + - /en/troubleshooting/performance/ +--- + # Performance ```{toctree} From a4b64e2db51d4da027ad118907e4e7966f82aefc Mon Sep 17 00:00:00 2001 From: Timon de Groot Date: Tue, 3 Jan 2023 15:04:35 +0100 Subject: [PATCH 06/51] Extract method from writing contents to document file --- bin/generate_redirects_from_source_links | 0 hypernode/common/docs.py | 16 +++++++++++++++- .../generate_redirects_from_source_links.py | 8 ++------ 3 files changed, 17 insertions(+), 7 deletions(-) mode change 100644 => 100755 bin/generate_redirects_from_source_links diff --git a/bin/generate_redirects_from_source_links b/bin/generate_redirects_from_source_links old mode 100644 new mode 100755 diff --git a/hypernode/common/docs.py b/hypernode/common/docs.py index 0c340190..3f5f9b29 100644 --- a/hypernode/common/docs.py +++ b/hypernode/common/docs.py @@ -1,6 +1,9 @@ import os.path from pathlib import Path -from typing import List +from typing import List, Optional + +import mdformat +import yaml from hypernode.common.settings import DOCS_DIR @@ -15,3 +18,14 @@ def get_all_docs() -> List[Path]: for file in markdown_files: result.append(Path(root) / file) return result + + +def write_doc(path: Path, contents: str, frontmatter: Optional[dict]) -> None: + if frontmatter: + fm_yaml = yaml.dump(frontmatter, default_flow_style=False) + contents = "---\n" + fm_yaml + "---\n\n" + contents + + contents = mdformat.text(contents, extensions=["frontmatter", "myst"]) + + with open(path, mode="w", encoding="utf-8") as f: + f.write(contents) diff --git a/hypernode/redirect/generate_redirects_from_source_links.py b/hypernode/redirect/generate_redirects_from_source_links.py index 2d8204cf..c7dcb1ae 100644 --- a/hypernode/redirect/generate_redirects_from_source_links.py +++ b/hypernode/redirect/generate_redirects_from_source_links.py @@ -3,10 +3,9 @@ from typing import Optional from urllib.parse import urlparse -import yaml from frontmatter import Frontmatter -from hypernode.common.docs import get_all_docs +from hypernode.common.docs import get_all_docs, write_doc SOURCE_PATTERN = re.compile(r"^$") @@ -25,16 +24,13 @@ def set_source_path_redirect(doc: Path, source_path: str) -> None: fm = Frontmatter.read_file(doc) attributes = fm["attributes"] or {} attributes["redirect_from"] = [source_path] - fm_yaml = yaml.dump(attributes, default_flow_style=False) body = fm["body"] if not body: with open(doc, mode="r", encoding="utf-8") as f: body = f.read() - with open(doc, mode="w", encoding="utf-8") as f: - contents = "---\n" + fm_yaml + "---\n\n" + body - f.write(contents) + write_doc(doc, body, attributes) def main(): From f3db239c0089d2f5d39ba6fe129c060d1374aa97 Mon Sep 17 00:00:00 2001 From: Timon de Groot Date: Tue, 3 Jan 2023 16:24:16 +0100 Subject: [PATCH 07/51] Deploy nginx redirects --- .github/workflows/deploy.yaml | 1 - bin/generate_nginx_redirects | 5 +++ deploy.php | 34 ++++++++++++++----- .../redirect/generate_nginx_redirects.py | 31 +++++++++++++++++ 4 files changed, 61 insertions(+), 10 deletions(-) create mode 100755 bin/generate_nginx_redirects create mode 100644 hypernode/redirect/generate_nginx_redirects.py diff --git a/.github/workflows/deploy.yaml b/.github/workflows/deploy.yaml index 33c095a7..bd60074e 100644 --- a/.github/workflows/deploy.yaml +++ b/.github/workflows/deploy.yaml @@ -22,7 +22,6 @@ jobs: - uses: webfactory/ssh-agent@v0.5.4 with: ssh-private-key: ${{ secrets.SSH_PRIVATE_KEY }} - - run: apt update && apt install -y python3 virtualenv - run: hypernode-deploy build -vvv - name: archive production artifacts uses: actions/upload-artifact@v3 diff --git a/bin/generate_nginx_redirects b/bin/generate_nginx_redirects new file mode 100755 index 00000000..afe9733e --- /dev/null +++ b/bin/generate_nginx_redirects @@ -0,0 +1,5 @@ +#!/usr/bin/env python3 +from hypernode.redirect.generate_nginx_redirects import main + +if __name__ == "__main__": + main() diff --git a/deploy.php b/deploy.php index 1d657186..5d04ac59 100644 --- a/deploy.php +++ b/deploy.php @@ -25,6 +25,7 @@ task('python:venv:create', static function () { run('mkdir -p .hypernode'); run('virtualenv -p python3 .venv'); + run('echo export PYTHONPATH=$(pwd) >> .venv/bin/activate'); }); # Install the requirements @@ -32,6 +33,11 @@ run('source .venv/bin/activate && pip install -r requirements/base.txt'); }); +task('python:generate_redirects', static function () { + run('mkdir -p etc/nginx'); + run('source .venv/bin/activate && bin/generate_nginx_redirects > etc/nginx/server.redirects.conf'); +}); + # Build the documentation task('python:build_documentation', static function () { run('source .venv/bin/activate && bin/build_docs'); @@ -49,17 +55,28 @@ } }); -task("deploy:docs_vhost", static function () { - run("hypernode-manage-vhosts --https --force-https {{hostname}} --no --webroot {{current_path}}/{{public_folder}}"); +task('deploy:docs_vhost:acceptance', static function () { + run('hypernode-manage-vhosts --https --force-https {{hostname}} --no --webroot {{current_path}}/{{public_folder}}'); +})->select('stage=acceptance'); + +task('deploy:docs_vhost:production', static function () { + run('hypernode-manage-vhosts --https --force-https docs.hypernode.io --no --webroot {{current_path}}/{{public_folder}}'); +})->select('stage=production'); + +task('deploy:nginx_redirects', static function () { + run('cp {{release_path}}/etc/nginx/server.redirects.conf /data/web/nginx/server.redirects.conf'); }); $configuration = new Configuration(); $configuration->addBuildTask('python:venv:create'); $configuration->addBuildTask('python:venv:requirements'); $configuration->addBuildTask('python:build_documentation'); +$configuration->addBuildTask('python:generate_redirects'); $configuration->addDeployTask('deploy:disable_public'); $configuration->addDeployTask('deploy:hmv_docker'); -$configuration->addDeployTask('deploy:docs_vhost'); +$configuration->addDeployTask('deploy:docs_vhost:acceptance'); +$configuration->addDeployTask('deploy:docs_vhost:production'); +$configuration->addDeployTask('deploy:nginx_redirects'); # Just some sane defaults to exclude from the deploy $configuration->setDeployExclude([ @@ -73,12 +90,11 @@ '.idea', '.gitignore', '.editorconfig', - 'etc/', - '.venv/', - 'bin/', - 'hypernode/', - 'requirements/', - 'tests/' + './.venv', + './bin', + './hypernode', + './requirements', + './tests', ]); $productionStage = $configuration->addStage('production', 'docs.hypernode.io'); diff --git a/hypernode/redirect/generate_nginx_redirects.py b/hypernode/redirect/generate_nginx_redirects.py new file mode 100644 index 00000000..1dd4d06d --- /dev/null +++ b/hypernode/redirect/generate_nginx_redirects.py @@ -0,0 +1,31 @@ +import os.path +from pathlib import Path +from typing import List + +from frontmatter import Frontmatter + +from hypernode.common.docs import get_all_docs +from hypernode.common.settings import DOCS_DIR + + +def get_redirects_from_doc(doc: Path) -> List[str]: + fm = Frontmatter.read_file(doc) + attributes = fm["attributes"] or {} + return attributes.get("redirect_from", []) + + +def get_path_for_doc(doc: Path) -> str: + relative_path = Path(os.path.relpath(doc, DOCS_DIR)) + path = "/{}/{}".format( + relative_path.parent, relative_path.name.replace(".md", ".html") + ) + path = path.replace("/./", "/") + path = path.replace("/index.html", "/") + return path + + +def main(): + for doc in get_all_docs(): + for redirect in get_redirects_from_doc(doc): + doc_path = get_path_for_doc(doc) + print("rewrite ^{}$ {} permanent;".format(redirect, doc_path)) From faa16bf2df5b8744d593986edb574de3ab6ab0e3 Mon Sep 17 00:00:00 2001 From: Timon de Groot Date: Fri, 6 Jan 2023 12:35:35 +0100 Subject: [PATCH 08/51] docs: Set html_baseurl This will cause the `canonical` tag to be added tot the head, which is very important for SEO. The DOCS_BASE_URL setting in CI is a bit awkward, but I'm not so sure what the right way to do this would be. --- .github/workflows/deploy.yaml | 4 ++++ docs/conf.py | 3 +++ 2 files changed, 7 insertions(+) diff --git a/.github/workflows/deploy.yaml b/.github/workflows/deploy.yaml index bd60074e..504b8402 100644 --- a/.github/workflows/deploy.yaml +++ b/.github/workflows/deploy.yaml @@ -22,6 +22,10 @@ jobs: - uses: webfactory/ssh-agent@v0.5.4 with: ssh-private-key: ${{ secrets.SSH_PRIVATE_KEY }} + - name: Set env for production build + if: github.ref == 'refs/heads/master' + run: | + echo "DOCS_BASE_URL=docs.hypernode.io" >> $GITHUB_ENV - run: hypernode-deploy build -vvv - name: archive production artifacts uses: actions/upload-artifact@v3 diff --git a/docs/conf.py b/docs/conf.py index 65bb4dbb..cc9faf39 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -3,6 +3,7 @@ # This file only contains a selection of the most common options. For a full # list see the documentation: # https://www.sphinx-doc.org/en/master/usage/configuration.html +import os # -- Path setup -------------------------------------------------------------- @@ -71,6 +72,8 @@ } html_show_sphinx = False html_show_sourcelink = False +if os.getenv("DOCS_BASE_URL"): + html_baseurl = os.getenv("DOCS_BASE_URL") # Add any paths that contain custom static files (such as style sheets) here, # relative to this directory. They are copied after the builtin static files, From d35163f723aacce13c803ebeb245ba9f99abbb7a Mon Sep 17 00:00:00 2001 From: Timon de Groot Date: Fri, 6 Jan 2023 13:47:30 +0100 Subject: [PATCH 09/51] docs: Add sitemap generation --- docs/conf.py | 4 ++++ requirements/base.txt | 1 + 2 files changed, 5 insertions(+) diff --git a/docs/conf.py b/docs/conf.py index cc9faf39..7d2f111b 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -72,8 +72,12 @@ } html_show_sphinx = False html_show_sourcelink = False + +sitemap_url_scheme = "{link}" + if os.getenv("DOCS_BASE_URL"): html_baseurl = os.getenv("DOCS_BASE_URL") + extensions.append("sphinx_sitemap") # Only generate sitemap when we have a base url # Add any paths that contain custom static files (such as style sheets) here, # relative to this directory. They are copied after the builtin static files, diff --git a/requirements/base.txt b/requirements/base.txt index 2870e8f9..6314f5de 100644 --- a/requirements/base.txt +++ b/requirements/base.txt @@ -8,6 +8,7 @@ mdformat==0.7.16 mdformat-myst==0.1.5 mdformat-frontmatter==0.4.1 sphinx-notfound-page==0.8.3 +sphinx-sitemap==2.4.0 # hypernode/ requirements beautifulsoup4==4.11.1 From 2f6f1b158b6f5c067dc343e55aaa8539632bed96 Mon Sep 17 00:00:00 2001 From: Timon de Groot Date: Mon, 9 Jan 2023 12:55:42 +0100 Subject: [PATCH 10/51] docs: Replace old support.hypernode.com links with internal links --- bin/build_docs | 2 + docs/Makefile | 2 +- .../hypernode-pricing-plans.md | 2 +- ...to-debian-buster-technical-implications.md | 2 +- ...what-kind-of-emails-does-hypernode-send.md | 2 +- .../billing-faq-for-the-control-panel.md | 6 +-- .../billing-faq-for-the-service-panel.md | 4 +- .../billing/how-to-cancel-your-plan.md | 2 +- ...ow-to-choose-and-order-a-hypernode-plan.md | 5 ++- ...-to-up-or-downgrade-your-hypernode-plan.md | 4 +- ...f-your-magento-extensions-is-vulnerable.md | 2 +- ...nflict-between-merchant-and-webdesigner.md | 2 +- ...p-and-download-it-to-your-local-machine.md | 2 +- .../how-to-use-cloudflare-with-hypernode.md | 2 +- .../how-to-run-rabbitmq-on-hypernode.md | 2 +- .../how-to-use-heidisql-on-hypernode.md | 4 +- ...er-out-of-office-for-your-email-address.md | 4 -- ...prevent-your-email-being-marked-as-spam.md | 6 +-- .../performance/_res/result100.png | Bin 0 -> 222923 bytes .../performance/_res/result50.png | Bin 0 -> 188206 bytes .../how-to-enable-pagespeed-booster.md | 6 +-- ...r-performance-bottleneck-with-new-relic.md | 1 + ...ance-issues-caused-by-bots-and-crawlers.md | 7 +-- .../how-to-improve-your-magento-search.md | 5 ++- ...ze-the-performance-of-your-magento-shop.md | 24 +++++------ .../how-to-optimize-your-images.md | 31 ++++++-------- .../how-to-set-up-smart-404-handling.md | 0 ...on-hypernode-to-find-performance-issues.md | 1 + .../pwa/hypernode-and-pwa-hosting.md | 2 +- ...ow-hypernode-protects-your-magento-shop.md | 2 +- .../security/how-to-apply-magento-patches.md | 2 +- ...malicious-javascript-credit-card-hijack.md | 2 +- ...ect-magento-against-brute-force-attacks.md | 1 + .../how-to-recover-a-hacked-magento-shop.md | 7 +-- ...u-need-to-know-about-the-visbot-malware.md | 2 +- .../how-to-check-if-everything-works.md | 18 ++++---- .../how-to-go-live-with-your-hypernode.md | 11 ++--- .../testing/hypernode-docker.md | 11 ++--- .../how-to-handle-composer-memory-issues.md | 2 +- docs/conf.py | 2 +- .../how-to-install-akeneo-3-on-hypernode.md | 6 +-- .../how-to-install-akeneo-4-on-hypernode.md | 5 ++- .../how-to-install-akeneo-5-on-hypernode.md | 4 +- .../how-to-install-akeneo-6-on-hypernode.md | 4 +- ...basic-staging-environment-with-akeneo-3.md | 2 +- ...staging-environment-with-akeneo-4-and-5.md | 2 +- ...w-to-change-the-base-url-in-magento-1-x.md | 5 ++- .../how-to-clean-the-magento-1-x-logs.md | 1 + .../how-to-configure-redis-for-magento-1.md | 7 +-- ...ow-to-configure-varnish-for-magento-1-x.md | 13 +++--- ...te-a-robots-txt-for-your-magento-1-shop.md | 1 + ...to-create-a-sitemap-xml-for-magento-1-x.md | 2 +- .../how-to-enable-the-magento-1-api.md | 2 +- ...oad-from-failed-to-load-external-entity.md | 3 +- .../magento-1/how-to-flush-the-wsdl-cache.md | 2 +- .../how-to-install-magento-1-on-hypernode.md | 18 ++++---- ...-up-a-staging-environment-for-magento-1.md | 4 +- .../how-to-change-your-magento-2-base-urls.md | 4 +- .../how-to-configure-redis-for-magento-2.md | 7 ++- ...ow-to-configure-varnish-for-magento-2-x.md | 10 ++--- ...-to-create-a-robots-txt-for-magento-2-x.md | 1 + ...to-create-a-sitemap-xml-for-magento-2-x.md | 2 +- .../how-to-enable-the-magento-2-api.md | 3 +- ...o-enable-the-magento-2-web-setup-wizard.md | 1 + ...or-1030-got-error-1-from-storage-engine.md | 2 +- .../how-to-flush-the-magento-2-x-caches.md | 1 + .../how-to-install-magento-2-on-hypernode.md | 8 ++-- .../how-to-protect-the-magento-2-api.md | 2 +- ...to-remove-your-magento-2-x-installation.md | 1 + ...-to-set-magento-2-x-to-the-utc-timezone.md | 1 + ...et-the-return-path-for-a-magento-2-shop.md | 2 + ...basic-staging-environment-for-magento-2.md | 29 +++++++------ .../magento-2/how-to-update-magento-2.md | 20 ++++----- ...how-to-configure-varnish-for-shopware-5.md | 4 +- .../how-to-host-shopware-on-hypernode.md | 3 +- .../how-to-install-shopware-5-on-hypernode.md | 3 +- ...basic-staging-environment-with-shopware.md | 2 +- ...how-to-configure-varnish-for-shopware-6.md | 6 +-- .../how-to-install-shopware-6-on-hypernode.md | 1 + ...sic-staging-environment-with-shopware-6.md | 2 +- ...o-get-started-with-your-hypernode-trial.md | 40 ++++++++++-------- .../how-to-order-a-domain-presence-plan.md | 4 +- ...-restore-your-hypernode-from-a-snapshot.md | 3 +- .../backups/hypernode-backup-policy.md | 8 ++-- .../dns/dns-for-service-panel-users.md | 8 ++-- ...-manage-your-dns-settings-for-hypernode.md | 9 ++-- ...o-set-up-your-spf-records-for-hypernode.md | 1 + .../dns/your-dns-is-misconfigured.md | 2 +- .../email/how-to-manage-your-email-queue.md | 2 +- ...w-to-set-up-your-dns-for-outgoing-email.md | 19 ++++----- ...-to-set-up-your-dns-for-using-office365.md | 2 +- .../policy-for-sending-email-on-hypernode.md | 1 + .../how-to-configure-ftp-sftp-on-hypernode.md | 9 ++-- ...w-to-free-disk-space-from-mysql-ibdata1.md | 1 + .../mysql/how-to-use-mysql-on-hypernode.md | 5 ++- .../mysql/how-to-use-phpmyadmin.md | 5 ++- ...tication-on-hypernode-development-plans.md | 5 ++- ...stom-http-headers-to-a-file-or-location.md | 2 +- ...ow-to-block-allow-ip-addresses-in-nginx.md | 1 + ...to-block-user-agents-and-referrer-sites.md | 1 + ...how-to-configure-nginx-for-a-multistore.md | 6 +-- ...o-configure-your-shop-to-only-use-https.md | 23 ++++++---- ...le-config-to-include-in-custom-snippets.md | 7 +-- ...eny-access-to-locations-and-directories.md | 1 + ...-magento-store-with-a-password-in-nginx.md | 1 + .../nginx/how-to-redirect-from-or-to-www.md | 4 +- ...-limited-requests-429-too-many-requests.md | 5 ++- ...w-to-restrict-access-to-your-admin-area.md | 2 +- .../nginx/how-to-use-nginx.md | 8 ++-- .../php/how-to-resolve-502-gateway-errors.md | 2 +- ...ons-and-how-to-change-them-on-hypernode.md | 7 +-- ...its-apply-to-active-php-requests-per-ip.md | 2 +- ...how-to-log-in-to-the-hypernode-with-ssh.md | 3 +- .../ssh/how-to-use-ssh-keys-on-hypernode.md | 3 +- ...ow-to-upgrade-your-ssl-settings-to-an-a.md | 18 ++++---- .../how-to-use-lets-encrypt-on-hypernode.md | 7 +-- ...ypernode-when-ordered-via-hypernode-com.md | 2 +- ...hypernode-when-ordered-via-hypernode-nl.md | 15 ++++--- ...re-frequently-asked-questions-about-ssl.md | 8 ++-- .../tools/how-to-configure-lesti-fpc.md | 6 +-- ...r-application-using-hypernode-deploy-v1.md | 2 +- .../tools/how-to-free-up-disk-space.md | 24 +++++------ .../how-to-migrate-your-shop-to-hypernode.md | 9 ++-- .../how-to-use-elasticsearch-on-hypernode.md | 10 ++--- .../how-to-use-hypernode-development-plans.md | 7 +-- ...ow-to-use-magento-corediff-on-hypernode.md | 2 +- .../tools/how-to-use-mailhog-on-hypernode.md | 3 +- ...se-periodic-tasks-cronjobs-on-hypernode.md | 1 + ...to-use-the-hypernode-systemctl-cli-tool.md | 35 +++++++-------- .../tools/hypernode-brancher.md | 2 +- ...hypernode-cli-tools-and-magerun-plugins.md | 17 ++++---- ...cking-and-accessing-magmi-for-hypernode.md | 7 +-- .../how-to-enable-varnish-on-hypernode.md | 14 +++--- .../different-control-panel-scenarios.md | 2 +- .../how-to-change-your-hypernode-settings.md | 6 +-- ...w-to-link-your-domain-to-your-hypernode.md | 4 +- ...de-and-transfer-ownership-to-a-customer.md | 15 +++---- .../control-panel/how-to-use-teams.md | 2 +- .../control-panel/how-to-use-the-dns-check.md | 4 +- ...permissions-on-hypernodes-control-panel.md | 8 ++-- ...ransfer-your-domain-away-from-hypernode.md | 2 +- .../services/magereport/magereport-premium.md | 24 +++++------ .../different-service-panel-scenarios.md | 2 +- ...ur-customer-details-and-other-questions.md | 4 +- .../how-to-log-into-the-service-panel.md | 2 +- ...to-block-bad-bots-via-the-service-panel.md | 6 +-- .../how-to-check-why-my-site-is-slow.md | 4 +- .../how-to-debug-out-of-memory-oom-events.md | 6 +-- .../how-to-implement-pagespeed-booster.md | 14 +++--- ...-optimise-your-magento-disk-performance.md | 1 + ...slow-extensions-using-the-php-slow-logs.md | 1 + 151 files changed, 476 insertions(+), 410 deletions(-) create mode 100644 docs/best-practices/performance/_res/result100.png create mode 100644 docs/best-practices/performance/_res/result50.png rename docs/{ecommerce-applications/magento-2 => best-practices/performance}/how-to-set-up-smart-404-handling.md (100%) diff --git a/bin/build_docs b/bin/build_docs index 4dd4fb89..5149f2de 100755 --- a/bin/build_docs +++ b/bin/build_docs @@ -1,5 +1,7 @@ #!/usr/bin/env bash +set -e + pushd docs make html popd diff --git a/docs/Makefile b/docs/Makefile index dcee2825..2a0bc92f 100644 --- a/docs/Makefile +++ b/docs/Makefile @@ -3,7 +3,7 @@ # You can set these variables from the command line, and also # from the environment for the first two. -SPHINXOPTS ?= -j auto +SPHINXOPTS ?= -j auto -W --keep-going SPHINXBUILD ?= sphinx-build SOURCEDIR = . BUILDDIR = _build diff --git a/docs/about-hypernode/about-hypernode/hypernode-pricing-plans.md b/docs/about-hypernode/about-hypernode/hypernode-pricing-plans.md index 1efc2f50..1ef6abd2 100644 --- a/docs/about-hypernode/about-hypernode/hypernode-pricing-plans.md +++ b/docs/about-hypernode/about-hypernode/hypernode-pricing-plans.md @@ -28,7 +28,7 @@ Cloud hosting is a large group of physical servers tied together by a virtual la ### Pricing -Hypernode Cloud Hosting Plans start at € 139,- a month. The pricing is based on your needed resources and your chosen cloud provider. At Hypernode, [we offer three different providers for your cloud hosting](https://support.hypernode.com/en/about/about-us/which-cloud-providers-do-we-use): Combell OpenStack (**Falcon Plans**), DigitalOcean (**Pelican Plans**), and Amazon Web Services (**Eagle Plans**). +Hypernode Cloud Hosting Plans start at € 139,- a month. The pricing is based on your needed resources and your chosen cloud provider. At Hypernode, [we offer three different providers for your cloud hosting](which-cloud-providers-do-we-use.md): Combell OpenStack (**Falcon Plans**), DigitalOcean (**Pelican Plans**), and Amazon Web Services (**Eagle Plans**). [An overview of our Cloud hosting plans can be found here.](https://www.hypernode.com/en/cloud-hosting/#plans) diff --git a/docs/about-hypernode/about-hypernode/upgrade-to-debian-buster-technical-implications.md b/docs/about-hypernode/about-hypernode/upgrade-to-debian-buster-technical-implications.md index 51de72f9..6cdce488 100644 --- a/docs/about-hypernode/about-hypernode/upgrade-to-debian-buster-technical-implications.md +++ b/docs/about-hypernode/about-hypernode/upgrade-to-debian-buster-technical-implications.md @@ -11,7 +11,7 @@ Because it is important to keep your hosting environment up to date we’re upgr ## Software Version Changes -These are some of the versions of software available on the system that have changed in this OS upgrade. Note that this list is not exhaustive and only a snapshot of the situation of the platform during the moment of the initial transition between OS versions. Over time as the platform develops these versions might be mutated further. See the [Hypernode changelog](https://support.hypernode.com/changelog/) for the most up to date reports on changes to the platform. +These are some of the versions of software available on the system that have changed in this OS upgrade. Note that this list is not exhaustive and only a snapshot of the situation of the platform during the moment of the initial transition between OS versions. Over time as the platform develops these versions might be mutated further. See the [Hypernode changelog](https://changelog.hypernode.com/) for the most up-to-date reports on changes to the platform. ### Webstack Related Packages diff --git a/docs/about-hypernode/about-hypernode/what-kind-of-emails-does-hypernode-send.md b/docs/about-hypernode/about-hypernode/what-kind-of-emails-does-hypernode-send.md index b3a71e7b..f8b6a8ad 100644 --- a/docs/about-hypernode/about-hypernode/what-kind-of-emails-does-hypernode-send.md +++ b/docs/about-hypernode/about-hypernode/what-kind-of-emails-does-hypernode-send.md @@ -19,7 +19,7 @@ We only send ServiceMails to our active customers. ServiceMails contain informat ## ProductMail -We continuously improve our Hypernode platform and services. Information about releases and changes can be found in our support documentation and [Changelog](https://support.hypernode.com/category/changelog/). In our ProductMail we present you the most interesting Hypernode releases in one email. On average you receive 1 ProductMail per month. +We continuously improve our Hypernode platform and services. Information about releases and changes can be found in our support documentation and [Changelog](https://changelog.hypernode.com/). In our ProductMail we present you the most interesting Hypernode releases in one email. On average you receive 1 ProductMail per month. We highly recommend you to subscribe to our ProductMail and never miss an update on Hypernode. Of course each ProductMail shows the option to unsubscribe. diff --git a/docs/about-hypernode/billing/billing-faq-for-the-control-panel.md b/docs/about-hypernode/billing/billing-faq-for-the-control-panel.md index e0dec5cc..6e30111a 100644 --- a/docs/about-hypernode/billing/billing-faq-for-the-control-panel.md +++ b/docs/about-hypernode/billing/billing-faq-for-the-control-panel.md @@ -11,13 +11,13 @@ redirect_from: # Billing FAQ for the Control Panel -**Please note that this FAQ only applies to Control Panel customers that log in via [my.hypernode.com](https://my.hypernode.com/). If you use the Service Panel and log in via service.byte.nl please see [this article](https://support.hypernode.com/en/about/billing/billing-faq-hypernode-by-byte).** +**Please note that this FAQ only applies to Control Panel customers that log in via [my.hypernode.com](https://my.hypernode.com/). If you use the Service Panel and log in via service.byte.nl please see [this article](billing-faq-for-the-service-panel.md).** Every first of the month, Hypernode sends an invoice to customers who placed an order in the previous month or whose plans renew in the following month. The invoices are sent digitally to the Billing contact on the first of the month. You can easily find all invoices that have been sent in the Control Panel. ## What Are the Available Payment Methods? -Our Control Panel supports two different payment methods: credit card and SEPA Direct Debit. Please see our [Supported Payment Methods in the Control Panel](https://support.hypernode.com/en/about/billing/supported-payment-methods-in-the-control-panel) article for more information. +Our Control Panel supports two different payment methods: credit card and SEPA Direct Debit. Please see our [Supported Payment Methods in the Control Panel](supported-payment-methods-in-the-control-panel.md) article for more information. ## How to Edit Billing Info @@ -46,7 +46,7 @@ If you log in via [my.hypernode.com](https://auth.hypernode.com/), please use th - You'll now see an overview of your current plan on the left and the new plan on the right: ![](_res/tkmbOB9hsfJ0SfLR-TNCFtKqzRNgC6bvmA.png) - Select the desired plan and the type of environment, Development or Production. -- Select an add-on. Read more about our two SLA levels [here](https://support.hypernode.com/en/about/support/emergency-support-outside-office-hours-#Hypernode-Emergency-Service-Costs). +- Select an add-on. Read more about our two SLA levels [here](../support/emergency-support-outside-office-hours.md). - Agree with terms and conditions and click **Change** to change this plan. Your plan will be changed immediately. - Warnings, if applicable, will be shown on the left. diff --git a/docs/about-hypernode/billing/billing-faq-for-the-service-panel.md b/docs/about-hypernode/billing/billing-faq-for-the-service-panel.md index 5d61944b..4b21ec41 100644 --- a/docs/about-hypernode/billing/billing-faq-for-the-service-panel.md +++ b/docs/about-hypernode/billing/billing-faq-for-the-service-panel.md @@ -11,7 +11,7 @@ redirect_from: # Billing FAQ for the Service Panel -**Please note that this FAQ only applies to Service Panel customers that log in via [service.byte.nl](https://auth.byte.nl/). If you use the Control Panel and log in via [my.hypernode.com](https://auth.hypernode.com/) please [see this article](https://support.hypernode.com/en/about/billing/how-to-manage-your-billing-details-on-the-control-panel).** +**Please note that this FAQ only applies to Service Panel customers that log in via [service.byte.nl](https://auth.byte.nl/). If you use the Control Panel and log in via [my.hypernode.com](https://auth.hypernode.com/) please [see this article](./billing-faq-for-the-control-panel.md).** Once a month, Hypernode sends an invoice to customers who placed an order in the previous month or whose domain names / plans renew in the following month. The invoices are sent digitally to the Contracting party on the first of the month. You can easily find all invoices that have been sent in the Service Panel. @@ -45,7 +45,7 @@ The rules apply to individuals, not to companies. If possible, we therefore advi ## How Can I Edit My Account Details? -For more information about editing your account details please see [this article](https://support.hypernode.com/a/solutions/articles/48000981375?lang=en). +For more information about editing your account details please see [this article](../../services/service-panel/how-to-change-your-customer-details-and-other-questions.md). ## What Do I Pay Extra Costs For? diff --git a/docs/about-hypernode/billing/how-to-cancel-your-plan.md b/docs/about-hypernode/billing/how-to-cancel-your-plan.md index 1a9904a5..91242443 100644 --- a/docs/about-hypernode/billing/how-to-cancel-your-plan.md +++ b/docs/about-hypernode/billing/how-to-cancel-your-plan.md @@ -101,7 +101,7 @@ You never want to accidentally delete a domain name. Because this causes many pr 1. A week later we will close the domain at SIDN. Your domain is now unregistered and will be quarantined. 1. After 40 days in quarantine, the domain will be released for registration again. -If your domain is in quarantine, this means that the domain is no longer accessible on the internet. Your contact information is also retrieved from the Whois. The domain can then only be registered by you again. This prevents domain hijacking. Do you want to get your domain name out of quarantine? Read how to do this on [How to Undo the Cancellation of a Domain Name](https://support.hypernode.com/a/solutions/articles/48001144612?lang=en) page. +If your domain is in quarantine, this means that the domain is no longer accessible on the internet. Your contact information is also retrieved from the Whois. The domain can then only be registered by you again. This prevents domain hijacking. Do you want to get your domain name out of quarantine? Read how to do this on [How to Undo the Cancellation of a Domain Name](../../services/domain-procedures/how-to-undo-the-cancellation-of-a-domain-name.md) page. #### Cancelling Foreign Domains diff --git a/docs/about-hypernode/billing/how-to-choose-and-order-a-hypernode-plan.md b/docs/about-hypernode/billing/how-to-choose-and-order-a-hypernode-plan.md index 1b75798b..f376b266 100644 --- a/docs/about-hypernode/billing/how-to-choose-and-order-a-hypernode-plan.md +++ b/docs/about-hypernode/billing/how-to-choose-and-order-a-hypernode-plan.md @@ -5,6 +5,7 @@ myst: shop. Read all about our different hosting solutions in this article. ' redirect_from: - /en/about/billing/how-to-choose-and-order-a-hypernode-plan/ + - /knowledgebase/order-a-hypernode-plan/ --- @@ -74,5 +75,5 @@ You can order a Hypernode plan via our [order page](https://www.hypernode.com/ma - Make sure you pick a node with enough disk space for both your shop and your database. - Don’t use environment indicators like staging test, testing, dev or development: Without these indicators, you can easily change this node from a live to a test node without confusion or having to migrate to a server with another name. -- Still developing a shop? Then select [a development environment first](https://support.hypernode.com/knowledgebase/development-plans-for-your-magento-shop/). When your Hypernode is [ready to go live](https://support.hypernode.com/knowledgebase/go-live-with-your-hypernode/) you can easily switch to a production node. -- Use [this article to remove a Magento installation](https://support.hypernode.com/knowledgebase/remove-magento-installation/) in case you want to reuse an existing Hypernode or accidentally ordered a Hypernode with a preinstalled Magento on it. +- Still developing a shop? Then select [a development environment first](../../hypernode-platform/tools/how-to-use-hypernode-development-plans.md). When your Hypernode is [ready to go live](../../best-practices/testing/how-to-go-live-with-your-hypernode.md) you can easily switch to a production node. +- Use [this article to remove a Magento installation](../../ecommerce-applications/magento-2/how-to-remove-your-magento-2-x-installation.md) in case you want to reuse an existing Hypernode or accidentally ordered a Hypernode with a preinstalled Magento on it. diff --git a/docs/about-hypernode/billing/how-to-up-or-downgrade-your-hypernode-plan.md b/docs/about-hypernode/billing/how-to-up-or-downgrade-your-hypernode-plan.md index 05a90b73..c4bcf2af 100644 --- a/docs/about-hypernode/billing/how-to-up-or-downgrade-your-hypernode-plan.md +++ b/docs/about-hypernode/billing/how-to-up-or-downgrade-your-hypernode-plan.md @@ -42,7 +42,7 @@ If you log in via [my.hypernode.com](https://auth.hypernode.com/), please use th - You'll now see an overview of your current plan on the left and the new plan on the right: ![](_res/tkmbOB9hsfJ0SfLR-TNCFtKqzRNgC6bvmA.png) - Select the desired plan and the type of environment, Development or Production. -- Select an add-on. Read more about our two SLA levels [here](https://support.hypernode.com/en/about/support/emergency-support-outside-office-hours-#Hypernode-Emergency-Service-Costs). +- Select an add-on. Read more about our two SLA levels [here](../support/emergency-support-outside-office-hours.md). - Optional: schedule the plan change for a specific date and time. - Agree with terms and conditions and click Change to this plan. Your plan will be changed immediately. (or on the scheduled date and time) - Warnings, if applicable, will be shown on the left: @@ -75,7 +75,7 @@ When upgrading or downgrading a Hypernode plan, we first create a second node, m Right before the migration is finished, we email the technical contact the new IP address. -If you think you might switch between Professional/Falcon and Excellence/Eagle plans in the future, we recommend you to move your domain(s) to Hypernode so we can handle the DNS of your domains to avoid downtime. Or, use the DNS settings as explained in [this article](https://support.hypernode.com/knowledgebase/dns-settings-hypernode/). +If you think you might switch between Professional/Falcon and Excellence/Eagle plans in the future, we recommend you to move your domain(s) to Hypernode so we can handle the DNS of your domains to avoid downtime. Or, use the DNS settings as explained in [this article](../../hypernode-platform/dns/how-to-manage-your-dns-settings-for-hypernode.md). Make also sure to keep a list of payment providers, firewalls, local DNS servers and other services that depend on the IP address of the Hypernode, so you can quickly change the IP address if needed. diff --git a/docs/about-hypernode/security-policies/one-of-your-magento-extensions-is-vulnerable.md b/docs/about-hypernode/security-policies/one-of-your-magento-extensions-is-vulnerable.md index e6d8725e..ef004c68 100644 --- a/docs/about-hypernode/security-policies/one-of-your-magento-extensions-is-vulnerable.md +++ b/docs/about-hypernode/security-policies/one-of-your-magento-extensions-is-vulnerable.md @@ -48,7 +48,7 @@ Afterwards you should still have your webshop checked. It’s possible that your ## More information -To verify if your shop is hacked or not, [use the article about recovering a hacked Magento shop](https://support.hypernode.com/knowledgebase/recover-a-hacked-magento-shop/) +To verify if your shop is hacked or not, [use the article about recovering a hacked Magento shop](../../best-practices/security/how-to-recover-a-hacked-magento-shop.md) ## Need help? diff --git a/docs/about-hypernode/support/conflict-between-merchant-and-webdesigner.md b/docs/about-hypernode/support/conflict-between-merchant-and-webdesigner.md index 567d8896..913f29bc 100644 --- a/docs/about-hypernode/support/conflict-between-merchant-and-webdesigner.md +++ b/docs/about-hypernode/support/conflict-between-merchant-and-webdesigner.md @@ -22,7 +22,7 @@ When a conflict arises between a domain name holder and a developer, there are t When multiple parties are involved in the division of roles of a domain name / package, it can happen that multiple accounts have different roles. This is due to legal considerations, but also because you want to give a technical party access to your site if you are not that technical yourself. -Please see [this article](https://support.hypernode.com/en/hypernode/tools/what-are-the-different-roles-in-the-service-panel-and-what-is-the-difference-between-them) for more information about the different roles in the Service Panel. +Please see [this article](../../services/service-panel/different-service-panel-scenarios.md) for more information about the different roles in the Service Panel. ## Different Roles in a Conflict diff --git a/docs/best-practices/backups/how-to-create-a-backup-and-download-it-to-your-local-machine.md b/docs/best-practices/backups/how-to-create-a-backup-and-download-it-to-your-local-machine.md index a6bb16ed..ee17c98c 100644 --- a/docs/best-practices/backups/how-to-create-a-backup-and-download-it-to-your-local-machine.md +++ b/docs/best-practices/backups/how-to-create-a-backup-and-download-it-to-your-local-machine.md @@ -48,7 +48,7 @@ Now that you've created the backup(s) in **/data/web/backup_hypernode**, you can Follow these steps to download your backup via FTP: -- First of all create a [FTP-user](https://support.hypernode.com/en/hypernode/ftp/how-to-configure-ftp-sftp-on-hypernode)(If you already have a FTP-user make sure it's able to access the backup directory) +- First of all create a [FTP-user](../../hypernode-platform/ftp/how-to-configure-ftp-sftp-on-hypernode.md)(If you already have a FTP-user make sure it's able to access the backup directory) - set the **home-dir** to `/data/web/backup_hypernode` - Set your IP on the FTP whitelist - Login with your FTP-user on for example FileZilla diff --git a/docs/best-practices/cdn/how-to-use-cloudflare-with-hypernode.md b/docs/best-practices/cdn/how-to-use-cloudflare-with-hypernode.md index 3ba1b667..6f23258e 100644 --- a/docs/best-practices/cdn/how-to-use-cloudflare-with-hypernode.md +++ b/docs/best-practices/cdn/how-to-use-cloudflare-with-hypernode.md @@ -71,7 +71,7 @@ We created some configuration for Nginx that shows the remote IP of the visitor This way you can block remote visitors without blocking all traffic coming from the same Cloudflare server. This does not work when using Railgun. -For example have a look at [our documentation about blocking or whitelisting IP’s in Nginx](https://support.hypernode.com/knowledgebase/blocking-allowing-ip-addresses-in-nginx/). +For example have a look at [our documentation about blocking or whitelisting IP’s in Nginx](../../hypernode-platform/nginx/how-to-block-allow-ip-addresses-in-nginx.md). Another option is to configure a blocklist in the [Cloudflare Admin](https://www.cloudflare.com/a/login). diff --git a/docs/best-practices/database/how-to-run-rabbitmq-on-hypernode.md b/docs/best-practices/database/how-to-run-rabbitmq-on-hypernode.md index d5e54cf2..4226733d 100644 --- a/docs/best-practices/database/how-to-run-rabbitmq-on-hypernode.md +++ b/docs/best-practices/database/how-to-run-rabbitmq-on-hypernode.md @@ -29,7 +29,7 @@ The main idea behind queues is to avoid doing a resource-intensive task immediat ## Enabling RabbitMQ -Enabling RabbitMQ can be done via de [commandline tool](https://support.hypernode.com/knowledgebase/hypernode-systemctl-cli-tool/) or the [Hypernode API](https://community.hypernode.io/#/Documentation/hypernode-api/README). +Enabling RabbitMQ can be done via de [commandline tool](../../hypernode-platform/tools/how-to-use-the-hypernode-systemctl-cli-tool.md) or the [Hypernode API](https://community.hypernode.io/#/Documentation/hypernode-api/README). As an app user you enable RabbitMQ this way: diff --git a/docs/best-practices/database/how-to-use-heidisql-on-hypernode.md b/docs/best-practices/database/how-to-use-heidisql-on-hypernode.md index 70eedb77..241e8b04 100644 --- a/docs/best-practices/database/how-to-use-heidisql-on-hypernode.md +++ b/docs/best-practices/database/how-to-use-heidisql-on-hypernode.md @@ -24,7 +24,7 @@ First, go to the [HeidiSQL homepage](http://www.heidisql.com/download.php) and u ## Add your IP to the allowlist. -By default, your MySQL server is protected by a firewall. To connect remotely, you must [add your IP address to the allowlist](https://support.hypernode.com/en/hypernode/mysql/how-to-use-mysql-on-hypernode). You can find your IP address by typing in 'what is my IP' into Google. +By default, your MySQL server is protected by a firewall. To connect remotely, you must [add your IP address to the allowlist](../../hypernode-platform/mysql/how-to-use-mysql-on-hypernode.md). You can find your IP address by typing in 'what is my IP' into Google. ## Configure HeidiSQL @@ -44,7 +44,7 @@ Then configure HeidiSQL as follows: ## Create a database dump -You should consider using [Magerun](https://support.hypernode.com/knowledgebase/using-mysql-on-hypernode/#Using_Magerun), but you could use HeidiSQL to create a database dump. Please note that making a dump through HeidiSQL may generate an inconsistent backup, as data may change while your backup is created. +You should consider using [Magerun](../../hypernode-platform/mysql/how-to-use-mysql-on-hypernode.md#using-magerun), but you could use HeidiSQL to create a database dump. Please note that making a dump through HeidiSQL may generate an inconsistent backup, as data may change while your backup is created. 1. Start HeidiSQL. 1. Connect to your Hypernode. diff --git a/docs/best-practices/email/how-to-enable-an-autoresponder-out-of-office-for-your-email-address.md b/docs/best-practices/email/how-to-enable-an-autoresponder-out-of-office-for-your-email-address.md index 77f28efc..f90c6f43 100644 --- a/docs/best-practices/email/how-to-enable-an-autoresponder-out-of-office-for-your-email-address.md +++ b/docs/best-practices/email/how-to-enable-an-autoresponder-out-of-office-for-your-email-address.md @@ -57,7 +57,3 @@ Got to the [autoresponder](https://service.byte.nl/mail/outofoffice.cgi) page. Y - You can create the subject line in the entry field behind **Onderwerp** - In the entry field for **Bericht**you can set up the message for the autoresponder - Click on **Activeren**to save the settings - -## Create an Email Forward - -In stead of enabling an autoresponder, you can also create an email forward to another address. You can find how to do so [here](https://support.hypernode.com/en/hypernode/email/email-faq#Can-I-Forward-Email-to-an-Existing-Address). diff --git a/docs/best-practices/email/how-to-prevent-your-email-being-marked-as-spam.md b/docs/best-practices/email/how-to-prevent-your-email-being-marked-as-spam.md index 9d805bc5..a9049241 100644 --- a/docs/best-practices/email/how-to-prevent-your-email-being-marked-as-spam.md +++ b/docs/best-practices/email/how-to-prevent-your-email-being-marked-as-spam.md @@ -17,7 +17,7 @@ Sometimes email which is sent from a Hypernode is marked as spam by external spa Check if the inclue:spf.appname.hypernode.io hostname is included in your SPF record (in the DNS zone-file). This hostname contains the IP-address of your Hypernode and the addresses from Byte’s mailservers. -Detailed information on SPF records can be found [here](https://support.hypernode.com/en/hypernode/dns/how-to-set-up-your-spf-records-for-hypernode). +Detailed information on SPF records can be found [here](../../hypernode-platform/dns/how-to-set-up-your-spf-records-for-hypernode.md). If the IP address of your Hypernode is not included in this record, please send an email to support@hypernode.com, so we will fix the record for you. This could happen after an up- or downgrade of the Hypernode plan. @@ -25,10 +25,10 @@ If the IP address of your Hypernode is not included in this record, please send If you send your emails using a PHP script, the default return-path will be noreply@hypernode.io. This email address will be seen as possible spam address, so you have to change this into something else (e.g. noreply@example.tld) or change it into the email address you also use in your Magento installation. We would advise you to use a valid email address. If the recipient is using SAV (Sender Address Verification), and the email address is not reachable, then a spamfilter could see this as a spam message. -More information about setting your return-path for [Magento 1](https://support.hypernode.com/en/ecommerce/magento-1/how-to-set-the-return-path-for-a-magento-1-shop) and [Magento 2](https://support.hypernode.com/en/ecommerce/magento-2/how-to-set-the-return-path-for-a-magento-2-shop). +More information about setting your return-path for [Magento 1](../../ecommerce-applications/magento-1/how-to-set-the-return-path-for-a-magento-1-shop.md) and [Magento 2](../../ecommerce-applications/magento-2/how-to-set-the-return-path-for-a-magento-2-shop.md). ## Check If Your Hypernode Is Listed on a Blacklist Browse to MXToolbox and fill in the IP address of your Hypernode to check if the IP address is listed on a blacklist. If it is listed, you could request a delisting by yourself. Do not forget to check the reason why the IP is listed and fix it to prevent this from happening again. -If emails sent from the Hypernode are still marked as spam, please send an analysis request by email to support@hypernode.com including [a full-header of a marked message](https://support.hypernode.com/en/best-practices/email/how-to-find-the-mail-headers). We will investigate the reason and send you a reply with more details. +If emails sent from the Hypernode are still marked as spam, please send an analysis request by email to support@hypernode.com including [a full-header of a marked message](../../best-practices/email/how-to-find-the-mail-headers.md). We will investigate the reason and send you a reply with more details. diff --git a/docs/best-practices/performance/_res/result100.png b/docs/best-practices/performance/_res/result100.png new file mode 100644 index 0000000000000000000000000000000000000000..2db78b160a4d6b5d5ed2c7c5bf8f0d159f89ae28 GIT binary patch literal 222923 zcmV)ZK&!urP)iMuf4D61wdm52oMA*iPSnHX=bcv|Ng>%=(8j2=LnBI;aU77S)xb~B(_HH zOYM8zx^?Tt=X~!iG(b?4NJ;?NU5sX9KF_=0ez)Q|8*bqvgw4E_@pCxe$m2f z=YD||#B7v^zhF%-AI~r_i^os+trK^6e)*rxiLxW3%{p)Wg#$G!+hz3kUse7#{X zlnv?Y6;=|nUO;R-Npe*j^!0*;`_egd|r86 zMjiYN@w_&Z{9JkPC5$?5*f|jL;w>H(2}86Lg4`2#>-YN#YI5IpejR9(u zm4#XP7pH*HGyJ*7`v#oi@Ax77aj+a#d!vd>$hUCCCYiBVlIM9v5DJe`pqrOD ziLPGbsXNUt9f6%F={b2W#-C@}OyfXJl^@8 z=H`-G0voeb0Q~vtT$hDm;The|%r==ZwGsWB5eVJ2`6HZn zfXrxQz8@$y4F*HSD}Kf=wcFj$c6g3Jwh@!7V)P)*Gb!X0T7=Uof-NNbR5WyxWgxtpdc8yBz)l8fY^k;8M>bV$$;hP zXX0BbkyPA)C&=G<&d648s!CS;9s(@I3)$oDhIGmn*p7Hw=`C(Uij3$kBwA=5!{f!J9-fX;V{E`r>cA zPE>h51Iw@96ut~BN5gd|gVzX<9Cjh1L~Ae@Shw4?X0s{V8T9%#48p3QIui^%j2tLV zx*-|@7tfPSx@2oy;ZfG^0@(EQv}`AlNDK6cw+sLRK%a4zU%vtUNk{N%u#A5I4EOs3 z>vUSyZMCi4Zp)5_{y>RU5DabPyMY;10>gmB%Ql-WRR*)!tV^u0q3}NORN5vdC-t{X zHan&ZMXk|SkKX)AZ|3YyU-JxnIarP+Ax=Qlu$v%&B#uqOM*hIOZr@tnwsl(_Yxg?( z*&7Zlok&^V_iX6-;wmR&@OW?_BOBm15@}1M99UMNCzTZF;fvo*%I733l}W$AJ(VSo zp#OY(Tj^i(^1arFzYLa70_O3gRv4RJ;K84ugwYhhuXx>_H9KwVG+X-4&wYPj$ynUF zUf=w_C%!vf2x5^91KAEf1@Mf0L^i|k_&2{J(HbXWNmuN7@%HVto$pR%`A;Aj15P}z zXJlW1)~K=!*y(gS)~eU6R;yW~(Xd{(YlDHO%-kP(G9Fc#`<`osYUDU(iB#GO`3Y5Z z@)Jc%XET=0=4`T1v_v{(JonVpj4drMTR!iyuITo1wfVJv5>Mfae-T)Ya$-01LP7*k zbyYqp#F{9N#dK}?9kv5duGj1OuIzl!m-E18`m!YwE*zDw$MIDxPFgyZwR}E5{>m2k zcfrz`jP-h+P0!8R!oq^(3nXdIW~1BZxv;13BEF`#{N?T@tiwgs<1lH85-c0~O2j+u zuC>}tYt|b|w6LY&pl?Heq%K9j+mo$~6MS_khE|-IvP>?kN)9%oZbT-n@5w|;z6ZOS zn3}X=VR8(7BCf2{)Hu8Swa>uIt@P)w4?WA>qU3xe>K~n{=ZSZ0G_>R>p-xt>-M2=& zZmoLTnw^GqTRroJeH(g#^#)z@x&!k^1B;Im8te)NBUKHv0GdQvHUY>1>;Q6d#e)7# zM~m;+7GEymayJsLh(`9;K6j`6^_=ZQS|ulK<+&)+ICh2p#?eTJ0=xJSiZ${(t+q8< z&hPM@pFMw|N^+;ywO*&IO0tH?<1x`P_DnDIowHm54OI~N> zxTXR@{egLY$N^$PJ(IDi=~*jIO{yZexV$7|8Vm!QoSe1`7cZ$=D2MpDp`X`(3QyY+ zyb3HoZyrTW$3V$duh$jm6%RS&5zE1No@^%SNVGdmIhv^2jQz;*glZPDyP@Z7%L^ya zV@U-r9L~(ljLpr>TVZm-W~S%lps=O&ix+HWX5OhH1c89~+3oe6fj|sS` zW`53=mzQm7X4*!vxU;7)*_xc1u~afO9xOWp%dgjVo|7!xzn%kSz!3DDuvLyNc%Hy< zFkl`cFt0^2K9FB&b=uZyH1(aI@fQ?ypc6(d^@xv3%iS9ct<~vRB9##!&J`TkAujPn z;zf12P%PT)?5yZMbSX&QquZJ7ydK**36@XNs9sF6KJRy;;tXBUcDpr>O?0xNZYbF2 zWbuc;@pIG(#|E7p4s8^V$wt67#3o`Ewi6Y7qBw^A0GLlwQR9g-&hqQA9z~>3toDQ` z?u!-Mz`C7|s(ygpcC%r%N?E|i_nvc+#ofU%`2z(k91jN6@3!^WK_4#Aa|soIaktyI zMyD&_%zb%X+FO9>`Najhbm@|vKY!kqSJo_%Oj#yhu$9$S1vCZ(m8plo>x)j{m;L?q zo%lEZmH(7;N3~bgWAsI-BwG+lC%M6zUZO*5Fye`xU8B_}SnJRNU z9=5kak9qQajybVs$=KI2P)D74aoFa>)v{WnX3ct2 ziB}>KQ{{N%!zFb#6eaA~Nu^YlPw{#^y=*3(vt%L>CRv`fx*ge$fH-uGAZD3-&Q?}d zYU3Dzymirk_h8-LbB$% zwx082XTIkvTl*K;PSgdDC%A^L3o({-i(U=g^>|#xn`*V{d=H(@Zr9DvcyvMs8W@h` z0v-LdCm+TA=&TF>gvG&Vm`~T&53Js3I-e6J?R*CdUAS;THgfLVIp=riNMtg$w6tVv z>+2H!=CzZl+*dv~uls@D3L3`CVBm8f#uL-RPNCl^^K-$QwW{Fegd*KHi9;q_%(*bglO#VT)G+~p&jh) zIl$9yi(kt1RRyr?oDRHFhU6 z0(R*TplXp$1CSHWc7{WN8?I};R<%;8B+w(f=(RNjic$f|ll;uU*$|av?h|z`7`VY^ z073#wwWjU|fT8NQe{^U)ukTEDG_rc5rTfuJ2lT9+U$={wF4?6^mzB5!cu3T-qeMIv zt~POR2>-_|0zmjT0^Ql|tDS+DRRCVl+ct9)tz_&aJ=>A_*utQ1M@L7ppK7^c)mqsl z+&vO*U-Ul;JJ^Lw&Rqv0vL#+y-P3^KzvuVi-vV3~w{8#6f{IE)eym(B%kO0KIaLWs z$}eBLYS*q^v&F?lo1L4J-=TWwz>`bXT^w{uP>~&;0p+h|Gh@8_3Iz%N<`VZWCh?f> zx>!5g+q$N3k)v*>Vpo%{RacUc6a?`%_z!ik{DEwWq&uBViK-KICqx4q`mQJ$k6D*) z`oK|xurYiV_K6)(SteesudfUDkZ|F50ML9-q|+7*Lv@YtJ&o1FzTRp3t33K!0hV7r z6AlbSjnF6~4_lw!KyA%h6_8xE7S)_4+?<-xhJeW4?X>klSBtdof|b-PQfX^baSnrr zc&P%-1jKYm%W(7z3=(j|FilStnv~QLFwCv3EdghYi5AxRwKZG6aNaIl+7LBkVQJZJ z+_+^IFJ3-d4)7N=^OHgA<$xuS;0>fg;fgtd^*bHwbvxFq)va7Pw&UYtRf;92GaNcz zd#mB-JH4Jn{;>rdNj#ZQAR}l+zylk=Zm_K}<)`P`>NuXk5MHVSKs-;q+0bhq9vPAj3g{U^Fy; zFtkp)rHW3}+H5!Lt}D@Ti5J}os9Vr5Tqo*z^?Eb}L^*CUw(5B<7->siC`XBHxrD7_ zg~=)T9ReBtiRY8;luG*h{KA5gt?SpXD`-tjOsPw8_wHR)flgKjc|5NjRgq2(BA@aL z{TF!q6mrmXa~)B5$-d_)W??II7vy(5M+t1VU1bo^f(-$v=|)80l+StuT%v>J`bP>) z{5^_w0$queHJTmy9VPmsk#+h#*)3mmD`>4#CA@y?rV=lzgaDpfZ@ncD6wOX>Jkekm z&y5X5E%(2`i935re2xY@L+pd?^syb+fe@{tR+qg%&C&c!SiFhoT_owq$MF;=RWMw^ zC?*aw-Eq`30MXbT+~rIvtpZQIO+x>?GRQ!-; zBXx|iT1R+g-}EBSw-PKnN8tiZ4OB&RfZFXd0wf=oOKO!fn8V*HwYpWy zB?Y?W#d*81e%|uMycMP=tuQfZKX~s4_M@NtOx2!~@=j+1T;H5e{31$%eov-M@&sR9 z19}Z*;{+)UKh&x^5UzQ%M!<6XE&@v`o^aLWj%#B}vMZf-Tv7s?)Kfy`lXy&aS8LSA zx~Bv2Rs+jTOez5G@9$eKmvb5Yz*mJ32SmpLptH6PUwLNCEhKyY#ozy(Ei5dLZRaF6 zKa%%()1A*Zccs7iXNo}Ut1D#;OOf<=vH=n(u30k-Sac--4g@cPR6Za(Osnr_e_BJ*}b($%4Y2;?I0?JCbLM4`{O-U(2p_(GmctfH>SSy$q#+xZ`( zVPHFf?4Yl>A^Ka%IPhF?*OJQd_&H;Nb$V?}q*9j4WNZ|6u6lINq4Pi^ zi^uhy&P9{NoS|bV86;M*gnUmwob}@Mu^YZPo~Wx4btj;NMe`Kzz4xB|@JBzg)$^CW zwFSa&C0OPn0gMS&1dCRqZmnwF`n`@*3kZhdZxO6;Iv7o@QgziFbHh=oWZJ0{MB>>& z%w2f3uuR}b^bD;jrt*SrE>5ju^+rQ8%aL3h*;Bn@x*r7B~iS+Qa+ zYj59rOBp*{!)z{R^Ro-~qo4fP{^1|~LBm{8HJfUowzholJvh$IE^DK7cyTZ7IRJXC^~NcM4cGDyy`zbIG|umDhimBYhB z0Uf~d?EIXHnI!d8eW*77-~aJHS~8s)2RZH=f#$Q$#MiTz=(87n?xG=2`~kM(_d4<~ zQ8kd3H`ENL=|2zvVoscE<{Z38`LSqg1j1SPX6v_ez!Wn2rJc!V48Spl9HVe)WI-2hlRPi8hwc>v2)? zb>?rry8ZAO*8YZ2CURU1q!W&&c8h9pO9dTm`3z@f@H?WNqT~gCz2$z!Cq>r{4*;85|{1$3~(A z{OZ-KcK6+T_RD|x_wqX@x$Ro6^ev!$eXGE-IK}87t2*pR=CnScTBuzx@EnJxS=Y~_ zq3?hY7k%WW#=B~T_O0J@5?&El#zEnH(6MC@4+<;#gJj!OalC$iJnVoWSF1G_$Qm^n zWi0@zWxEdJo$K}lRes!s9P$lkemQ=BgbD|mdQP57%{{mQQ2yy1)oZQZF^0U#=k zXTw@w-RVS+j4EzXz>0Xo1FvV@X2ZH|mwhwrsSLT}6bZaODg{l~SqP;D)duf%rC&nyuzHl%sV<0APcY;|X6N1ZQh1>2K~%KEy37O&5J@GJP2AO85qcIWQfvKM?R;5=%% zf17xO-^>;M%RNg3cA{AZY{#RE)o!Zm;F9b}`2@O7N5vh$3tH`}Mi1TgSnek~8pf?R zaD!QqZ#t>f4o^O+`0>snNiW%P&$CjcDjT6_!{Z};Z+sT7gPlxHPbtyDcKAJh2~fPc zx@tf9>EGCuD_3MYJSWeE55tDeZ0GCQ(#ek2N!#HX4f{PC^?TN?*BoUg>yrRvq| zS?TE5;f6?JG^7Tq0OWO*V0Zei8m#UXF)Lh7!?ojiqoj>@qNO#Wg?ZNV2DW=pvdQV` zaeRtsVNpkwW56D;9jH6J2YexZXKCe}{p4?cDO|+gxL>s31Yd=Hy~($44OphKTdP$B zY#5N~ciPr~56DFCa3FJM7Ejvar_baF34obY z!rr=d!{%leR9&prYjP@iG?~+B`_Yd-u-kX;sG>+!0LQnubWR4x?PYGyn`}^T;;}{3 zy%A7WfI_+peaTScR@3IqrV=ik4T%;Xa+ViGpcBwb6`9F(vhe{E!er+RZ3TfG3p(3u zRl{bm6A~ymUZrY9K`^?OJcgjevGF@qa6C_T@$lip@sv7&?$)ha0zMHBUeA$WNHA~j z|L_A3nd|z%jr2HfE`r||Gcwy zcJGsCfX{O@05xt^dwuIS8|sWUY8Cx`oXEFbqOML6bLycQ3-L`<9B3Im&ocQb>x5Ne z?h|cM!`65%u4VK*5f471>uC6^<9rUcXbUa2PKBAlQEUKza&C1+^b6jH;%Xu;n<^A1 z<&)@8;I|@>9C4eYEpBJl@YT;ibiKIdQ8EJsBj)w3S*>VrnCdato7o$IVLIob4d91F z>++osQvt~DTe_IHcF$Fvg+aouK;-L)VbT4atvFyUWgdTMwPx2Qrltgzqge<1l8QXl zs(cnUaryG)aZICYiVdZ*8CzIhvuii5Yjy&_9C7QhIc$p#*PD9#R)A%3fJ@<2a34Z> zSwJ}zkBfQ%H@IFctICW4OcwIu?9d)nC9l!4N~NxLXC#-CPG{A^B9J6gw6>@+13)rb z7aGZgwY!emK?dYR+Vg66i63S$D@-`$0zf!mrd+F;KO7mH!)M#u0#Iu!D|Sgbxid1j z?X6t_ew-TM?Bd3G``f?$Tf1@drm}T3RQWJ4*o8xSmEyshYEW<5aYb7hX-_>@w17j} zvysLC_ z^Pm4*c7mg6wHvBXU%s+oH?H4O>pe=i-n47;dXMMjb;2($>EN0=utO)SIleyPd3rsI z4SQBOIuf|RUbM|B;q=#;m0)oL2^fAT+6Wri4l-~^x=~GzXcwFd5-{wpT;(wxT|1UX z;A5~K?4dV6wy>`yN9kNXRBSocdTgG*d|a~K-CZ3ILF?+JtFj%A`{3Zf9cwOYgORVH z8-_*cT);2n?;I;h`dhbehlcawRr>N}EU)*fzOGk4soBl|Q@`tY$oL(7u0u_Bs9$Xo zbLd?aR{@SdYXo+o>u7GFR8~xhx>f=f$&^jcELcBG#G;Bazy{mF_bADSYDl3bTvqd3 zmpx|rtXn>Uzk>F~@v)eqQgKVUpa(51%-P1}OR^n0BJkj&!9j{lx8Hi(e)`j&8eCMK z3!CHl07)AR0iNws{|ct)d=g!3#egcZ$wKelU{s{p!k1MNe|X41JBfD3ve~pY6|=yE?kUPYnM_Xhlwdn?!U1Y1 zrK&jhoP98R!|T(1fU+|^S+sVmYqdIsg`txCX1itgzW1K}?5BTg8<#GqpoEkii`^!s zigxqnTjB7u#PLD}^62|lIHlj&S)FX=QVtG4xQQ#6Z-LQ$=A zfKKV~&{bn{Ih)KCG|ZqjsPEZvsbc#_<~!h#001BWNkl!(2Ho*|W{3njYpl z4wwM1lx%-zN7;BW=eFpPK@&W%C#u1_J9`rRCn%w{O{uzo>JwtlxM6{b$K0dO&on7;K9Y=YAGPA#DM+XP$AW*60I#B72$alh^Qy|=3u+o7WuVv%h5q5=kCm*STU&LM9R>gy#>wTB97SC8{$OO) zcE>*b?1?JLBmt1{;{1m{!%d zkS(YMk1r#hVP||{E3*r3i3q?(n;i=|4RmpwbS>b>cdBiB{P2k$Gch@>O`^4W!}j+N zty-_kw=6BQCt$;7=cYA;cyx52Awq1oUTf;T;{)+I-}~P8l+ZI6$nj{fbmO9qVGwr9 zSj8@CfCAX*-5yCH4e-fL;|HJ))NYWeMcOT90>>2p@H^N9pI!LMe5PAeaLW{Ly7CJw zl_6GDYVg}TiW}u>#j2IM=4H6H(I!1O?{kwgnxRQ0(l#9Vwz;`wo10H`zpGa-Tc__? zE=O@^QZXx$OiOMKPz$Ghd+*S8_6}6cqic!}!Hy4(ov))n3H9s7wQDvrHEE3ovFuQG z$MfwS9=Lcm%i#Koz5l_F?7jEy>0CT|`pACpgAatu*id>BEaRV5BuYKsCi&O)K5q_K zj+Tpr9yn?XP}u?SRF6w`d~hHd1b`Jf25l??4)@JwQUW|E72pJDUGD7e3MexWF*P~k zxLfIz91a&^ef6BUhJc}VcVHiW_>nI7?VGo3ZgyH=2$6Pz1ouNxqg*~#KrC15w!OP& z`^RN#!6)Jv(m5Fl)nhU#z!pFW=dn0HYm1BXc2sihcmgq?y@V6;eE}&lbF!@uKKMYO zd1iKAS^o0Uig-R}Q|h1pcnC0`0LuVnZh&F9?JS|84RpA_XYD$JnSp>bTN+#Sx(55^ zCa0Z-Z9Z?6GJ~2&y0$o~R;O#zv$MKJ^E2~~Yo5#~n80P{_gv3Mj~?0f_O9BKEEJiT zoV3;THSxpH_NKxO)dzrnw0|HwC^cGEDpz#faRN-4M^aEYJc1n6K{m3joLjQe;gP6F z@L~Z%M~5W^C+wN$!1-W1d;zvN6VgdtSagdIl4<>ppdODwG&-#}CZYUs<_U+GCBB@a zXlRPh`_bXP0#?21syPHK@z$yKwY#bS0SKu4Qsoy7;<#j$dd(g`eym`oRnq|MaPVbu zenH)=^6{a~OikP4r%&wDPd`=gxqkDeq$OE#u8Lkr0ntEnw9rp*_re95fMkT=06C0Ek)+~xkSc9f>sCHIu+qVy#fHAlSV#1W znl|zQAOSL*O|C!S7@hvj&1a%KWHWhbAFCskPD%cc>(y!0ZL&C_0l<$waxsfog4~<< zq8k^LfYn%M+-_Ne*_&2FMWJ@HV|$NwtzKDizC#hjZf0htR4kgD zoUl&2Zl&@;sPmn-%29Q!xs1Oe=KbU+Ke0RS+|^@A?D!pn>m;7hq8>I{G81%K!7{!V z`F$kWRW}W=n@|Qf7@5~^OQ@jTsay59EUeS4F&l-iaoYXm!y_kUn{w;OnYqH>luH%) zh)+I!D8G}<7i2Sl++@a4vSucyt&q%_*XfJu_wgs6$hJt9=}H31-~0ae#swpMMy=_T znWVPSB3{)E#T@{0anfyhq+;x-8g2Pd{2SPc#0p+M@fV;ESmwP%F`8JqcHz9b6ZhVI zSIId5p9GSa7Y#X5*5TawL*G(~GqC)*sI3fL)15V|5U{8qA012S0yz_ODLWmvfrty9 zNhekPtwG7C*KPCJuG*PYhEbS+3(Rm9tpz!Pd`xBau+0T2rUK?^hHyNs>>%U?y?uA0r7s4!&tg|t&3A%Nf*sQfqEPGN%edEjh_T z&$DWyYXAIC|Ew1F`|tly6_y8|JruBL_BwWObRdTjaR*80(5zH8Ua43R4pkcH+py=`vB158wf;^ z93bCO+-Y|EV}PGZBwh76m9pW$EzIGycwMT+RH!9;h&))MZs*P|>39wg_vLR0P5^C= z;l~XA-MOP}fUL@IS52TB&TUT2-I_#E5Q1 z-zude$#7+JX${zMtJkUA9;rG9Ai<|m{fB}>EQz{D)3bA`Ler)Aw}1OL`|YoPBOh?< z`VA%30B-186j-2D@YQE!aWY{++zn~SaxTC>#XJ$ zzQ`Y1x7V`r0X9$-Scbm9OqOKgdLiYZ)poukgdy4|5jyj%3QI zFZtMYHmf)^Jvk-2g?_~Ia-#~(G4mP0mbhRF+?Q^BO9k6;VF6Mup1qftxt*IgZsRoCcRptH<;{D^&x2(&Ox@-XeH_m__wLEztY6#+!JA9!08iXbw*|Sy zA`vBpPZYOK*Xgw%1A5CPDW>!~ZB+|VxqwCkza3lQoJ+``VdF-_%J`{p5DyT|=N{?~ zL4&ykz$iYT*=UT#u_gew@1P>Kte0%YWWc+EJfj`U%$cY<&Zbi0)?NBAWdHXFXB2eL; zTUyk)L4_reOljS2%AV6R-aN1H7e1m0ETd8y_yU8R6SR}zsk1G%ba-H`dcy|rI`IKW zxApq6DTaoz9UiAmebu^>A`&is&gSy+0sVm+5CuFiy8w?=l%2uAKK}S)J3c(Lg}Hgf z1*A~{KqPEZiRyK&(?cfAESpaXgy?f0#4N^iX}|_h#|2HKa#Hc(wRmo9Cy|Opj(Gx(-x zFqq?)Y$3}|!s1V47wW`?z?)5{i%aw4Eu~8E^EqL%b1N$X?jQX4NAfu+_E0(3Qm+s! zyO{O*{LUK)mL18xUaQ%`!JaBRwaSsT>rGW*(Vf(aPX<*qP}3b70z-c_+DjhtI5lxP zkB&;>BT{LboSFzHE~l08^E{3c(HE%UHaStSO0{ke9zC%~kDp3zg$u?6ag<3%!xB`h zB}XUl<*Tv{;Em+U#AEb)1u+al?aNeBm2av}WMqJ~YuBzgL#`aFt$X##6{CT|*1r#a z@)L0w0b=Jbut*>TI%ni%ozF21PCpR52CD3oOUJgqziY>b`=VVCpc=G~x?MRNt``*( zt_xCc&1PGA%5cq(j?3Dvha+MM$-D2pr}ebw*Vb)fqM*(O0fa1E+~HPN*Eydn%87jV z;UDb5XO9F{Vo8@Qkx*f;awdtivh04~TMvC_60x`&Af;jxkJGuxYd8Y?BIw|B_;_1GxYBFMgpwJ2g9}c0Bz*Nts3b_rEZvc$1%=RSYk)wy6w~ zpaVR1ww_79oe6Z5Q{W21DI_VDwsxm4RRF4SaLh@7YvF(|AOzq7{p#GgRRIQQ5~}tN zhgNH}v~qZF??BfTunM@~F7`d87;3SQ4(A#ZIUc0(@AQ!@6y332G3w$ltUe z#~&%lBPFDAG#tg$Vh6aulN@w=_U=1(nSr%2J@XFva2Rd)zn%WJD+RiJnx zDb8{__WCM3uidUfupI8ubIY+tzPP0L@V%WKQ3L_Utgj|^!Bys3cH1rK_D8z1PEXw_ z9>81XJ4G7oVQy|gGF?=S0mQ_h-NSurqO?Lmh7Gj6z7lZ2)b`evW*R6aMRYDGMpAW3 zI=i9BQpo14)1taZLBPqqF;tF!fai?7Tq2cF@|`c{Bw5F?(bdXlvX&Ue?CQl!vRk;- zynkjUR@NPj>>qyh?_@Vn82O$?Lw7Wit(|tT9I;J_Rl|^)Lx;1)&>n@p?PszPI_h+> z;CxFm5G`)Mui;F^6GR3=nLpwXU>Se$=+P6=2A7vtq-L^mZcT|9IEQ!^k0&%F%is!|&iXp@50f19dj;ic2oJaMGHusR zR>?|7d)98$oeYz7lPfZoWGt?WnTF4mOu8iwjkd+&DSNuLZHGrkZpE-aw0G~lC(u9= zhtnbG5dc-a@tqd)C-)y}vlV~G`2N#>{x4Rp)#cbynY6fpPU6W`sId=>1&$5iH(K=x zV8%eWNi`uDs-1?hX%f}z+wQ@>Dn0-o_|F&C*HoEA$pD9fque-uUWRh}?p?cb^{QnH zMNJw*$vC^c;ta_7Q1xpICPrZ`<^P6=!R4AfsPbamH~zUuhV*y0RNcO(bpr3xK`dsGMMPVhNq2pu{Gy6y1DxjvapYAm}& z+(J2tn8S>V0~Ud5Scf@QISTtCud@#q$^J_~^*~^?&`d z-T&xg`4}lEF+|Q+DydnWNI8S<1N1Gng=*dbiekGfuw0y+P^W~XDnF68Tp_ENrGfd8 zFR;A-Y}amHxh8+d@nSy$JgY16RrlU|SGI)RC|RGLmZ_jIj{TkH%5r2nbP%;LW;D_; zXr){dMQ3+=%gsh01=nl49RR-P2+n3oilu|BA#Nu>N;l!~xTJ&~GClF&(#91@(Z(Q1 zn>k8rt0jA2o`M17bLU9rSFBtv*{^^78@qr1W7TfsalUvQeCoKR(<#wT3z@8qJYRwf z9G9e0(~c@cK2K#^QiPeb6^cbwjis8=X^+A3*7l~34?rxx)9l{V z1SqPtnu5mNyZ2Nvp=|`sf;JgJh~S5VBIA1Uc+;}kqE^Aq&CJ^GfB$>?&98r_%t%$F z&g>HLQGmAh6RA z*l}CWa7Z|OR1o-(P8f%rtId8w`}$Ns+B4wyKr$`AQv7q zuS1~X`F6K<#sB;Jzxz7{qmO_8vHk9Mzq3>}E5L#ii8lKc^AoD-a1&oTofv~<9*cbe ziXsUq9G`|c^4QLl26b4gPPLGV5#Wu%K>{X0iRZ)t5u|WNI34u6u^m1GOUoAa~@5r*x7kL@`5zS6ErRrtt&M zZ9ctxaYMk&sR#M882}o?Vhn6eOigM{Ho=T@Hef?sEOENQa#$Y3uTbq%TxvM=6B2a_ zIxIKh^Myt-RXivf08M6Q02q;eF4vC)8^8ldC8oV|_nv(J)YOcAmTyBcutNv5V+WqoH4hefj({ zH{+HIP0CidUxY`v-h9q~^Xva@$XEXR|L`l(H2&v5{iA*S;m7JwrBZaL98HHxvFo1m z@1!u#baBGjPOCkxILqe@eBqgBvnaO18^Q0?=+KSmfMxCBqfd2w%=Q3=N#-?NUv$HQ zB1sW!QdVs1dE;1-t92LYTYyX*D@mI223Ty`wj&6--WszfFusjyP5 zVx@M&YOS`iuzay-lf|MO4Qd#x%S&=((P~|)gvj^2^WJ-s_?elXv#Zx`oPp&NZkK=n zh>d`98}4Z7Ko!Eu@v)N#3&?z*3%94$Vw`X?U!AUK6s6;e1p(FCnrJ&SbMtoR?RTu! ztl9ecH9;#X)o>3R^_n%Rb=%)P(6HUg(u%!x^OgeDXP1KC&ZDrOZV{U3ZJ*MlhQXTL@n%MQyWE7u#An=Fb`h%I89&^xGN!Y@?y zve#9GnZSkk`~1R^0@)2|SUOb$T3e@;vplZua56^N4nd_Y)t&O;VJO>lVE(|fOd_rp zI)lRmn~8kh@)Hx*=@RUG4cBO4Lo6mh(eHcGKt{uu?f@VdB@9(|>J0@e0w6M7rBX%o zj4PKeYjE_#-~V0}UQ{x;HeR>qx@YOM)DHmNx_-3ZS)ELazugvi=5MGE;5!%$?6bKm z7+G<4+RF91hDkf#K-4sNgUNVI!4}&A^x)efZXvcqVd4EB{ZQa&a&E@1-?-r_R35y^ z4E3kenPs_5SFPtENeN0y?Y1==b@_1yi7TaJQM>@H@zF?~Qm&DPdovkF*{Ri(WI26g z$5|%XA?dww{if>x#T-D2sD9<6vXV3OY_TKMdG5S*O9RT!HlJ9dT(@E&XTcy)=afX9 zZUmBZd}nxgFr=F2w%BSb+;BLS7XvKQ>8dsx0y@cTTHMuAt!hWrvXUjh3yE8^R+k^6 zx=eDV<4rm$+12aUr27sn1G~b$nEyBf%h4GK)M11(@z(-t@OcI(zT*=t>vuEPcv;BB+e#tIf zx+wLZr%xYSx7D@jnMpT;MJ3zfQXPZ-NhgHDHn>ZJfT*g#t+YNA=8JRJVG256J< z%xm*Ie{~wh=c}UODo@W77_OC$WH7G6b8I74a0UYzinds>B!u>MwxDbnFhaIaA(V^-IlT2tvm1p zm>KAcwliJ3e8p1fgeup*Ka^|`j)p1ub1Q3VtK50}ZG8|YNXk7CXe0WGNtp)7wi-B$>T>>rt*}@TBTXnanDXq$=L$>sqkPsI2W7`4rcM318p0Z zuBZ)r_nmj0CiE#+!=OS&@+x^AS%gm1LrusZ z$oFjS?@KCd7&mJ%gr3Vv(i9)VWAQiAb!KI9HX|Eipp4_bdgHnP6^n1EZc<%#@^Pn` z?~Zm{%=+z)I_R}3i%06JDkEUD5}fir2)3V*e13Rdcg>?eJu8nN<+|pPbLtuDr z*7>(YLWv|khXN-y6m6oNo^mp%&L5t_0lx?cQSx_H<*sc%ePY{BA8Ysy^@1T6CK!ZS zc1%;4WIcRHkwl@b2;gKGt5t7HX@XW34u|RpR0l2u7n013+tWvnZDx8}su>R+JkW60 z%*3Q!Twk-qfGKaYLA!0aL`p4l_&3}Ha)tw^TgYHu*ya)#Lb3@JgCqiquEovJV9)a{ zo=#fNA6mKHu_wFxUN51Y zS%|*J+;B-WBqyFalnkzE5J+8uD)8}fNlwJk72+1xl)HN@gMB;O&lH3P{k}cC|EXk{ zmgkr3{JB+2A}JV)Td&m=(8*;p0@b2BkYM3hLiz)!T!Rx(F2sgL@xZk{0dO2A6+DZl ztUK@pa6W$g*!CM$8zd6e=ykNoi|0qhU~_X*)dVC5afE&D!d@bC!uyfixTTJW0BxWecpny{gfp!)(lNQHI$fz`WRd${?`_F24?NU94)a=)-N zKlZDDI8+W)oi4b+946%fJlAjC6cyvj^=oRCMq80iZ)F+P3#9zay6v`X=5T*s2^XAq zI$S92XvxF?wH-H@OG2aWLbIu*LEJ?Wg<5wVxO2X+Ab`MzMq*f_-jdZ3r}#Y;#mz^L ztzT~l@GQ+QiLw(zGF&a{w58)Q%VqLR|5|Jm*I+U;Gf-El4#GPg#aQJ|TvgF=tlzJd z?8Mh}+Uo6&b$rhrZEcD6F^HMy81YQXW)_?VI5&w4N3z%>^SzEp7ql7Vl>J3Ch0*|wGW1zTP|XIZGAJh04*b=zMfD$L+Yzm z5?3%j3dB3*gAI32++p}MHnLi|Dv%6lpbAHso?#fWbpYn_xkZ5;42p|DI|6wWG*W4q zfBfO^^>6fT@7{jP5}t3s;$gQhP0So^kBn0tz*rTql-VRKh`Eehyx}lASC*b~84`gQ z4iBmvfO)`jwd>g@+uOETITBK}Rnhv=-lao_+@$w~A$ro47 zsm-#uv~()K@|RW5mAu4a+Rpdr;R8F^*|tursldUKBy1<}neuj7aKt}{qJxt`xV_Wv z=>zXpiu%&BUR_&Ldy1-|7Bm!#_R&WlDv7&$=WYAw_aEBP;h|+LW$)a+V>TFC94Wei zZ^2+-1qK{Q)I!@yI5ACW^GYu_v?pZ2MhsGblr)eNAA{wt7GC77)$d!W)wCyjyS8;) zHZK)7bX&MDeEsQ(N!PCHbi}L1hHx@u>2x9h&Z}$ZRdv|7d{vS>r|I^pge&?T-GWNF zY}=bpZEt(iag;}NBVxMN{98kF0ltWjdf>MDb$S*+V~M-<*4POFNn0JKXEjg-r`>Vw z;+l03JHgkWet_+` zSq1uAZb(e_1R%oyjo=OXstR&^Ezh%hr)LkIZQ6dNY9ogG2EMu%3~q_b8fwHxGGGx$ zaC&A&ZBl#>;D`1ogIXkYZYurtRd`;n{krXs19c=Sw#~WS-jVH~P63Lb`w8W5Y&)U) zjuwP88lvO@kV%TU5AuJUcK|WIW^ZRt=N`3`N~x?>(s1BenpNK0vxR)o)|Z!UYGTUz z?Y8xy45Gc8&0CDFE0U8G2?Umr8KYw*#*uy>OTv9;kl683v0Y*j;2!(2RNAWSGU)Z} z;j?FUP-}1}Yr)yi=QTq?)fxNargr?qggDOF5ep^gu3Wx$RR9j%ZVkmtIu+^4(`q}I z$H0bOUw-H5(gfEZ3aXE%1W%dJ%erm?jf zj-jMN?Sk5aG73dS{$4&hw*9SVwpN_5#px-VW`DrYw-z#%gPs+0MVo})H^Q$`_(>{; z@;#dF7{&t|rbm)Ib+!X0as!0gD?tGf+N#&H{c_o!F?iUhnMX}J5fiSNEELCGc_mvD zMNxI4f+O=06a*RYqw-ArnxC7OU5ZwcI!WjG>w1E}It}CHx2JY=uVaV1JND$!r{a4d z*Azo_pvRWxo6<48ba6uf z;}8Gmx6&BB!sO`6x;2iEEand^jt1puB)|jUplajfzBmSFAOK+L4u)V^yxCB;3EPQe zU4|nvc;8w`wY2)SSvt0dhle)IWF-H^b3m%c2yi$69UM-?Jtgy7n4MQ^Viq3Z#zouM zxGV{|Xv+1kYc6lrt1)oJfCS4Uo;-YL^-9@B!@l{Uh&vKI*bdd_sIp8&#I+x3rzgby z0(3&rz;+Ueq-=*l1znF^PL*5uUKdu^?fmMR{mVc9vo5x9K7*}%6-r)PWRiak8ovpxts zpBEtGxRDeh+2Z)8rYH1oTDt^ZvUVvN%sEQZxz%<3%zHa6w=V+AB+^?Ize4wo~8+t>g*k|}MuB{TB1b{#kAPSRR(o}3C4$~#qO)Y1j~?0n_NEQ{Jpp9`7F-%Gw8-N_-|E%c zn8Sw*4`u&EGHdmw+mME_;S5lc03;!A0sz|E-L+5ta9=}KaPg=Le)8dcTVGqTd$-=Q zHk>R-=AI|Rfj6ir;y7T|fm)_QIbI~2xFIa=+5%2H*X8W4rB45Xe@8lnJ>R#M=i5%X zW)JrEtc`q7p%|_(CF7>0*Ky#j-BSA#h7gY@SRvRA2wFYAZfk4j?b`M05{^Huw(W0fb?qZDttlD5+l<<7(p_fOoW38s1G>K zsV0hXJRvPZb^|9_w1A;(7vRjX(B?wAZZI;dc6zp7tJo)7+ty7wuncz)P?b$N$uI&k zQ`4F}Pr8aH;09YlOH~>A;<7*wk39{ysPc7EIYzca)vw>Pwy3~ZUM1pGp&JOv}^ zA9IWz3!CsiELjQ6KHGj~&kl}^y=_o2@{?22&*fYo=f(S@nyu;|+(>^g2Fn1T^A|5D zfJqu`VnVNhKm4xVz9_+R)H_rP+5$N{TiaS&-f6VV@3E+6Ac;zfI#iaaG^5i`CuiU* z?2mZ1`BeUaIT$(-#4-wNZ1Q99Z-7i?0JwG?Ex(NoTL!R2vlI88W3S<7ry2;}$YFQR|ij z^{J#GiNXa&CzlpOw+B}SpzQdktg^=Objez1`wUHdL2+_289Dvm{pPopPv`C4o!i!C z%DrB<44L>4IW4Nl$#H<~$m1!HJPqJwT~o#PMC$n*ny zvVUODDiv!$F-fD4kyV99n!2pkR;#5iu(mKitM`+invn5uVC3_#flf|zSP_WQcFQcKy;-`|$t#&L(mbcIVnP^Vqmmt6BW*u%DIX_Lu^=R_U4kyahMJYMD{Yiem8a3`*a^|QgO4>UFrvlh^`yfM zP{z-2A36&Wpn=oQwdAt!9A1y=jvIE-`q@H3l{557Bg)SwAKw??Sz1`MjSCm-H^2Ff z271>P7cD`+YBkO4_N@qA!yhROB!ZX~@;OV#kogbLDT^lu2ewzLSeMprFp~Cnw0f3-E8Zj9EhEa2*3cFUDlFjFE?l{! zN+HQQ9j<|Di%2Ooss}urE0Y-elpjNgah>& zc$c)R0TkjbtN4<#$+5hk0|EoO0iS&)8UGa*!2yLgJ}xhhgK`NZl-KB}irL;r5PgAC=5w zC~Xv2ae79{AhwR3<7Y$%z`y3)dSYlhR0Em!VL%<*AxY=Ge%F_he39+oCrHwJ?Urrt zY}vD?(7xPk7QUM#on)Q36#;0@Z&E%7dJo$C32XI{5%e{XCzYH+(QVj^x$Uf-dRyIy zX5B5^%4hPDm*c)SuWVSiR#st49ooq6+wuOch9V%Sb0N78x|J9d7oVRw z$y`AG-Rt^e^$BFx;0;nO#0lUOc6RoZosS4ciIiQvdfh5V$9DVLHLD*UTdQjf^Dd|??kQlN#w|-vj(fRqsQwf$; z4GWVH6jQdgHmzPRYXZGqF4@5AT0VuemCMG--aX%!?ErSL9j12a05qyiSN#n&AQubNj9x@9tW+TC%wBt0G7cLMtVoO)K~)(POnW z309h*#qb_goT$o7Fms$jfn`7r!(6Uh zp|;t0Q&JaMMbBw^v&dw6N|j~!@v022tm!)gTO8kMyG4EnAbha1r4~8^T2M03<7U8y zc?Fbm0K&AmJ3Y5y53Zo=gt2m2yswYwcHbih8i zHvG)_?Dp7-#$p+#zYm}h{fbV~U?9#iKpU-XKF9C8eODcjsp6C^Oix&4chlmiDUFz0 zNLntLmEsQxJ+H5gpwK`<+d(Y~9x5snYOxcuB>u<1=uq5MhPHTrBb- zkx+tiZ+FM`ws)-2tO+dRYXH(|eDY{$EqJ~?r|Aw@rpin*%jdd7*&og2gp-m(yIWW& z^gHzun~x9lce;#RY5Wcy_K9NFY6rVE3g}2s*hvZ~qwo`fWq!xtUMlQt0h&eWq0<%{ zX^~bc0k%qNd#K;{H7h1h6i>)bhRkfRe63co-CEV^URT4$438p_sX|fMEknJG&jeTs zTaUmpN??Fx)Og%7wwxu|fP301%TbojNuru_w9l5ls)lTk|C-1b1Wegx#@a{6sY{N5 zGR8$q8&I51Wu@K6b8>P4ngCDQ(&$mv%9XJ4=G)@JlHIs=Q>_lKRXgtJLgSwIN2fY8ifIrcn{}X)a}7{tMJ@O34SHJR zTB%m`_;#~ntIMl)edDUdhoi`$d~}QBQZ+z6j@8#uf+et%M!JcKW=FGd zT?)4z)Gg5)$rg}w;`rRnC0l+Fvrf;qy-L-#p$la)_J1CIruT5|>SddrD9RCYU%D;P zk_>S8b*@j9PsW2Z@Aw03tG4gZK=qNjb*Y{XS?8F zDBC%1wXMpULlT zvh_t^*-1Ql)~J;1V1L{8cD6+g^x9pu(E%1H)KJM|PQn4ogmrpdb-2(~2jHesS;Z~D z&dJrkR0D}yrQ>5=m&2WX(HHLAxaH&|yPoYneQZ<7m`xXpPS(_;qHL-NM)WJ%=hzJ~ z%MFKO6|wOKKQZpZWPml@aATtZDmq(QV$Zh9yZTVqiB;Z~42+S$-8*RuU3|5*!UWf7Am_;Osnv$U z2f-_p3KQpX7-*{aX}My};m~%E%Jz6`Q}R(aZeEi?XEJH)4_sv#cfyBYd1=Y1GsI#7 z%WD@e*tv77wtQ}NEdBGkjOQ=?x)D&0DuT46xuIG?a4PNZn1`O@?ydqC8F(5HL8Zj& zg*;@Ft|{OHyP?vIW;L=p(+hK|qIGID@%^GHQ! zw*k7SBeP=Cl;>ifIIgLQN&TB;B7ls1zNn0tYK)|o;t89Wni5F&yuPN8IaY?O^d9+4 z44n=xV`Kt8BeQ0^Z`F3ko*o`qV>q-Y$H%s{w{P>)Q+Dh64V#{tP<0vmcWqJlZGm{F z*o-&uCBd_Pal@^pJqI;ItlV$yEz;e5`3+EM{rt^=Wk51unR8B(g*4O7=9ca3Y-yt% zR2nH7Xu8`~j-_@1T_T*H&@kq3X!G;4k_uyU9=-#xOh9?|bW6UY-|cG|1z>r7ea(LI z;~#4?sDPO7+e9L135o!Tw15u5P11v%t~69N?3K%kh5<##tsgF00x3%pKFwFSSq}Lf zIPc-=Wzj?cKtW8r<^5{So*kD|S>CTy?4!>f*wVQbr*p_M z)io8V<+WAW4t{81aXDNL@ZAN=U-Y4H!{{xmmUgYvLL2u`F@|{)8bpqs<0L92!=W9QDpEkxS%Q_i5h?%+6Vsz?9$Q6}k;xcZ6kseKtIBk- zDAh0uJW_~)8w?L*r7MM%e(I*6W+4(^l#BZ0oor z$=s&r+q3f>J(@8u5ASCq^jO^aqcWrff**^X7L(2_EnkYs99LEFa2f%^jQk9Nv zf!(eZij$T^LXH+zl9pP*CJ8F3de&V z3B0aeTyx4QexOX6r8I6)K-s!pUn&RHMqRC}58iv<7AB_cvp+nrTr45SQ%EJ0XmP`- z6beOWJDrZINhEZ%LX#;RO+r$2s8pbY((8A$K~e*WwAc`OXKkqY=Et1v;FO?p0Pvpe z99XH-vx?WZqjtw0Zf%LP%~A^%6HtL-T{`a<6%{3l@tET*CzDc8xpeiKWC!U=@Y(q; zgXQP8LpjC`-SQof!sivB!};6abu_IMg%c|Iy{>{>x8rCDp6|d9Lt9Rv!~u(QYbyf6 zv_CcM7Q|E~>9=|cT3*kSmMU%3ckjNVS&GLGAL%)Y*^JH5K9zbxQrvTfytrwl@&8ZW zdwofEU1@$hy!Vlj-jqebg9b!{V7uut&5`u~=}EmtdXcpBptbZe(wLq$WYfWxH|bqu zMr3$zwSM1;TP&bSg40cqD0HlqtAMIBk@uc^&bRmeOuuJ|cv9ng*I5o&Fd9)pA5$&> z4+Y+QJaqvRi)j{JLV|eoyCZ;}x=<2q;}B^z$0Mut`gT-46CDG^`K@a^wz0OZi3p=u zxUZs{j7Ab_v8GoyH*EX*4M)Q$E^BQv5dD|-l0{>;X|;<(Yqx5SYQr84{bB)llt#uR zals1}fW|j{Fc95~spr?fl+5-?m~lXAeKSC%RW? z?z5$M)?2Lr#{d8z07*naRD2U`y5<&%Il&YZz+S(v?<2vNx`yNopoxjO^%TNVZfe~Q zQ9E7$7^McLZguvc#0vemU^OGxbJ zbR?YJ{I2LC3i)MQT3fNL?HxHeJYp8m0 zsfLaG*%uQ6iYkJJ)QKhzdok_dPmcy#$mQI>FQ#4;?_6(EJHagCB7>RQU3>p~?^!8V zum|_=j&Qye`B=#x25zlV8#H0`Nfq;;Fh+)g^H%bs4 zJ0Iwon>5V`{~Ar@#8dAN?7Y^n%T`xj@6~30TNj+j_ky30-+*ppFrI2N-% z|G}Tw$^NdL@9o=CEMZv`$SBb1vdx_;7_J^0AE1dvm`Y~M2Pr)gvv4FT;EW=i(JQoz z8KDF{=T+!B%Wko2zV7$AO%a9hY;MPuiXGJIc3N*(FrHBCbs64tyKS3m%XV#N%XYT6 z)G^RPjYXC677XKKnU=Wb<|}tpot2hXzwuz1CG#R+_Wrxu8z|+me6Xu9lB>$4MmiKe zj053>vH|fRi?U+@0U{U<+}m2MVb`u-w`4l8@VK1IstaKt2Ouvcp-tf@)-9XLsY*Y7 zvTNmoV=E@oN?ePF7z?@NH1YA`j<-r@*&P@etpP@^SpEQ(S+9U+)(gTyy5V#JBmnVY z+k}s$bH+eHKOBri2RggBvSW&^M%_lCu$0HRfWWKW++0^TXKQm^-2z5h{0U&!&%@TN zShQPrUbU6gRc$ZM6YITW%0n7RjNOs+2 z^*`o5>jU~HQ@dz1ZNGeBwL#wo*qKeoc5rg4y+zZBJFnXHoh<=5SgbrF6qEcs_S)t3 zHQTy&-Bvf&1(uxvr(_u@!kV#HC`*&&nrfw*T~*rDF-LolH3K z94rGMI4c0l;@NX%rMPc^otT1;1eOy?HJRYVwwqOXa*xEzqnAUA7nX|%5NnjZ|SSDNi zoQ>T#dHt|kw=qDh#W71CLI^VQd^(`ef6Cxk z%K%m;WzT^!R<{eV-0HgA3yNx*g-q+*e&ZKd9!}>f&|AZiRl7Yqu2cn@`)I~u5!*l7 zS3w6=@|9aR?dJ6zOXB$s{UhLldZO{TrPFyU5RA07W1H8mJ6~u&ll?#3zVmwr%bpz* zYV^I`UEAM%qLCuLm92Vhk@RC~(Tj?q=tX#=F0Po)veeqKr0winR~NewFZ)8E4R$;vnnv2X@(N*^}~x9beU~(rnrG zjhpInGLGST6bl*K+*sF$%N@*NRp=a=EZzc}6M$!B#j?4=zX(Tz7dc=mLd>k$>e%V= zz8yb%>c*nAs&%^^$03E=K4hxESlNMXjMu5!q402sFp}Kd-Vle7d(Yv7?HiRj9cX+X zCB`8*pg*wf^$okZwPQc~+aH;4FtjXP8ehPY@u(&l-izXf?*~nUP!Rw!>qKh@zh{H5 z734;n21S7P zOtA&Oo%mG7pnTBLjw9|!r|s2OUl)HcoymRUJIlZ9@Zdn;s9a1Y7;}@>M_MT3bM^|Z zA6+|5uSf}9P-ED47^72YwK`4bQnT#RLD^dX#vD>oq4x&P1}+lULFZS>*3gy<1$*`8 zZTsnu{$5>c?EavBW#V!3Gd3VzWML^r7tncZyEIS$G<$%!goGp^A`H2-zsYbY%E)K| zmhtd)E6921PA4-RfC!7LovuAQJGaBir40bXSPv$W+ILXi!>I-=TgDUuQ88edbwj68U{@pcpmpi=4M%p>@7wPA zneCR(tTUTfG?}t&Iw$)xEXwe9zezOu+KRvx#US)AIQ8*Z+H$3$ZSPzYSWagO-(-CJ zx!>)Jg%)e)^5WFa4<1{mT~}f4Iqi7jPBrHe37tXU9W~mZI?QIGhjLvxZ@5#QPchR^ z_99+#i54^rCK}R21Vb(ei?ePrwrC{&94xc< zu$I`LFh{_>sXyu}#g=o6ebUh|_;9wp6Z2ag@IIYcV>FhV%9Dcw8_s-|Sz5AS#3e7& z&`Kv0wz0NiE6YWB%#&Owo^~i?@p#&D#iDKPTo+gd#PdG?MS*1=COSP-R!^Tkw$X5) zh}mWZWA~1_!z?ri?dk@})@G(Eo&+R75WJSn^(}!}z%(~YQJvk6mCw$^*-9p|0t%53 zRsPU!UB79)M$?{r^08&Z5sUc)E@=(RCk0oaCU!g?iFz>SXRJ>EcEB$V7aIUhO|J5S zmf<&eNF1^{pcKitIII?C-4gvx#;Vfk>^wd_v-^98R&F+=Jbw4xcO_`V0*!|Q%eXC> zxi9Jc^8wEl%e-_pW4G_TYNgVO0M8c{+uy{U=tZzBk;H5!F4ytVfwc*+84s*huUfrc zbE1==Upy$8VdboEV&q_`s z+xb|k=UKoMc}>wy%q^p=hlj`Z1kiI;wTa(v-+t#?5=A_D_&^&bBE{|PEn8h#5g7JF z5yUSe6uo`>j=XZ?38+4Q*pb#hcddR|XZcrwW$qE2b@=V=dQEAMfMpfcjGs}R_XoN+ zvICnr?E_X!_+Uf%;zL%C2(E_CvJx;&0mt(=9ZxNlNNV!Hp+(Y~Z#1>fe(`e)&F8X? z^Nq*0L}WdH2Ui^qBgW>7g9{-j2M-0Zv!eriIp+#D1#=d2Odhme&`XGFqLsLq#?6%+ z+8vJtmLDA*+TEwSR%tga6i?WzZ@r~;OPB^lVlI=iYuh_kEaVp=zo_HeheF~kZ*1>8 z2g`ij%e{JjyVdt1SY~f#9aJvQM8m+Ml08LE1`{XX;&b@Zqh$b+DM+|y>^T%A;&>R<7c@sGr05{hwMQ&W7a5nPpZ(pBtdPnm;SuswE}3}c(o-nbz zD4*D%d8w%cg$DbMchBG`JHK-$n1sK}IY;qCk%e&5Q94|h6<-VWf+i6EkKHBC806z?xI&H?HRcl{W zY$R`FpQ>>-DhU$U(EELB!RP9=<>;xm#e8e#2A;c1KyR5;lTDTD)!U6_w4xUN~(0g`3E0-V5xXan=fj70MHtW z(4^~3!YN{;&q89P1>i}g^DjN%`E3^b7dy)wNPv^evtyeL`&O--Yg1u%h$sti16by| zaue8qDi>94Dij%vvYhoCg1fm(>5If<`d_JB$-kO{j14N8NNICeEiBp5<0p1`d~DfB z)WUO9hbI|#sY#5)<=1*iM2veYvnH^dpFP=vk)cbUnSXM+b=W=uqSzhP1N7H&+Hiwo^9>?KOhG@rQgjMDkO zgV9KPK7~8$RorzPGNAf}qgF_!t$cW5&+b38wWVc+WvSy_T6JAu|6CziYTOW3qw%~e z$SIWl&@LdM1?dh#u?c98!~seTCV=vMVw_r%6w`5>L1%@|))$SZJssQQ;}iSYy}P!5 zac)z;S!u}yjV$F0&VgqRQFs8$vLSoP3-#Z$dS0Xr z@_D+?gMro#on_ystu=(LBx}awv@?wY^l}&Z8m1QDAPR4;E6=0@#;za&Q$Q7E{qgw} zQUK=VLQ#p1g=EGmr{`8aIhB)_iySBCcytC}(GyQf?@bC7set%$@(@ht4q8p5bQmfUF zkfwuJ;`m5(25uTWOjY%BVpWMGZU{6`v0`}6&1Fo%hJdXXV3mKns#OF$qH*lBX5wz~ ziUh){(2sZbt#@^4X+#gC-$Y^-i!;K4FT-KvHW^+#@LDYTGbF&H&dwrAR9@~>hLCo4G%)77}z-F@-C_EoBn!n^Wj>vL8y~gyHbFSxPzA!(J*jA;JO2r>D+LS zWNXyv=vr-VZtLGU&qd{}ab^57g($>Sr57%LG93-F96%BC}m`vaCu zrraS#DxYdCXV=7wO^38D6*@k@1bqM>*0v4`l9;Ar^ZTZ9H1NQ(Mx%`3$v=kgzK8?` z>$L|%J8w4a??3w3o|Vs)uEjb-%=6kSx0T+f5q~-*pI|u5fICLC-rC6*N{h8qe6HAj zS=Y~(f#qNRUXHWOI%3~p99qAs+I&0^*PS#^FA0rKGhLXN(xe=a5k+IcQI;n$e#UV1 z7H0eq9~gZT6YTCc)2y%rgPB;ua?!Z$-MeptM%(ZKh%WY>Od=t$qreDKA32ox6Arv* z*TlXPa@3xX-%HGM36c0YYri2?i;gmXBJf)T_E2bH{Lvl`tv#ODMZ0AmKX_#KcAv^e zm%rcI*|F`-bu|+ht#UB0t}I(Imp7&n2_`48nCmE)RxFW83oOf9{u|6${@k9k@W^E! zVc&swI_o!7q_gkv_j1gU*vVNqdc0HFm_{PvDf6e}FZZ=}1Z<&Ov0p7htT^kO&^Tm~ zK**M}d3*TjUF+4FmSM6YwX z>Pl(hk?bfKS||Pm###IcRfi^DknDg^=s8%1F~)Yqy~c}PG$4sO-Lx0L3|Jof{MO=k zo=&Yf9^28yg?;+ui9Ojru&Z|4CV_wwLATacHT4e#e3r|mBt%RkIlt1DOs6fETM}4a zT3)r%+PY<+4$@Ru6mLvQG%_0=T_0~8%E5}6IHM;w_JxP$EQI)QArn)H#d@QW zwfZA#^au9wvpxIp@dI&~`F^}-_=3yDf|BU4AWLOZmdj>sd)svhb0mLlZ&|)jv}_@7 zh2qL{VE8OF>YjqJwuy&eFfloR*f!Wl``};QQ^=#JbTRKd29BFJJ50Gea5r2h2z7Abz_clJAUmgiFo%v{HrJ|S_l9*+>P%&XJs$_DJT zR=0;IC-(FE_wBOTbmOvM(AHO062ZXcY7A0%hc-F#`3Zg(k+TC zk8VZShz?rZaLnD?NC-bvXXoUCYJ7^5P->O{m(xkmRd&J~oK+^;$LK5*BmotpJ{;Od zj~?2m48&pL#LL)eH1 zmh~rgZb}k$cBud!+zS|`-}~qji_HDvIg>EUG>O-u&JyiRocEBk`w|ssK39<}u^pe5m79SV~ zlbbiL>C6dHlyhz=$MK zrrP6?wMK~i23Bsi?8(uQJ=}d}#}^msILFf&TU{z@uVJEP^NGOn+WLytP9~R=8wNCt ze6eIj&a7-+(>K=HAL{k{1Iy}!xmaGtel-A37b1JZ%BM$$S+_2n4g@#4@C>&Z2Lfu? z3~&Ho(Lng-dm+%H+sIhdg_Zav&SK>B=+R^Q&bQyQtF06gmOAfRFMo4V1u1JP7KQFVafE=zP60LV{lIvmJfQU|iQKx|Ha8}xBR=m{)i zLpH{h2oVw=}@ zRHZu(>eBOy^AELn{`o)mmjN6velHIQLBVldp1FXs6VNzyaHC$cakp&;dru|$6s=jetzzwJkb?SKYonIXe}N=k%&78V|o$K9jYjQo+_&S2Y|bT!TXz ztFg6>b<1T70?Uj;`8%9cye{bHuKO1h-2eRh`_+AiF9XZJ><-RE*?JN1Ki|DUvNU<^5vzj8AZE9UBta&H8(ez>c>(kJG&_B+W!2fKeP9~ z^IcnCTC#a>Xy?28Hfl62jR2MS*y+Twne<{L?Q>cPzne;VdI`j#xcDHkzQKvASlt zY+5c3iCEMnY31{xd$HfZJKfycv68GU(~fTB(scgO%WD*T6Q*A7Iy?JGif-9Yc3U>? z*X`_RUz7@7oJ+1d=*|J$m=xI?i#bvHVhZZ%VVEQ_`NYRvpHDI#Q%j%E9zS?!@4xp) z;wukZ9Xmffwqd(#A@l3ZVn3rPqvv1n_7K=)p$9ttC2n`|{Pf1)%$Ow%e)&pyA z-gWy998*RhzEIFLcSbHvO-X{2nW%%^+0-iip6#BW*vF3^+S7wWo6Y^2rT~_A;F~T1 zf<61pn9eIEz?&P_YUNK>?mKIu%rtsY zK*`pv*%aXIb{aMxH0|)uCJAiPwyicD#Rgxz6 ziuDDx@ap2ye)Ht1&EBHs zK+NfNd{~}_L-KVeEfm{ap84AOg^~uL5>cR0@QZ5N@9WI!Gi9Sln3=W4L#wpAws(4J z_n$nr$A^bD#AOJ9dNN_F%O%mkV$qPLqH!aE*+pF^Y;A4Jc5d9T<<)gXtb_LwDc2zV zL%n{lV43Qfjhv1$rt7^{)0&Nny2|}d!zqNPE)fP%p7>u;ml4hj-VY!YRj9|`qw6dX zJ{XI83Si|Syt=B{vuAtu@BZ@Ns|p{~Yu2t*&3au?GT`x$d<3DMF0zDKb7$7gV!^UY zot>DAqmGAS7K+9cMxs&If&zixARR%kd*v#=xf~f}1}XuIcS`|6~o;jEC8^~0m^ut*B5zGf2hUu z-~V%eOR&74R}8u?;fhV9)2vy$ab;)6$68O~!kLRe#}bS+kzDv1%e0-%s_S^{bm|zd z%Y!-OH>~I+Y!Dya?4n$;-Q9irpZ@*-ptaMgR;^R3*%XddAYhqTOhT|kIBwZYW^q`$ z&Cc(4BQn+m++gl)Fcg(vH|vuMU20~f$&D-kg$U7x(!q#cBhr*$k&!l0IL%N!SUc5D z&z_zg+fVP^x5LW|>y80SbIT;++F-A3Z3*ZkqA1}*>Ubh7DlRQ+^tHCRX_-P^QR&aY z{1*_4GuP&^1Rh3AIe+N7Os=aY2K!81g`>6HS>$z*2 zNNA1ChEq+s@X^NYCcv0|Hno%EGdnpsv48XD|4P6Zz|$f2x;L=UWGdGUQWq5hqC~2o z)*$;1-C=>2*-Ql;_ZG0sa~=#v1#UHgfX1_k+lGe0nxihGJ4j3}dy+V`bbIE0b(Rrl z?Vg_4r;i`o?(vCrp^^k}bcw06j5w6EFBIyYWfWkUu3%|>)iyS_tx#IhnvO#u`3(>I z%d&=k-LLRPodjpri(t84IktMGEM6&}>j7%Os@wwt&R&pz11QlkmT)f=vN_cio!c$~ zV;B#JfE~q#b#ruhXy1SLJ^C;r;XRHO9gtGm_Jqg;yY_2sYT~;XcJQ4`rHvj-2 z07*naR4fFlAi4|AvGL+-`8pCqkMgMH1uzb?Cj3x6@lA$$ zHJ7%6^-Ay-?<14WnJ-LoXw(9+h=4L{bVg@+Hn(^%EKg)o2esZ62uCAy?2HV0J&Dgn z^%{?@*6Z29>6v}{=#f1>+_#}Gpf!bFY;9%PR+pD#9S3a$u*^C3B3OpAoX!{2Sw_S4 zhkSkIVEM%^A%_40LH)i=qkg3{KEyRB(yJF|)~r`$!Nvp3;&O3_t_#OS@_46CSQFGk z36SOQC9(=t(%5`(dBSdN!Plso)akL{eX($GWEl39$mawxW*rp9 z!?_(+D)zT`@7jZdeR-aa=2L;?Y$|PQt1O_Br86o0o{;HDKH}g)WV3z!x&RMCG!Ac_ zk}vJ+^I-Xl0O*$o@=UaxHaYW63aq+y+jT3S9^0_r)tHm}AkSi^4I!%MfH;^O0?>Xu zi!UBV4iXM9zLyigcIh80spYlmz57k~B_>Q)1kn>bMP29}6K1Wu>Ju_c0G3x@&= zq1IgM$WsV&OR)V@_sCD`W70x0fJZbDvOtJY`owhxi3*)eotQL0VqZ(4C5+|(>%2#7 zoSK7y*3M7v-_@bj#b}7fen7S0A{|P)JiNUc^){(7{`xhJ{?@m zLErYv=l0RV2lnvUuG0Jf%XFKVOb~3dMh7sT(+C)_#M%KYZ)|Pa`sTK!3pu&)cqyl> zmzQ<@{HC@3B4Fdp5^bhN-^2L#}J7vG;*Vz1%3c%{HD@GqmYtns3_$U`fipIfbZ zVYO;SE*Q;PRe+EV8*W*x_$W5j_)%Zj%+lZTe;P;pFDhQKYeiDn*FZK zyfev+6{yH_8G*c;w{ED)Vr+&J2M@>U=DMs@5c#EZdFP``df2adef>K;zZoo3rMSa* zrb@PYQC3W`+*6teCC>D)diFKgVDZ4yA(K_xV5o!68|`sDRJHqk`g=TeIY1D@Vf}?V zod^EE{+It|fAYtFY}dB0s{-GB{Ky{Nd!Q;km(IxE4_;WDI9a+eKA(k97@JR{OyZ{b zI}S-4R0y?U1DUenVTI@qEJAID;;3OUMwD$Xo40H(BcT?ZWjf?+Xmiq)IDCo3?X>M@ z_wU*-?mv+6JKWPu+7((^gb~@S-Cpob`Mo7DS}Lj7+SuL}SZ0*26v~h@xPKX6Uj~+c z`8&<5-|OkHVloBa9qL!3a;^fM>#OGzz&rz%I+502i!gYPah40FQD-y_JiD4K9BD5a57XNPb!tPbTX=gF<^5Ymb^yLzetpu zP3`QeY9HQvV4pmCWX-|QCO)4f5lt5gR>)`5 z=-IFT-txOy)toVa9XQ9V9k}kT>Zt^xTmy~U7Xm;2oBhR$yjGeTqRyzZltg?v?2W8m ztt(`TL`0la0JfLaiv9eQxL^yW-7Eg zlZhSID)!04hxXaiCsu6&i2Rm}#RYJ35@cnxkCH~KhD9tY&N7|l^^Hx@Fz76MR;}LM z5l8wPRCMXtTxcXbVITVr`wt0z?dqvqkUYCkO`rRHfo14|oCh9%o$mupR5=m|zXxM$ zH_>mUEEbQe(1LDraBv{7{QB#!+Z%7Zq3PJ}<0qo@5F7$$nSBTGuHQFS!-ollZ#uX6 zXli~eSIteWojGC51ck}|u7W3zW~U{}?;z5o9E8aXqPczXAq zJ^J*nHVL{Wa5ptBN~dg!E>WF1Ct8(Z5hwJ?`^4wk6^U*6Ym2FvWDUdO)I?OOTt#LDMqibe0XTQ(hab-(C@ zc!E9&{rrLFAjf6hyAdVeMn%`aRrB-F%nA#2KY|vzhWq>b0#zTp|9x9sUQ;pl@UsW@ z=;1?kqgjL8?@~TzxkSQB`Mec#S*d#Ahf#0gW695pMq?7|UDoP$!eoQB#~OqGwFrNR zV%{H#>cFG$;?T-u+~E@jfFlB%%%pc*xvpDZp1iIk=ltl5|K(E4q`GS>q-3-^==a8bE>ZL@LT zrbFV!orsbHL)MRUZ0W?-8`>Y_R)F9p>Efsxt&a90+#>+c;aJrAy`l976FWUWw`!$k z-}~P8Y<+b@KlkyYM|S_SyVkBD{tKx4gI&_t{1@l)dh>Jhc6OCt63)HJ%IfWHMO+$m5d} z70#8bs@;G1!2aD2f2ijeuuMGq;qIO|%LLfa4WuB>XS3p#Fs9Z|U0cc2V$Uo)|k%_hWMk0cI-I)Q@@Jkk^nQ3wKc|4C$?rP+mH=Va0 zSoS8GvZ`Ffq7V9Q^N%|=8g@0w@~{!tOMd%)zq7Ag{6FUv`vq$WP>nFuHxEdI!gRFN z?Py;DEbkv2*dPDdpE|*MuWwJEJkk20phl3#nV3l@ESHX2I_^5Tcru6QuGthc=hTE3 zHx|9bnqSnftljU~1dC;fI04yFIktdHDAedKr($7S%H=JSa96!X)W)mtsQ z`{o_{gj)sxYqcm+`e&BRy?{60khT3 z4cpwhzUc5|Et*J*3#$ae#p~tj_Fg6A>%4K zxeL*eN3q~~186v;Qiq9d(zM&QTsmbt8ymL1ToS#9*iI%H1V-Rt+3t63@9@-)%4Hid!N9u~9%>>k z5oan9v!!fa9c`eDp`_5!&lTlA%CJBuc^UGf3l0&6^T0B=0dd+9LH-iz@P>5xGT2Ba_+U<^j z!Qs(~+$(mj-;lG4b8e{#`0xyKa56F_9H4o1sZR6u>Z+~KEu?^=kRrGSN=7g&2c3ue z`?h<0YJEU7f}3bu)2r27-j>BbCqj5`ZRtO%djE8-w^rA6Z^tu)#Z#L=DH-(b?xUyn zi~INNq*fD%LO}e=?b{ZMxa7Fi!Jy{Pm;KM||HxOSLEut$JVD9*k8 z2O!IIgMY(LJr$+NmzC~?P?BgWVO3H|FE8u|fAYuLqxkyrnadx5?%`5P&ulX2St1;; zd^%}68=JPXx?$;fQtN3ta854hd1|euozYyls#u+At#59Da9DJnS6+G5(#eeFxsTWe z4u(qO!{~r1I1_uVd4$CPZ3|d;II#PVAIs5aB8PV$JT3hU6-KVl;7WllDqm=U}Qg=+IB8u@7%m)DIyo)BrmwY zj5(-|&I!V(H=TdrU|<)7U(DyWl+P>S?Z(cwEoZZaOEV31I(lOQC59t)e;Dt=DFhHP znz(m*YJdOnCw5w|OVGubo|c7aKYP+-K31`gjBEHfE>mK!a*>U3=w z2-->Q%1&!lb(>15jIAvdRTQnRE~(SVcz4+8srkUZ10{p5GJz=*f55uau|0UYC$M~m zl~u2=smN=uzA9G?KpmY+z9$_jz#L#XPh{~mCo+yj6N^L3rBW&-a#3t~1=m+O3jMNk z=6CV$tOH)$GXM{T7V8I4IT>^ESxAvPR z%vfOVw{$9_ku?qiXi&PtzI6tDS@zKxhQ z1C=oAQd-uir?*i5#v^gNx~fa8MY;_a6R}h4$}OA+4<6a0XM2_{ zEUP>3s~iI}C6Y5hBko~Y__y=m2U%UXkxJ>1*3a;Gce zJATm|PIMSwyK&S0_V~G$8I9NJ4u&Jxp}8^f%k}ya8U`*R zj5g^GHXC+wd}QUb6KfDiGU%FrHkPXZ;~@aDXWIkVWy4X2Dh%t3NOgb`K(kS)%Wm%8y$5!1bYk&jQU?DQl`GLM0^^Cg+iS(5-Pqi; zwPIc|#(3QAA;tt4oQ>NL#vd^Ok-0JKwfDH*d(L zWh#rhkWEK@8??K!1!Kbk@L>J*H$VS{l{*6)&Sw@2N9^@iUsFsv*C{Vfz6(NN4MRJ^ zt8#69(~@{jmxvY(h`Y?S@l5YuTstp=D*aahX6H5HUaT95Y?=*$RPH783W4Nddts{Y zER@_jn<{XD{V0>l+SOG>ofhmVD_1ogM64-3+UJL+%>|TwJ3Wi73p5AEK=M>ZNy?T_C7zI6s;`^6`p+7G_}ft~E_YSVc1*{7CG#O>X;-?W{T zWh-RTw!BnSXXd1Qp-D!i)wRQmOPl&b_RjbI$etV?*ryNg+wI%8?RbA*&M=M3OZ)Q= zKCplF{r4;$!dKOA5kJwVRkyMFeFF6ydOy8;*X|yk7(;h9LU^X{z5A{lHsHx;vuT&? z6()5uV8zmk#j+_|T3xej&iS1J@S>53026d0{JwSFe~n1uH`#^#{@2%UTIVjn20J*$ z)3xfQ9USZlcwjS#z%T5d+j#6a=m?|u6Z#G@(Kwn+NBE`EZE+4K&~GT97?-LL8cqcm zgRzLljENMwE$c4)n%6g0t=DR3e2JZ9 zJ|4Gkz4D6PSX;MzDrtpWUSO-)@7r0eW({atd;8`~#O<|jecSd=Pwle@PbBDheDA)E zx*e;Yo!Fm!@V@=&d+%D2bjjJ=BEf)l8g$a#d*(U87V#I4AKFj$_G}i9+ePKle(-}2 zl*opl79p8p)1id~gW7wd$%I@D2nm?^eMdTAey#4Q*hNfcrukL38d6`ETUU!CCQ zpT6eY+EKs@UGW#c(ZX9<0_|Sc>eUOyqgO87D4jhXArpJLOL29e2cYal76Xz!3Yfwu z@YqhL9UoKtP!|+}NIaN~$(HM?UKhCBTHjC<^1YAm+NU3VtaAX7IsmxVY6(!ZYb}Y= zFVD`@FnIT!x9pAEH^n)IipBfcKRmEze`wWu%l69`mS1v_@%AV z`u6?reaHUvz4tX9mlrb=(1l={@jC_g-ocT=N$wsVNNfxkeD~dVB`PEKy0GK~eE5cQ zCb51}nXD$fq_VM=a5X^u7YQ@jV(oY$V|Y+3BSaeBPV@P-^N(~<|MUg$Pyb5Yb0p{P zZL(F$O4gO<(qD0su})YwOhYfr=T;{S2_PAP_T~xK7t}9+GHYgnDZo(Ap9h{LR2PsQ zSt6cN0mI%M^x>@@)j4-nZ|dhGh65~r{K+Tw^N&6fUFyawcdP;xr`fbyH*Z?~qO6JK zpwqSp=iKVDy?Oh#?QCvYD(>hppWMBt#MstgU{4Q^ELU2#otw9;*6P?_|J_gQl{>GJ z24|oA;-@z0b?r~T|DOHed+%B<5tqvf(@;dqy>?Gm1s4ydYWEKI>>hjZRaw6$xar;R zd{;pu>?cgp*iRkY`FY%RvWiAw;m5>M*aeZz_ zhkI7LJhy(UA(71UDiW{*$8JpLWn{x%Pl6a!qpI`~ZFQY+g6b8p<1Us{AoHM!e+f@? zA+TUWXk69o@#Cj9Zyu#OL{eiVdW9!LIXKtnK9ecF9Yae~`v6SM7Jwkr7^1(A(%Vr)j7})>-AOJ~3K~(L} z-uNIyM^*EC_FTIA782&c#88Th4U_Bzt3DTuGdW#&vwW2Z%~sUY0)RbO4}6q%a#%l%!-C zhg(H7nY2c$X@lO-u5WLN>-FiUpGqv+gUib2ncv#|fy8kerIO;XPY(7iG@se6tqptq z#&z3VEs5S!#crz6RB~f$G_@`wy{XTZ);Dbb_{jd@!=KyrTQ^kx=0af?gBy(zP7t?5 zHm!A%$aocc(ozXGJ>hwxTgbDdXYJQ?c3vj1%uO8(I-(_9R?h5b@4&8Vms0xo`)!Ni zW;1nsWvxMkOmuw_*DOSw-ZiwU5P8J<%*Th zF6{Ax$2J&@ESb(p#KlN_b$!K3g`C_6>K7L_@AvJ_)|S0_^OkKam*nPBYak}>*m0#| z(@4ZF+8vuRE!$YPhx>>2-+ug4d*iKlY}jg9ED*Hn`HAhUl|x>2##tdFLIi1G<=SW;N;uIAdQK4qCpnWQklxqQlb4 ziehppvg8d56=Tumnd0I5xsK1v1(v6DTnHzc4z1H}S>^o1&d*M)dUq8;S{>62aC8|GQ5g$*rNw7(0(C92TTC)3FU0Su~Wz`OM57mGHn334Z z^n&L;S6H%qCa(}3Y*(lKuDx%V?~U}u*XHuVLqGaTFTMa9B6;A9JS zUa8uTe*RNUmlBbn^+^I94{ftlvO71fiNZyfnx+mNXgZBdeeqSMQT6QX)IL4jSErHR zk4eJ^AAF#Wuz2i?jxo&~_F4cj?kW7~z;ezaF-OG!@I;vUdC}?K-t#<4{p$^u0m?8# zpHH%Eq#|PmwY1$)GV$5*k<~7oARTO@;!L7krxO7;e7?{^7>=XLKx>F+(GwYSy=mHT zKiIGExh5E^-D)XFYh`84%H>Pj+dq(4lnFXhp>nlqtxm^wwzlL1HiG`sZfJtAzErf= zZeA0uBAJLQ0Bd)D&*q$yGoL*>I+o6cwR2Lg*xd(DtXL{pG#Hfb!ap9`wXIcq{njl_ zR^tS%;LAL6jw{X?#MI?}baG_(YZq2sWE>Et!oEY-*c0Hhmv{nVj~(Dm@MuWHGT5Fb z+}epmK1bvEswWb^1F-z-i!_a)yLjAoMOQdIIkr}#sxIrG+0YmiP$Y5ILL@=!UJFUy z#c(*s&b)gz7098Z>^g>R@p<7L%ZXw<)22-|!s6>RTeiNoB9R1R`Pxu~Ef zJ9d3*OKX;5iwJB06%8Jb`fs35FG$&gRR{Pi37g8WaW2?MH-9)_Qyfr26#8QUjHUdNU7VcR2%Ds4M-wj`P>2M~uJrhV*L%S$Eg zJpd*s0`Y9x=0U#>%VaDeaIMZWUBpF)Q0wM%lZmh6KJ=?Q%N**Yv5tBJ8}wRMuU%QS zd}@~$=bG*i#z63kcPM*c*#k4IA@-jrqVRUxfgZe=rwBG(E&wzM*|#k${X%iBUD%qP zuBbC5CS8E?c3&cKI*GVtK<7em4wWG=52}0D#1*Jh^b^-L+?@C$@9_n#7Mk{NWGfuEXSut}%OM8j8{)90|)WQ7>@tK+KxRx_u|*vIIzr z``qg#0LxqtdI}y`rr9%{4P_XBe>-7ES6H2*v8grGX{C`R#~q*3v}n?Rs8~&*vGyLi z%REyaSO$Z5bRW)lbOfAPd_L<81A}h6D~$qEQaZ>O29zsR8;-`hAMI{mUsoy>RRj;Z zUB$LTA6?3%?bgn=ZLIK2M}?~p3kJYcKEEBDoy&0vpLYxn;2>j?nohCT+^yeh<@&OH41=J=qMNy zi-g0^14(pXFH*Nc;n?B;bIE*c<_b4yv;+=$==uNY#3x`x)kR!1+$%`r)$+Odral|@ zMzX{4l*@i(z*J}eQViJpeXG~177zOE){W~{EFzkT+o02NoHOjk#v>byW;Vv}l%{4N zU=ai_@+}PLYpK#Xv}ENJ3CmIkE}%M{Sgizn@=EPZX0~6h*oV9OwqL%qDPV?RiH%je zaeYSuKYkxnrGxaKZZ>{Q!kKjK{iuO6l`EcavD$tsT0| zTq_D0k{X?Xf6#&f=cs~xS0R(L^3kD1gJBuLGa`j2*69yq!IVs;Gy$Q|;-h_4kp&n+ zKX_QUSg=OBgT9R>bBRLdp|I?9==iW%MzL(dAYPM^nX`{W+~A+vQYK}ien%Z1SwcZi zq6O{?SbsdWr>AH3@zK6I%dK`-ApqOguG{wZ*23I9pph>=s1%ieb|^d?Smp~_VWlLn zlc3Op|Be@I#3_w`y?E}QKE3?if8{@>VR&>d_LFY2WhbYHRz1IvIJDR5*l650n@k0k z88vH;zIZYI6EIkaZkT8RbUf9**9oGFlZquR9K^MTah6Xs7kt@STcliJ$<(PeY|>}6 z>cl#;c|cuRC8{yHosI>T+l_`sqp3*5Ub%M7)=DLSFCRFR2 z8|oMr@rh3)1^Vgy0G4SM0I=vRL&Mmx2%Z8CI8d)<27+KsBEqY-hJDU|3615E0zwvFK( zPiI!^bZs6a%`a+ogm`)902C)^CmB=5z_bT%)D)OA>h+v^(`0TFe1p|YaNhKlcFR89 zKd>i9N7^fJy?F2Y@5@;u45cfZ(R(KDI*gU2&ji@G7IdNM5@s_+opoNZ4wwJ=G;1+M zb{F{T*;(c-ih8l2VDL^S3YZ#L8<1SR5WN#>9mOist*IzqPHYZX_6mCsEPI6(`;b8K zLKF;G_S~E(Y}pfB185}SCsuAWk0zt3MB=B%rxp%HZL;7&Gik@l4Iw*U2Q`h(G67%Q z=X@$|JL~JVzT)tX?lA#ebHA)5FY7Iv;XV-W#h$bIY3__3ajb=T-<7e#%r-OZyBfGk|kW~{ERv7a7 zfH>%$tCZMexwsP-6RhqI@tf2n{*b~VxG=Kb0c;W;(RJ~&yfiwU1>8kjc%-J1QH`nw zO^EG2(+nNZu{a-Hw6J>^Wekque9*Ik%+=Q|pDzdmPvG}pjp8H4#^k<1XU`XiC@-Cx z$fk)+9Ai}$4`g-H0Wr{~^UaUqccPO{av-Dh{?zR8@u^J`Y4M@|%3R2m+j8r*mU_+j7~o z#@T?cCLXCl2XL7}khsUX6J>~~+C>+I;0*khV&s5-=3YF zTR#%AYOibm?|=Hww!Xck013K-ODj(84tKk>TvP?m0h-U1J7Pw1bso9&wT3kVVuLdL*IbSACa)r{!pDroDbOB2E&Ouga}?J zpzu_NPc7$)@zAodm~E`B+3HeBoO8I(jI_J`;qy=%?mJeQ+|OR8Z6TjudlV^_0B`I# zOZlu0aYQq`FV;Ulmq=v}BBpA`mAY9xZ-*BZ`|H2`8{53TBg@Sd6z&@va#HDbI$BF4 zm?G8+rxKP~D%jX&mc)r;WlcdiUf>3wrytB-`#BoV%h6e;tE_SObY#`?rJWq@Nl;8u zAK@Rq`9y&o{JS@`V&C^T%dQ#X00PYsuUHqiJD$+mfyThz!jw^yA^;Yf77@S*#-}q| zN*AnlTDDlg1=i3(oIq{CVk_XcZoel>Hi`6@(01FFjD{pI-dtN2Po4KiQ9mY@nj&fL zH`5x3Y5y6s_Teo~C!z(0*((DsWP;+0sU5}EWa9J-tRJG+p$1(vTQ-X&lm_|ZAOG04 zcD6O@&*pP#-mI*xT7Nup;5iCtn@WJjI`P2rQgL;m$-y@_YLRFR|2_9)b50V){51y4 zs*@I+Wyer<0zLK_D1rz3&*VPAv(0l((SyLBGfl!ha{@oFv;1PA#X6vg;U)P2mKDC% z?dm%6wO}E-wyej11q8-@6SG1-ZJd=@41hS}_l&N%0=qet>` z+998{RA_aqAB)+&XS??F=~LmD?Q7R0+QYQq`pp~qJp9M$BvTkLMc3pi9MS}Jef!39 z9hcW#{wlqdUqmebe6ak56P3-u3+Dg~UzE@6!GrtOs8*aPf`^CfaB+CXav~5w9y@PA zDq0pouh&&xj@c?OS zj%+S~yV%fV_Prq3BPPoeHj&F&skCg-NZ96so=E5X48}z$m&cQ-jp-P{<(iH~7jf#< zk;MW5**Lke`9Pa193^=tqBi&8Upce(aAqf!swI|JtuY$g|NK{fW$QazO7LS`Lh8=# zJGW#3L{u@06+Ue`n^zYRu$;I3Eiv(|HCgd%`7c3L)pwO@~W_gbuXV;bCm3k@ut+c>ItxIO&Mo57eygPsdlX;nPTyjIkR`%VtsRL-u{?@6 z0MTh-@l==d20~z{7p0{oTP-a~bU7S2yE*6>0e?syxx*2Fd}JYbfgDZ>ln7g|-Lfo2 z@|=S-swM;!9}YFZ759`5CKhtNe&5Qqh7~t&+R^2e{V)IPf3RD3UXfob!ab%C8=IRN zqeAoGpl$X#qF`WgHulX0)>lev>MZl~dDgf-e(gI8vd*s&X??L={=@wL=V=(6>vWYp zuv|Vlv%~$T0?RfTs__9>9(DUF#07H1H+AB^UjiTZ_jLWd03`M!_8tDjk%eoD2#T`+ z+c?$&&z`JNhhxjf(n{v`t0IUPD5ZWa?8LIE(pfQZhB`P61KqJng%t|o)Svn%G#P;yM0scE5uu~?r3yD$55a|BCfTA{TTbBCjunK z{khQZB>~GG{X#+WbEkJ0jeAxtU)Zy!k7QR%L7s?41eVDIU|*88>7pU%3arKYp;5T7 zEqxIzL($`2D~BQyR7AOG8r{D17wl`Z{z&$!*<^}JNaE&r82yrKEV>XFznz?)3Fd2! z4*GKEN>QY*EZY)vhgeKMM>IT|I3(1D!!9|L(5AUrXQA~1qm9@XqCs2AWt8HFU|G+^ zY^*5>R8igoMHkwLMt^Ln)ph&HC!g9UpL`+!ytc6+(7d#|VsC%z9XqdH+ES^cX9Bt^ z4ph;2OrHbxfrdfD!E*`wVj|>Mxu5*=!SWa09UF%SmH`r{Cr9?^(L?Jt8y57V2A=2v zmw`GPjt2%NBXKtY&WQUaj2JQKp1A`H#bl#aldTemRttNzWLjKZ_{yaB0k+f0q|Est zpbwiZi&?-TGg6BZ>NMju2|ot!Ke%`-L~pDnAIx-8qcUh13b~k!bik?$g+e?UQS_tK ztCGboJ{H%3pTXwHd+%T|+FK)!z#wJ~FhucZq8^NZz0u+!if%NB@6PN**G}Br1A~=ZHh-XlpfiiIj{`xl^}^$yJN$d z&jRVB9hb}Y|NZq}%XhP|ydqyy0Pve{zh$jfL+eTJn}PsgL?&%eo8U3$mhuw*;VBN^ z5HRft{l3ag=XdkH9es*I%j1x8OUh9}fmrS}Is3 zg@|mVHO_v?oUVo6Ez=O6DV%}>sL|o2nus3bI5*<@c#AhECZG~Z&YYahIa65&rXl` ztpay*KGE}t(0JS%h_kH1{#SryubW0l5)BtVhkb|hfP0R}iRUp4rD{C1TC-u(g~g?c zwPr_WRbV(V>yNB}9wnC0ng%Q@7W=BIPPFs%_Dkp-@y!*Cw7R?`jgSH?e2lUE76Oze z(=ME5Iui}6-e`)G3}^??K^IKY;ibU(|EYWPXG!lW&F|#CXWqPd_o`d_UQ$Uyy95Y? z8W2k_Fue}A7rH(6*#5y`{{#NfVLQUnp7DeydZ(d*h6Vuwgg|IRAXHMRcGY_K{pP;! zj?eSWEEP-lOaN+1Nhqp{x^*+}`+nbZo^#G~o~PxOq&1;~0!F-o=h|wjaaC(~Ejl)7 z*A|!U+2@~Ax0u*9yLXSe$wzKGZn<*N#>U63=kr*Vh1h7sjnic+5woeuoi`d?(uI!2 zrDFAV>MY+3mRSl_+-cY3xVW@9r+pV3Sm`XQ$Z9q;X%a6i%Jhng6I`e7zHUY6h+J=ZPf^Wu>a3k8fRJ`?|TtF8u> zI@%Nh<|c0x{?&TJYVDpyGgEf<@)djS)G2+>>76@ld~!mDYX^@WvCVu|Gz{oooH_O> zpr7y`%dKNmJ4HbS6VfalF8U3h$+vRJ@0Sji)fpV{ZIDX2e(j3Q&0Uw)uq+aJ7#R_g zplRoeThq}0M}TJ>%Kyg=f!hl>p)w*c5NwjkxVm_K>si1bR4{>XzPyTAMZpdoIAHZk z(Hg~)mKOSrmc_gQ8;gxtP#k3kmTB<=L|NVf$ch)^HCcTEb}}QQuG7tD#>Hq@l|#LN z+%@QhGIAL5905qdfs~u8>Y!k_N{btheJEdBsn)GfsaZ6Z(&*|s{L^dK?Db1;*aX%2 z{=Kpvz2}~HsB`5y$9}gR8;U4EQMEJjVljNd+p%}IMUx4;=e~Q@x#TQsY%Ccxzrb)Tmb5hXv+0yN%^Z9c zTA49%$8PS{{&IlrTk&0fHdrRHaCWX=zG90@b5<>&*KXErwyn{uDxu)OM`wk&GX%$g z)?wkLGui3hD74ULrsGP&;*3$C2mHd87A=P(^3PB%cBOUA0X$;3?M+;zU_1fm6%M=V*3u>Fs zYl&p+CK=AQ;sM&IjPDzmDOKV0d#&2)SUf#$yRn=#yytHpu&hG6)3o!a&)W9ps+DN) zSXUi<97AzB+?@@*IL((oQGy93DR4x_cqD4m=O*aGaJ;KL*;7>#N{ zkU|N^S4}-xUhQ_YYZJjBM6@+ioMRy$kOQ7-^}AXagLcOE?0Wq+Iz4M=E?t&?!KJHL z6hjUlKc)r_U>R*@?5+78*d-HZ;kg5riMtcyGdgEO>92SKrH+w7N_EOt?saQ&mK7fc z0~9hCd}T?NwyJjN`~}s{S zdDsAo#@QQ4YI4f-18lQnd{R`w(#E#6Dm5*M1J0)=rZp|Vmx5xRMZj#{sqp}Y*`pwj zvIIOaiUP`r1(CHI*j_UofKGz~1;CXe9o$i^yCRC8jei@$#jo2GM)G>xB-edjz_M8z zkp~u?YYi>7@7#OXmR2|Hl~+&N;>xnR$U9MTnVGin=}Bw#x-viN_4}frLgkTjUm`9F zDqxvHaHzC$Ggux{=-!HK!}t89gJpG12DAn`TbC|hwAJNhfn_>@EEC{t2j5pPi6qr@ z6?>_W*POEwC~qA~-zdok~wr|%yTfBbFQlXF)H@3{*=~yaAcQ7FRS(H|InBkumD`o3+ z9N6J|Iu5dFDnNI6*s)9{lRB?_Ekz*j3mB$wg8NK|T2eq>=l12!8fGkQZC7hF$2nr@ zvFnjR4$FGev%9pQn#~t%Z98XQd+M8(93Qtsw;i*w=}Eiu?sr%&x2-clhmhxp2@L1R z>kFzom>wH-9d>xR=CSnHxTX}0&HgpFjDN1+CM6v>?5=Pfx~WMCha&y*6?K+bf+5t@ zF?Q*-9M3lrvL40j;OuZVL<92-bayF$>AECbM-Y%R1j{5fIY{}!O8h5J{>Ucbh-b#7 zic&8WEx_cV(Uy!7g%+a!bO7E!A-`!@+LIk^4^Uw=HYU?{&Tt7t_-Dy{h^K#{cE2kL!$PI1u6QsOHy<6w zYSreKm+Z;!JY^F*XIyu1V#4ly;C|7ShU0p;wZV8)O#*(8S-=bvtx)8KelSTZ#RTka z)LAA*3iu9w&RCPzCw)@CZEHJ5Ykx0ouL^L%@WrgbVWMniTexh znBO~P0QYRQJ1tw^*igPh0*o6~2IrO`Kz|S(FYPd}goHt%o+KhC?7A zO=c~wdOT{{c!MZf#I4@*S~xXg7cXA4&wt?ycJ%l$0Ul@=x8HS#05W+F>JObsfF)oH zu*~O%v&bOwrEJa5%nQDB(`KPE%uCkklU zh=)@3JjfEZO8_cv;fK)q1LKmywxjpX$ot^*zIWa ziO>YnYRG=^f}hHJAREU8T3g+)nW-spqDfl4YQqZao0dSg54uJmWbv@m1ce7!Z_usl zsrv$tlrD1x)CFdQPd2~0v~1sc?pfQaRqft~9SU8Vw6QN2JoatM&1_P!Jp(TGtN@wP3Ntcw^OgZX8G)<7C%D)j{pyf z2HZ!wgMeTu4Gao2ekEwJ%|A?N;(Gaz<#TR+8ZReP0=Up30J{s<7i~O~v5+rdwS3W9 zSW>UA+ek31z=NwAsw;4?06OgffF-~MLIIf$wA)S}6LEK}Ift)drvM-$07C)^g)}Pf zF&j4*5IC0(pkl<+vToOng!wZaN%*RChe%-DfB4C$chE5;_mcT3rG$u zyTv|NIB|9^U%05wa>(l!6$&*BlvI#Tq9CF8=Ie*uWX>2bVu_YU2Md2vEeVHR;%Wez z+%jmd>(#Hz%Zs*SdQyNVhjGR7x_O#Si+X)3v`A)H*aA|BWlXUcg+j;RJ`yAO40Mg? zM&gF1NfmoveXm7H4DhQ_K#=u^-&(zn6}h0 zfQo_MI87w|WF3HVOX?>~peW4Ys`7num5RP+D4DXpKVpGM%;x9k?K|K7t~l-YJ#fFk z&i;c3ELSQTl6X+Vv`UDCCrf^qUIYVD!yso3`KGwh4#Bdz7rx=-_SWkxBcemfc1!!% zJ2*8j;zPNTw+m;^3M@PGnZ8v^MS7zB0i#ABEI`gh1SqV zpxf_Q6Iu`|PnD`oLAmUEZEIykw4K7*rj5oDvO*Wu@%lsuloAdqP%IfDbBRGwgMAw( zWw>Lz<$5XZjEvln;u~J8pQ{1$U-(CF8CWI(Y;SMh0Lxrh0uLhSRP69-^`gBWbna3- zv@EFSzkCqqVDRoZ#g_6KBHohdB8-_IlDh!qT5G?Z`0hDET9S$q0udFO7aPW8TUiM_>!eaPHDrNOj z#a0&=tV_43T(Qw`)G`<^gu;d#l)$p}1ePncnysy@XiS7nDST4S;mq{37Ug&k@%Nj~ z{afAxyJ?}Lxq(K}CABF%K6rw#!Ne>i|)aKl+A!0`D2aa84eA3noKdQ{3Q0ufLF ze8a8uw<7fXqTkcG^bJ4bkORnl&F8ar@$5NU-&j#Mu-9){wTSgNHO&`_;H2Lh}Ig4Se-r`^%LizZW+Zy*Qe zfHLYCQdPluuVPi9Ya<<#r40e%DN3@Qh*vd52g5SU!LHjA$5IF882mToG6f z)6E?^X?C4Tg{D9^NyKq2P<|rja5~j}_IPg;XB0}MT3M2g#4(DudZA>wl{E<&6gM|* z$Jm5LeL*b^6L(}#1ukmUH4R;blROXrAoq-pjM}c*J#tpOSx=ta!?OU@5X=Gnm1aw= zg2D$5ls-+&JyKQ~xSsZVawk^vCmOM}tt~6pnku?bh1z@IkeM%Rjdn*%JPpBsg9cZbQ4oiRL{4`O0J^fWA~206txHsHT*^VC zYA5j^bwq7UuzKU-Ma!>l*mxvrk-k@)Q#ytK1F9@>d#x|)>-m)>Sy{7;z~~wIrM)vV zHZ?J6$#_~ox!$Y^2%L+&&<+t&B=rG^1_x!9K+{FcpaZP@!h_?VqIa>ORbGFH}tPQa#i&bsY*xZRyOgf>X!>(yjk;ZTg#O7{lZO;5m2ptYx>>1!Mrr&@gB^FiPjz z4$Vhec*)B)-Eqgziv-vZ%mF_DU6eBHZTZ${A`SQ*_hZh zJFAY8I)iACvU%+F-=JS$v5cYt=LU*Usa78tUbZNi}xr>MV!Cs7SD6(^VoHQaAWXom`L;|pm%pArOn7$OMWl2CTudYf#fER@l^oJcg zcG&1h+KR=J05b0>>9AH;onDGEz%u4Cp#%j}K**d-ADo+5Fm?z5he+x7%*NT|cMf6$1f%CIB`ZM!4{dLz#pz z){jPF0?T}UQAjWo2qLNZru^Woc!q8U%L1@^KIyo=36}HO4S{7O)rMf1v!rJd`A~Gz z2WBHY*A!{w9}@T0#)hM14e}Iu>jrfLW2<7(cJJP;e1YuW{I%=0xwK?ciL@pCA&d2V zIzvoDH3gxWWW<276{=NRU)xln#`#Sp655dZ;3xhXi@@jP24haM?es+Gs-9AN6fey@N4~Eo7ufjoOje+uFuceGtWF@mzEao zgO5IH$L}~HY9LJ=rdjOHKyu;x1<1n~*C3^4ev2mJI?J3JI?I5c8%ut-Fj#IiF+cO( z0L#pyzy?FGOx)SpTvKNmUT>>j6CWM0%#>NXPXnE0M>%v_$IVU`tO44KKCkt? z@aqG%xW2AsVm>pJ!y~udA0TUivp%6iBo^(+z%x~<=vz%pGhC8ohx9d!YL z<>eJ66@n38gW&>!hiQe9UC(2CckdDH2W#t-KX}#k7>)_c?S=PbOTVqh#`U8xb!0o*PZY_nLhItz)}oZWffeWG$~7xVVUrK|SUZ+%mi%J)C~ zkn}1irziCHp=iiPko`(S<6&dFE!7L;2iXbWdH{0R5nzu%K`7%S!)`^O^X7T`aT>I41zTeaZ&Szwtk>HtsCE}S`MTN^8)<-u7-e;>{=GJtf`hR-pD z$#9`v%b0%0JI`mcHz+=w8P13_-En~}mE`D1Vcn{?q!xv83!1mPGLsf)cP!-#S=2KC zJdETc0Z}0~@>$!+ZVTv)jHLA*P|7f);Ma)>7K`CfBYWs%QmeShRVy0753RR%Ow3p` z5^@t)bltUH?Ig_9yZ|g&UrHLAxxAH|4Qupz0y6AM)Vn?H-CVwU#h!TL2?67~?!Ma& zA3b6d(^CRmlKM)eq`u=guN}o?;!dmW7MgDulf>fsy{xcrw!gjw7yN#*vrMZ0NgBq+ z`idrsfaNw?%jUfSmYvCrqiJfFrR64%oE@GcWK!Kta4J23-Qn3O6wA`Yr+}^Gi!xl> zm|qfYaCUN9i^UXJENoH;smT}!3Wwyjv$nRiX}(xg*FM7JBA&GL=!A`?Gy1+vqr|!I zp;lJ6MzgNvJsNb`+@>5Q5AQmt#$%ktWE^I3(S=4k;5IV>Wl|oD$F+-9Z9+ZmNcVf+ z!9!N4R1|lZ)P3hW-%&n&&wJiu`wt$JDh4?VF8~%oiJ96P^SNdfO`IxHz_B+At)XrD zkWToE;gNs&U%w?_dDuzAxsN4)h52jNm26W}nuD<@;@6Hl!(sDMsaMJx1;Gy!?*toS zkK^5`Lp$(LCpf!}$X@8L{*kgL@2XBv06PUuBDmrgK1NhyQZ5nr+cFtyJtA-+RV( z@82g-JioAL%d6}5gOjh?-aY%IRf)L`6dv9mJ{iTNFX%V)Oep|U$+UuzR1eK{NYS(G z_q|fX7#*L`wB_vtmWOl-;sq2Q!1CPuRmB_30#H%`EQi&>M@r5q+zbJ;43P$u49*UA zv%L6z+&hXQy1T=L8x~_YOBAp9T+SBfuG_@OsKxyOtLF(=vbt<%&Rwu%dekPTcdBc6W$v1tyK>3)9@sCPcVy!@FQ~&X zN@l#TE+!6S(9I$t8=aVxgyFEba*L?}S3C%`P26Nmatm^nu{jqXf2i;7q9pV`x@pib zSnw;CirTY5qR;Q`i&8^pS@bHT)uabMkPwAWK2VjRTR2=W))G?8$qdTWrck!g(J>Wb z8>?%!y|pFvf-q_{fru5?)@^ol!Xog48Fz=#*bZ5v-`0KPp0OXJrT2bcaR-}Y{yZ}| zr7?KDT(=s_T#cqC3rI-y}lr1mKTccW2L5_F<6A21h zy0p^N_c{ugn@+feQ6|xxDT;P|$AKvuon`G=HJeth)GQKn9Nofp*6PKQ<<~c@n$1Z$ z1tTpA^fi$#;7UW|`TNfaO!O9_u{ZEcHxY<;(g9uDC} z(6W`)McY_hwuC<>J?B&k$6yr1-UQ1~n`E*R3|b_avh8x&^3|HnFR$3?bLX`yF|})# zCS2quup#uIhaP%JMLC5Qxl#0r^oX7rDg9D##$uAzt#wUU=!W|veCCiV+NELsV-&Do zF8cYUf#sV$FNR5nt#o*&xUjYBC21@(o{&r%fdw&ki~!iawZ6t(R54Bw!)=c9@Nl!K z$l=Uz(KtAatvPI|WZcT7sx2-qn-3l3X49I5qNUI{Y7Y@S>MX_shohaf$s@gqQtzenkUB;cg#oTvM>OK;fH^((e>YRWPrX?2L; z7`no+=j6IVJ_|&GvMSA25aw>!Vm4=g_ry1Bvs|=HI;o#$YHCJOKgnc5Bf4XU_uJIO zxB?uT&7+xd@z2J_MwPe-^yy4Ssu+OsshL^Fsq{d;_gg$Us2F#E{BlpvFZ|tp zoQ84Z+rbI0lzE4uwU-0AO)u;eKlAg-W^I(C=AD=(d|W8~gU` zl?>QOk_AhbASmcUk*G~gBA4W-F~}7zFD}~J{AC*(NhsNA%tU8d`YPxuJ5AIcqpnEM z3h>>VOp`&&j4Z&cao@YvYqsPKVhS5U4wR_^^#<(xO2{!fx_{G7A9+a{+%K zD7mMhMlnTKERhgc=IkU!((0tLb$si-oOGOQ>IQ}+;$w;vS`k>j_{KSnE72sD+5pd@ zIDp7)xui5aAB@xmk_X_JZrxA6 z#2E5RYkBAHUFs~8jB^`X;`)!LGY;%C`S5wA*E}{gZPj*H=ZLd4)LP~mg=0=D-syGo zx&^`VK(g{D!7|qyS+29EPRo>}kk6^JOedPHf5(4Er`x$a5|@}5apttY(rD^=rzq!Z zhCrIUz`f?rm}gCnO{vQ}H#a92M<0@GEGBz{)-IN8GCpESs9EF_w0XTAYg*6B?S_;l z(1q8MSG6I@ukrCofoA9!aDuDlnzdLC?!gsyO%`ZC+uNI(n5-|Xy0eD1E)yiF3JnxH z27FWYdB$gU*m^E&Ta~h1UtF>$zW$_D+AZ6)cb{d81r<@mH~{a_+m4GKK#T!I1JD7> zeE;DBq%4YY5cT+#`vFCKZtr06kaNd*`sZk1w}P)0j|(Y&xZp=|LB>bPsnM+1=~rJ< zbFf?}Iv;>$LtS2s%Af%X8+cq-*)0sarDBS3&JOy>Lq7)MjO1u3v{ATev@|{JwR^U< zv@9_LVoiBFtKu23918?25eZ9D@<#bQFgszgov+uVn~ZjQA~|XqI?H1dHZqb?j9Xk- z7D$FRi)v6Z5tZ5n>QuS)Oui5auIcj=knTu9?R;C9J~ZCdC{rmWoU>wNI{LkDNB z7iU~KiwWLa^!lZMWwpu&Ao1q?d2aBT)2HOZ)~b}O-*cnRNF=IJl(;y}nr>>h+0eKP zu#AIMquLM!W6!>Q0*eF&4i&*kvD# za-A3*vlGXT+xGUBow(yRyW{vVCH0l1Wd)#2W?ZsmbO4Zw<2|DBq^fXus58?$WeT9f z;z5QiD5VVk?X3!yhiVvFv>7<~IT1OhZgB4GX}fgcyw$K9C(xi(iR_nL%`n$$IUQJy zHj%AyoMiY}bT=4v@-Q;m5s>QiHAdy((<0!&mF>zKS2bEHx z-_cN1V40}|T)-CNCr@9R$DIFCp`Zi=6@$%U9$>i3@KVJE>@#i$aKp7_OS)udU;BY2 zVqr@q21$$SfGUH>jo^4N=qd%03EQT#T&vsS_Le>I?Qe^UK?A1Np!+vrhYlUl6ylEC zPuPhQC*)+9S?|TIR zv{+*voh`aDeC_%3XKidGEwEh9W^F1pYB3}#yQYz7ED{ry297TyN@Td``l4i^1=NjA z73Z1csFqA8$0pUGB*sa2KOPg6f^$P~X?EIH%NFd)E3ero9hQ-lg?T0hu3-F1>l}V5 zMk0*Tm$tU77xdfJl|}o)m%n1=dfO`anwZ(l%!KVfbWk!+hmRc8*`X`7y11ls!!rWi zfX+6t1)lTB*toU2reY3DY}pkn0sF;=1n{8Id}{*bA3xAPnY#cml&#qA*!=pMeeR$B$;uR1 zy{=U|T|2OAR>~<0i*xqigAWQUqZ+ihyrejoM6wb?rEXWbSA2KzS%X@5<@3@FB<^sX zpat;RF~8xN8=655@7S#XmUSTqI?Jw@b<2JTIkr1(ot?RB*JM2}T4}Q_2S`*WD2%{2 z?m=C)lvf6+o-kNMg?s}>42 zmK>3FIecZnGTrPRvUX|$4D`QoI5o3!jrV5H$1getXNUMt%t10&%X>bLoKI0K<4mBv zT`iXE%nx3%(PYXpX$O`8?CeOe#0gj?U*Q(%kHtmZX?lEiY3{mx?Ww0URjbiNG_yUk zI|d8HY1_YVpN)@a)aZHRjW<+$$;Hs`licYLEXPtKR%*8`98c)n@O8so6%|^O&PM&M zdi_$sviopDO|>^W2?UY3>sRf}>#tflyCsT+Ha*2x?kh>O+6`j>P4YrBvfjYvI%v7A ztdh~}?!5xbJah!4t&L4Rr1;Uv4*NZhIzOnCkF>gDV9xu>4CQrGG9BAG{L{bRrW8`7jccKnDPKYU0B zl%JP{J-{!WZ~!I%n97`kK}Qi~1W5Yuy%?jrzo%B7LluLey4{;ax;s->E?%(9m)@}D z#d)27w~dZUL|0(2S*{5D3=x6^$ z{Hc@ng>QV_>QI$}E|#%K`mT4qOV?%R%#l5&ww~2 zMS}!X5H~f!Ws-AGjAj%+pus9(D@$~p^xCiTg=62%F9#(ZD5lFgclC;0ICsXD7Us3c z9SH`V7H+?5iD*nk`cM&LxFpKiQTHvEvwi#bh;NB%5*=jzj+|DlVT9AM-MbFh^UuGi zZZ1oNYxDCK^?7V|blg&bpv8J#>(m-5x|t}h7jpv2$+0n8SX!}(R7RahM)opYVrmu$ z3qZL2gNQSR=ylB>^y~R&w}pF%ib8$6pe9VqnsV{ zs?TdLo;hQmee!GO3GsgD^x{g_w2yxDquM88+3TYp`H-!wEURc|(GRLctJzkeC2Q-T zGnhb!7k>a^F6W5_Kh#wKZxm;^i)u-9(0FqC=g#Amofcy3t@LuuC>M9moPFJ{U%zIH z^9zdQ&@)k!ke)YFJ(lu$PKQO5IW2A)Jc>Ik`BKCLL&85id;0m&W^c7^bZW}Bx3hNn z>;-F9t8(%4b~?6idZ&5N@CRIbJ+@orND<5Pi(MY*g{MU;xSt*7VV|i zPus~eXKa;;LvqBnvRi79{!jno|6s44{E^*#*X_1@*3n3>UB99x7vc_32FXcaG4dyk z9e==?vgw=3*78j6_!)+3ABx>{=P@Z89GG834D~Gs%UfF;cIo^%Tb#QpFwFSe z*1^kRh%_=O^F+Nh@DY}KcP(%v^;c!%kiP0w)ilhc73t+Oev|?);o4RPH zPMxw$Bxd&$Kex93JM3TEh{Gg^(q4<^6!g*l&eK-MYbueec!R>@(kd z$~<&y&^v9^lmP#mKlpt)_hiy3yX%fS)p_8WF`htYm*t>T+HDZSl~NVu@mV+;lcE6~ zdrT#GPp&VWpPvPIZk<5$v%xa=f`h&#&ii>=ygn!CCi(o~6x4Ud5Ow6=28t@pM#Wl6 zM$mT}Zgd=oICY0mL>-_SOMYXc(x|MIsy3QR+uYoOI8+4jQ>R|FWF%y_A3SJD`1HlH zh5IIo4ZxyM#P&BK9w?gEyf<7lTpLLs(Sao~QcS1<&{ZZ_0aA5-)Y=p!Szz7oaXi9> z#bwzIQ$$LR2i{?=tc5WE5}>DuPNpwl&z*eD{_$H+nKu$q7Y`mByxiaZH@_(kV>A-9 zcRlcsT@`($A<##X#15V$1pgg=J{?O6D*l{GyAd3KM;gKd&Ck@x=ueHcZWXZ1vvso! z^o<}0AJxpZH`eXa8yD^R)yo4}N=MP)KL8L8pJ)?v4@pW)xB!kME`SjU3&0u-hOAy| zYSP6uq9X$>i==gZZo$@8mo1%$+sT)HVB?8|9ox0XQvRS-vw6#;QWgz{B~1or*dGmx z=MME@IG%>nETtavnWxjUAhJ&YEtWo+YQ)3h3Ad~(`8Jkm5SD5eE22si%LNNYf)>Lx zgmGO9C#}BdXPs`}LW!iUVO|l7*bA?}Zl8Vf3G1n2ov>=7YMpx1{_vB3AOM(*hU}iZ z-l3m~Vva>3&L3w-TjwKg!ZviGWZ^iG8j(p-Jf2c9;PoJDIgC5(Zn$W3tAJ%qum)UH zq$eFnc1yL|t@U)RxVdc?E}paNSFfl$h~bMU6@ysAS>PET(!HS9IQckdQZhD?QG%zN zO58zHncri;P^&dc@l02ee&pz++0k;5vz-jZTRwvsnr)Mv3I zbSvCzT3SX+_?@gBGGBReXf$EpeEB8&>hsT8jh}^uH0;!y4g1JPKCIs-5)pgw-uvv0 zH!f=8#m)mc2sNj0B&tO})ITT^d8NlP7K6fi{8^m`{TV8K~R<%e?_u z9-5ZiI+<+PEL>S#5|segV$Om(w1Wm4aovX{GW7FEOR zbzr&Ov`8{-^Gl0X$ra4nUAubjoTTF3b??10C23VEP6BswLIst?07gbEU&`wmn^9vL4DG zG(77~t9d>4?2lftmruWLOB)+Dk(sb^xu~=MiBJB%Ezi%{efPb?W+o=AP|S&b34IjI zl`R#d8ir&g%|ePkm^d6WpEHA!vjd@VHgmV z)pe;t!fV>=ufHy?>BC2Fv+-Eewl_DV&pbIksZJZ9W!R}k0**@C*Yj#?9&R%u6KSo+ zQW_TxEs^OsKww8~-H#j3K!2G{cYY?iptVX#m7yCCJK{NGsZOtB&0b4OTJ2!ezV!5W z?5Q98(1OW?vIwKScC~K5`|*#7?}kj?ohRfx|xA6SRR=x8BZNN1qYu&UQ@Pki@#_S8!+Su{DS ze*^V|BH{Ob=i@dtF@a8qz2o*f?9}V8S}GA&l@8B!esRHe%+5+th3866kdc_)lYk?w z+>x}d4`+v8vt`~p}e zsmVM@?)J`wiWh}eB9Ro$i^&#e3K_UUsccbrz4@Z$vRg7%0xZvrj@pU+2W=mlv2^`DB21AW_Lb70R9?@3y80HsV zJ#)^++kw-!6IgB(%QiQE&8}X)q=^;rhL2;BH@du)En2Zrw9EvG zCLV#`WH_qMawrs&YSU)9YBn-zpZ?kt_M^)eHC>~z#gaZW#E*XTBbFH*v9Ylc+p}}l z&Ye4JW8Ve2n(>hu)HMg=5D=dFFgIUC4v$At;Zi1PZ|&l}xlM z>6(;u20F|MutVH6OK2ie0Fqx=5G9XMaCuSn@^-9LF52qCf|^d_sNaOb>N<1A&~UHy z`c}1`U0dI<@L0ya^6jVXRb*fbMbX!EO`0wHjoSNIl-{g~ zN`TqJ*5-!QDg|}C0LzSW;PKGmDVIvl*)Kd;*y;3j(>PF!mSVAlZEtS55nc~Z`=DiW z1xXdn?AT@JFTCL@y2UvQcDi=op(A!^dfKwvTaxFRo}5+}55Pk8y}Yz)#az*%-hfeG z#RE}iqf8=ewQT?4qc*#DpA0~dqAFy!tWP>!)^M5-~Bz?zk8RBjix2`Ezarm zlONM>MNty~JMfleGmGtbt7)~WQ&VAN$^=1U$S&LB8I6VEgAGSzK|dxT zRSSn=l1W1^l+E1L)nyBLymr^oqqc8q(n{!cr&1DnM;B6N4v~nRzjDPo^|poDeQh5T zc*6d$K)BbuTF^vB2{D601v~0ZX@^sI@gK<|mW<0R17{?RDz09=s{6>v;e5lJhl&AU zsx(^y%O&&Z?3|xlFn=^U*tl<~Q}MCi{0%#Hri-d+nX9^YGDtX z>rTu1P-;lNqEtCvsTTjleRqpn)6+9b=RP+b-m->+M?***n0fI&L1tGyuiw=BniiS&bw~jGP4k6ySqhjB2-U`BuZS z?Uw!Rm%nW1u3uG=UabSxyH>B&?GwNMJ9c32K8uC?Hjx<#$GR&2+M;e1G`k6g9+r z-j~iCg&FsUZa=w?zhi2U97)>z`jV}0uiEH%MiXD?0q{{h9Y*sZ+sGHK*y>t66t@5S zul~|jig|0pf$lJ0=m{);{No?9!-o!7IPBMGei^><^n_?-P?nZfS1g`z%cFqhN~5M` z4)Ug`SkYOgNay_k%fuUWb}2LfXKy#Kj1@KUVs&*zbQGF}Ln;ML!FnO9#Xla3p-Ph^ zMu%Kzp-DG=ajs^y|!T+ODlHv)l(Mi_wBKFJ|cCT7MlN&u=Wjd z+sM%M1-`E@%v*MS%TnQ#Vhx2k6fyD*fO%qk+$Nw7#$v)M`C>u4T|DQJL|hHVKs0Eb zK+h5*30q%Uv5nOgxd>vO!`>BiEc5%tbFX{M7IQg^WHR=j|Nb*}{>nAoSLnBNkD2BF z*2jL`Za;cNQwf9_mX;UfT1>$Q#SPV<^vIZuvWUM-xi~KXdYz#`XIT^<8I^g&1mIZ! zm%Z)4vQx4s*w*Hzt*vI-QW$b|m-)Y}_{ssHq_r9kEyH2fUCwA?zI}aVUR<$fQo7o+^w0uF;iZ$_z zFZ|G|#j5Rx>nm<*RNQIIQFuv*Fp-kl1UzB5u>b|Y4V&hl0O4UowR={nRy9JY_WO2uW841n^PjhDwPv0`&?-%*zssie?|kgz_UOCcW#wYg z)|M7E-U1l&{jnBhnT*%IefumBg2RYFMBCDtF?HDC^^A{W2TAAIryxmyH@Jy$mXsuNW1#Mhaa}*Uwlbthe-!q*2BB^*nPL%Zq0nb5&^#**tJKxkZ^~)Uavj# z!VA_YRPD&*Zf&pw*gc)T0-m?;G$9ELaHuGq8M`}`0YgTHtt=#R|d@gJM@o)dmimi^onp=o%N-F5Le&g5eu}2@ZMx|s6 zbMv|uJ9bR#JOY&Ip39Kpzb$%G9QYbY{)tk4?JW3+tuD}Mc~ zvD&b+%&(XMaL*~wDYyVX0AO(i0T6Hq2O8=uR63fKlPw$qYgsw>y?U-0|B>97aILJa zY5DijUwglO?JHllldrt&BsLJ=wsswc@m8x3<&(0sO!PSKMhsgE5^GfgBHuP;TPF*<#YeIb&afof80$?2K8w zO2%z{ZOdZuwEfy+AF$7T{uW%K|&8q!tMQKRAb?9SvA^iYig(Xv!qz zM$CD8be2(5AzrYk4_L+^iNb}m0uE`Gike39XXz^slt3DTg}KJn_U@Rqhwr(^wpP|OVc0P_p@mcaJ!kanxihx8xN1jc z4@x=^#WAQ5Os6=zQuZ4%vQ47*766e-0j+St#1F%U;c&7Z*17k+1--FELBS?2LJ6Re$PJo_y_IEm5Wv_ z7UeRyfB#-lBDXfPww~Rx(e${DPfw}%=L~~$h>gTMP0izu?u6z$*E5=Mf5rf6NV}6< zpOdb3OWr@{>n-an4?hoqf~3VrorANs)uLN0}>H{h{A zB5eB)?qeO_fnJn8kgD_s%op@o8z&qRce`aZ^Vm~AI%!{i>L~$bN(Dw`&@gsRPTPkb z|A76;AN{dC_2iS5-`cd99aAH%B?mhr?eRJ!EmL>m=?#bfPij)HGfB0d0>Zzyg#TQ?+(UFw6U=#7AJ^IiC7DB-w zo44DJ9&<8qm8zt(PMtq*g|%%P^+aqsK57}btzN&iYi>CYyKBad;RIEB$#UhQR0Pm3 zZOiG1#R;!Pl409>V6QdlRKXhq@bIaD{*Iv`v*d(1kOIu?QIEJGQ?Iv5+_%h#?-X<|nl^P7l`po9_(S+7X}*tK*L<(rJUJ`_sG zTmn8(&tQ2503mabctXZAj7g!8$Pj6e3BoL+!sj=SEoXD)OT_FO&pmHn`S!OhIFgb< z3DX5=ahURSw3ht<03ZNKL_t(M_MUg!pML67_WUzX+v423?ccXY3qK^CwT*SdIgH@T zl#7libT+6KoDHTEjQK}L$0Z8};NkB$JE;_B=j{TP-(2u()*OGGMc~!7Wi7*zyR;|M zYFH{9)s#_t2aKt`J}s&{I*+q5o|&0)I_DH%15I5D*R{0`Yt*~;o4@sO`_e!CqdoWB zbGCo)UdyeoOD^ui?|aO8#j5q2E!(qmm%d-K-4%Fw<;)o?VV~$*_{H% zxX$uEEEEHt0n5Z4ictzJz%mmQex)&`XIZ>uh_QW1wD~-@)`FkQTdwf~-~;aziv{5q zye25tq4CjCj)$RO+b5_|dSke=vC0n7pE z6h};^m>$V21*|eyE+*zkqyVEDU*CKq5!T9bjRxai>5*^ApIX+lRdbftX{m1FfDt{>URX770s-kdY!6abam$7cgI_SgBAp!$P^yv5Y@r=}25% zo-m2A)3^PH4vXNvw7x2!?2830JQ6pH_*MOQ{GLHqCn`5BszLa&1O*fY=t%Q(R9X#5 z?&Mn?`}5CyMjN7x2>^6*R&TcKuH(n;t~+kGKl!sy*_XcXdGoXxWsXSCkOfD&g>(Zw zKA*rcmc`XN1b&nu!WK&;wQbDiJ>zqJ#$nK*%70VF$vxBnR9-*-(fN6g+>igeH^*#0 z{YmuT0v4L?EYMwMEQ&TV+uN$vLjmhas~gbVR5BwF5qL(^W9q;Yth5Bc5^1F(u$;q8 zqEfdbx7}vv&Rx)AC{A09Lou^?^!^7e6N_1SdrN_b^G2740;L3S&XvqpYFVId7V(8t zVPhgdP$Tf5V8Y?v%4IEItC&CR7iTq^h)ILi6ZG18cEcv7uv+h^8z4~T^J%O~5{90E z)htZx)k5C>`V0SPS>C&c{9#igcis<~!MpA_VgK&W{?z{dZ~j^n3BVhmi_eXe6UmM7 z`ONNFfn@*~!&E0v<~Xt}+Gxqc>(ig`-hG zcj)#2UbSX~a!t1CCujWPtU0qoIW-35MwI@KCe) zyey6ZJJDoJ5|lDD==XF#8IAIc55c~8sqpiVHthDSh_!N~XcpZPm=n|91h2{dtj<`(7!y5KYNek45p>uu~$Vmc1Pkj{hkJwLB1>5mF7QodHyv^NHWW*d zBwgL8s15?6fFiG3L?%wGXS3G!`famRw*U0Ee`mcwP&&C3{={0i+Yj7xw;efh*#7;0 z|L^RxpZz;6dhxSNPK}E6I33*qh0smHoMHo#e#CzYFD+SjoolC4Qb8`Y zBYH%!R(huz9%RkhfOm=Nu6qtway;pk@5(SucGMBt3-v@P$s4rxdwVXx$ zF18_OC)!`%HAjY)^%V8RT188t6y|_eo^f9^V4LNf8ivTEhC@LCf6fe_5ot`OR<(B5 zwyHJB^Z^S9RYn2c>IwYuVMG!(Qwv%Bmaci&k6#@QF3PcE$E6nW%yZ9*W5<{S z`KCu7c*qXVOlg^in~6p2!u+Cu5&*M@bs{6KM%TQRrbb^Z{0V3VLh>SK5dkNxP%Lbr zWYl^gul0Pm);Rq_IuHaa6gMy~k;u5$nGm3P+LU=k-Ku@Bou0dH|HuFLpY7g9-lM?F zXy5A#NP*+NyWe5yRNVgfkN?m<|M}0`RAyA7;2a337#wzz6r1RP=R_*wv==)~7c}D| zlCwhJlqyV#EE1N&0zvdv1$gOde2R(tl6>~W)PC%!DzpM>)G)QYK`uVKas=I|8 zja{J6cy!-yROqN!kSGFvb({T>xE(r1*SIObLvm}DtJbYl?UDN*uzfqGt=DL1%rv`W zMly428yn(j(y9q}edcNPtlt2vcP;1%m`~?|;1Q66A|^O=++rgM=}sRg1|Kcy~jt3vGwR~PYQmmA{-L5_K;Qcn5 z9%x-$J=l#Uy;5-`dFu<)4y8%s+Iwzj+`J8XcgczWZ*wea}Iwmx?wPPl-zk zMQb~owPYr3wPM+#J-_v9PBN1MOO!QKG<-fi^PC;2=!Ak=%9K_&hBE9Cu_NmDsrhqb z0bTLN$%G*p$JeZFX9bY2EHByr{vZB>-E;o~l0Uq9ZBAPEoVj;CaKCu+|LgzqKij82 z{nu(jaL<#exD*LWrHbUgSnwl{Qlv)`FbbmUeHn1dDJ%Tla-xgoe+J&T_kB#d1Z@ zFPhd%^9y$N%o%Z);k-|cj@jPXS-bPtZC0j>J36NLh8h@{3%l#7u}KScyw)h!Z#a<# z2X2YbLAdS|>R<+bPjL?30RQyB8vU+zCpNa$6(5jcrFbL;LY=|YvDRvtCmOMZt!>*b zSL}cLKmRX#$Ab@9rPZ>t=g%AOw`<3Y?cKH8#wSJvmOuBozqhd8FZvGO6G=*zssYRK zSn38?<~%cnB}Zxjeb8Cv%+p!s*<*)I(}}Q?{T${9$qsgU5(M~pU;iqd<>7}LCR%RZ zrArsIgoGw80E24C@AFy{zF55~5X6Nc=+b&8K$EQK{;0j)X{$;Pg=4mN?|#eXa^gX; z5b^qJr=)#+@A2F1owwa?!LH+zaS%9w9Nu(l#6o`5D#A9J8nuWg=$w=~Zj4674wn;- z77sq4wAp3rx$6u9lw?~$v^y* zfby%azN&+Uw(r4xdu=>3YL7qu0ekM*XT^1-C?H`^Oijp!67CcFxFn-sn2mNgy6)kM z#!@zl#-@x(BDxk77$i`B?zi&`6$@1Rz&({>QOj^FZZVzUoUm--p^zHr%xZKgo}hCt zq$&jfFpgr81#rEc%bPb8wViwRSh?(Un722xcIxGq1$gec?RLB4@F8^qsGdm#Tz^KZ zaDK(D3xq8ZNoXufuH`uB?EvM_px- zFKQKxNNe4`Z59jG4TbH~U;3gw{qjrpM}P7udt+|SUU}seEr#u!p0eqw37ejpw2yx9 zL-yULziG#g9#tWl85F*xl6eTRKq_lBYg;IVN1npN`!XBvP6Bom+pouI0oe>rMZ-Smnb1}Dqq zz#WNgZFOB|3X9*Z?QPvF&c$m#df8SNmhA2mC+zNHw_6n3^m00xmF`2YucRUOxE5uZDX~HCs?nM1 zwyo6a*yq0dWqamFKd|5b#3$v%_S&h_76}Ih>K?lP0SgAa_V};8-%h`N(#A(KYE;N_ zHkFc+3L|;=h@<0UipLrY4>aLYX=hO!g?o*2SU4emK4VbM68gKYJLs1DhO&^qN(#?E ze@+LEq7>+ip@v)^ln81So4Yn=SFc`?!IqQ#aw-@CtL?VcYgKiZ*}YfM>2 zcBre{iUZrBBS)?8^VsJ0wmQcb&tDMVbkEeZJ$&MBi{e@akGF4<+5%uAKZ<#cHM%yQ zO6xrU=)5=08ZE_ny#mV=V2&fawwaEJGRw*H;dMVgpDIqbgU{m54s@Jg zz|mSTDWPjm{9wuV@`dx-r-J@P91*>w=l&i#gk<9Srssy7K)m8>xE9EyGSTXJeYXF= zA;l#YQTh7Qub#B47cbeanHhWEyB-nUgGLJbTlG@KDmXs+{E9;?Z$kY-aYrHnb*C>c z3=t)7#Y8CK8788TCjiONKlwdHBD+{nAo)FcSrT+UpXjMu`Mjkjr|rthiv7bseZ{V= ztlI7O+++P<(4Kwvc`YBt!XZ0y@Q{sWQkqU|ZmwF4$wxS#SiEb`ZgrNK=ueDK+sGJ= zL64T>;VzTg$z>?cu%|^1qafp&#*!%~IUM|PdBLI7=r2;D|4P6z2Y-Iyx?Q_+Mb2kb zCvZ>E32j!(ZqW(}okrcfey6F&wxtvDb|TX(88A{sWP5gYw~`i;Drod^^Ddq_XZ1qf z9yoH`rs2-@1_2EYY^7ouz%n=41f1xv_~h4Yqgb?e z+`M)Mpx&mv^MHo1Ywwg_W<@syZ)#Yh5+~||9 zg)Rk$m+>ipnGJC*$~78#j+kWe;%u!fuS$J}&g;VBqWFDu@F~WwzHvzlH}AarK8tvK z7GP}X_2_#eVaHB|CJEi1Vi4|)Dn@ATna})w2PWtk`T|U+`qspGt>4zDoN1L5N#yq3 zm&BAfvjWRrErPWGX1%WH7iX_rv#&q>ZM(F*XpevJ!#2OP?37*N6nH(mQwP9Y>ldh2O1pHR%v_#ptczxc!_|>o4 z%EpF$;KLuX>(}RPX?fZHfAZcm%C7sm?%Z#FujUC=sKPuCB*B@INQt6GYOp+}tthb_ zTef1mmC5eq^y*GJ-5>nX&KD=K-Er*pkhWzxYq1)})&)NrM}Xzv@OtZl zWsFGDDPCUy%cLMaD<)dV%dRghSjlPAi=iIWw*bS$ij|e{W@yWW1J}^5v}T=bh=R6Xq)4cIb#dos7|L-IBB{z-L+Z&v&YmUo6LUc7^3a9AlYK zK@u(;REYlXm_=c%zl?B*zT8qV^zIy7E{`#|@*X-(= zj@@~;7t+}&>qE~!mo-=(9vRfVcb?F~!i+k|W0|Dy8!#MdRj5c|#|>B}--f-6ph^T# zwxcQ@2idG+h|e+C5kw-kf@K%9)|39uXs0(HEPoTJvW59s8&06D9P2A{Q5{I|POCKs zPqxsZp6*_)tt>l-@j-CW0LqNx`QYxq{{by5uIl`yi<+66-t?;<=<3qJq3s$%V4I9x zZ>nVTftETld4I@^E$I*vq<|Y&CHxG9t{-=(0ZpXIirgI!w4mb(IU%-M!$v5_83zo2 zr_yR@qb*IWF6npvXjOiF? zRpPp|y}#eGabrV+YO%_k^9 z>z)&L87v<=de}00ly=q=@9s1$huDFJ!FY?}4zm$ki8jJvzVE;x9Xxo@yf6Mt6!Tz| z<-~o%Lf>lwEN@vv-d^n=*`fYIK|SfL6;|kK18y_YydZOhz)iO((rRYp(AvR z0m}eoD>wxb30Yns5&qgHp0v3g20xe5v-bzj#Y zkK5X$eeq`;HKCZUtd(^4J@;8L?8Q^3ypuux!rWxAw@16TkEw@y7bcJAMA_dxPyHyz}3N=FVJ(w@CLb@bo?$4=JN$)&Tb4=Of66L!1QF_`xw*|QT-erKahHe=G@Rv3wnL}SyzGs0#I4sbjYuYS zboU;eICxNlg${eyz$J2LhUFRzAh>v$tg9{`QY0N$PJs(ZA|d&N<-JD4nMP_V9BPbU zDcI>O`=Dd_L7|!lD6iJ5`ow2HqfbBiRTJI0A@=UxW0|Pff|ySG?S~HPwqr+3a3}G` zqU2Oi@EnJRwiztvEUN=gFa$lc5*GjNy5~N3NwI?jD8@kAR*~Ohd)fanSp1E@J0#3j z7?D>h?v71NT=jUHOUQu0O!W&iO1yeXT`mNUOUcFOc{gsVDXbP3=5+b|Syf6!OQM#FK`jNa z;)PMH#8YV-kziiJgX_+9V|q0`F=^kN1BVV8ET2UkWp2@Qm+D5@W+caU@7Lbp5$zZn zQl>4_z?ix+rJ^tbEc2QGKn6a<5{;i|l43B-|EGdv97;SCIJ^c5F6+`JlFGDF-qArG zk?-4RHni5LYieUfk3aL2KKtYonq8rBlhonEhc!Pn=K{}ElT=EF_U+Z}x8J6r!G1Lw z6&HXsk+uyFYG82CbU>69pm(8u(NX9!4a19TYHR<#gF23DAu?m@6s;ld0n5ShG~CVM z9%iA){lQzhvkc&iN}*&Pm9yJw6cJ~c@3S%vK)K3pR?9ho z-|?!LoSM<{+Pdz!_kMR^PoF-mOBXL{erDFwFiP!U^mN={z|wB$@PUImcKonAu`Q!QetRh)mMlg7%MX z*MoQ5ZXOs3hLIOZf&gNaO#)&mFXnL3Y0hP_{7ky?=BDN5CXhH#Jrc7!TQfK$LDk@p zBgmkTAk)=sYpGJwGv_YouRs4;O~XC)B2GiSXaQ!~ux}UuaX1~^J*Ia&^43j0BJXQ$ zeZ{;kq~8c~Kr_h)!G9JMIq=}Kv5|iK#GM-3xl7qx=ca^_#p+S*h&XEB4bb{(KZh6m zBCx-uKy>n9Lw#vs-s&eS%S&2cUT}AigMe#CcZ`1zAmX#2LxLO~lMH}Oq0p@zV>?xA zpc|sp001BWNkl zL@)aA?i#HT)` zl}gRe0~jHuQC@IIi)y}9(!Slh_2@g_VW5L@2xBh3-q+u&emL%3-Ig6gGLey%Ck;{J zA+fm7+PO1KC6Fg{As*Zz&SSq*>;S~;rh9YA@L*B7v~ytwS;n$AL(@2z$wrM2>g)=FhPfAR%?AKjD6T2cG9 zkLnF~-sNHo+C?stwuC0njTJT-K7lR0z3($AM6^Jdb`TPM7 zw|e|gJOk`+e9+aR*q*v}DZ~zz(ev|RG8)-UL(_wkP7w+%%#<25v#V82Ph4}(LR;Ip zyw$W)&dPd83rkDxIAdd-DAja)?>?P4ctFEgL9<`Lehfe?k?=Hv*g>+3d_!U9&LC2n z=;G4Ep|eawhnQ!f%sUE!YC$|Li)FAJId|O3G>mw`j~o()|B?G6dn@I#=B6f{Q)Z`w zq#U1Zpm~Kt0h)~${~|6i*O=HM)~w9a)$OT`4d2XxU((F4|!p5+j*%&f*bMy;vruSr`{3&iBy0h!d_IjT}$3a5|QbV>&y2O@-b*Dl^rXywmi|WKB_PR!cgtcc1RN|89E(U}(eA<3@?R z6Qpi?d-_f7P&;M)b~x=6e9OzLKG%<79CqM<>8>n85@TDz@@AzK6_faE-Z<2L2jqkPzusGp5ivENC%C>Le671I(`HT&p{9q7@0yQ;&(Nj zgaFHoKItygS@xn038PWhO0}xU+e_kTw%ipiZLDhF z&M`gw<~RB|SU&W@6A70OZ%2DD9L^*?4lRO*;2`n9C)|Jdn0D{o=fxWGpY10Z2Sugr zt+`P1t)cff1IzqN#$1*Jo4BUw$*WF88!SC|SuQNE1sR|6rdB1i4Z6{nE?m@(?K@Oq zoSezJqx<}+mo&F9@8vv3O_$G~Q)f1;yo>rlHe)_Dv5k_!?0QjG=4SMj(=Y3()2FqJRN}T_ z11&~a{XN~5J1bYJR(3hKZ=W7~!vlVf?c0XUn}()T=*XM1JUl#N3J2yaSch88pus(~ z>dqkt7EXVtzgPvpz!IPq3cwq?v$s0fc}3!nbXuuX;$<_g0-CVvt811bWD+$uJ?&&o z>y^*3yQ3q}F4oq=H5G;Fy4F|MH8(wDz(TQ9Z8bDSw{ddP(t^V*yJhn_{q%F%wQZa3 zK6YIDcI?yuR_El5T2NQX5*seqgIrc26S#Kd5egXY^Dr_`T3gv8^>)L6ftadMbYZYV zQQuCgR;jC8Z)mBwp{on?ditf)dhD66X}MI<@Xj&2sd4a*42B$p^jxvDYUjQ;z2QFN zkfDJda~s*9>*0sF2;6-sJTr_!X?g0Oj9RT8j&LGMFZp4H|zxkPI zEzU2PuGQ7wt6X=NW|o$9>g-ufPS2>b(5bP(VZHF=SG9lps7y#@Cw3x321`y-q@&Q}CQimhl?{<1dIoQRPBT)cfMpaoT6H-eOs_0!Vr9v;)}Q{` zm$g!>XwSj@o&XQ^_G_T4#|<7Nz<57^<$LeF$7g1tkg;_;OR{j5Su`IW-frMqt2fL; z1}tNDO;;80eEit$cFKiGTBji(mibe`*4+WK^-4KoMqj>lIm=tYa#SjY9Lj$bEtRru z&e85>$sYhr5$?6cblOx*o3TN!pg|FFmu+x@U3A}I)L=uF77#scAWe|s>iN>i7p%Q} z=aHkPf_3F`YFFw$v*;wplR^q@Q^ufTFqJTMB+y&|sm4BR`g%_yfMs$7Txcd@reWA} zt*H_s2CFNYU0KqT&pxlGPoHw$>D@M>dMc?>t*J}_u5w-_cGQZimX3S#Ti#?|HCE|# zmT3-lbmWb5wvUV{+gVVhT(^T@U*CYS5}jqH8^@0y*WQB%eSV6@D$})U)gA1RXs#RD zTu(l?I%oOs$V~B}OJbRtyylC3ZTyk}58P09V&MCgH~e9;NI?M6v0GhU(fWEZ0?WBj zp*0#hdHN;Q>WpksR>q)nn{2nWtFKS*eDFbah@dK{3(m5V-WqL`s|Gswqr1u?DKc8m zg=GZaz}EO<=_zy!QO6*dFc+bU;Sga-i1&hy<=pbB&P`s^`H3l=y?RA+C|L|`^Nm43 zvYY{EF0pyMzN$leckA|}M_dr>+O@-<8cS$&4hY=aFveiP5E6baYa3^7DsDEY8V8OX z*RFm0yp-idpKs%H|5k^_t@8Kr@PZCi95a^f1N2nNK7=O5uV{91Qk63NWOQ>G2{t#m zVIDN1ih_(^am_#p6%>p)D)olP=w~ima=ZWr08dN_67{O~Y#Y%-_uj3(Y|aNpzMWKO zCa0XBWYo=PsC@5U z+mN!*hZZgeEQtsHDjntBd-r>!MM4XSC2r}wGU3Dp*J}wZ$IeZ>tr)-g-e^lTIz2Pf zwprzR7dO_dT);>ZDhBZbSawIfg-vTwjatK99J+Zd)1rI2Nbxl>p>nnE`x_;mf>J6Z zk{TNr(7m_ap}k|Hwy;MRyc0eh`tEI6qSCaC9DGj-tH5J7FO-IEIvA1gnZtW;(;-YJ z)y#&jVUCGby=@1;jcQFZD=WG@JEIrQpVP_97gWPhvWq4|UCCC`d51!hI9ptvGk1{A zGBG(iGN|sZE>HSQN6Y7eN=h#4hJcqtd-|*uy}GbuOH&hb4Q%s-aE&hY!lLi*4fxKLno7%Ss;?GRXeYF1Xjpe0J*?fMBg&-OJ}){7 zd9`b87g~TF%Vb51eRTY+2_D&zn}3RXA3G9U6*`1~W!3EkkZT3CmS&}CzWLZ|8o()rmb&1|e_bk|NT%+A?XyNg(bT2ZT8`t-IVhjrU+$JN){tz0gpp}u~baX4nv zf%bzc6GeRtmT~X{ETfKb+wnWJci(}KZ+LOhbawObdc_ptwE>p-q_^UH{v1=MQbCha z%~IJ-9*Qkuh{a#dtRNj1cC}b0H*F?b62;78qf#}M1+N9BOUMy2A;lFBS_a%?&cbB9 zsa@NKb@y#|Xy53V(oGpGGx1QP={&>rG>wPF&~#W1wY7Dju&J1Wgy2^GGC7cZlS+qt zRBhH&ZPiq)mfbMm*Yju2=>pVRzPGDKm6l8)gtN@~m#o&bwluF@V>|TDcfCy;t1H^G zXNNM0gjUxup$od;dv@=$a?|QcQTZ-(+z0JS$l7+j8FuTna*HkQ5w6syw#mNbsyLwd<3-j8jH?3a_h~pPGMt@(A z|DOZ<_QMDDjz`|6VrkvMfF>u~u7F<>@4*B6tZA9d=M2&rsRDTDXpD@EX!rg@8r!|w z1b!Qie2*R0zRk=2cYa$8%5FTo;(rux*;8!HOiyZMVcxpexIA)rg$2->4=78?u?STu zt5Pf)NHTI}d30iKP8Y|oYHg#WV!7S2ri;_lIy*U~ z@tIkb;J&et2avCpRmkMj)7$O1AVv-z+^L&j_7^ zw5PA%vBUcWBo7U5*CBYP(3~PX3A9Zqhk~ z&xv`%>Z-vZ+U`tq$QAW!MHAP?P1nLQmbl^2f~RY_rE1O71iBbDomnsH)XQho_I0di z^6E9^lPQ%~S55bN=*~NJ?7%^#nk?b;dy>$f%PV2s&$KtxF=zlN6PMzOUpsayv&Yx8+ zlhm23m(@Mc=Wa68Gxlu8wvSqQg(eLqT1O5Y(!gMk7n+%>%+1gEJmxXBW0zGh0L#d* zVw^=o0J9yYp_uyY+_B43VN?w^r5>Y%uz3gj<^?QAwft6o#?43`f3N3^WCu<8f~y=g z8Wa}wxb7LN54AkKqwr?RK>o%x*p$7tbmh`zPu2N1vE-#48u?nQ>0JQScL3OvQ&U=8 zT=Ka?EW?Q!I++43xn;mW|5?8kmhgqDe%| zS7v$7d8gf0XBvu3QuS6tl}1gaTG`FPt20x&IzQvHbbNNsbg%|Xcf>r@#6pJ)fbLW} zxD#(5(fi)>sNH5!0?Ve7T3KCo9P=9XA2{ULL5dDa*TB%AR@XPoZ3iDg!#Hr@fD%mh zS&X(A!`9;WdZXuc2bRrCUS5ut)0l=fwYI#Z#o1YRo#DEmg&F{9(E{g|plQh;Dm=n3 zf8|NrQzIicGdJfAbshk1t4p+72Fxt{6`E~rhnLsctDKUS=?OtpaQh#yoMXE;llJ(N z*T-SXVuyip+~EQAu+UctJZh39W9;S9h7}CXj*n}3V?*t9Hu79=InV)dL)hA;lbX7E zRd0Rc8+G5^cezSKcBjyh^ZR5glu8g+Ep!Gw5~Vu{e=MC+Uk^6dX^o8S(vIDGyp-jR z=HKgve{KDv_%LhKn&xg-BBc{}yYRy%Ca!65e%6PXK{9r<7(=9jibcKJFfa4k%&Z>! z%9mBG(-|ylW^#IydcZZv=h8NgIlgzV?m2o)1F5Wf(iv^*8T4~O=V3fb)z5g7f`v{B z-4&{Hzy>NT04X-podmf`0ANefg}=i!vc=|ev8b1?T-Jqa*E|}{c6FK)%j6^o-LGo< z$Tn+Jo_YDS9)0vtgC2BWhlW_JA$Hb$Z;)UQ>_2GWLv?QJ+!_;-oVxo0z{i!1?P8m) zn6pN8{&$JD$5MWOe}VV!b)>}yFMKyXE8+!n5(*OT<=N>;&CSeu85D^*iZ6h4-1X%| z=^q%fe(KZDK5v@TWn|eVCVanovVmrEt*M?uPRI7_)$IolX>=egZ4LMLc(F65j3*O} zurZ5)U(S8r#MCI&Rs#*_M%Bd)+T4H=^9i$Qm01$5z>Ot8CDcx(Ji$75?W$h7c-}y{ z%wktEqoKr*G0708-RO>b*fnQ3@0Fdbr zA_>ak-@^R7JFqAgShWII*F>-rMgsKO)hRvo%+p$5EBk9RbF)4h_+FYasa8W{sNC$? zqr*FQXc&8Or8L|>VhRSkHFOj?vrsp|;DbNga7)AuG{2HcsC7`JV`7v<+LGnoVz9}k zdBa;ur?s%Urn6Vab$IzR5W>56GJ=uLEk196G2Icig7l?t%+S&RD>p zm52%*8XOu{t`m^lt7amhVyR+lYnny?GbB-=fA#hb_`tHsOJv#p-MVhyo9DSMb-MNE zhuCR3b||bu(=Ytu&&1BfbLS1Bk%mKw2YQ5;#nJJuR+Z_WW^va8BpP$8~LfUMXlkeLV)d^D9fn zQZ$q*OUvr*>e6jTkLkevy{4pbX7&_9QxJL>hBaU+rW#DOR&jDh$qAf>Mtx78^NyF0 zZEYPd^WEI@=;lkueVfr5cM;=}1wndm$bT3^s)paQG(1Cr0s_JdL1mWB&E9!AJ(y*yVaA+X}G6fJ^2oGApMmH93GxC z*U@dgS;py*+;QkaaNVXPki6057UmdJV2)F0YYcBvvX0 z&D(eER{zj8b#?cC-+<-KR)ZHSQ4I)kek^H`JSes>FFAkatgc+XsN(Xf$KVLETW%>^ z(9GhzUOab3XD*y~_YjAz+D1?dD3vPic3@Rqua?YtKf(6@(1=ER`!vwir!EXitZWb! zTG&T3;>3m+?kQt5##OeP4xJ?)faSIFdKlYAod+c6;K0u;Ea>^OFX_tEjIGl195(5s zxq{0pEAD`IcNEl}&l+&ud+)v4zJ1t|O?rSy!$Qd3s z0E1shXW6PNfaPxqltaP~kDHsEzRlF}_xd*O!-S>Gf?)|!LWr4^lh`JA48_E}%&g{2j9&f&w56X-0`vF**}wX=Uv`^Lt!Z~G2Q z683fG)PcNTzSC+d9oR%83r5E|lU2T_%OlQ8qpAvBN=!+T@Z-bsCEa3opIV{oZ6%(B zG&MhOz;kYVTpLWlIBc_7FLxTam22wm=nO7w?Uru8{dVoxxm}|p+kuH+TaykKCM=m6cIyiVzf1V zZNlJkV*IKB43t3tFf_k3*CN^S82;r`XWXHsc%8Pt_2MU`qz-CTc+kf5HT zSDj2~WT0Dnca3S^p4}SjAJSmDTX}F!Hs?h>D`FIao<4cao#jXcgFOX`IAVz00=~h4 z5O7aXL;O_ehy#|FS9J3H8M{0}$4DZn+TW|WIyZUbi!R>7JFP7La9(Hj59Kbi8uZ8 zug%YzH~7-E%LdE2&Ti}5t`^r#58>be*cGxFOPcj}cIuAXk2{I<_xF0-;tlp5HbFbg zSM35^cXp{cZvwSf)q@Ml(fBpOAfn9k}`nVCh1u%yjB-X~rHC?)RUUQRy zhs?pn;Wj(7sD-6Pef7C#tTe$$%$CFLP|b6QF&<510#CS$dtrh zS0_6Xj73@2BJUJ(9@RG!5jaaA-&7A&oMuDSMi`6cQbB8%#sN-SSK%>Uyr@$bFQ}4e z`So=4^jPtQQ7s+Mn6n5C44|@q?=E-vP+7rI6s=sohp7wvU5VZej&QZD*E0?S#tzmZEE zjUIpvqjkOprJ}V_a{ftEFl95IgjR^1nOU7adqx+pU9)UgcTc~k3M=bHt4tC1EH0Dd zn8MImHa#$z(Dsob^$+yAAVWa~>A3l&Wp(%WtI*M-Vx_84__KNBJDc_ifb$OMG36(6 zLX7j_>oJaq9RMbGG)6Ga`_UVX_bB*dadF9DnO}1=GsYP%jPhBntgmQtdP1jOJfpK0 zE_k{`Q-nqf#wOKbDeSfIg!QVjYH4JsUxyDK(1EdC>TYG!ktSw>w?y1kwj(WuW_0*b zR3Tna@SqWhB%;Mh5~>$VrWFyVOt@;qL?&gea2h=D?-$lqROsz?;}41&?y=-7CI>r* zw`t7K@=45eM8eIG56BD%YykSBBzBmmAs+6Rl<|@d~ia>wdLj=9UJ_ zakm*!_NDm+tu8L;!nt#rwJ3a5)6mTBomGvLQgWqsx+SQ?pZA-zYk9QB7G>v0OG6?5%HkNNcOh8XWA` zuHAb*LT6cV_nw`$FZL*}(BUr8=-AFsjkg;b-LXrBj&3ha(CzuYd3*y6?=YDNg%YDe zR1eU%oSm9-r)Oqn%F_uBs|%OL-CdoWp3=~>6z1AZSfVSHyktvvnJzOi zV{?G136IQ)9gHgIELUr7mP@-0p4LwR?0_y(kD^Z%tP@ zn^R}D!*X<8g-&Z>b5ON7Nm-^zMi9*%%&@o$ro0MF8j!IG&Y5x;L>uuqRX{IDjcu4(s|D?&@9A?K zbEwfJ6wa!>{f<4r5rD^^-&S(?>o5`V*5QxajA0Y-M7;RG7B&eE*|^2IdGkl1^8h0G zo#On;6V_Xe001BWNkle#f7giY3-C@syHlGBq`A9xsKmb*Y&eG@9yR>PR7kvQe$9u0mF$Bg5J`IIN*eD9mkY z6Dg?xoa3oPtmH)8pqc_$Hd`DT2GVnpt}%2Crt7%&QPfY)&FlG>U)1Sy=e1t1sAp(E zT?2huT3)re2j33&V9^F{C*z=%cF3Gy94!$x<{VyNyjf=4EC{^uy{jo@jU5lK3LJ_I;_cTtJBx{fwdVi z-^B3dI!!>{Oou}UClwCZ!rYuLU%I4Am#-Kk0}9TZKc_Qi&Zt@{c^u6$i@E1sitDuA zZG(<9u4}op#`*@-lSyl&f6z)6j-9AW=*0<-(}RQ`3IQCf6j#JCAeC+&#T&8XB**n) ztkrCrCpIw~s38|8CbUv1tAAv~^qUJ;u2`*u?AiImdGgzmiaP8~Y9U$axw<}4oA zzuyG|-Q?|~qq;gd;eW$qg92>l&fVsu5-Wh^p5Bmj+*$T0{rY0xx4t`Ho8Mu+`zzun zXkl9@$*Lu|`h`(8u8vF{7MJFA`QjzLbmnC(t}JT3Sk%P}7j*Wev+C=C{uGQL+?{E+ zRmfpQom3Os+FD%$9i1BP8?fc;Ae5?9S{+F`Jy}yRI5g1Ug&WK?3y?!TBk#CNoz1GZ ztJ~K;1{WRxzCc00yE7?K!ratL6W4U=+!?(zep&T&LS23RYNt>~nbyk6sv7~Ji`3!i z!|k^p*F$f5qt2f{YZVY;35h&t7>5rZ)cCate+Iq%{gzndkfMN3b#$t)f6#yCdta?l z==VC>tgaF*o7s)fl3G#hxZ#XObJ|X{EQC^kqh!GH`uTI`bm_`P&3X~JrOOvC>Y1-T z<)ZfBp8YoNpa^3*57R4_o>I-4GIU}yDUEbP{pwLqHmEjvKOzD=vAI^9|2d;r(hY_- zP5(a~yRLk}+*ME5JlfCLNCNk@OOpXCUmCya`0MT;a3}QI76boo#hj^ z->zfFj#|x$X)BIu=;RXfILcnRI_~(RfwQu{rhWSlIS;bi0a)JToW?oudwp?l^3UHI zJMoW-JIh|kw@!XAxM{*Ouho1nPF%gFvuDrh+O=^_&rW;7gqXppQ!lEtQ89&%dm2Nj zR<*8N3P<6TvTEARHJ?qX2PfcMhqiYO*e=}#7KS8<88Fep;SY`LJd48==j~1U1!ou& zN*a(%!#KwbmQzVnORJtrOzYVfPwMK_vlw6^Nya(A&aIX61*yZas; zJ95-I<(#!BHU;ywAu$=TI71fmlaN!fzy@hCIY%}Zpv*ZM+?E4{hn#pb4cJ~2V3`jA z@;ktW(KSItclo)epVs-a=d`l6s)glcoji5g2g?54yHr69;p(`#d0{!P;){|?B{a~} z?WBPlTMv4og}g^wIVv56Kl zsue{jO3s{nS!26)M9ZcXrP(=1Wjp~zx{}V`Ku53ddx|S}lF2=sRgp44IvW=8065|G zwhcU>RA5QnW|^3dbvo-2dIdf4Mokx|CUolT%epc#sX9}O&MtTLX5qTm>s}DX)sb(b?Mz4+pbHZ?;2vr?++ z!nrfrwPU9z)ijAPv+2y|)Z5u{o8+|sqsn27@s53VBCz1*av%i)C0&ZmkpL#5G4UnXaQtMIySgLCdku_ ztgjX0BsgBNUN_Y||Bow|k22^%xuDm*Rt;eJ`IlbQwb>c1u_3Icxqg$gGp?-rdVB3` ziAApYrx`k!DZTm4$j3F*&B8=)mlb2WdOCyp1zXM}xk6r}J9jw#u#)#-8(E1u8%2Wd zulHq}h;|xrm7^E}K=QwFyT{suf$GG4PCVH1dKLG!XcIMH@_Q=GIrdmCm>nSu%1KN*EX}v0)y&O;WHEJB56h zim)uYZQDqs8(()U+bPaQ6T=!B9#)P;$3o{TfbwuXbTz_nW<%r4?%Z6c= zKpu$=ALufpyt1^isAryeMtjG0>dg;6q%$v^(r^FPZ&@?9f3RQEbJI2`0?@JmKG@l% z-fT`8C}y>WhI$9xSfMlM{Ti!WV1*q(C)di#NgV}WJBlwrD(4vc6%FjBv7yF{DV@9y zmWiD+FKcpsUhCzOnk*gw!t3~_GQ@iub#rD?;pCVn_Gh#zthU*o#KiKeq{u$)S&LNg%IvI8z) zd3t`{PJT%0HgRiYM zBgn|UnaP4HPp&Tupbn*Q08L%Ipg;JX-_es_d_35?CX?n7np+-?nY%jSmFBfh)mv|B zxVP5{$9&U#!ChvA;bWkk$>u#$=Nci^#^Df;s{vriCbqQf{G{EzLrH%Oy0Ix$Zsvems&YY}5j zWOec6DSiBpKc>gO@cG~r*=`yv!|Mb<3=Irw5Q)b|OEnf`s)3tFPU`FEGJxsCde~E~ zK*@;@D4fs$7EB0`3yZslP|A43Qg+ZVm}tddd7)I)<(WwVsTrfPRgd}$T^$+-m1au? zlnxe`+|5B1z}1@|5YQ0Q4R7DvUtC*Fa~p z5QwqNmKPLT8pphM=b7l7LQ|IqUAmx;#vTNd$Ph+XPMy{t{+Hj=Q(yT?pw=W>S}(0z zIfrWv*cm`+BAHelI@wxLBLlHXux$EFxxUccJRYJ)M`OZ#{*!Q2A(;~vvXcbUtV9g8U~aw zlvc`gj&s2*2W5>`GhrM9Es5Oqfe(B@M~@#fUC9oH{e3R1pzQ$EIXj7;eFqO1xok*I?P=_CTI3YwIl4%uG#dYAX1u^8uZH;aQ#h%2$+6G?jsCTCb_HQ8D18 z3+!r@sy7$7IsBQ!%$t~nPICz14I@5WaCbffH1q@9^OBu-VA;gr+8@y-3-W%jk=r|D3K|IByp;miQ>ny(AiS zfw{Ki8}bevH9smvBxK&6Ycb@KiApVG#>Mn!E12$G^w1)2O#JvK`7skJVs$ zI)ZYB3qQvDskHg9F<{>WlN1>&Aihd+PTwsc^NpT|_YoK2z9+bk=?_8DS;L*6Nw^FBL0ZCO)n)lWY6yymW6)5g+@QqUS&O@CjZGjBa@oErHI zyE^h7pEouts&ACNPti@ctMb<0uW8DI5YejxR2>9XTtaR9E^YwN<)PjLJq-F6k9xhKmDP1qxOVQ|<>H*2vv=PMbS!IL# z!p}kH8yXpt)9rnODxkszg)q`SCT?QN2h$2;9Cn|QK}CfLJM=-WBhQ7VH+hN1UxkKb zrDU)?IX7eFl*Qtj<`x$%<4ZvX@a8i>5oKv<)oMC>_U+Ztqeo34+_`I)@fPPQ@j`Qo zxaMc`Gl?Ytv_F%mk;CWABX-SwHLmR~*I6bx86^c)Yhq$bk3asn{`#-~T2FoLYnIP)XAKU!TFND*AA8^Xb?>pG zYFEliwHtQbvVn+~EUp74oFs`IG_v6^1C)CTotBU5?d*2^kgSNcFgnL#IyfRhf$(AL zNk{-Yc8kRJ8UqS=f9Ghjqu1BN~Fo+s1af=+7TO?eSnTn9svOq_b1oC_7G}=WwX9u(hqb&#{Ct z3AqQ3J1(Lz2#>WE7~Sz z1Mhk3gU{W|W0A7TEf*Ny<_iMI@m|6iaQ!`cs+`Sjs?>9Kmx{&BoW$oulZIx_XFl^8 zeeQFg)AP?iukrD5(-(LqG8G);J8nC!N8b7tJ3FqgEc@E8udEo%VxGi(jzSml%bCTp zsbdEf9;7U3?x6SH)9Wb(Q!Bd0D0G1BMfBkd?jzHhxAcF5Tx3sMJBJop{vUInbKD^xBQc|lcE7r4Yq_g_q zPyU2H{4+nNzHLKl)*4E&tqc`teM8kqiU*$d^+!17`JNQ_TJ#s@%Eq0sSIR_uU5EL# z0G78V(Ho0NiX}b+IJ!KFk&QK0!F+CLKFdWhc(>Sr{>0n1YoS!onwe03Y1MvZPZxSf+`CK5QQ?}1vMU2RapLuK@agm9%O;W zgpX#^1&+aJGNVkIPII6N@!rTUba;pz3Us*2B@W_7%?BA;td^!~wY9#wrsb7&)l(V$ z!=L&|{lriFlqoq_fTubNo|tf`@v~582n&SQX$3Xj2i>!L(0ATC5{-c~@AHOiz#pD>dp`VR?0N$z~*Icw;ufC>{ncN!e*49X7v0FHfR# z(!%^K?S32B0GgSM*CVi=Y^S2ay%^ku8%^b~MbD(Y3_jT3uc5vHo8>TZ;52}$%EM|H z&0x5O3?X@j>)M5`aVDHYw!5xWjHNIoL0=i40MsxjqEL1M_i+B99JIJvRJqyGFMjl2 z>c>C$LFIaTUco~_J;iDmQD@#u%+SS<{f#C#H|{6J)1P?q^POI^zw6(>YG8RQr*!K< zc4PMkVDLA8^Edhr|KUHltHTC2yg_`-<1v^=kFhRlBB8EyQvdoRKdb%QN2FHWTx7a} zaEhsD>UO(A5g`B`DlIIm(W-4DwW5@UI{SjNRwPMcu)~d>QsC{hf(#G*Es`l+LGuM! z%!+D7-XmanskpAGwGCU%mRUq>*ih7<&IWVsgsb;U*QWHjC!W;A!h(j!#`LBK->ioo zdPw)(cc1RK;|}%qc5hxgI(=I~@3I2AikL+=Ob=lZ+incYYlzsQ=ig* z`cMB!pZ)A-4RDE_T&}QL=)|2b1DSeNeYw1T`4@jd2S&FmOJP;7gziqOp$eP7bUW%{ zvz-w;@k6%;u+rM7cp;PoL!mX?Kj;H2hl&9pgDxP_aR7NVPow43OoFi%2V00Os$~)r zN(xIX05SO}mz;FgYZWizP(hM3Tw#|gnx0?Kr@#D!W|kJcIP<1AKcqLj=|SE5hBxZO zop-7`iXGBztwtv~7_sna(FJ4q5zy|K0t{{K@?f4qSATPq{>l!}YY8m#{y3E4uEQpX zYfCF@8*X%UcXv8J{MBFmm45R#f74x^_yLD69`*6rb1mt1w5w$UoL~CIk81zu4y7<2 zN+c{<*{D{vwvL-$___R|@2RYYNcAzD*Qmec8V!j%3UVao9<98EwAV^PkdF^78kvz z@vcYTt@pkE1G@dryEHs9qS0MrYSf`=gi@+jr?Y$mWoOHc8guk->=fS2gX?BLw|83F zZPN$h2lqbLhBGQ&y5#SO9lFTmoxl8xzc9rn2H1Rm+==7xXRMBnK57NO`oH}j>PI!F zQdPFilq0yq0+a!h6eVuXl%W*{u6wf8R>G6ggcn4iRgDY|xkJcQ%e1pZ0ITlE!8s=W zTY(zmgu@JA&?vl)Q7| z?tAo>hab_s_dlS6hYx9BXn=jv&8Y)*w|7XQ+{5!Gpnq-QaJe9ey7{kl8V2zYE7fe} zUK2ZLCGXy|XLBmSd4LfI%bvgg`@gSGeBu*sjK#4-ax$#~&0{*o^{V!aj;d9u=%0V| zf41t^MbuLUhm_AIt@u=4FIsUTZq8IIfpS_dqkrAD6k#59o6at6>mSfy|A6U(6j4Cn zcp=^pi^f1CBNz6#5>{ObXKunk+8yJKq8Itr${VWUVhJ6!8FZSdl!!IB>uaU5e*cgE zR8=K3GQ3@HeCR25cq#y+p7^buNqk1n%uT_v10qRbLTGTlb`&g{_M{_uBV=QN`S*cz7X7pq6#Yp zN%4o}50CLzrJ`T?$j|BxCvI1xv>~;_0p&#Fu0R;cvRw?|A(#jQMo}a!4bBe{ZO?uu)334QR|WLa~C2Mh8xGAj9{t2;)Pm)l{im*5dk_7K$Y=PPpq+ueqBP z5>`lLjN%*ZwqCwGt|y;+UKg%T`1|RaH#hShyCoGa3JxBt;y>TlHOqE{nmRzI;Vrd;SHT zxpc{ucSmoplhyA12Xya!_v`&X_yHGRgZ+#{!}-)|v}`*X(J5c~u}9tInB#r@FC$r} z8!pnV%vlcI*dR+31LUpL4D<0MO!G{uQGw~f#)iLEw-$EWAT|cf99p$VzLM8O9%8{02T>>-+xq&vjAO8z zNm{at_%S!wlZ_DVfMxzZbag}C0TAI_3Rs3~T5Q%-QB##x!zMQ#@1}y|8}t#BdCpv& z)C(`aq-&GYT1G8MQb%X6RfX<<;0^l8fAUk-%^ev*JtK5dx%c=iIywp}ZG>f0tGcvW z{@mh@;_IQ1=RL*T()j&sQo;<7+wL4woPX?NAJa2WKke&-jr{!loc}+ug%T0R9(vh0 zL8e-5{kvcO6`eSEP+1lzn=RE!Me~`t((sn)+&PY`4cnA6;i5P%udXW5ZYiJ6c$sc^ zV9;P0MIH}@A}LB2UC~s_>Q2$?Vfl+XnIauPvj(SneZ^pg{K3~zR$<2jKm-NHPHBm> z-DoG57xjg&enl^ydD%u0sZ3sd{R7&!|DX;YIjn#5kA6bCckk5Ry}Q+sPpJx5zglro z>TY%!e}DkyZ+zTHd%4*~(Rcg#$vJTsHf|7ZeVA5Efo7 zse~p^t=_W!b$w&S8qDY{ySv;&-syI3;P1gTo7VuJ3d`_>ukmZs1SE;~K+~P&mEyW7 z7c>O{%@~Pr*5Ule-VA4{X&a4}W><^)?Bie7OXpu!n}z{X;e@pB&_Uh%!2SBjM?T_) zB@3iOy#sFNY;`v*l}rA7<5-TbUyKci)0_2pRl)KrN4*IjW`FzX|E~Y%_x`|vv%Itt zjmrz0LhmtO@9S@>5Da<74yB?#^q%+WAOGkNsa9N3IzeI&E>wV0bLy(tEjHDn8Y-8= zh0mt7zP4hpjCuyVLF88mBF5=}1|L|F$pEBxj3XMYwh)*Lo9LD^2ptDH$t*^!u4)Co zD^>NTu>d2jKuV`eL-5oZ(nhVJi`ORg)TtM}jZ89PYdFdKvW!m3g5B?Yq}L-wBc{-7Je)`A%ftu@U$Qi3xS~oA5>r2BY)nEy^;R!{R-_5s^$}F=~ zD%QtkIdq_>Cvd>>1;>PcE}+UgeDJ74cbC{>QsPlMi=@fWJt&q-rdzNu0WG7!at2e0 zWVlyI2o!O22}_L2t96af&gj|aU$Dh-rPZ{pdZDY=9U}@k)Gyxh(3|z+KlTsw#s}`V z4JyEku3@!SkNEfS!gzg~spp23NdX)ad?|QF({0H8z&O}O8c*?b^44 zH^DM00hLg|BNfFpM1>-ZMH7~<9O&%}dZ-;iQi~XCGrjOEpzX<)W10R>vhDBTnsGl+ zNCB4VDr10z&2=lAa>0ddG4DUsN}3Z5UlBd+$+dNzK6gQ9&Yst$tJi#RVIV<#^P|=` z%DVU7d-d*jzgus6$0NG$o_p2N8F=pDbzE-_-ncu!y%>d>QYB`#9#& z(jENFXCLzv0-zjQ^l}|cuYh910%TNp@?7ymBBt*3batpwF6jr}_71)0;fKY5zQ7q{ zwScOPKme(@r}2E%YTdaf*-l%AummV-)O`j44xnL>cTncBd|Wg#4@jC#zW2RHcb&K`2sp4O(5NcSl*4Cq#qZDVq7iVukpgowuk+1*?ycR= zm?rSp<4@?fe(SgNCx86M{_!l%!R-b+@L9yu3$C4Wel&^Vd%+qVObaR{edx!2Oz(Nu z+mxY+(r&1>QPlGMtOmM!eZO0Ij^)y7U6nF+)wq3Tw6-t}95(luT^p8*0n40O*+`ah zE7j4>%4i>mYZDtH(Lf}IHoOSB?6Zq5G*bx_R)~jEwPHz2cE6lEmDJ2yQ5VK1bn)^f z%`Pn%Xrm90t~{Fm+)qg2z5o61*Zbf79vwe=%yAtTft-a~0dfrN<6Whjc};IBSdQPw zjUbt^z@PoupXopU=l`syo_W6MD#dkI?AQl$VD)u%8ZZ+)pdv5o z@H63Uq%%HH7-^UrmJA1$$L-04dD8Q%t6BqC*^avH(E(f@T#styiaSGLl#x`m+1BFP zhAvM|>EyW!dimmcD;#w7_Pgpb2(M8cmObvj!BRNblSiFJci%k94vRZnOZdFmY{BF6`wkz` zFa7+_DcxY3n6Y+Em3leQ7Ftre$%0n2G+J+}nWi{OskpqLI-^+*Eu67(IrU>a(cR_O zV;xgpm!QhR7Pyxt;B+DepA8%KVeFo;N`Vip2rRd=6k>D^1Lv6oGfo_i!9thDQHEKV z*V&7g^uoEbj-AfF0rOq6IXJj1Betx_aQyHQ{pb(sKojzOA1V??A*IPY!!xhYs=|{?|X!7axB@>3rS?wR1(I@rsU6 zrC9Qm$9keH3q}jW?ivvz6tc;L?mBW*|Lns*s{v%SitE@l*jzk@URqUWHlsshJN2(W`cVx5L>rjbtQ%CCE847k z;g_=!dYKCzWz09-SYA}KQMVK!=NPfWc?I{>PHgbq^aln+JBj<%bCR)T< zsa!Ev8L-SEa-|mZ*fZoWI@`5ymO=&EXf>7W?b7Vps$M>GLC>B%rKy=&C0R_(7YvTz zolZUj$A#PvyjjB9uv3jeUQ7-$gW2VN(Q2fPT_`+)LA0p@P8lKwk*?^a{6W_L=t{%yK4 zNrUG(J$LG)dCuuV&H$UA!DnLY_exb=y}deq=!o9-@LTo6ANWDN@l9{gGdQVw49L7*$TLW zn!t6i%-^MP-J@G8>1RLm4|Qa0Ncn_3lJY^qZZX!rt)#hMaK;#s+9V>8)Y|H@xju|1 zkpd!sx(j*r_jG$plxo_6muM-)h?Ma;9Y2%Lo9+?;m;pTAAgxz5x3Z!o5)YD7jIq27 zlX1eSlr~hUmV!$c)mAg1)nZvQ^GmusHEH>tWo(%@N=m~~g}Q-WZ!+VX06r}@6v1-v z;C|h4;|!8hqgfAmM~{&(X-+;@22f6xDU+@%V!^9Sa#zx2{e{yd4DxUk}d#y3mM zZ;C;39E0&^6Alkfi?kiG^5v>N`qMwD-NV~d$R@3QjB13zG9a>vZFW`lO5GjcgyoR3 zn_!u4A(C?$C2e>EmB*bwD(uK;A_Mm|TQFFT4_d_FDcDRCNG4sC1D4?{b5L$nE9&U! z^5Md3N9}?nX9`KKVCgu-xq2`p)vLOu>kYYknsNNWLHY*q`Y)e&aW+OyI&i zUvR<1J>{jSXp7oKRlTl44(Y$J^vLfNU|S~?NNLgCOVn!m=+FGLb`1_{2sg)6QXRQ; z)HMt7!gKPo;I{JFl4IN*tkfXnc`>Uio3ni}T}PBM02A?KDhU8$DT@NT(YCB)e2p-^ zfhx9Mu4rj(*_~w+RG2Jq09lO%Fjq$1rKXhS40Ea|rG>RMEiSL>!lg?ZpP2D;Y*eaV z^jj~LZHUA)jVX&MNzJB)2K%kJa@Xz0t;_uAqmOFaw!!G&YDC-X-z++|xFdcOS;Fsm z!ig3t<4z|)2WsGN|MqX|>^~eA9|J8r{#K-mG$y0(t zkk1Fd2JlUpJdcxNCZ!A$pJZ6Y!WY73XEfqy$YoMWdc56Is@7DpQB!w5rw{++hjja) z1DYAXqU{5HqPIdJzA0(|<*L?HwboEFowJ(F^8Aci^{|VBgRz%Hp@1=w%;ln8uW-hA zNt4*|UPOr9xU&n7otz0Eo>`dp?*L_9X11dsrPA79Ka6Qh)NDj?yjX3i#w2Wg-J0;{ zFJ08c{JiSzrtR0$dHg2={m7IMK8JSG-S?sX0mlpzueUw&h{kq|`g3LqLNm+qs0pNW zLnG(L-@nsH`mTfJ_<)JIY$S=L}Aq^7tSMfcOT*!FB)=*SpKt z|384{(C4DF3}D6L@kieEPW|9p-lX#4yaCTB&3oF+d;a+(+-pl65K{P z@MuFvqOOf{g)(2MOwN)~tCg}o^~EQ=fRpJg_>hIGxT#hUy*GfQI}VAY?z!hK{kwnr zZ}h(Rz1!m#IuEY|J>OU}_d5-s@8sVD%seV&HfXKVz%9>43M8Q_U(_c*`TyxRfAc@; z>8GA@H5=RghEdZi`<*c`jseq+e;>bIIxB6sTR07^F6o2sdavI7;6thwSO0(J-UHmu zvdSJ`r?*>^n@S5+M3k-~0TMz&k=}b11O(BsGmd}?HlNY!vC8Py+}t z^biP;kb3*Qr`P|p)_&h}zI#b1ftWcyJ|Q>vob#3a?Y;KiYp;!HG=xHtBI#k<$j3xV zDlHtCVUvQ|-&7_Dq0WjDC(T1G+o42PCT-h~7+^#N;;so+kYW}{*=|#n*bgT}Y)~tk z%V9X5RSR9&JRO14B$dKT(e62~8I=_{Y^1$&Ox7ZC442Ay@bM?{+Nw2(wxyBdI(BtH z%oDRYLV!llRVtGMUcf&4d8X@_f zL?kBdR3^ea&I&6^EC_I5lnW$WYnJxIPMG`w_1_Z_(Zhyv!%Cjm)~vC*%=eRC<2orC zPIVP@4v;a4pyU^oej@QS26I_F^!Srl{Kj&`+S^bf*PhapTIFuf0?(PUmf0*RbHFD) z@d0Ni-g`fQ7CwTawNA!E77|^HY^Hft=|7%P~)Sac5nvIjGJz`84LgN6mq$|iYsj$-0Yb*Zl->-DM0wPf7cQl`VG2y#u*N`m5Mmw@K0mr z9=oDA(2wp^9Hr4wM78k7Yp+KX;|N^od$bXP@|i67I4y9|`lK#q9C89u`F2OR3ep=) zPR=;gjGsy<$w7AtW9&@OukdHYJW_#Df@TUqv{y>l(GSJaX{5-}t~HdjFM4q?9)IQ; zbWNCq5@VkHjwPYIR4QUnonLQzKVkmoTHgA7D79^+L~9Di3O=?9c^hj zVp31!H)Cc;8}jkm4=OLtv(G<=KizPXC>KkYENybXd|RPe2@HT`0cY~^bi?go zvj@Kgko}1o0I-|JL9Cr;%)phOzX0{@hyVc}KHeDdSxc-SS;pbPEi)%pptTjNP97-* z|3j*dB&B54~A01DzsHGD5Vp&E+ z;KN|)d8-UM+O)*&f*ESyrnEkCs945Bi=M$94?m1(TSl}Gf@QvxD2U!+ZDR?%HyU72 zBCt8)$WP<)Z~i?#{NWEZrDuE<#J_(-3}xfI$50n9A02nGRMuMQN)?(AX4{I&D9GF!7(Bv|qCqrQ#IDpZp6V znKl$?bK(e+lT5%%u;}d}K$RH=l<(-{Tx7`LcGw z-L=?+sf$Pwjy12l|Ir^(MT-xITqew3|@#hPGQg##yXD(q+|IEudEEFS&qGr0fBzo3y$ zqRQ=VjxQZ!`<+$nih<>LCMAkfZ{Hf7;|V96fGe-O5CV9 znRI5ndf3JZP3!nnb9?lNoNLLV&2K<;zx(??{$8_J9Q=It*=I4-KPbS#F1A!~YW#1i zt87@3NU&TjHzZX#Jh%#<{K&5O%qb_LBNj%kw-+7B2>REql>{N5^-8ra)h*E@Sd0sW zF@b}cb-VY(O?Dqm-<^Nw?1b!w&%LJ(DR!9KuZ4`yE*p271R0|^h|Wr~meR1pLh6|- z_7Ggl?or32b`~;fi1RoSX>~^j3neUkVKMG|bb*H236?2#X#?`M(5tEfPZd4w-SR=J zos{rtXPkyBuDAj-w%Q!SBRS1;89j;%Q0T zYl|q##R4i-^A>b4d=V@Y7+WPdrvIj73o}@4;7X-5q{X%s+f2-u$pkePj*+uvwA zuHr~IL%=hX9Z`!bN5DhUz0A#SmNs#*{o;16vueN=S-x085g|Oi1&O1?N%S@_< z#>;I2L9dJJs_b-%qPmd3)Y*a0U3?L~aLL7*K=v!2gYVbSw3tPk5b)T--c68IYoexK!@414bPb9xDQsWY`ho1L!8Ffn4%Q7++%FMS!?Z#EtI z;X$=TD`jgzGEmBPTy{*5&TC0f!=?`%PMS#%+o@5@(&>DtNy#<0tn4-i{X{giEo@v& z;9F*_)bKhG;Ba9M9S;K-uYnCp(8Jj(Wbf$s{cLv2Ycal@T=p~`KQ zRMOyb5jsF_wB++9@k$UOY!CN+`M1k|7(k+|U<27Qu3@Ttqv$>LK9k zmtKsmCiNi3fv)U`D$b<7P#c#3gz{_Fk>K}-kc@>9b%UPN>ZWcy0fh(4TrI5S5=>ag zndX{V24272t6EbMCzTYZ!On^@ZHJ2?_?=8BSjA(KuL_L|ZoGDF?P=Zn3Eh)z3s;U@ z=Li-sNq=BIiVRSp2r9bIgvzbX9KmwAl1Dsg)hHzdg%YMspN_N7JPQ|HbOEMMHEITz z@5S$o|6LV#Di!o}bt2c-i_5<71?;{1u6SedOPG*OqLj~}RxC?BMc1}mb=6+R zxduAZZT2j)%E%-=7FR5zKM>8wEyGYObp;jz4{fET?Uw=_TiQf8B)=n{Qz~lXqx6|s zC=eZl^&wY{rcN&ty+|0HZC&cLjpU2SRqJ^ArI&HzJ@=v%4WmZdhnx2y^(P3HsgfYo zCnvEtFwm<-FBe~YG5+rFzKHgA)3XkCiuiZyc*QnZ#NxH&F_0RuZ22;5xy6>~?dz4+ zHHXa4I_oTLYVPeXEwCE1JMJzjP^f`_T4y<(X%& z<&;TEw3v|6Zs-T7m#sYyj5ltWnD@gU8+pns*l7`4)FkEfZ~XmnTzlD4IBv>LOuAhH zMrn2xj@g7R1d$!OTVE1g22+EC{+Uk4Vwv;?=^_W%my$g_~8 z*$R{HwIr`5+Uul_30Sdgg%oAFdwQCiAI~}WY;`Hx+q@RKb*U@W64H+9%QS~2i4A>y z;9yx!CKAE<=U=3y5N(|u0y+ee9xNM0!+0?S%a*}-1F{F%gJb{i#$j%4t5bE5Tx9Z3 zrF|MlEuX_-`|gd?jyN2Z;Xy>|6{O;+X1hui-5N9YvMSL{uZy6^CgiythbxRF`&6%qYC-Tz=R>36e@lYJZQ$Z}@kL-QqYOtC z=!QnJs6}H~vZ@!?-F62?*y4AsLC>S}=WY(gRcC3GuIj<6b8d75yYId`F2CYim^b$T zRp3P?@jKO>#cVpbW9>**RJBFUEn#JdAOHX$07*naRHEVF+$Ep?BL3sYKSo!iMlfgZPvP8?PegY0T4Z7oq@$GWvT1g|rc}JG zig8($fx85o069s1pmPTNyVl{7%bZ{(g~NU@b&HVwJWXC|$re{Ai{=6oF19Ih@dI0x z6_XvLzOPy$w!YR6G^#S@+MxtW{llZE$CG${O&@-9<4u}euS;3M0wSx*?1GRYV8`#Y zmt_-mq}$sxpvvm~M|R!`-}~OxIB?DZa_y|_NacgC{{xj}CJ_SiiL^RKzN&oTg`dO! z_h0{|3O=7>KA)B_TN_aK?0xb__{6b7OsOwUlGpQD?6cdh_`+vDgVnFThIAy1Ogy6N z%!n^VgGx>9Nd775Fd9y+ssKiwA;GfLDjevc|D%RGL4~c}w(6d*6cT*McHFWF0%o>6 zDL=?-Lpx!z#h~Tirv)Mo^iXG>?@cA!F)+mSw1bGXb>NldZ{qqp?lhfd&RJ*{gDqeV z^o33Dl;0WWVhOAEnOsv?NhSIE+ikZUF23jjoN&U?qM0!fqwk@OvHh;&5T$3sLBoay zJSBbgigekv{Z!D)j^pH0PR8%9yH4FduHa<>gUdyj!E^guBoft<5hn2O=fwn?*N|PU zdMS^YyYG&_yXXShPBIcgCzqdar8b93%hZFfn_2=dA)jAIAM{|^6mnwH{#Uh7@yfK` zrFubbHJ^Qg7F8HY;jzI_za^4YKqln`JDivBzQ;OZ=5v(ztGUEsXKtfQOEqOxZ$HAR z43@55i$C3Y7e;CoG~zK)F+>%rLmfBLFi3gqp4@|#t5)gzCrz59L1%K}dEC>cO~Vye zT#i|@W(hP)38Yfd;45Fbe6G1T z{cP$lCX;DC^6$&;NfF{O9+zoVOQSgHkWb_2gAT&l*I&cb?k;3voNK7sd=uv+2tG;q zbohx|Mty;d_ms(&w6`4%gGm?tBf)ZTa9)*VVT_pUP}qsSgdGIxyyx@sJB(4@cIfZ; z(yH|Y3y)!p4h@)6PCSO*p;3%b#y6hC^RK*yTkpMJ^0`&|I}RGEt7fzhrECnK96se> zVn>IH4oprcw>NF`&9U=GKY}lP=}XvQhwZTC7Mtt42ZsjH-DO=mb^|)o9UF4%^_~w9 zEHfyWGr!@6n{d`y=ZdGtY@p^^USdrIW;}dL(UYrWUqL~a1P zKt#XMW9Af#;Y$~skEzMHf>=74QG1Gm5WKhqsRWZ8cp+Hhwk#SoZ@ze`(6gv1P6N5-|8dw8}~StKO~V_O4RMU?6ATDkSk1m}7LS+!yya)64J&`>mlQ%*Vo zS6u!r^mKQkL9Vs~3qb(6!4~v>-bfCl+I&>6FxYg(+D^M_Lv~mV9xx=@_60 z&YSv~jfNbNA0$2H)RXbOtFBgC%d5DsUS;=U(7s$YaUl!mM3^vqsC8Z?FLP@ARRe>#@vghEYIq1C&XvSsvO#vX=sUwT zR`i*~<&kz(9P1{!?t_*=HPF*D0Y@BpIR4?XZ)gC}IKt#ZN(fJ%x2eD~Jr3zRYSuVk zNTrJ}f9b1DsWz&BsC6C+siMr6hW6g)I%b7G7ES6ktw--*M=I37g=e3I9k<*HLu=Py zVtYFhd|s)T2Ei#xNR9oHA`_#2_sx0D}(rzOrlc;CdX~FZ~ z2y$qnOw|2e0NyQvBHy{>=hF{xIE@M|14F}DvAP$LwstJ<8^lfb-iuzYIZnpaQum5N zG1^YmhF$4*Qkk^qK(trdrFhoj!e=pk`ZOGR=%K1KZ@1ly=AHy5U3`A1bG|8F-sg~N z(Am-1Ot!AS;d*uBsGaOP50sOC~JkL72UkUQ}H#|usSS{s7F{P&m*}h&aVmtlV zV==X>1F3LGNxC|v4(u}4Ns-5Gq7~s>S93@*IzLTta?wz>yQ zW_*!^N!y0LJ}|J%3LG=>d5%nt%-FIIcH)pnnZ8$y5tuq>ckOpsDI?N1G<#JJ=nVb5Q zWwTYw?;(Jx+LpeE`MoS;vrGE8u)AuHF~)p0g#(F9c#2x_zdrC2b|Y1P_&Wi1G> zwgji?X~f!;L_Q%m?PPQ4?H|Nwxq>yh0&c$leykiC7FgyAQdOYIfo)U~cIQoF()Dpe z8{vozjqzo{F^s{%e$1J@KYsPgU!bR(t8E?d4uH%JHK6zPK60?MI@|_=UVD8Rjz0Qm zyzs(H%03A!Eh%U{+!kw$*WM)Xj6083<#@c|wUP-=2HnoMVnd zp|=;Ev4pC>HM~I+d2e*xl zWd=GcR%{sD{N%AVBe_{`=5fD!V?@@3rl(8E~PH-J=E z7xHDZGj={mEg|R;SgutOkC8)dAd7>O1U(##S{Q5mLMMj{=P9(kF= zI#luK=yK13ZMRb}TeAvhoqZOryz+8vvBhT1!BLs<`v43ZXfmz%)ASr+jAlpC-`_7) zk0py=v86K{+M)!Y8zyFvgEqwL%Z+(_KHiV*@L8@Fi{jC9MS40C!p_@mhtHmVI!5}| zN*N^+iz1Vt9A(_@wX+>=__N{;yQFm$qcmvBPOaN&t4g5*%<9}RX{y<9pSpAn+cIN- zC*D%aaLL%f@Q}6c36hwg6D+%=f+-dseSTi35y8-C7Hj*5Pz;5!c-acvvtR+%jE(^5 zq`EJRapY=vu*^71Wf!U^5Hk=YdnFp;7{*Y7pmMo{lTJDb-}%mWFk{B%C=_f*0XfW@ zsvAlV%wfZLBB@Rri(yntIqtaQ#8cMwu1l33kudY~) zhn{>2tNQ!VARUv-nAmLwJ1U&_FrSeK#V|57DvBVVMHWDY2L_OC&tQigcEDf%`d3Vy zHU)F$%)zCXUV`0s+g0CBk%dGEsYb^*svl7q%E@anj1}9SSxGFKeJw>X8 zK8JdirGgD`x%G*HqoOQW#hO(|8bdP1U}PCN!Hm`=v%*M_%{Co}9T?ci=ZeQrFO%e6 zQg9=0hA(}mhIPyc>4da=qCrkvP5aboEWM*ytQs1{y^lYRHwT80?(7m+_WUz`AFIj& zYOF3gwGZRHCR_#7bU-yh9gkqJuOCMpeFT2}t80}k2-Iz2uuNy;E1Im1UUJE$`0tnEH}VL?w8$9H~dOYsidWt#RJ3H90o>4v1)J#%X$a! zz!OhmdH*2VIh@3WJe)`;I4b59xEQEJ?U3}2EjOT#XKW*A=k?|DQYhrqLOCe z{69Bv6RZwysOx!u@8h%JsTcgD(@r}JzxnmA#eLLsQMc)OCWgGOyuJ!p74tJ}@4X+u zLk@C#M;mg(Bj`vbBte*oL~!ykM`Ne0x6$%|RG2bymT-}3!C^jD(-<^{M~B7XC0G^+ zr5mS@bbgS_mONNyWtmlcf@Rtd!7``sX$$`Uk_=1OIT9>O_m}EBE-3O`3A*{2($Ymm z$^YnR4%s|q=dxHkJc>8gtkrNRlXR-7gre5rVNTBK6a6GB;w%8Pcec4LVMWA9TceH3 z&)cF2CNZxpUW~(!J`&eo{|EV0f(-H`y+-rj>U4(Q+z49P*=PZYPT@q=6iD6n5HnTeBMi zbq;>BLdTJaap1{#oE|LGr1{-`y|#)a&R-C;6420YSmE^rE0cIj*xU#Q ztF$^jZ>@Vrj}vvr`yD143AV+u3C*B{NM-p!8O-N6PVXD$E1ow*O`p`H~;Qm$xJ(Htnj`MuuN(K?;(W< zx~S7UG>B>4-8kxygR%2=+aMJRBOQrK&5MZ^b-9I&+>BGnCC-dL7Pnf`n6jO5m1Ulj z`Ax$*>dbptLJyXmN{<%lQ1;H;78tIy%1D!E z>vSzWI28DCfSI2!wF)})N)Y}qsVl1Yu9>^DoSB{fBw2gp{Qi%n6(R5E9f$ru<1|+ z&XJKJ{PZXPiPKL#QEk9Y8L+$qF%k9{?z)Qup+^d|amZ1_O{7|oO2VXt*Nk9+{C83u zD6QpMiE0xCB;>qZ1?{GptOWcl0SbAZ(S%L-l1EB5;&xM~;-b^fLRU17bQs7)IJ6hm zdTb7n`OXKcZE`wHnj`~Ob#jFEC8@aEOy!2nJa5ce=~hK#vZJaW2X!1>Ku)JvRC~*} zQ2BX2d9XWcEmUUd9RBJZ9KcAvgw=yXcxB~kJo?u~YKwMEnT%|qqU8ew%Y}Tl36?{Y zP-K-gYJ)-1h;cFbnS4nfR#{^WgM+>J+5h|$r=50EvqHEjtAlLivbsR9N9B~m4m+aB zPqxaNRjFtLJ~?T2X2_#_hZ4g(0iI~w5()B*LsYe3;3=1}-4>hS(hDvW_+e$aoryZR z$dMSL+}KEez>vWfbSbY2wW@+nK9Rg&+IK7x8>3`E=}EuPMnI0sjoh%JIEHRTt^l>$ zBu7x}gQE0yxptP?tF;mu@vt;a`}>Bp$YwZKz#FU9;I);j@Rt`}#GCzth;lt~JZ?N| z2bLLJ*=^u6!{t5n^L%Dg$&3xbmP*Y8n7^mWQ>cM|{{BDV_~Va7Dw$9>$yZA^1?-_8 z9U2}&S7#UI&wogot+ogvsb?^o7q23N0E2cb^d zP9lMAH=BkF&;5*wJ>)aD$6_k#(R3ui$IX5X>uwP&GvOk=Lb~lCOME@eLTV}G z4m&jz`l_fLh*7g-Hwgp(Ugk^18#f&92ehsW3(@yfEgP6PbKA1OaHm0<<>1XV0G2u$Fi_QD&u9ymaURB9~ zWji7(Hv0V(o|a+9O`UI>`S4&_g+vyDoDMU)R|2p+M%VQg-`#aWHFLyx)2L#E8hn8n3lgqQOXvPO0>EWh9gaVO?azZ z#EfmW!Rt$3!Nkdv1(uIG>Ifw+?QNNj3zo-M?8Y0Y=aKT+n>+Vl+&}+8q*9sY!)n8P zbvbE0>b?>h0LuO|{Ga+g7qETh*?+GEF#=sPIPo^UY@6dYlK@`J=5h4Axj6mPhagnQ zD_F6jVXLcalJ?>;QD%j}vRbhrL>xYZ~0k*0}fhW6tDXglp8RYlutr~5sWci?v0cINJGL;O`FKA~jP2y+hnrPUDvN|?gQ7Km?{yvl|%648| zwFY-T@+kWAB_z5!Q7G5d#gN<-I~lHxOP?(ny08tZa?;tZvt1=iR!ZUnQ)OlEPkbCV z-t;FVxuMBvOPjO$;6s;h^#woM`viTbK(JAh$Zx#={`++f3I#<9V>O>uWAT5ifX<{LLRo9G8H?_n1PGVIR}N|5wu0a=;U%E zelF$sIQ-X^LaxYQYBnR=QG<#dGJ9!e!U162JI7h}&q0Mle2#_@yhgH}1``R}{OK3q zsLDt+1UEQSk6CA;SR_xihW?>ZtQi@_t8cEreG48JXSuCsk_K*63v;^OT#lqdfd-RV zA25!ilJzDv$4P#I3ME_-Ucz2`?S&g|xE|?LT=IQM(%YKMq7T-7#>bJMKak&W8omrM zvuDr7Lk~VIzvH)uso=tM8D~38SQtCV+4V6Xn52)5QT8`)GycDMEeQgYq#9n;avCOA zTTPpW?Y7)fwv!(iLQh*-+a0q5gBm2A*x7;p{$5dO2$q#>%XW;0;bW{%qJouWQ9p>( zNHJvWaI+G6E?iuZG$nx!lk_Iwaq&f<%lwWCJ!+tZMgJNc$x8m~*;ik~Lr*Wnijg72 zyE-)ALqAFVaDsZCCy%MjeG}dQ=~oY z!Lo+c-F84e6iNs^buhqr*7-PJS#ulntk2zw%RWZ&IDI#i#VjBDZ9p`P3Mix5Ks_9m zRAt}DsBDK_iTfX0fI_u~XeKSN%*9I9#bD8hI?GkW!%2074ePY#mE=ns4Rt94u-~1lu zop+v;Q+ijgMrZfLF)L%6Iw^i*mOEaF=8s!S5)4>DfIZ&v@b@(HP^&4Mrjtsg$?=L} zbYuuqIy!Oj*=J#=EoPvTRgrQ9Z3zxD)KRQj#jI8$_-x2_)G=|KK`jn&K;0^~ac38H zCU!0Oa67)aPi`F7i}t|^p(O<7#5{=82M{z*XIcEKnpn(c^>9kvRSE-9Z&SSLjs#Yze7ZAtvoKYtG=o_M_MN=b`r z{cbE1@&I{!Qb(z17At=F%irSCOD}CES5&>=y-^_0$+W6C-d6OyxWzti0aD}WV!^=W z1DgUsEN0bzszFFXFoZfaWW%OraKTw;Vdw3(2Z{xBQ9Xg&_*xayCr`nvOBbW7tJ4yF zCe>=C+u`zP`JDvI>VUD0st%h2XzZRzZ`C?WzUAqU(?4g;M9ZB|tN37&Orou_(nFPw zdZT8fQ8|M6lfn{{Lo_O1NkBry}A?+Joy)_%8nRVW=x~pC%c>Uc?8Rx6XEd&Brtu9^3NjGF<6=P zKj$pPRaaewGfqEQ$z59NDsMB7@;;LHAUO8t-1Hk#l(2{N=fC*1w4q5Cp>*6pe?Pjq zyPI(<=xdrWirX_4pIt$1Tp>r#iuYUNo(qpFcun|ho2p4z+;?`yJJKmk>g>chr=E(< zCQd*Pw}95_qMn`Q4fft`xEL zq#peJB^P5-Jc@(}>Lh0JqSHZI^-?d#Q6nMV25wyDggTN=Q`tbNO+}NYVUFI;hd`Z0 zMR5{&Lu^HkRgJW=)HuW%4x|=qwWdr|KWCN{iwf|tT1L+DbFaOD+aGxZtGQjOyPNn% ziH21jO()v(SFL?zK}!k^G%gMb1+JI9A*@V)|NZyDpa1lGL>cThVnfT*R_y-1H8Aog zYu66ofVl_arI%jPb>>T|DuH#f-nd!Q&}Xrl>n6E_pX~#$KW}emL7?C(h_T+gDJRn;_Um+gqJ@x6nL7rR{#*1HJ)3ppvm-d@pt-p2y5AzjEp5(Oevp-% z@s7-QCj5PC1~9IZeRH)I8Z3D1F?4lLu}s>lAS6I&rl7bQo%>I*%lX{cdkVE>-hrODJxm8YC~Ut?<$ZI#^dnS zZ9cTY=asZBql>vJr}LBjX@&p*AOJ~3K~$$rQ0$dr{Bz~HRsK06chJ9A(s|;!I)KOO z4>x_qDci`_ZbTKrzR@gRdVLx0eCQ$c<}A_5yA6>9!=zZS@?_t^MH!Z8$%k@Fr7C6? z*yw9$V>ZhY7JvMJIkRxxb=RRS88g%0NMJd5|Hgx5UIPNiB}-nz*=L`PM<00v6MH79 z%R{hC&U-HFz;d8nZo$|p%RH|jSPq&;@Hr0xh@hY1Yzrm*81&h?myUcsC)?o@_^};6 zgfmY%0XuE8HAZ{;kcotlibPQu9Wi}n>Cw9`7Gs*z`1k&Y$Kbi_T4>{{lD@L6YPJRx z%zx+_IX`1S$Na1OgX6sOPsT3!U1yh+Q>6;eaJGQKLJ?2D{0i=W@=2^19UcRgSy>iM zvc$Ldj&W z<2#eAC9f{S$tRyInh1}V{${AZUp#Dr{NTOzz}SE8JAvi#erG%gRgr`AN+&DoP0aUZ2whB8G!rE1Rz<8p;u5%T@H}@)#~vBprAEV~?YsTL?+viN&?p zgkah9;W;Z&MWm6?)@HMBXWPxh)rvc`DHaqxubG|4|NiMu(9xdWxHOD)8IS*&veR%F zU;XN3xaME}6`8iSrt{~s7_4kE0Q2uu4Dc6H?M}%e`Eov2P+R-gZwn(>_W$k!rw0r6 zkXyy2S$(9_b`UTb4WT-k!%=e&zy&89hw@;*6-zn{C=`mWrS6U)$^o8+@s>w( zSiEvI?s();EE^g|s(WIyJ;Mqg&({l`w~pVyvd-NBGX;i#usEyGfewSk}2Y&Dfwr8gss$ zF0+nmAwP-x?Fq2rFwUnQE^BpxUVAz_NEh-Bm=`&HDP+zlm$Exkf4;91v!JWdbV7Q=p>U1lU2a%)wFD zmGbr_8}n2D0jD1fe*Uv~4@6xFREp>~m_+lFv%>>8cHSX4?bzdx4%JcU??ZwV2&y2o zB}Ly7;PGIW>uep(#)=9pz!R)2`|oFms|mFELkD^kuwWcM?;}{{(Ka}#ZB$WlG>S+( zA+XG?T%>>vhypZ^iKAs5msUyv`$>Zc_oW4jXT z0?Xrpax0dNZBqwrNW5ouC2DBSDQFubS6A~F%N5N2)F*Mq2`6C7Nt3W_$zsIobxi8+ z#^}g^DhIyo%P&_8j>CLRcsQs?(CjP2{<(gyU^!^FZ~Y7^ znOHJv%dV`#s^4R=rdCI(FpSfVItE7^G!Gro2=aY>sxEVG!aAT<3ihAvJ6T$1@6<5l z>jP>S4uFY%Q>ql3w4Gpb&pRUe4#g5&WnYOG{f*-@GloStgv>Zestwo5lX_aI;e}UU z$NWbh$IAYGRhB6`NDe)_Z$?9N(z{hA=dHnJ`z{wlVJcuw}gEw74&KWm#Bb7a|N?L6QEc;-k2a%%dW7>Ltc}eSn z1PxHteK`cz;&u{hmi08iMXk|d312wlRP49wM^POaQ7K;9xb8yps2S)?f3Tt96Ytz) zI2tzN09`~tLlsw-JYt0EWz?tuYJztJq2ru7_Qs`R`1{M_@R=vi`-K;mVBcB$BRiTiS_9W)mP+EhOYOp~g${yI z-Fr7&Ny>?L@*X&}Dse5X?x4K{|C=fy0$*jD-uHl6fhNp>ng-&H8qPi8B<#P}9#l2g zW;W)=1Voe=^qIK_T4qzWtb{Kw`0gEu{&a0PCR#o#_u$kVgALhUGN!OaQq6eh71LGCP9y1ZOIWu3KpmgA&u>0vis623qG$e-x-J zTRWSeqpEouQ8FAI!uwIiCeL$M+;&xH4|)tN`?dEG6v`FkIWtkMLQSK^Wj&mWU$1+RbW zS=#Vcd(hwTzvU;q9{}*e3rjHX;6t%??ONRjo0CX3=L5V9-ul6^f!nbdW*r^#!0)sY zYU^gQ$U;hiHgm?4Qn@jaohov}1K4q^t#Hu3`(nR6_rSz-0y*;BD`j+M+EC1wtR(DS zq|zzgjRVU;oo4jA%@QtR5^gY|0ix~yvK!T6x-Z#Xj$T{KpGIpiP} z2QE{!;W`f9$nozpbGP{(GFmRkbQQL%=0xorztynSn+j zD|tAJE##b5wHScEPd#PviN_6xrP}!L+MuFk=OMk1d&l|vtcuFv#cX2OJ7{X~%CI=e zNhd{s;U@H%^{9%e3La1_S5R&=FjA`E)s?-tdH%zAZD0_wj&`?Dp(cZrVG}5`(n$VN zEFmXk8NYF-J$H}}$F7}S&qOLMuzbitbMV_=|4dlg#n=tCp|^csutGSdiVxtbtNsc9 zaQU|cj`{M_v*f&U($_zD{=xLuo&--zxC~(Ey{-}%1k2v$#vh=!9adIZ<>5jYT^mOs z(lLi@iARK5ppg*HJM~n2VyB%DDijbZ6s0T?amV2+<-YaV91yA*4I`MP2f?!Ef5~wM zBzBaMyH(hd8Vn?xyx)G|4XZD<;2?wobyRCWf1!Y-t9o(AgAZa^-yotL9T+W^qz_Id z27SLc%QhTnTzog2<$|E+yLtex0I%(k)a5NSjtwlTQ1Iu3b)PrRk#HmRqUK;a( z;ZI);Bn+cG6aA_Jmg_L_p7T1<@5B>UO|4WdNv9Tfu2#pA6)Odnmk;zI*4gz|upBn! z7^7i0X-Y@`vTJEoD@s(UGZYTV->^bBG&Fz%4?GaR`_0b~{TqR0dHBHQSN{FVZ(ofo zC`UGRng+-iSXmjQ&6vOP!;0QI%yvAOW03ax_Wn15RkpWlrSq8)_nQh$v4pOVmLhuH zV}eNX;KLzIY)j*yeP`nExd$R#E~0q3+vqYm?~f1h$s=yS8G~XOtAdGQ%~WQHLDQoYDb|~ zN4{Kq3s~mhpSD8!fn}-UwE(0~W=Uxr86L)Fn{O_g-Dl?Bxbcs_`Nb)6|s6%zK2OXlipBpt{?!G1)5pt32g9dR*4;0E>IsnY}6kgm-(l! zQ2PNzNgcYl%xlU2Gp4B%$0RWTmh-g+URe4@6D&tkNfmcUC1Z?c1)a)G>>h^diPn6U z?8n=V`BM5dKFg%bSXVcu_;A{3r{J1@`MxM%8~S=jusq(;c;~}E>8NMze;^)N@R($> zWFU5uAmm##}QmBS4D61FBP)taq3t~T)Uo2zl# zLyzILp%H{LY12(5%T}8JOu^R55MJWZZMt zZJ0KxTa`}#P;96nt?PaKejclLIKgTmS9>3F@ZtE&!lx0ZNPRYoRHm)DO;O4s6~7AI z@zveLuFs2kErWCv59)%|=HLSzJVyc23aK7ZP3D>=I0q-}9>+MuLr_w!=mG1B$8g>$ zr{F_Vry*Ic2|(BD)PS^w4}7tG>nG7I(Hl$8@Kr`vvY?lmp zx&}Yjx3$>8U^TG?mg^WOmIan?dvHFM_YEP|(SeZyTW5TBY*jA7oK=lz)A44)L0SiY z-c)o6Y|{)@AIKxT@9w)Wd17Xxf#sk*3H-XiN_(Qd@|*+b;hATiRrO$Ka1b4x+;UlN z`k&VO*EQg0_nK~^84O%WH26L1vuWKkzg3cHb3Cd_hyblyOcSnDFrht-?7%8)J8>#L zbJ7XecJs}&Rdg~bN4cETNm%Xm$*kwwsaU}33w@6BH(pxKewVgOdAt_b7EpFoKn`t^ zqfC_-{yt|UbiPzka6z3ic2cScfaQFherE-4z3+a!Ny=Jh7qW$dR5SbnpBQI79OvBt zRg1H1vB82D7w<4&X(>ghp|&Wc_O_g{74E+Mc1-Rv+X+6OAGGh`a}}%%^4w`7vk#bu z#}_OR&z*jUNtOo6;FoWhj}O{V5G-phB~Y{p0%c#|34-Y0d9lb+r8FkHd92bms2*UQ zB;BKWO}gCF=`Ll5u+5|?IOfoU@ZoJ{AY83kqQ!ZX^?>Ezaa%&z;w+o$g&*8Au*{ew zIWSjs<~0i{G6d-u@^cy_bglnJ1jT9%#d-s|S_6w-S&Dm~cml8Y_afTaCJ>z~6`BKn z4OW(83Dl_wp*TBE7S<(?hH z$YFTw(FILiW$&AKob*NG6Kiib-Ud8vBKY&5{rLBfe=hht5hkfrl8MDpA=Rr`knKcB z5p~;Hr%arH;l9;~R?66U>#cC$KA*&{JAMf5u_(&fJTmdLZ#Elsa9m|s3M~#SdtYd{ zuAw=H5=iMYupB&AKjX#g;Xl`7MNgg6pDap}Vn&I*8nu>-$kiKo-ht&edwWG~sf5E? z%*Ekgf@Pv{Ep%&84m3F6=jl#PI3X5R(jp8=?fXnhK99-z9e3P@=~K8xbi-cn2$q8% z>w&Yc7A{=42(u43Q04Nbn1$mCDj2)cxIV*8+LKkwpOXf`K?PNr2}-F>;j5sMr}5QY zqh`>V$f(@rDru8?i4_i9IgMs(6SV-XpVAhns+KV^7Qw}5o`H{UzBwAXtQK@oNyGTb zRKYO7{wlFma^IUG~G5gB0zjwh(g?BvT!7`WAh_gs3G)@+mS#gb;3=;=wsEaEl zfV$f1J;^jKJ?C8PxcQc-3=gA?1Tyk|J>c>8!U0}O5{O_d5%W$+yNsH8;skD%a1p&( zrfh%b^@zlH{scMHRt=eo1J{0X8>H4k`^`4Tz{)o1VLF_E%A6^aEs+yHSvbs_jO z#Tu6{1bwOEu1eutMi5t5qEHWEq*~K}-#w2#fj5Wx5$$M4u3FWcj+ClcI3s77bV2?< zz^(S6N`)(Rv23F#!KdhXO7M)%c-I}b;N!dR@;<@x`WJ&3j%euv`(vZu86FwIj2YWv z>utBkYp=Y5R9l;_C*M=d<)rINd-p$Uo>xGz>7BrG&=2|Nx@ljiqdb~LCY=$0%k>61`Qdx_PKzC1Eb`>vFc?PqP5Q2J0cC& z1o*7HI9_kr4AeNIx}mI=xrzb#g!OVs73R;Kd?I$)dIl=PLsB^)K=bG24LX>0@n_9N zB(6%UZU&{p+&Ki>@gmZbcj$Pr1S0x(R-c*OQ^}oDF+4<8sY%!1+DJ|Tm#cX8wH3JG zo_o<-siVf>GZO2aezRQ{1MIw3{JRDy)pc`iH=es&u%c^1dy_+EIn4%u{_8(~gi}s9 zYQ13j?SQeZQyI_y8LJ@R#eJ%zBQ$y7rXX_BMHl10|NDPMAK|s-HI$>EY5*kw9RT&z z4G(^T&V=`tEy;A+Rx>kc(-tuYEXKD(TT9#AprHE>9~7F^TX*1%n)|$34HG&#F|>9q zCUth>oHI_xE?aGdSl?PqNmDbopb8o{nvrV5fg)p^k+HDH@aq-=Q!6CXM#0upllRafHmD(iZcE7Yxw8CWiq@yycK1(pZNr43QO zsg5c;ACy!?SObl+6Dnc^rreJiQaEkfvZQPR=ygH7imUE)mE1=U;?tfANcE7bqB1g4K>@#ouYY2V1KG41obV zJ{K*3ZTBD;^jc2ee3Bn%@z0h?g4zA$OI09BH$}P0kHeJ}^mKJ%&aBxu{DA$Df8#Yw zOvSY_ky}KisKG7=6ChUaoI(zh_X=#oCo8;6j_JojtfF%hn;THJq|&->DpGjqPPq!Z zf1X|=&bmt$>XA4`IHXl;pb(DYsh3~I?GHYzfvqC9zEufw?W8n7MwS`7b?!Oy&uQ@a z4o_7-S;8O*_#jq+MHLSt237qfMfr2>$h&@8PV|PH1k}^~d~n*L&>0`2=;m z?X>>xaRA@f*EfKko(Zz0bI-c~zxmB?)hS=!%NHK}AY|~l@LkrRkMh^o+m4TS>-&89 z6`8gjLo=cAiWJ%|TTwC}CD^T1(bL_9{bufqgFm%58gIOT$w_V_wpj~af6eQ#n8#t< zIO&`wt;>RfuN3>80U8nxsHFJg^sz(d@49ZmXWP0GbyP}4b&#pDGeE8QOgl>PI3D@y zGq~-6`N&pl;>b2wuf2hNX6}dn{()wdHE8%I;l_uaEknyh)LQpj@VM$#TwbeGP~TQ3 zpvn!m1o?`W<5rD3qZaVt1L&y-%m@vn>$6;y!~SkTpIJ(zT0wiGhBJ>o3J2`D2O3-f ztcg;;kidd71DL3>rUIvzG&UX0!B?QXa|r@}IwfX$wgknrk)=)P1{z7jP@9mlWhBOv z{~R_h(r6WU;HgEp^`S>lh{aK00CaM3b}X(6;f6Cbgu(W&Hn`Ze(0>yw2PRV)v{(?) z08qJzE53CZzVgM-ZB(#KB98XS(|MPwnv8$tm8FszT)Vcnxy-<4r~Y`o6ZF?~JQ$E| zMO_8L4dk$Lugdwm1k1h}&rDg4XWWFf*VLwtZZTg#H(UK~tF~zy8fCTERnTIcK&H-WozwfaX?L?bT^DB8Zn*&M zDH3fU7LQ{zSK^Lp6zfr}Efm!b{q;?MMm?QE5$tFffEo{$xog|vX3J)HotvP_0hwlZ z!~rl?eZF_~xADbGJ}W9g^Z1$)fn(d)8v>U7uZfyB)#RuKxS|&=s#amzJ>7Qq1M`=eApKja|3j7AGIL zKiWv+;qYbE79uq&Ma>ViXWCFLm78=JCN*Iy3Q#NC%~o(_dC2(?uXSzy(^Pnv=#!42 z;~NK-30^v5Q7uxau`QlVVYmSdR;qYp(X;r&ZMP%V(TP%>e#vxq^}G?ldwE2s0y4e| z=Rqdz$SVQynecQpb}FvE>PlRE(YcOyZE=CGX0_@ab#mVxEEfy(GgP;+Esylw0|TR~ zR_?p+zF4(-?HHSV_h8xiY*(S*P_X z(ffD)j>LCeS3>sCq>%-dHaW$j@wP({O|YLPKn{g5P%6mptjXr^*t5^$;infO%Yi@& zr_^nUj&P%72AxvTI#iB=*MwM-swCts6EySv^f|mQS7|W)+$LBae=VE1X+0PDJ%MF@ zn4jzAo^SvFAOJ~3K~w6~abw8e7vJ{O}Qq>(+VVcIr3S|H&dq?J5{dOF_&1S=XmMD-z zXjGAMrG!f_{T!~o;<60_%j>qMbyt?PeXORLdI8CQ{KxO(?=QOyZS5VZng)$D=%@wU z0vpwQmhM3h`QCJ*P2MuwkqW%)&iwt-kS1x%R}Wp4gH_w$vCwf4P;iQvAeqy~w0DZT zCu$WOGkYeEnm13I|AzYqv|cnpP)tX|3Uh(0Ij!0wY6G2d&73t`y+*gN4QYC29B}nh z?!MFF?c2bz->y|fIuX%Erbr@<0^8})7+zc3hwJaU2hS~i169&@7(*Qp@e)&9J)&!? zB|c-pvadk;pvB+w6&@vb6q6qr!DV0nGOqlGuZ;uC;{oNm>&NSQuGbd?DrHt0X}k6t z*Ie^&_{vwmf=s5f$+KM7dwCvyAjwy6g3pAfBQ^a=lk(&JSIdvt=f6Ez9)Ao?=|EOv zISgE`h~|@s#n6?CmjtI6B@oOWwU5+YqO1zuF@(c9xeE2 z$cDJ8+TWw#Ro0Rm)}72nx$YW^55{TM^To+7Os__)B&e5YX5 zy2kGgEOWnu8kVGbmTS27+G}y)MHeEKvi7-u1rv1tvvpUN|2AOR+b;j~-B+mtMWdLI zh~bEj?}XyZH1L@EJt=|5YwkjMrS6Ck%0lkxot0IokvoRC^zc4ZA|b!v zh)JAvMuT<}JO-bf2P?e1AH)$~|LWi2^1uJeMgz;i?<|!nNW^U*?DEUMgYRB_72>hf z|7oynRd^17LeCzrD{Y6*-sEHgXUv*~oj2bcTg}))xQ3j4-cwTS+A}GP4i8J7j`$@e zbspyjYZY~vD7WhUPVk-u6V7Ir*u@#e6c@)uk6`6E6hZ-Ej8yAbymBQTd}<+{cD!Q9OYENyI=7_pKv)Sgz{cukOa6r2EY_NWYz>L1jqdvrjw->*mpNfqaaI7-Kr6pbo89ZM&$HZ`+R4_0|j_TS`r z5-^&eybosN;|KtguZudebU=*|7QXsAetF9s8010#O{^1W+Dj@S4k)t>9FtJ)6 zSmw_;`RY{*tnzBa|Mh`o-;MB+U0w^^w*(26gAUvS9#-f(+S`#E9gzV1gb5QcGSG*v zR176GG@@Q-^WeQ4z!{~}9kYxT{s%WbcJ1dm3;jltD9uo)I)`2z|NY{s}S<{>~9Ta>9VCn3abW(QH>|@+|t+Zi$C3PTzxxRzTP=u*|^2m*nJ( z`yolWYIz7p9WWPjX3j)gDv1O_XiG%37Q0d?pq<+6Ox#6DvVmTsS431Xtdrj5z^|vA z*|lm7J!@%=w=I{f>3j%+iv>)bG99ai1~E)7a$6_vd-5sVa_<8uhawm*mt{BF-tIJ< zdHh<~q?re=tL(dacAoxv@i_R5(q4S9a84nBc9+XA8UssR%xnGIkLJ ze)hbx@xy=l$G3px@kN&P`JQ*GEc^Ej4i2NcyHoYQ{{CUin>PAo=Q-6% z)_K?IklyAMq=4B_u`L+lF@5ITv+=LjT(!iu*95Ci$iBmnmz244$-5+QhTM?l!Kz?tPR{Sn3H!!{vKQSW1XvgQm74hp^ zZpYJ0Uk8$DwLzPJSbEAWSvx<7<>@9t8yZg$VO5zwD;5igr;?x=#R}#2uur3)@Sy^B6ci?e^OTR4{_{3u}Fvl1g1Gs#}`njaoy2 ze~80gi6oZx_Tt7n@4=!aub@Is8Y_{4B6tx^q%L9siT{PWP(-Y(gypv2wy zDu-|5di(OjeEd5rZ9%XsaJ_+Gxd}GL715dK$d0NeWhbt9oXZ)w*rtSZB8u#2Ken1Y z4M%?Z)A;0WyP%%Sqh2au%Sk;b=dy^^ISgj}XY$_p(rg9SR7bgm&&?=!8+RJa{5_s$ zQ`N))<|bvN(Lg%ghW_DUt(Q%9O~8u&A^hgX8?oTI=g~85bFHEkSQd?n{8{?u))F4C zlHi}OppWuD^BsxcGtQqKdBmak<o7Q>Nh1d2_Mvo}WNl zEQ0dLD5BLGIui+m$VaW%`gKw@Sp1RPC_7Em>UA{7pzjR=&fxj`1XKwSReBm#*+wXx zL{FYFn!VlbwwK-)ZVGtJDZ2a{`^gS3hgrL{{GD9LlV`NuJGZJ2PFU zF+_gu*@AT4Xc~bIb-57*dk)DC(58DU~p1kKIJem`+lE zxrk^T;w`Zvmxvp$nxI(^C8w92J};|%%IKWroK|#;p2Ca4s*o8DtCyr)c(Hd4_c7xS zMKDyU;ScvefV&=l3bj~LV8$ZmQ4TsfUKbClTN#t_0=YRXnMos?&tdMI zS-AO6zugGZaV@ayZN|9EAsl@0p}6bLyOC*Yx52f5k^5r}K4jya_84ar_O@eEXc1R2 zV)tTQfshaU*dXbKAp`s3{c|XraZ+joue`UkfwoLWHlJnnCK*-mqKzP*!#*F|6~`ZX zD7Kh50dXdl1+g22xyAT1knYPF|{OG7iLqqDOE z`Jo|{D>=;G^AkAf=wk$wN7k;z@q5Z73E;-^d6$dnThlo5k;Mx&==@`#fsVI7Yd$JDM;l zI>%A=RY8-CGSKAxs()^MML+nAGAZG+6RgD@Cz%oel?< zgZ|#zjxU<{3L(#%_CvKBcC-$dH4}fl?l*{pUAHp8Z+|y{=iOA6dwY8^X%bhUS2RpJ zZ{8ue=iYmiq*pmi{eKuN2fJhRGrsf6L_L#;qb(f9=-_}h4^NxegO7fAN9^{Io$;Y< zw-Hb-XLE>!>grMuD3cbZMQoB8jmUoNUNN5ej=goSr7}d?R*i|Co|xwE@#kgKkz;|f zvs)Ybmb|eHcR&0X7X0-Y^cRYVceEkL`8IY`{lH@L{@Pe&m^kWfz_Krr@Y@NNsea=t z%=^y#6mIy_b(#zD$=SP)NbJ%COEQ6XHbH~?na^?`U+@$ToHwtzPS%sKdEv~tSi7+m zXvvVIGdIaI{-3(a9L5rO=EY0I#XaQ-5G)H+y4D{rvN`1zpH#rYflu#f8AyV_t9e?E zpwB9ry?m?P0+%GaTn5C?sOIvR+TDqR_SqW;d}2>bZO@>V%_0$xYqDK{K>o@cfQ*QX zCwLB&0do940eT*j8?N%-!yu!KkJG|j14$spwT$%$Zhi0(-1N|+YM*O8u@a7`WpXY! zH7NrDk$gK3uS0G3fy)fUH+9ui25ME+oMaRM`(AtOira6w2`N@+-=ekbsyF_+y^Vud zpTYS%;(^Z-Pdu&m4>xD2tzR-4N)YG=ouwcASyz=um9sikC)l!dwi8e4+$m4w16~u% zu=C+3iJO%q&%d;Ryk=$9WzKZcJ%GC(d00TXkw_w2pb`Ojt&VdhnhJxMalvHAwH8QV3W;z7mzV}>tLT-=gnbT zRWDjT<^6)?@y~#-h)4+~FwPsNdB&|&wbTET>LMs_oA-~AB})zOxSiH^bU z1b?T-MJDW|QPm_C6HOi2BN1YQ@DjsjDV)zcx z$3FUD+(y5X^t7qgQV#$8udi|y^x^BHTk#xuO)3=w%?lPhg;}#^DQHShxw&o7gSWAN zda%E#z%tK~zHdBOw&G3$^@wfZW7|AQJ1&+nA(O)FPksvX_TLxLY84&v7&_t!F#58} zT<11W-Omuh$&^v~LX;jgYM*u)aDGHRPR5>!4d%PQ>)zKb(aJVzD2KyXv1SbxEL?=g zpLqr=`i9X+BoO0J2FoUuXjsQn96i2KJdwJR zQF2&0ru}R&Z7M#s=bqSW*N?HRj)|ExCbYF7#TZa7X@L@9lsNEiR!a;3bs%L`wq38m z#WgGpn%_~#ksa8-7g0kl5eqZ@#;tK44dB-ST=BK#(Bx- z{|-O?_aCbz!OdqLWHhJ4eQ8o-6}WyBsh6$G>teF1l+KVfhgCe z4oJuuKpu-3PorD8Eu@^qM>n@ny z)1xd)3mtfz3{*}TLn~?HTmwrl-CEzR%$YQUdR5$QtB8k{opW6!DB2&3V%h3G+;s1J zJhX5T3Xzzk;z%{NDxm$}cwa50f)>EE4BOh)Rz23ef|L4k8=E{>)=;6_=(P1#TjK6J zZpP$^UF)D?d@x|SMlQOPNPvqk{sR8gvBC4wKAqp znur7UnTcI?`Vh96zPVbWwE_kDxfw8u7`p}xcu89dLjF2U+NAFqrupo&$Ejw)t&BQv zZ4V2h%t5O}Ctl%t;`t9?;fpVzFQ3!kL^PRJq9vIq=L3u;=vHPs2NbSbYgRrfpqj#A zGH*)^9BfD0QXF%byzV>hunq3H`wpa&Q6%EyIH2$Bciz=+aQR3&mDKOjc7FQPpQ1$R z#|aaf?NDDK@XtfD60fAms`zjZS;)@mYJ-|AGpNKi};&QikKWEb+2m;0pe(b zt7?bP7LH=8X;X0M+&S24>SS!W*>t305frmINz9So+}+-RYL07!qXNvjcP=RpUJu!9 zU?sM?SseHYhfr>B!>g;;;Fde@z~fIn4Ma@abhJ=HBAszOcUrX-Kcv>-R?W+=QC@1C zfS-K+}})dc5Vaye8Bd347Af9Bo;OwQ`a z8a|!FMCF_iN=PCJL>Ad36Aakk95EPUri+dLvmSrs$n5594#sI4A@fP$*+1%~P<{$XG0%>6B1U9$q!4vD&;iWpr^n)*Ij|d#tG0@%(_q&PA0d6fD#4kbc2INCZABmoLGS zk3Aw_*=%jUoJsJevB9#<0@$;s4Krp;!xfibh1+hsO{Bp<&Qwcy7!rGsu}dd9v8hlEnw&=_el*;6GBJHJ%-XDh@sP+~C^C%p6&3 zYdelU<~ZzbZ4;?Cb)E`lsdKC#%yqencC2O}hB;NylO?r*vTPMlAYZ1axhZ(jxQ;WF z8|);&G@I*6V2*CVjH#Zd9*^`24%hHSHT~?C?}Q1o#QjUDT{i)8q~&LJin|Fm;jD$RW5+I>aKecq7iS&bY}Op>Wy&jJ zUvAW@*%M)(N-8l+p_xo_mMt42PMTR(3Ami9z!-~6Hl~^j4(`1T+8M@wc4NmK$Q0=& zH$jnOuw^=1E{8c&r{d6M2VvF9l~^=)E}Bv)8A=eAX2clrk9I|{FRxDkF zxpU^AxuHRL`jokh=7$iY`imPIY_eQ-$8$EA#nEq6{R8M59KhazK|HvAJ=VSQ3f|hX zRe0}-x_V?;=_*$cPoVwypuzz_aXK<+9u}t0q~6ple_N53F5_^>4g}&D*vMFb*e^ z=r0sRb%%CD`BT3Q%lr@bOL;y+)p6qfwHn}36%Spj7VPqT*e}uCn8uxdybUXsFVVgr zj#LMPn@Zm>{%dToOnYR2m(Av76#BbPKNEZQ?2&uHJ+qM41mS2e-Y>r@P}^i|_tyNA z588Om{{CftZFqub>`lzD)=1|kmcm4(78#|U5SLjPW%)|q!(NF6)2HK*Wy^5zLCbIe zZKu9odM3;kY!9~QW43M2&w?zI{o}J^X16Do#r^A^#w(jPLFKZFuO#KsD7XG`C4l$jiD|EVjtmm4*JkRJN%-S!zsHK@%jEX7w6tK> ztXX154Cu$RpMAjcNH^Jx@+UvN5m$cZN*(p+263>IBL?6`#tDPbb$uI9(db51G8mx< z|C5|J2YA?op~FWQoU(hGkFg4*3@nQ=d0<%=x^nhps*sCD%;*dl+JcnNanf(h$cPb= zugVObEC51isXFTDObo_qauY;Ws8ky*lcN~jmo+~w0TVgP=4=%FnY`7=V7V4#)jC0z zD%Gf50O(Fu9Jx3f$9c8}MRG&wh-6_??SfqRyi_XcV=+vdFbN0FpNHj3mf?W8b1{AL z1SAtNBvMIHL@|KDDnU`2Nwr!b@;BuYGWh~_?%IXFt$!XbzWzGedk4@xm_sNPM>L(n z0J)|F-_f`PYVojU!2=088Em4_I-OEHnh3g!10YA+an%RQ%$ogJhL90Ed2F}d`db`x z)T*Eni6EIT^3=tlzC*A)FpxogT^iS4|5JSBD_;q8dnJe&s`A>#1Iw~LhG~K-0ICJc z!<~QC^7Zqp&5#;|*Knk3_ORM@BLK?Tk4*iOk-vHh{7rFXjZ&C;`gMcswGW}@p*o)2E zHsj4VH)7Myo!HUcgT8!GDqd71Vy{KMSQ1*8PWlroc4u5Ieb$0yfBpK;!S9*iI^~Og zhyO7v_{$rAh7;Eu8wAe&20R|%`Fp_fzx~^faLqN}lns;5mtdWNz<7Sg03@#)S{KOx z03ZNKL_t)^{Hg5;$wn zO~K-Y2VmKfrI<5gCT32aF1Evp8UHh%$u+@iwQ8E_W3vjlb?a8V^2#fCbMs~ycGR-B z69c(Ck_~l;CR4~2i&BlCq+x-j_`q`X8`JD1r@poUTU@M1pEBFwzYE>YC3^^dQi%xu zbnDGnxnik2PpiZkxVHC>{(Q#<%euDJ%75^Kf5&&e{XGHVJSR5ikJsQ=3zqGk21y>z zp8O!i?tu?>YwgBAx6!U|EZY&kBSAB}hZIW%LHbZxf_19#RC1K{&7&?9!`zuOanRCb z5_Az**4L+H4Raky;G0m|tbhK}SCP-lnqxI!%a$$JxN#%4w(h}}&Ng%o49fJuL^3T^ z(8^E*MKTCn0zrEv+{^7*u1#Gy%RX3^{l?LId4DW;vcS*oKhLwiE`{6wcr%tRS)@b5 zT(IQ_U1Rx$5oj33g0;{74XIR}q{U?e2r|o6bqd*ZTzS_r&X(n~ ziGBni6q;5?s?stni!-yVN*bE^HSJsLg0!gJGRtN_lxX4xX5}BHT~vpOnBfhJWF5d4 zFcxfvRUWG>@{l&>$OGb3nPOhP^6oS@)??a~shB=_5*q5#m@u(Pz@V1um50iWi`UrM z)rYo@PPDYOVt0FoOnnP;v@?SPQ4w*Onn3HfI_}mUAdMnglhNUXFJE25jK}21NDmPs zV&<<{L?)j>eSIV1i6pX_LHy!p*Wg&Sw3&asX)QYj|@%wf$y5iHxkMW|RoT7*}T@Ex%~)p5+@dcl&~z`h}afKbOp zg;U=!0Y?r2;P2TG!HZ>;K$`W6CE;$7Y)5BLw*coMPDCW_hH^i#2(smhl=W#(e2yjID7wtDn}BE6EYF2t*@mQe zY9t!?Dwq&p_yV2!3 ziWMAx{PB3ug77R~NebdeGO~FC*rQLt!NA8<2=6QM74U z)|~9BE+xmB20QHrg5; z4=lSFUHlG*kZj$$4ZVH6n9w{ye6gR18R;0l?O32?0i*d7Kln0mSDR6`_xfK)^C$j! zjFlbalZceG6s`R$-tvb#1@_{_CssKQ)<(@V zL7t0MA5Hp;S!MA>r5t{B!_RQk>cb@yXxT$c3dtVn=!hfR&)8s@AWx)K2QpZ*W)0qW zeS_Ex$D*@RS}ALP%V;kH>wJc_f!45ugp=W|%`E%C)8D)7cw^bd*!#9l{VThEDV~ez zDN}8S)lPnmaC)eGuPQte%(Fr)$;b*;9=u!vEZ%#mFnYljub20peF3Dckn+T@1kCMw z+c8L6jm2dU5`%eS5GD~bxdO`MLbIpGfVY(9^q86nR|C@OiK`%a{Z57fczjD58tuz` z5v%;a{^ieb%+agG9}%lrkj9^VuKGy#azwDKZ&YV)5C87J+>iIX=R&0F8iK|=d4tQk z1?mnCSO}PKBc5ezbkquyIg=84j6g>tM>8%1%T{WV&V6QEokD;uXwjQ>2B%pp2lCmR zz;dR`cvrd9R)VeSKnqAFC4&?SCv|6%ceOW*a9Iphx_n(0o3c>FJj%tA$i#_ZaT5`0 zhN*Ede=c}JGS1XUeql%!iQ80CGI z=TAxs6*FAf*rb|-is3dZlOS`hCpcd_=UTALV_F%Fn+SjA*S@|UeEXYU$LFs449cA9 z6|E|e*gfB8Px(8*GRvT;R08+i`w-4O_gpz9H%t-S=k?l zwNbk0nqvcZ;7aE*9(kxDo%_5ml=75Ko<5OsjlwC8ArVc=I;5>IaAzE|j*%LdITC*7~A*!9s@6DU$kg+Z8P z?V>RZMU#xA#a`JcF7pEDx19g+*Q42|tr39*&R6)sg&)jX37yBMeb9Dnba7^&2j9Nt z8@TGTm&+bPzhK$i{mHzJr-s2SI_>1{yYIn;7hZ^l`X*7~An$c=ch|T>Nz8T(&zSA_ z$vUf4jFeff4L)maXuLgoBwuKDW)ufIhS-1<*X^qc60pj})vY?+q5|QnlNAgUd!@-P zA%Hg#WODtWQuxt@yx0wKSdet#rd^j1%B#>(IlCfTk~tgUP#n<&69isGPwZL&vsD3E z4Y!JJa9v)oMH{tI-URJ3q0oWi!GS*f^EF??=RfyZ0rcEY>?=QOybSZWI?Dz~FS__r z+C9lvrw?evp*V#A1I5G3I+~r8zY*aG1@{us zyUe;xm$6922TkgTR4z}BWt%oLkP;p7o;ky~ zrhm}@?Pr4JWF0e)aYUjq3=Z_;i&uXJ|NM=wImPsWrAb(CG`l{rf|9Mha_OisIPt|o< zerwLMH;%)x))J$me^?`>eTEy?8B7Uee`h2vPDr#%UGs}vhtw@}LzACbWpNpFHusRr z&$pBcY-G@9rEy$XHZIAoxQaqh>K7@X;h@fX0%|vBTMIh6+f^i-bK!HK^Xu>L#no3` zj&EM`PsmXAhv3M`ITAS2Ste^5|GeVbxc0@{M%9!LeefgruRs15ni`w5@sV;!octL{ zjLTUzFz2r&+KTxog5_Xy^T0CSPb!SPY(4ls!vNcGE^pw|t7c~tuv|7@)~%RV)qk45 z@{hyDPXV6{hJ=!#8-{V*S#%c0_*Ili`_QhnT<3@m@<@=xJkzW1#lXr`SRS9mP2XnTy_ z;94K0>y}C>{Hzar-~-}!lF5`@JCEPh-Gy{|Y;NmFfW!Q{{cbF?Or44*mruNqge`i6l*@3Pb(zhZQ z$QH!cGSNk_%=4voKSyjE5Ud5s^7(G6q)zA^-c;=0U)qi}`Ek$UIWV)!_YCxP;fhav z0@q#p9SsH@zuf@ySoc+bH~zS5zUzY@{4oCb$3J4qDua2mH`_z;$_N-CJ@8nnDnm^lL(236sc+kz-5-JV40a^-D6GoVP6Ul z?-6|t&xPkeu*_@f@9V*3pZo~E|9`HNQ|Ej5ELbTWubL%zWi;tHaXOAG^x}&zW6g;t zD>u}EzFJUa8&Dw4=1SC(MUg3F+R5Nb{|# zcdD=22v@=G@aa~zVe+PGmP&!D&!+P?X9LRueyl0cZNQSLFx3!KI&g{&%r^4(9Hzk+ zvpaIWu{d(s49-6DH2n6a8&s&<(@xzVusm8MZ;p@IhL>J?1#8xvBZE;cbcHDjgCn2YJB3U7)+9IDr&~2wCYsYDHheHAsZ6aTcRSIsDC2e+; z`Us6lbbcZN!um&#$)60KXa@p{#2z&8WLcE}ob)U!c}o{LHNlg~K*K)pX*G|@jy=|< zWowmR4FK_DO2sVBIQ!Ql7fWq8KREYt4Ru6+(?o_VHRYj1C#9G}-k z@D+=z!pc~$z=wI22?IR5=KTT7BLQVg!i;t7@qz_^FQ82cgHM7oRWfG46C)>?Doy0> z&_Co0GICwC#bY6@aJrJUPa`pZ$>(8U!md>_zA0og1qr}p-WwA>%uEvmRf-B;UFO)b z$-x>C{J?etUAwimqrO||BK(j3(*iB}9N1pCKIk$&N1_ z_slcT;GA>L6~DvYs)4})q3|#;@OvdjJC1KVmSOg}*JFX@V7=M&&6=;{Rb9sVy;28l z2$=I{^xDpL_;A=r&OvOcWS#njAvVhnBGcb5DaDDCn}cA>e5YTTu;bf3u7h>wLVn6My9=zwnBi(e_^aK`B; z;s5;WwU{wuhCW|5)JLQH)gT%gvYDt>B6LrSoTp;3EWD(vKmSEs|DzwHv8h=bW4wkq zTU^pqz-A-|xcoWZa^sxzT%bO|lP{^nhfpz!C3$F+j^kz!4y!)1-gM=CRx=o^I}4N! z#sph*WDZJ=R4>LBr8p`sZ~|+mwHX+Ez$1fxY1+%* zn1jvM%R}5Txhfvn+$08iWy0MKS+5W2X=VwY)E9J$nVcN z>s|Qw?_VcV#f0BB3O%9LIgA9BeSpi%<(IznC0u{~e+n;-86P@7I$XU6K6u(!)u0ye z*m;Sam37bo^+pXWvpG~9t_Eget2JQR-@rI&QK}XJZmBA{_;%yNK7S(%8VG|M<7bvR zDp+~oT6V1lerAtWQ3*$@rDwT+F5@R$d1;yxk`XvARE9w~ZfT*Ica34%OvmgIKbuae zAe*AnG6<0P5*`|+vMeF-jI@@ zNtTKwHfhR}(&GD#hEe_O;WUiu6h!A^%x^l%i-7^T|L%8^k#hXfuq!XB1SaWJ4*WW~ zzj!R6i2`ZXrF4?g+GJfzb&4OQpn?F`0&=@%EuU*9D(1Aj$#s|CheERU8F-m)GUX3> zkK^P-CzAqt{Fen?`Xsr{RY!ySLB0JA@3$}6XMjwC+Q<;n$rw&M^+bI4yWdrXlUyzc zCYn>tOvGLK9DCo~@GF&N`OJ{UIJv5nvSzWF~N zZ1UgCrqmaCK~Zg`YLw%T1(wZ*>^Z3UaJSYyim!Miraq*=6nhzwA?3N(r_zX~V%VGO zLs@#c)h~!YWfL*go7~_q?gP?)F+dhZ3A3k9#mOffFHOIsOmGd)c6o>j3@iV)}a15C(>?n*9}08j??n0BIXpo7SQVeD*<|-Ot8=B z((2f4-B4uL5u+FumAHv`#vLS3F(c(QS!rAVo=`D#;+kCxRY8UWbvO9Iq{Y0aU<=6{ zMX(sgaGu6t)^lb`vZ{lu2J5bq)0*5!Y;)R@jm&Fi(C!)UAC0(JDGLAeiANs5k%u25 zoAY>_x?0EPpSJJhcJ11YBaS>$8q^Yrq%1&<{#0z9LlP7)Gs>iv(Z1uCs{zt*&bcUI zM5~UT_mam5Di2}h+WIf!wc9yrqL^TL_@)~)rHBJjI)u>~{GSOKEY?&fZ%wKC)s$CE z*H@pnPUaKph%_UrB8xpkf0Hq7TY6{XrHj2epebWK3pqJ|W|{fyxTb_ZNDXf~7w^)H zgC>m~oc!mgOny*i8GH%4*rXc?ixW%Lrx9gUNlIu#NTuQ^me>T;iFIq&;*f)vBS&52 zv<58X%_`6z2`KX&V}s?bTenL!i_Ia?sE$QvGZ8m!W2sbGby}NSFP}h6H*Be0+H(3NJ7Wx7>GZng0R0fs!nNkj1 zlHjvc2!O}1b?pFx50=GN&A)l2Q40q7tawZUe<}aF4J?^TAX>>|+ty8Z_0?Cg+(|hF z&&GlO(KfD;f}`qtL)gB32aZ2(4O;f>MsxE7sW4{pw9R_qz;d%5Ppj2v2g2uc>z369 zS+_1p^7nw{vCnzM@j;G^!lqf*M~05`%~5*7-UDRbFK3BsIKF>ArH z_%8NTxSp>JN#$;_t92F_1{emVx)J9%`=f<^biXg9axrW zo$Qqo=}(s&a3k-PKFbJ<)jj3i*9MW|YlQ-+vTaJcRjQ0i=#_+eOTBNtH#?Yqkf19Y&2;(6KDPrUKjXkb#7znNf&q0%yE-o6T zf^z#z2XrVRXC)8^nDmBfcG=HV8C}ITrQqH;sXD!3RhcnyB%ZjA9N&|y(Z#6GLz@*f zyQsWHQ!CLo2tae3XvsK6b+O9k7mrDGAjn|yeGXLfn7jt6V{kahBlq2nDU+M46cPgg zV=T~Oxqv7Ut1~p7pG5gN4w^~h+u!;Q{^|ey2AZ2DB9qA?P4V$kMaGCm;^a|sBj+^; z9MyAkWPRQI^%(@28pjFN33Obz1ctg8B|?lQw8_l^q8cR&8^vy$xdu)ycyi|NJ8c2? zZa%#|6Z^W`0cyv7P0DL+wD3`l6A(+C1Wf%JU2L-~0)LiE1(1)hF3(;wjDkGGbp4s9)@)C%h#;P;a4%VcG9%V#;p9jHsyqfp9A)+$w( zz(BSSvu4l0!w)=&DU+JOO`0R&tA4=Ws5}J>=@-!ohIJs@P#rt(Z+`PT_~y61Em`!b zQ>LS>tyQLj37~VMe1m3J=U^2yOT9^HI69+GGP5#wQ>YBC5w}F0Yqc$13)Rw|?+JZd z3M2#_@U-^@!G;H%{m<~hy!jLcP^`9?%n}0tevbNGO(<}%34b;<2?ip(E-8^y57`ZG zkZG81YSln*FD6Z$su|Rpmw$TWRgY@HT`hp40s_yCw#*=$cE$6g?Z|bND*`weurxF^ z%lk69ocOW&bP}1Ky&}K)=ezE}^y!lX^jr0Sz-RbtU;CyHNl>OU6heQ04;mU9SkawT}K)X`4_}5^+(CLTb%B9Mq zftUmzj+*2L4naWfNusI0Ryvn|KmEVsd#ob1&jWP-5Q!&{anD!oeTa$zSqUKHBITuu z00fzG9xiDhaXN;OZfrpNo?Vzd?*Mdkb)ZtLpsuk_z)F9nAIVrU0Bi=_?CWUf6woid zDvtkNySMZ=G6gPL1zSNiI<8!0`lH_dKB1Q-({+f2<6__34>;388oo8r)B4%Z`1v%ufGqC4UJ-Vxm-ac_DB=_Utjr(46xzvIXtUxU;w$n zL8Ka+1fxiwiP!}bDXJFXQ{C)7SnrgdJmTMJ0!JQ%4))=m$10sr;(#c@DxZ?*oNEQ0 z?~}$_CiJ|jNUhzN{}}xl0ck2wSQWw173m9vBIYm(tCz8u$~;PwWhNsw&UHP|*BdnT z@pDLL*u8tV(5YB~96QmrZ{RX~@2bw^(D|y~OC;np`)w3hK5q+TMIpl_6L=rWLrPiX zT9Dow?r)(XbnR`$l0^&f^wUr4J{*oBo691Vq@-jiz%wJIaz+Hp7BP2q_29_WtHEfC zSv$!@cwO8AN}YjH=Tm-W7EBZ!j8m!`6tj9#?s5D}m69t9k4iFx<)VVTBvHO*k>$oa zez6#xQ;G;DKT~nfFH>+JF^VFv zFpgKkO?$IrDS%eF0=Yj%$M7;#MLxfN_(+` zmp4}(jUJzlC-F#`>j<1dsV@*H7sg2+H6ubD-L3ik;i$VdRineU|Ez+oXy$D zRrmJ<%l_vmSk~7t$74ZS4WGC6JP7c(S#e_`IH6tgnG|qL z2g+y0CK7(NGSXOC0^J>I(Ag-Q>d~^erl4X2Ip`oH8|a3RP>0z+0`F0wm_s5?$5KFd zUl-nY$%XjE&u>6H7M8(4Wtk+Y0UN&#->}@zErEJK<76dle_ypgS^bjw5!yI6Rc0QH3JnAuDubf6AL z=7u7o=ghy!Wd>2~@53eUyBNRy^-s~VyB)J?t-#xFZAN|L1Po>hk|B*ZHKUMM+YAjA#D7#17S$t}ij!%R3m9_S zb`a=DaYgqtzAV@s4=mg7t>b?rup{@jCc#sCCvv$wCQg|m&z_YRzMsCHKU2+t=VQT= zaed9E_-qQ=>=1ft1p#P!`)lzWw*G}wx;{{?eW}6A8s0KxBZsxr- zU48~Ont)&?IUyK;Qj$!@Ff$n%%3=A6C3yJ3`{gkevN_bz!{p=u03ZNKL_t*7Cmrz3 zAxS!(sVD>|ufC$SqZd=AOm^KRKz6Vo$7*a$qib(3PJh=K;&*7XLP5*sQQz1gex1|c z(y>%ca$cw~U#@3m5AbJRflcMa65aSUewc6Fh7(xm@U+aXvk z%J8w6^y)|=N|GTJnW9VDBhQ)luUO`Pq}))V*bTu6RWPA3jYW$W;O;x`)?3QpRC?mn zAJ%$pA2g5H;AdIo8*caoKK3okj2WtEJsNAz^7Id<5|?=<<%d$o~4cZR5UzBO$ocL&5RXFkmIw#GpijJelz1D!J+TAL^ z*SPe;v*O{I%^~NB6A}wSiOzy6xu1cIUiBU-;8Cz__pla_7%&MkKhAdSqWw*b?CqFI2kI2pC#I;m9 zElqHIPnw%)J|~W?b~wneHRA$wyH?8psdlJq((=HvKL4tH7+BV?dQFyn@k^q$>&4#y zM|*zER`FSL6Ut??Xl!bd`<|!jNJE3HU8_9sGpuWS*|KF=xpE~YPM#!uO}^*8`|iWv z{`NQdnPADXjbqsklL2G?zIHfK&Ce3BdSzzbBgx5>jL|P-XX3hCx0~kkmFFkM} z9)9?4WyQGwN~?4u1sYYK%{@>lSgK6K_iNyl#`QnG9-sT%7m-TUqpqRd*Bu&+|69j2A0NlKBND3yz{5+$r^FgAFd^y4*@EDs0=-Fi5(de<`lHFD#nUb2`8O& zJZ`(?w{jB2JTvNQAM~?z>ADd!%M5!;Q2lqUTmpG!m6LHv_WtTuzr`m$`3Wh@vv-OO zeYDwlQZWhTEH$(2L#W{#W}dh3YF!rJe2<(QAH3^7sNG8pFbBS>hWl=NzJX;Q>-e@b z-o2-6toalA4(lthwM<`3f6o_X78#iHb;#j|%M?}G4ugpU4mbeo*RRLpk3WvR?d=kL zQI~tXs>paYHP-nHST0utER*u1$yDXrb3fpASYdXE(k==ZF~0f!%QF#hm| zKZu`L? z@IVj0PC!mVB%wG=A|@LXFRWB%7q(^yBi_hj-|-l@6q}Q*v&)RQl9o@8kjTspzVKBB z>Lk? z`P?8(bC;hjygP(ZSFc%wL@b1-9)B1M7R>wm8vN+=omCBHvZ$-mj%7NPlTJPvue|b_ z032;P2qRA}os705S1SS(bh@E92sfyLjz$)<WJ)$JGs)j|clQd|qf0yD zh}AM_j(y2%w@B6*^XCA_0?D7h8u3cwr$(wys3o2XEoMqJg_{{wfX{Uk}eYEUdESEp`+;d_>oT^4pdgF~Z;s-zY0oFbJG!9&{1e-Q)3;_6;1~kSm#{+Dn zx5<5rYE^=CL3xhUY<9u3v__OjM<`38Ns=q{`9o#2ckIIPCme?#|M+@II&gftP$>v{ z7SjD`K%BBW2?WnDFFFyFe58|=M9t%`Lm>eKQu(Pv6K9bF%{R2uR zQtKFg9IJ9EMye)f6s(c{RY8Q2p7T9+dX}V-J;!BwExBX1AwEQSCW^sov6cNip6&4C z4ImqZ$^vs!J)-^ab?B;9IO(L5gtJZG^5&aw3Vnfg!wT3{S6zi){NfifFpJ70yS8ut zAGIBN`VuFMGP4|YLJTg@VrH55Oq6^o+NWWOD*7Z=l{pKex33E)o_GR&{G;nJW!h9U z)hm6AuL6}oVroPC1(q$VeCut0#792zF_Gi)qaZdB_^Eya&o*?#-fO%?PJfY2$?cT9 z2#Y=hWQgOV0TRS9+o@B-tieKnooLOv1~w4~)!`swWR@Xu*#R>=Su;GSWCw>g^QmE( znnblpQ5~H&xUsBAXJ6OYAcX%TR~;rdf9*5R;;FUIppYHJ`~?f7k>s$$4#WKq+>19i zZp2kreIDQW&UZv`+o%-+@Pd`$GCIbK^RyV{_@<*AjJ>XwXbgPo{fJ80Dk$N|Kope? zqsA_QjuGqSo>Zy>J;+CjQOC7dzyb4S;lc|pzz05fDdx_dJ&boguCp`_UvUWGcnI07 zI-tAn`3v6v{`U*-iAE~Gk_{W~IY`h|8bU0jiV2$WQ+mDaBLvUlFeFpyGQy;7xD89E z)2Y)n+Ctn7U@=EyoWfw-v&+g0kdh3vNB3C=s`Y<&2` zAI97{vx0NhMiw0$uP+BUhh2zf1dK+&i~%z`Kl;&+@$GMaTc)qsJr+AElD5MMb}{ty z_X&U5CMKG=zO6F}cHQ(seZm#VB+K?D&5{+-`Xpek1M0r=EH$ZoBO^ zw6wIy#`U$YeN7S@1WcN(AN@6+effcX?WgGVYcN6%7oXJtUX8bop}3n>SB}MBRS-?c$UE z@gM(DsyWOsPn$VYvh?rdHQxCv4N@zG!W&I$Gni3ZxYp&~mNY}l216#V_)OTNvSP(j zoOtqy;&*1xp3ONa0+#8UhTHYNyyc$WyrabFKFmpdJm1G3dkp8DcOIG>n}P}n`Mp$b z>gnl{{fgjfZ{L8>0R5NwIis~zGnt+c0F!!5oRta)*Hk&pHyBtRExGgm1z67X4ttzElTl7gh}&?iydivERx*Zue3F98Pkw4FP5ivJp^SK{xn zrSUS$GT6;++Y+EVI)(gv*1v}hqtJmo}OdBqiIXlfGe z@%?#;GDxk?vTa}=|HP;8>tFo}&6B5~NC_G#A!s?09g{)U*MYlWLo^*^1GA2gWFXLh zwt--qOr;bH%>Y^FG>;K%I-n2=cCy^%PiA*62R&?n4WbI*w_ZdGM0qa zRp~tKw55=~(h2-cOdOG?acw|ZfY>Nt(*m#{aH$DseCKBTK#OFv0|Sy7=BU&aD^{Sj zwN-!)Gsbi_XPj|{&@gD*&po#uZ@lq_WCs8BU;kCW5&2*@{_JN0wEYcwq~}q?Sl;I? zRa+lk)v!16zDQ=!br@5%z@`9N=966Bf&N~k63)SL@?d5VOAcIwD?f8NKK{{<=(zTh z(t7mXxW>6)(;pcu^SvfZXWF-yU3NKsapR5RVmTERDC- zETOW9*yZoC#NK2*Yity$G-e~hlpidsR=a>R%hn9fCYmw@!LnSNX=yvYrP+di^G5L&`4yMpQ&)UKq`0DS1|oWgtl_h&qB1gAmZ_Gmhh$)&PiRX7eb-+5ucFA3BruP} z(bwH4)rrP*gOt__Y(#Xu5`GXlnr1?<&v`uJ7!!O>dB!ST23GB7|L+2j>@IR7nbDE# zXfz*8dI{+^LJ^3^g}TERf$rglA1S~pcriHVo<+4Q zzV6@4aROw4fYQRP-cQG6^lwEF4rv^Lz|l$@&A0~ zA8^hE=b@odRSbNhsn9S2zJ6_kF_6nM$m2etf64%ynf6<5z8PQq;uleuVm3L1N|91} z1xe^MN`F8EeFOcJSa3-Ik0R)9mgMHxH0_cNVgs(CEI_(aMue&&GCN|ppRx62_-I&g zX6i7bWS0H4Io`czm5xCcKc75xf?$GY(kd84oqqc1*tl_{fMkAU@O{J)M~IEED$0PA zfAOHwMeV0H~qex{kgRI)NId&ky!eV8tTYjSX2sgo&nf;Sqc$i$J0;?jC-{;ZAE z74(twJRIEF`vRaGWG40adI6}BNk3RaS@WZA|nT~g# z|88+aEQ7KWcgvP-!HPTWv{SHZ)#14IU#`VJf9HGn)vs=nj1LXdre;~>=&$dv%cA?4 zO8Q{zhsUS+1 zW(bim8s2mlfFJ8;V@95VkLC6v1Rct~;@}#2#=(>y$3L|!k!u#UvZ<+K_zOes_c#rH zwy_D&tf(phgAzvNTr=F1ShixsZPT9!l37lF`|Y>!&T8-nrBXO!!{!uz$WPOzKKlnBd=MS2t)gtf>?=1a zRv);D(WWE-tyFO88D~fa@dwvkhikw8eaR4Vle5OIcd~KS{_XHhS(~&(-M|I1v?UYy zXIZp&Zzlm=Fpl!S~-Cv<=*U`W)Sgf!d{pliPb zU);P&J$dGtr|_|leGKhwZ5Zeq!1O6oP%f0w)7y=7JcVo_k7y(bq~a(`>bP22@)ZrN ziM=Wf>T#$mWyGl*;J~tN+UCD4!Q(%3A1urF<7Ae{3z9SWg4m8Vnlm}GYSk(Uw3*p^ z;)y4)ecLus2zl4L-X*~~_cHnSEnDQCF`y?kgY+Ky8&U}GxZ@7Iw0`~nXenKG6ek8? zl_8NV^M<5wSXPPr;BW|O`j$c-iD(Qfmo39#s}9Aol`HVx4_qq#hI@7*%_eI%QMbm= zNOH-uAtP<|^<~h|K$%)fQCINjLl5J7-~BG$+VCd2Iy(h4H>T>4;ndq$6wz=Dt-T$H zr?g2z!EM^`T}vRAo^AGbBAaerCCrYGJ22lI@7E^uV(1LA77UYw%-` z$pi#_M?94hipAWyb0tI1YQ@if@)KzeCVhv=9{PADxag1G-mpP{HP`u}haM^c`oDkw z`}p2<*Ws&Q{VJwTo%)W0^szI`yumIrXFACnHd1`oa@)f1vL=H;zmt|wJlDEr*8n;=%Dx(4iNCfn;Id6zsd>lWh zd=qA2#R1v-JsnSi3^pZ=`Z69fop?>=TjXB6iF%}ch||doV8y`)3)t!GY{w%HJ%rsY zEpqcNz4THnTfR~@swbX!9KGx~P9!ChA~XUvw-jql362L&`yAXqd-73XYBJ5<=EEUnN^Tu>w#Lq_UlW+lopF^YUQ(fM=^fIyiq ztxh;Ts=Kk=qzou)Ms<{zvmeu?9qC>69QiqHqFJ_lInF-&Z0VS0!xft&_@4K^_r21P z#b$_y9(qVh>~vCEf>+z)i{&h425D12{_&5;<(!HGeg{ZMGwdFvfaNS#F(P0|QM0;I zmPXNdsDdQ#XCaTK`Z|32lb^t{gO-SGoq5i?5wCZY2phFaI*gM$6lXqcv(g`YB?1X_ z*a*tZOE`kvEqk2bc^JzVEyd!62Vl!vZ;QeUL3GbRKf+Q=oBTq1$jv(G*&yzqhkera?RZeFTRY@YT*+u>%%pRd3EdUg7->X4-W zj+xYElK06hJJlefVGA00oiczRo88%!_0_+kM`+=p+z`DWSMt-kSp@v@stl!&xlOcQP{L!%i& zaw;liWc&LNtyGX8WhS4+q^3rkd)8Ta&qWtvZ+}0|e9!qhnI}Q{KnSR%+KL72{<#|! zi%AfwanZ~&8R|mEVYA7&bJ2D#ecvT`cI{fsnmi3h9(E|&ckjXWZCfPEohz1*BX8CQ z97!q5`5m`^kxyGCf9Na-%P#XLKeIdP4FN7;!zU|Pv^&}k ztDme+u)@heij^%Uc6RUFDYnDj8j+G47?6zg)nEFO>{;CFSOKGE`a2EM#|6s-986SD zRZG+`T-8)q52SW7kS!tt0%jmoE@0NQsW|P_lW@vur=e#sgVWABOB!C~J`;;NWg}x% z`1|TUVA(Gn*@Ct7G#}_U{`ddJ3s0@ZK?@e3m>WPon-ktjdsjDFySmWTKZp!%f~cR9 z?1V~SN(9xz$!28bPG$#P6Q26OGAgAU3hY$&veA~I4tU3;9SGNTk&~Og%cO^*BA8E`EEMx@)T-WxLO~_9Xi1zr73h9?_sY7k&BjT?u*{Gw zJV%KU#t}Kl@tE@MUD=FwWWkSgZ|8Et)8dB14g1f3{@lL1-Aa-g+yj zf6E0bK!8$PVQsuA9R@qY zWlB}PAd*egvCZ^$Ax4Fjd>)e<>u|}%7vba+PC!@BUPMwUoObrvh&7RG%Q$^V2R4Y( zsaA6w9X&wI)r{fr%7ykSYwX3pVJ7)|-}*MzJ@Et%oIektav7bidk`vBu)D1lEuGyM z$mJzlNFO1xgj8lJRgfv<#qPsVZiW#QI3d)Ab~x^1LyQtyIhi6VAgNMDL7L)3a6MS# z^b-nlsy!02{-U~0X$N+n&C%QQ z466#o=Tz;i{q#@$78~bS?YI)7r56lOY8#fYAdgE zJzDOn`k^2=(x+g4hraIz*IkSI@A?Z4TDVX+tu5QP%jDCxu1;)iYeR;W%mT;y5L-kA z?{Ga*0&g&z6)KfTn1#ZkEl$}x+BN;@P@ZsG_exQta0*`(5RisL)5P|AXsY`a|FGKN z7l3FN+?(H#&n*-r;N-JnAVI&(%0qj5r_e13h`DFczfgsVFG|00YASsZ6NAjKa~)`3 zfK_eZNs0#O@9jmS{gp1EV7jx&#z_jTz(N`$r$m5Q~lo>N@qLcIgRN1H| zU;`eyTciqgDwQEWYv4!2wz$~+d++c5fXD8+#sZ)Y001BWNklEbf9d!*yMDN8w_-vE3Jt(WqfNPld|^PiZU$Zm9u@2= z2)0d+=VTz*GB^Ca={Va!i=a8oi+K5WYzW}>u``kpIQgS=F1#+5*f`zgl1tx<$Deo# z_uPFq()Eo>7`I_8PPM`GlT8o0K;7sVGj^`?+GW5^@`7H8%eVA0A!j&KSAdWw5B`W>B zl9?^U;yCWiGmx4(D;R+}_9pB9wi*bjFH#T0@`nW7+>9boJosOK!o7FiiRN?~bu90* z0V$P6S3ZlD&UWl+ZAW|OUUU*j=kf?qTbG>ch*m6UXZ$yUSe9RfX2Q)XLe7y&+c1k< zD&$@EP^VQXXjZPc1{iMOj194HoOs*xv@tCv!%ak`C7^Rury|-A32u&5{9qZAoMdMI zc+bfnTzTlBl2vE4eb*g#2uS9}$IXH|xO51rFkxE0N{ncc~DcVWhaCVc$;m*SKY zjzh$GH2BAZ_9Pa$D z+wk;bkE1>wmkc+{v$XTRYylnJz1X#D7q;)-g|5C{nOGQ$rx8mhQK*Du^OC$hIf@Lj z=!--Gvw~2rh$wxElW`=y!x^uvEz>3sbk{ww%=Z=CNbkT;nNxM3iO1oF$!A^U)WH;` z_7VZVmrbACwAe|`@;L2=@1ZXuh3Sz;9+7L?vu95r8)x0!a(wDUJ0Iw8WahKSvmKLX z>+9~ucFQ))da`Pr^Fst$KG3l}*L=1}H!>kmVAE%# z08H8e`+E5E!G|3#C30r|Sc%B=_eNX8^V$ot!}r&aZ-rP8U|<1=Q@k$sFd z#r=oCkkm*1%pjtvxltO^EzlO(GpaRkbEB-HYdG_REgvjLBMI4;{H(M+C*EUij4Vm8 z!h1?e7yq5lfmO{Tk3LptTdZQy@3igSEq}iHm}7+Qb??3R%ClpI)G9?%Id@YD-)Y5) zK7zJl{*ga(J=vO~y2*wO8|2so$@D$6Z@!kTSb-focVaNhiLwo-uWLZApiBf-BpB!{ zm@^yOH@}T?ZUFOUPQwQ;x&Wu2yawGJZRqLmM|#Q(9C_>sm^^c46)d|R1Pi!$tP#O- zZG&I!0+C2_2zcn0Tk+KW_o10tv&azQBvvOAh;i~wiOn)Y={d+#hqJdtH=X3zm6yl6e&c76ppDXZ&6yio&Xs zY$bf##JHfDeOz|XK>}zx_jZfa5Ho))%Mx6$k%o)>cfb1`HgDXBNzVvfyRm88c5L6>f{y-P zB$D+gkOv=$%71yM$H`4Kok*j^(cB!v9Mg$-^a-kyZ4>>B24w-(aP=J@EYtpLGqDCf zXj=r$v;l5bbLP*N20orQH!D^m_?kXzmTXo8A9vk#mjDbK5JS6Bd(ll&k^*HH0D68= z)}gP>KJub<|Ef}e4Bl)Y3eU5Rg9h9%0^1;IN9@%gub%gw$0s1;IVS5gBS_vSGgT#4 z)IvagA}$q)Da{SI;LLa7#MP@&;B$#Y(UTcKHWtH)XPk+KsZ%6L0s#q>@}m!{QltXF z6C|{%V5m07W##sAE{jMkjwk=}7u@&fJE)a~$&HO@s8e~hc&bqv{g^Et7#u|V-Y#t0 zz8!CG+ltn`9kTuTNc&r@8CfO8q&j&l8#8UPgUVXY=_{Nk0r0SMb z7{Vb;ZfHPnXB&=Ku>z;BIR=L=UX12+5(C|PC4n*+iedE$$D?`Poa*L7&T_~#E6b<~ z-Ge0fHbWT&Ec@>T6FlKCo_q8$+k z_#{{+mLgpz*WZhkix=XURR`m^Rfl5w#AfW-wN(PGa-s=G9KQxrX3riDmPr?L)d|Bh z;@3UkJmOFi|5_!|tPJ7KU;GlUu6+v4)B+6;AsLU$jZ39PD{XcT?90$TTW z%3)JS+%(A{5&&yZF5E_G)$gLmD zvdkjsM5=~07rB+fa>?LeKkAYxx%so^&XYw;?Lb}!9~!egl++=Aht7zfDWxw5Xlw&C z!&IlC=SNLnHSnrTo{Xt>97tvn^?h3A3N|&FXX$LM zJpcUj!bLl3^=gp``sq)9ibP5$p;=R>$@1{>m(HDoFMRY;ESxeKLzEdBD(b|!p$Z0v zfMZTS4UO~Wqs%OR(DlDR%Rx7YY7{1-O5&j8xp3nySIYH z<1r)~>W~w#8xamTBlDiYEVk`x!IoXS@aE<%*wxmK?ra8;SV~k7xXDSWjTs(`@(Gz@mX=z0cKAv$RwwxRzla?+IAx$}-11XYF*> z%oVd9{4AE-*yzI-v)ymK^_B!(1U?K12?|Jo$>k}(ln_ohGs~e|9tSU5jLY7C3Fb|i zL}H)-Rs!a1sf@mG7{{D?3YzB5rM{DZWgX_K^a}yYR{j*@)c{# zdvVt-x8S99&tPI*8Vz)am9i)uaEhRecV{r3h@)7kptH9dJNL9o=4bt@ucEcH6Fq}D z$uy@L8YS~Qm|!fp z+D0^%{cxQa-;meO^X1>sUQAtv|IW$@ZJytgzsPJXK@Us1ybjV9w24_8cd3+8pGqQB zDq`{cdHC=}7vk`PmT*)Wy4zYYrKt(+JzdBplQ`<+Q!r`n9CiMrTZQ%8cM6u}Ly9H* z;pacW3r|0d1+!-$Eu8y;475Q=_aPZJ!D)AeBKCH7Ns!*v-HkWjdK)cNjp*$Xdu~WH zD9xmhmtGz2aRh;ut(DB68-if>&<8tW`d(Sx2HS}59AO-GE|48O#gcn0+-; zSSS>5@RCLN@Ov-BvUzh*9_T}?Qbci}5BYKh`D6oD9e+F~9k9SBASSc zKWS-i#m-$VXxrO`&D*x4vzs8g8`-k@nIuP&b96l`m6XBcBx9;>xuGCD2cyW1N5iPF zyU_Is*t0U9!{=)hDX!SkC8)(vVqSSBJsg9xOX>K0fh*OK{lI15nBIBiq-7Twf0+PMwB5nKF(z z{zOclKfg+y;=^ZVKjwU@+oP)L+|Hi%H?w^2?|y^lA9)m0>QhLwb3Po=1~-CaH_a?8 zLk)&REhC;tp*$2pe?EszJ9gl?mtMsy8{WpA?p_Q<{`}`V@b-qckZNoY`866BWyfy0OE&tr`2rVn_0u*|>JQhJ3tP}0bE?{99x(+@p_ zSreL(qQee_5s#_ea6EW|{G$+Ol#~&Prw~uqp&SmQt)~w=T3hkL%dg?Z*I!3RZ#Tkh z{D~?zH7c1;ghoiQmI^I%fJ%RYYWeJDNf0=BUWtMFd5g^9REuvH92y|8)atIi( zY~Q|J6jJ!_9H7HB@bQm-T<$$JZ<*EM#v!AAD;22-h%JP}!N2jj(Lu1%Vwr8ehsWpp zeD2y5UZ<0Yd()7PCN-y4m^;xcL9G@ut9jH3}AA7oltp-nH-v$CI}URC0uS=w4qok zjSBU}$z{vs@Ya^CSpV{?czwg0XzA({c%F)X|2c5cBFS{~ShSsOn>Hcc*cix8UH$pbpGK3TZ_hZ zYHWhkFKGxtOM5%^v~^(Prp4M7ujX zrE0+dndfDnZwVTsY*}^7_wgg0>sWq=_Q~_KbF~aJ&zZ>`0-X6J>-e2+Z`dxqwBn82a>17&Vse)(lQ^5BD7 zrmjFJ8tk*7?QoJE8;TiZS!SD`$daQ2qkhJF(m5hF%*kqM|&s!_VO!u^11bRYugUwDrF&%O9v^9 zjq+l76$uX-0o@4=kJKG;!%1KHQE_#Ughu|R+j;saCriokp+_H*QUe=;=u~J-lrnne z$!8?f%uOVoN^7=BhG+~)L?~He?`3Kp427#3s}2$9K4!3*c1oX^Q<$Woy!o7UcJ1_z&T9A+&)RPetA9^)B)Em$_WB`ax(83@mygnNJc z8@&4LvzWj|&a6W+B|NZXS}7Hx${+zmM9Qb2L>RN1sd{N5BLHgY=)k%cU%=YGJ&WzT zT97MO5K5$Fz<_303&`dM^&UD^j$mxH4aJa5zaEEPLueOq4N?rW3Q#R+^9466Y9li% zOF+S{@|GPt1kli~)|_~$@wu(_#NW2oJ8t2*#{M&hK^ zJ`*|`ZaxGlmhB-pXLgj_Mauv1yqK}1&0KK71yYtvBxAVs=38*`nv*4~ux-aKgyK;| zWr&Q@Fqq+qlHZ(8;7gym3`ZQa6qUXnAfJ_Bxo2@*fn|bU%Pfyv0#!o$ zaIoxyBU#-p+xysm-G(P0yiaV0&0@44I>khk6fkB7Q>ydKiUYZW3_2rGq#BxZ9V3L@ zZS8pJ)mO0o#h0*Y%Vu=u22hUGOX;694EmOQUO_YM!nmmh*A#?WO3Hy}25jW&N^_x3 zvhz8;v?pe6DX+wPPaE0%)>}eJ9(X{GX(e}SJban2&+>c1%bmP#PRSZm5FxN(D=fScL;t z9-`$i+C!8LP9c$i8WAkZ_~|M)ZA2P|t4PG_(|GU?zZct?*4%^?tMsKjn$nGkh1mE+ zkQ{gWPh9MVi5`|}>zkW}UcxHYmhC(6-1E=l#g|`3%bqQH3&wjo^1B33S;Ff@d={16T~ z`glxVvRJc$BCE!!uS(G|dAR)n%fqwKC22q>FZ{7T-Hylay${nHnvo#gZ777Mh7_Va zxri!U2-XNighIlqXEd2YrcjoC9NN+DJ#BdTwb$|b8*j+7=_?koTY4+PGLqXWgF^Z9 z`e*#$W!Q5eC!3?*Idn|ap2%x2s1%%3mBZpgXal6&(T}iEk9!2aXFzr4Ip<2Hk$#7| z+N_XJNr(33Yg8LOg2&;$Mqj6jGdiXBzx$#MuqT4&&g7&FWXfi-VBtcsX{vK@&wA|P zheg7W6&0Qz1Fzd}|0B*h_iQ};*rV9KtpyFu6J-x2Sf*+gpM08>vDwq{nU8)LD-WC_ zfmU6N>E|r^3ng^q!#HxyshGtC57RVG2_wiXyXvQ`M|Y8u^OOY7kRuY0qAy`!`H@=` zEKf*8k&eZXVs==jHt9wo9mQ_46^($ph}>XU?h*|}0;OaM;baP31N~V4>g#y;si*Pc z8ylol3W6e(kon6u%vFp_j5J54LnoXoK7w?E$6eQ%3`qnnjNqRdWn zY(2eQ;$SHDO_KfZe{+*$C(pg$J>rNc&q8T3D~(Q?JXIFNww*hwy1bH^cHeGnE=_JEK=^^!@BLY;c0OFMb`a3&>H@TxPgB7cf!rX%oR^APp zhXe^LkmLW4#24g1nQCXcW|sE>%Th8Z0K`K;1Ig`PZi4%}#(;V$0 zp;Z8BBIamyp=Bgcs*oBMLzJD>bq$CmQs~&*B^0Z*ue^eFn>L}H5=e!tfF=g1##uHy z&}U|JFsHKPY>Ej2+KOd~`MpTsMWeD=aZ_McpX-%_Axtiipn-CNe0D4^vQlAs+T4g} z50sQ+K;~zPgC*z6_G8g7_6P7#W{u}S+hLW1fQNEXJU4Ex9G_jtWN_|#-Xs2#0T)3% zGvV|{lO|5Y+I8#D*480`Rw1w1!8-OB6!O9`?P=YEuYCSWoPYYM*!}iK)JMbMR+}l8 z(K1_Ez_Q*A14Xs;9Wc`y4&jko|A40+d;qg2Pr}ru zI-p!YC0oR-Ni$I{R&=~_se(!*B>c{JGA&s@HmGJ<<%uUSb@~j{H#ecBwGB@^`6Qlt zem$Pwv>5|T?6{1wsZAKz9WUWPUuS^T%JBw1X?p|_OyIC2PQWRu61_c`G-)y}zx;Bc zjgVi;GP_OOqwNt8v0;-S!x~S0Ut(E3%jS&)miH%v$bFUPXbr{u8}3=;RC8bD2yK2g zV~HB0CTfgH>?NkRdsA=9O})QpG&U3w z=|yRZh=KwlMZ|(srMIc4m;dLx-u<3AAeh{nnE%Pg%rJB2oPG9Qd#z`!^{i*%Kd~o3 zG6|wvm0YiRue@w4ri<7_WvwOYEF*z)8ZG2irMzyr{yJTB#;I!AzDe2UJ*uIjU0tgU z%_$vy(y8hJSZ2kw#jT>rkp5r5vbP_+7j697+B(e{H(t+AnW_$vxH?uEpn1NDRBXuB^8mzUP{9{lPoD9ux=O0~>~qvngSBJV zcH5x*;RjnSp^Y+(UnKpESh7_WDyptBs@re+lFmBuShelgtVlMYs&GN!%4)s0Ghtx) z5V{iB&A%KhtDxDVM(g!CFQ`j(g{oK`7_U?`;+7ZKjcMA)uIf^niZ+q@xRV4kT<8=V zFe(nbIg{0U8$QsS*Iv_0HGCdb001BWNkl(mh=bou3%YRZ&pdTGuab?@FyH-64+0f zb{p*ibOY=A?>@@FGS4m7BrI{o(n-x2J620xo~QaySRJb?RS!S8m{+{Y4K1-z5Csaq zBqJUqUL1Rf%0Vb%!-&{Iw2IFdR-%yC%Jm!d;=)B%ZAR87n|CWzaboS9cbAZuX$0E8 zp63n?!-G{HT*$6Fb?jo=$Q?R&vT1XE#`VLwQSCw36j`r%^IoxzNPTUcIeXs%^NAe} z!8pxCtX$ZfUg7K{o}PJEZ3!R$1P>b-OC6m`2YSkJFC3BBn~X;HiWz|I|79`WLTNde;sW zQ>}`J!)i^X)RdD39DlqH8$Qf&k&Ty!4|3<*D_eX-5c&XMxx6b;NTtNE?7T@6HE-r~ zsv{tG>|g*Ml@-9K1%F#J4(A+7m=lzTUQt<9YtEG94}Da4@$gPbq?>bDE#2^e<}O;O z1+Tqo@>Ng)p-6EIo-gdKLHkU-{kv>ojqe2b>%euTicIyMjac{>fF;l48eltKbDK)D z-LE;Py5hOQ3=0E903_wfQ@O7(Zn$l*3x;w3;kD=OmV~Mfi59kvI?d^4pKZYjUpec! z=hUr74@=kyo-8`y{S(d2`pl)5+GjbuPanPT{EK?`y?52IOIP#pZRj7PbxUC&n^O0N zTAh2!$-3&|3)BhKjON|ivw5o;4(g^4s3r{=q5&tI=l~7_Hf(6b{YM>z$3Ohwp1X<5 z2mAtE_uz@a1*b!?GXeJ>giAP#oCF8-reaFOPTK8GG z>=QGi9tK?b1Nj|*If)&KIKF~yrGR^e#-1KE%3Auj-g>Kn{0AR=(7r-tyX=Z9?D?HL zceHc2Zo?*}Q2eNGFtsbB{dyeKUAfj4h0+P#boG_G_}sG;%Oq68CCVhUy{Scwg_w>y z=~VR^&`+wWC@H8ICzx5L{SEh-Z3LgFjD}I(ouIeCDt6`an)tVewQ|v7b+4;aT|BP3 zXoZT|w4yQYRY#R$#s<4U{feq`G)|($>~YK$dLm8{4BtZ)Ivfc2OA9;c$+MPR_-yu;ap@KKf zv5k4^DNFvK7oo^Og8n{(h~cn4d&wo*xqF9o2r#)+E%IHzf)>;mosjXup20FlbVho`w-DBq>vE`a4TW z_Wpc;0E}q%lcV*<+!xiYwo1y<&Z@PIT3jqnt_LVa1UD^H0JNiHR96$E!p7a9+=Ouv z!15STIHKlEM(=OhqEQnkYT?Qi<}}-lxP3W?J2J=rwC~DRMf>mla2A<~pP&RVb29@f zK69~C!1(QNf2$4aH!6%SG<=~7TCxuK8}Aq$=rYYo({e0ZUYWr6->X{pZR|PESL5ac`k6f?eHp8uo+UGG3qHTdug7!S5+&VN!g$T(3;~T8)jh3 zmOc1IBtg;zEx?54V~(zYEn48>dtzoRuBKF4t3KGENzc#L+{KHj*BcL-Dz(Yz1-jn0 zA)A0!R>>#m6XbnB@s0togENHM!tnuec+X2O`>fsIKmPHLT`P$-U`S>~qK-Eks9j`v zU4}-31u0N+{KFEYfWvHZf5G<_fZ{IDxlWDa#PaY1eBR!CTa08C`=WAi{g=ON**Uhe zZtYt2?A1%R-FBOSeTFxvd~=_2+}B@!z3Z;@?x80E(Z+XY8a*#W>pA{VG-Q(L#dJ~^ zo^rD8x#`P_wY4gi&lu>2{<1rn)1iY0Yrtuzs$dB&`q3_SdC_ENO?z+AGN->E8phrf zp1eJ0>LZWn-K9&_As#cnbVEhV`0oB3SyeCMx?6tOmgI_aM)e2TChP{xV6ShR|H9S^ zZAvD!Ve3{+nLSI-zxJwPRh6c{YpN>-Hb{)yE6SE^`%4)t3G%_ib3zGP&@bM5_kDW} z{0_kZutT-~4}bWR)~;P`iY;8@R5GcWn);w6i3WG2T^p+6R;@;0KiG`NSAOQJ*d04| za?(nPgat~@0fExdII<stOy`+_Ai8n9 zF0aY^v(f9M6Hc@Qcl4;yreagy&{55aq+NJklUYyfrbA8KlnlOg``1-f$Sd2@sBku| zRH2|9nXC>QGDL$;I@uWuK-5$W{N}|neOz<)`=;U_m3J!5Nh_0r;n znmTum3M?2Z%4i)n?9F`;$S~TG2Fr2yjIprO)Acce_a`jdb`Q{4i;Mh`@mNo;;JckNmRaK20cWaB2b>qRZDBjDuy%klal#@ub*-VEi5(QFt z9D@yN21CML-qH`8VL#sXa#=UPw{6R2ec{^ctn={mpa0xG4?gRsKmDmy1MxjBvAiYW9fwjz5Knr48HlI@>l~Xtp*Y-WlYAfV4_StEgvEU_T6t)B{ zZCgqM`Ncpiz-XPwTZWwtGS-f6Gq24tc;7%blXLv`%9T3oh$C#{C!6^wp3uGe;~)QM zGZ8!h%lJ*MH~zv)L;68gD;|;z1VhDKSD$PFP)U;bJwC@5OYuQ;HqkG}7Kx#J&7@N5 z5^VOvhQMTWV(At$>jP!yXFvOyX*zd1=pfq!i0#lV_tZ$%F(% zQ)Td(Z8=doqnhd}MKW2{RmODekb(N{U3b_}da7}kqQ#t2xxDr$tV0G2)X^uO-g(~f3vGoQ&p>PefvJsJ$(74m(;-0 zkYIf`o6O+%eEQR$w(1p535tt(^D0OML_^A2xWf`k#Kr zN5HZNb_dEIaX#)*wtT`rIncZ$1kQN!DXpCMin>=+DN@L)rl#6aCD=5G5=E@ifuErI z;S&xLFsqsbyX>(W9u~mh_oZ`c&F8c|lhW*k3-$DK)0M_vM9A`55sv7rsN^5ho z?JauW0(C7o+IYc^d+r<7kq3Nb1M&=Vv8W+XDJXB-@iP)E93-t-fEXN8e$F}l!4H05 zbe(xGy=0Pheh`G$g?oD06`#}e>CbBMlGkmOYh|obxg=YysE#l-7g7lBcQ&Qdk3L%8 zy!k7t&14kKXOu`I>lfCJ*0ceh{->Q{El?631IvDxhE?@;=eRRbay)jA2At(!dzzQ% zDe(-+hKdDEd*U%uQt6EPPClo4+U0?MJLk$PNAMYZCD!aG9JOjW=Yp;T_fBvZ+c9QS z1+`_f+S$^qS@U1kgjutdtB9&4<=XEhKKXvZvg?L;USD~qz!I`ZM6E4tHe=w`R#-m5 zx^vplR9Cic*`y^)UKf6G)v8rW+g3B=k75RR+ENbm#wy(VSU^Bpt0HazCmM4(r?3+O+^>l!6G1fPL%- ze~Rr~bisvMFz*!u(p;u0-YcCmz+lIa&slJy9eQ-%zWUZ3UsEmTytPS@d`9VfPCGMM z^%*=w15fr~Ic91leiigbx)KKf%jFa6M*HC^2YmNuAAMZ!EL*A$!7_**9lO|O!FbHk zUHtL-dz{L#9e*IX>F-s)7|L}B3d&}RO6GIg*3zmMmn_y3QzoiVS!tTDidR@dzCW;B znh7riG^H}N3P0TIE5lX@vFfp_+)`Bre9$_7>z%g@x{Vp zK}QRs^2P%YooH)TOB)7JG(W`1pX4J7$CnW-obv-=sWK!&ItWd$` zB))Om*Hs@0E3tcr!ugDfv50o2^Xk#BuZ|iq!j=gEOevE1Sqax+*mnsD5WP^+kZGsz zIDAq18w@I!)|~OV%W9b!*z~XHi!GB1!icfcp!u z3xeqY>j+QE! z86lqGpTiG3tdxNfRO%W!+Eh5fYt4IWjJn}P>Fx6c6=6=9fv%us#dAE!vGWCB2*ACs zRQnlS_;5Vn%M#Rj9Nb;E+;WRakxfDRr&A|8)~|i_tL7ZXjv3>Y13)nd5(sasewfhT zG|uTc3JY5f4Lq|MD4)~OhxF3-@BF$N!bL?3S#zfBD{D@tjr%p^%rpPjmF0gFEKh%8 zlvcg6KwY9vb}-I>0=%yPB>QVx4wgAbBw!va^KTE9tx`yZEtA*owxn8O(hG|g>GAOs zRfwX#3}|!Jol-@oR9R*KDeye3t+h>ou61fjOhBFB`wK6;&}}ShZ8EOw`t|F@@`{?; zTDy7s9M;#`Timq#x4Ws)ae&`@S36l{9Ht%Tz>k-vGpVIO1%$xs#rVy(0)Xs6kWYR* z7uGvp93>8|cds56un3wAAL6XIuC%cL&)5#qWt>ACou_>86(tFHt4%G=~kN+>A9eLn`!U15}c;*cMFuiZx372Rk6Iqj?YRRNE>(%+1^85>G%%+sY z7Hm*9NH_yoN2@Yea_rz)6y=XV)u0qO%en@1A$)gW>C&ZI`R1FZ(n1A@s>^_W{ml2Y zw6t1l@x9gStnI$^jTLrnJ(tce`{16zMm#Sz3$-Kw<|RL5iIq$ITqUu60F?UyyTUJS z-@MtX$KU<#cdd#ud-`Uow*RiKa*DQeJRhw0nqcOojFrjk$DdH+PgG6j#2H1mm3dUNq21Iv+oPF-so z+`_A{o3}X-SVq;!5|yC3W-E&W$uzW?n_E+CkID zW!Zz}eA;y&eWK_2oBn6;#<2n759&IrR=s8K&-@2enfi|PrGYuF=i0UFt@6BL#Y%16 zw8`Qo8_ueNf$wC}Eji&@QjuvVUOOP~hz>Tx zZrQYk_3NwqZofsH*yYf?$9$3bom}yg1IvJ?d`5F8PSi`YX6T@rS~XNx7+CJiYIaj$ zazk$xD$Gdlq*H21r`4FwY3!_-nmm8LLaeSWV|`&TRNV}u2Gx@gq;9JM_)?~; zI9lMyGcQ=9o;}?Z_qg%TSd03{KmL(wYpZSAa@@FydTZrMCsUNq>%xmJ(x8Du^xm5H zEtoabHkdP8`SvQUeCsW3*|N=Arhp&clH@}2y1eJo70XMlG{7f*m9c2qBY%myg z39kSFMWB$^pq>Zm$M@W!ZWR&b5-noQG41A-OhyOyJF*0pZTsF{T+R0LyYF}Z5Lhne zHEZ-3z4_A1>J*0S4mE`9Q{fy#0Cs$3d9Qy5U>SXG9snKJnQ)u4RE%odo;})GNNd9E z*?R7k1q!jXFBCX3%3j7*b}A*Vg0MGOHoeWVwd;I#9009!Y-h^UNyb0@#V>wt4rA`z zIVKVJ_NsS+DgKZyx#Uulwm~Wg2LuA{>U`ejvxKnYr>wp?bF>7F%3gLi*4$_bBx>G&SXl-p$wvbY~P_)&dpEOv0 zY4QZUGHaH)<7>*mGWUZI7-lmZf3S?lTFRBx*734s9sym2WGlc-(?KWL&uiJ_W?v=`R_joe2ceN^wi zzuM&a3dMrX`_%c?u~@!hm9?n>>0P^Y)56ymTl*CCj#O(42so&+IN85JgN9fongRe^ zVk$UX|Lt2g3;89!=RXFos50TJI4*)5Ho}l6DhqEdU#>n!9;tP!S8GI2h5GAX|5{4C ze4@sA5Qsq7hBR-qhvN?e07vbve~pMD`K{)I9|xAfA8M<&Rw^tV`a=JV39)F zY-b1CwmzxKaxmcc;+U~oGXE8;Ojbq0Hl#(x4y{@PJW%g~#KLSRs4P+mc!3!Xa&HY|@0;Gd26Q1Ex$R(6eCBen zY`#3GET@t=<-!r|P9-(^*=d@+=v8GSFaYkp~(=j+k`~=sC>hn9RR+$d52hMKD zv`J^4b&lZ;3N$2i;2(~K?!2cV`VFZ5xV8pc0?$3~JmV+>h~HSWNWB8PLV1S)^xyyf z_oYsmPewfD%wjjHSB0V_KA|#TK{*_?eeThS zs|2xmh1XuD8e_H8Vnp^e2Q%`Hfh7G2eVY@s6fa8zGgJC;yp+J7eS5Ws^_<=gd z!3TFY<9Y1yN7Un>gG{Tk`$3)U<&Zp@I_)|A@sEGf*6rJM&N=4?gDkG?edU#(w{^5z zw{J1Z2JI2DFRIQs5ffiWwEv`&EMs3tOERC=MHhX>ssRjuVZi=k`^qJs0Y`GynWr1E z{ozL*v!Dn#!%*w%YD8=F{=fXyTKmSSExR!skac?6?)#um5UkJk!P}M%8yC-2Rr+@A zq@RBC9(Ab*n6-=mCSG@4*Q6tIl#kfl4x9BFqlp-pWqdT7iTy|rPzqwwT|&mNqbaw-O3nM4cX zhzW8<^&c{~@OB`J!v3w`28-y!kCUz~pC*|sU~-FM$J8>p(PH1P7)+pF~MyKk2?Yfn4#Z1XL& zw7G8xIM@}oR0<%p(3_gny=PB*E^X0M&p5+6CM0~=BTJ3Y--c`W&2N6wbhmjwqpt*d zz22wzVnt=V!nla``6Fm7Ll1G(BYb*8eXSz!-g7DS>(xu&yXQ7_s)|dAR;v!8!n6I~ z0G1a_nxgqHJg>TNNcEK!s)F$u4GXPW13W=8<^7JYGy`-zy~U`0L2xwrtW4Hcjkjeo zdUx|?jh;GLE7q-50eLMO?uvh;vP^~0btRm)u8z6ZvF9y&PN)YwT%QLXxZh@dNVX3? z*!i7p+Zv6_`9JsnkNFem8Tg^Co3>ahoxh_?(cIkX)G8uzyOs>zVNW}@Z?|sE+2@{X za|isKYfGD+V?cSMan~+uzjG`+uw}YbC?=e7_Spt@UYh%|UYYljdiFlVz!(7gh8u1$ zU0f(>HsBxl9v{2ByduMeNo)O+tT>5Q^xds%!KTer(v}aQ$33{up$3+_*VWo`3BWQ` zolmr~oXXJl)oatHY4)@!>RMT)PIc8*S#GGSQ?kYBihC`6IPT??9ulr{uUA)f0u&w^_x+VG&$1b?0mf?qj()bL~Ny#dr* zWAGK95y}?VlK6B)|Ne$?Sfvfv=Jl9$z(-NZ1}Hfg&dP-ZUsjr=9)~vnnzGWa_lZ zYHMlH+?VF)xZ{o~0S_*AQ*%Q1ee2uWvSo)!IZ>HKyO>OT{MfNZW+D?lwD)0F`GI$c zBig-Vrvc}8-(T(M8bM`=Oh1uyqfpn(HzV56zIwY1R< z3dMK7{XM<#!V9KwVH5vBrcexq#r)@MXMj3HNTtvRZ%a~w^WwpBzwTWOEO(BhaNxkQ z4Ogbq>N#Mb297w*)?NQ^2K+v*vTPOGU^sN~^qHDFVUoJWDoS8ERvA+^;Wox$M;N@X z#Cx7OVA;3Z4Z8$GetRDfJV7VHe zGFs$WC+~;d@Y(S<&c_79esH%i#Rsu2?|z+1>Z9y5uT^u4?)DtFJV9uh!NUs|pSsI#>x-Y@;h{foPll>%aa> zAAYz=&pkUs9XocmVVADm54P4e${t*&o;`aQ06M&H9|L#*Z0v_1wtIJ@$-4paNt8Gj zc5ei7a7e)ch)BA5un`L-6o#<~m?mx5)MV5zf+!19;4)I7!q#Y`a*jPWk@x5G;`6Dp z*=I-YjiI$zg(WDwcSB7zL@0%`DfK_3r+#qnUFtxR+}0el(!<)8N`G>d<$$xiWcp0a zdG1-&sHjf0HHu{Ns)$FG%@myed6l!BQgt~R42}jH6g|Dg7i~DVaLL(5+ni2m)y9o_ za>96RZEaFMR$(0YVvbpqcxlZtHc@J)2fiqb{MSD7E%-K$iE9GIVdBJzc76d7w%*-< ztJApMv~{N?HYCK;r%h9R$IdptLTq_<>Qqbe(1$1P4Cp_|IthLVkXSW+#1ZT3uVOEHe{jVA+z6NM1Qxx*~r5hr@9^^q z4GkpTEq4FoN5($=v?-T(xj8D&4ogIBIFODPm1As@86Eu2f>#&XwIvDTy3&Q`{rNZc z%WGjrJRe`c-y&TKZE@VVaoVtEjgA^V+`u&5tY7^4*QUS&?F#@+a%P}7pnm!8i^*Iv z$lS>-Pccn>aAqKxM-rGv(vad}GNJyxdl^{9??jOFM9d)3s>V=Ay$1dtIm`c0Ww|J= zoHtjKMn0|{wbiPonj7$PSusdZM*r9^DS>qFfd_*JwpP>zp4urGo*qS7pdzK>s7nFbGmOl=W-Y zT3~vA-CDcYRh2b%vmAHA@s@edo;k}d@^xRj)(qmI2OqS5quhW|!Plj2vh`>BiwWJ^zP%8mqQmfLracy-Q&>aF7-eK`flhXh`pa^ppGUQGKMSe47JfRF)f2 zMHo0x15OzcyvP4e4Wo1|+&85MmnoOeDHbYf#oT$C`oxnuxT?mqR;erl#45tB8fc0b zfsMG&=i1wqXe%=`0ar6n9)YiHH%=z2mezz?vN<^ap5jyTzX>g$Ua>FF_Jbk$XtE0s>EvcjotFctlkuiT<^Hfub+ z#>QsjW4-*!0$Y4zv?B(~IM)owcumRv19aFChg%C3y-N?CsUk6O5l2xVSX0e$Oc*!8 z21dyKaZc!%n#5g)j^>zf7;JK+-9~G)W7n=`gVsV0D$9H(&*!CmWsclarI5)oQTK=i zaWue@UgR1T+FCXI@ILyCTXGes+IRy*Gu>4RqXw2a7kq9i%jlrCr1RR<(xP|P ztuO7=t%(!QQ>0y@THpwcYevypu$GOAer8@=|dZy zyXKm!OG8i&poR6VZ++i@2h|q1%U}80*Yy1CIR;em33ki?4HD(B)U#I)Yj*>FNXY0y z5R~Y2VLRA_2eiY7A8Y;?pF|*ID;75O=imR{lu^94GC&NDER`V=Lcg|{R=N*}fM@>J z{8Th*cDHBOE@xX+)waCD5>%?u%!8m16DpdfdjG?E>xbXCTMhAu@lL4@lB9p4U^&p} zUh(`K&73^RlsLL|Xt3&FRb?DK17|w{r`^qZFyG-iQkB)!=6?+6mgHR=1qHC&oXi+l zUb%Li9vL%QEljq=D{b1|hJ}$)4K&902bS|$H}m4Tul_#uRW!Orbf6Y3TBt`KeN5M1 ze|5>PlFQQ6xbMF2+r4i~h1RUmMHgReeuT;{$LZrQv=KfNegoh{q779HFhY{gb*FO3 zrb!+o_xv78#b5s4|Fg>DEw|rp*P3LCrA!?JW*lbA653PIYCaLIK^B`@|~fft`?0aZX6ki6f?}5-6Tv1Na@V zP9mALn6>cD6&f{VvbLv_s;p~JYipZnG8fWr|AMb9?+cbAdAGIJ+m3ZwZCKoCEyG#H z2Hse_SdWezsV{!JOErr|tyc6@eU z6!jfu-%aN$%gXG$GM5+3tr+7VB*noyMD$ErgZmt2V7ZpURyu89xe3m)^a+DyN$)I} zuL+MmsxI-UYLWD^A+jLDF`dVFsg-VoYu4umpabbI9?YY92ShNZZOv}=or$F8u2`wj zQ>Q2cX`W>f0XNxzqE(cG3F3fuVH$e@x!z~3t}5oh75b%I(J)U^AfQ3Wefc8wKt2`b~mmVA*B7aVgcNlLq$F5AV8NRfUZ5$yU=OWP@L0 zI;F#oK1xTPi5dYnH$=wdfyCSzc^?~#XFRcGSF3Hr`=zN4T2{3ps}T_9pL zDRK1LYp>Uel`HN2;I-2VUAX9Vb0~B*c&**LcA0Yl7$?wd4k$GB9XlA+2Sm6^!kRW^vbuEZt^`%%pv&Te6t<2Nv;`(X z1xz;zF37;OZt zY*8QV*rk=LS8LRSaY~@X5Q~euuCl5|*|d}GV;Ix{p1r|xAnk{Rbaf(0Y57s{~VB1pMM} zwrt&`ZQHh}xw%nAtC~u6ojPmC;G-@0c#Tzp9d94Qr;N&0K%!+n&A*~^Y zAFdzXcbDp;Atf6fSk6cOJz#m&+%VGIh9dkDygOKzNZJrJZ*#0MfBjKF-sU30<(L(G+-R48U*e$7IFI8 z-c~)R;{GHS;1lRXAqmR8{p(-<)c&%uF=^Fh;?xBfTw?KvP8EQIjuXiav5D`w?)VaX z4%ZjJ;v}lWW|#O6hP?nc9ETrlC&ARa|G zl*M-bJz#ky3BcGfHkeutmMcut-O(_x9pCZv5~XOla}ON|Ebne?wfzzcRxH!#X;amr zqN+M{RBLk!n!19ud?2uF$xKDP`4P^kw@+*qyCJEiD*z6eJZX~t>sPZs=C zwCd{}4*SxVZnjw$o=cp;UP#z|%%b>berL-T1H*3HtQ$y04FfPt#TnnjHK#B{QqEu> zbS`FU81Mrq^S8`taD7R@87@Y{{f+?dOqwvkuoOxeZYCh(ihcnW0VjI;APGLj3{z%- z-dkBwQVJrPv)MIH_c))k0l)9xbGNG5XOT=OS}3R~llYYW+&UDUd|8sh+t9Qmk5oHoKLfOU0MHWkfD zXKMb&8*kR*k3FtSF1cLYdmL<8__%QstoqWgUti6i|FTX#`BV)bKGcH9`n79~|Geh? zb!tsIU0mAoeDT4O zYX{D+1Iwqlfwj`cvI9fp_TPLwST>SOE~EEfe?#N`_OLodW2T>3fy7HOZ*pa{&$$U5 zN6;rQj`z;Zz_s>OWdITnC%M7mH;4Um`SFL183(V?DQ_N z4Nt@1{FD{KOGzB>=fOKFDzqP;dTNw$yk^XJPWAP*N@tLtLX%Xw?Y7(X(1U-|r!Kg_ z)D56bjC$&6>n8AT5};v2kFwXvrqWi$VK{<>s=2wz+NH_XR{MI$A%_`o_N}w`RQPS###TXtW)E$GwN+s(<6vuDrN zS!bVNLxPExX02Pl#_VRnYp>bNN2J1aUbwb&xZn@=?>EqZ5y1;E^_kCn*8I+xF=GNX zi?{)*9z6~=U3dK0vy&&QQ@3trHy>`;pl$~rY(dUH+7oE^6SE&qkjef9=Oh^PCMK93 zO`)ht<#fvMVfyABUss{ENzp<^*|t{YBhWCi>OcG#^*!!5DVHHbu>rZgR;8Qc3y$J{ zBOM1Yi-fgd@e(~V@^MwNR$~ z^O>A_9&(5QWRkCwPCeCPB_Io+3;3o>#h@^W*JBSqY^pkdc>vYnefk=u2OFcJTwPmd z;M;TE{W;xl1PQJq$tOI0w>8$qGG{xS9~oFa?YQA49T#eAbL+0z%3H{3OFFB5#|+cq zLxxC|-2X_i{)?pJNRp!=eYk9yMn3dct1P47gzYe+R2_FJDV{1wA;+i!rQuM=clQMz zfA5%(K_Y2giN<6~W1gF)`OBB7i6kK!RaHX=CEJpU6vDPmn|lc3_mySqj`3d({L_x7 zJpIetD+v%j0cr!BcB-~@b#bj(^I?gHuo)ZV+lUz?OmyA3zStcJ5Vmvfx#yY> z!FKRFY$Aj)F>CtFkDr)K+Or zDy1Wa9jzk=4wT|pTdOZ!G9Unn3DF1C z3C~T&c=#Z+v|O9XsWdP=1lVg!wHeR^@NC?@TO+4U)w0#A6^pa>I^f|N7<4DcZ(XBB zZ^6;iG)gOt0}*yx*X#JI92eVyJZb!mrLSw)u%Y_NPyR!nzUYDgNKxVWibg&@QlI@FyLL8>@Yr%uz%*)QmW4>l=o74`}@ zlvPow-iP+GwkZZor5OiSTkDnw(87WPOKW}dvv0s^KOX@t zC1?X#$JY3h?))2{GM&@h~o(rRgKOk6$SKt<8J$uOSIfzh~vIjSn%>-nHvLsEw4$? z!giWkliJ+0M^8+itfgz-SIqQY8CHv0g_P>K2g_75ERmvJ>=TNzWW$_NAoXLF<7iaf z59(?a1nhV9>i3MV{)=DyOc!2wfs$-1tFF{_*WIY6Mvc~0U-*IrHJk==T4d}vh#AwS z>Bg^oS@+-nKT5Twt^J5I0Wi}=nDXp212epbEd~js>j+!}2Mw}~Z_AgzX~4Z`B%yxG*E*B9IQ@=`nAae9F4C9C|uOUb5BjMzlQJyyVOoT3c3R}?MmbVApD`ZN0a z)mJOuv|D*}D?@Z8ifU|08CX69uuMDBpVzY8)&FOmXCQXu z(jyN&Y_>CJ&RkPLKqHs-Cdt+-^XFN0=9j0~O#zTgv0uDjL(B*%t-^c5VQ;}dWX zjLUsMyB`YfeMqRbNy{LjCGi9;TB4Pqygq%-nY#JfFDT#IsBk`Qd_utT=C+i9l~TE2tC!XA9O2g}qC@!#cO+27l| z4}g~{As_=lO4kWRl?yLC+c>9n9qRPi&t9t8GiK<@tFJarJpAO29UF}LL!t%XVSDGV zfBkDa_FSGBkA&IQs8OReY0?ynQ-EAw^~L`IwDCF4cHS{R#orUJP=o3}V1O>V@G}O+ z7$D@iQUV(&V?pB~A%1<~LiHOs(7KT$MjUUp)1^zDF1_^g znl^c|Zn)_tim?j0;If7iAPzJx-M@o? zg&Z4I<{&^LvTmTt7{tOwuWH-YEgEs!X~r)l^ZwSizHOD{D?k4Q zYh@91uDtSdHXRHo89i#0F1h4lO`Q0Qwchc9rlt^Fw(Z+@YsQS3y8o{aSqmOOOuz)x znJ_z5uAGwwL#MT6PovH}>nxpr-g$cD(ML@ulXe>0mQ0AeOrOyQE(480JK4ZN@a8^v z8Q2RlE}w0ALyG0n`u2@q(#2<-Vy#ft1;ZUa9}tsqx7`4mZ&V8PrvZQ zf3|%c5Q{BbWzfwNAh_>s2cR5MPVrn$-}>s;bkWHtE87T9HKlYhYn9}t*0hcsK3u(z z8TzjW%fV8T4-QaSCeW61-Psyy6`!bE(qRfJ*m5y!I?LFR*-nZ!x&zB^uivOqW1rE7 zjk{GqHO4k50+wr3@N0rg6n+Pm9Rl)TIiP41T}$01DK6RQ*T1h_o0CpD(T>w?q{`aR z48vGgec>AY;D1Sx_)XA!>YNr(WT!am1 z3l_X;OCT1`pKq!ct*r^;pSm@$tT4|S_<|FOUxU*KkfvKgo7HzwJolZ13t+Ur>fqi9 zd%+DH5x9-|s(MHduj89kygkMFTPk4Cyd?eZCYBBs;jNi+O=Cu zo1Mzv^D}2E4*enc+}KY|eZ5tiZR=Yoq#nI`87O7}(wL{m8d%Oy#p~L&#IMH>0iw#g zSo;IZw(XYd8440kTj9JnSS}>nY`E|A6OJ{oOl3Ke&l*_Xkt-Nj?lX9>RhC^s?p9B8 zm;6&pN&Ze{ITmtp%G5i8#L5Ol1F-CM(Xk;NEePm(;sYAM+*L zGx!hQ*QlyOBDTsXLEtDlStM}`t)kM?IoOno@4;sHTa$$Sm_SuTBHD!Idfmp zWtV==lrzY*uejoJGqisF258Kf(K@2fp?c+&m({UjopEu=WYCsoXzQ)F-qxHsFX^1K zKc)Gvy{cdR>NncFWt%FjTH-)FOGr#tI@x9p4&%B1FMrXV#%2T20Aex+l_^S%nXHaHX1IC} zJ$A1l!jHAs(k~BOS*A+Fd5VXNTK~o}J@ep0YAA*bEZ5Z6xQ0hQtm;bFO7>v6y~-SO z6&)L(aFtK1&OqUzvYbk5S8GzsSHG{njd@DV&}wK&lbGeC7?cY-EOt}*L9>AOZXunY zyW{s@d0)WHF;VTa_E1&aD#bVf8{GQvL!ENUY1X!!K5M2`aeTFgB#deg6&|wdzI_hU zyqD*yp#jOLyoxq-7qjhWYu?{z2^z9G%idg}|NPJY)Yh%rOVV9Nt>ABpMKw1y=?m9f zV<7y$|NFnq3Hdd~ej?frMDlzVkNEqhbk~&8F#yX>AuUKotSjO4EU|BDu}l;HL{xrt<1Lbhvr}mIEr1ozH(oWqBX4yuZq_2YO~RK{vpIWjb5d z-BQH-jaAo5U^!z;F&3?OQ=`U>Q*$<@NJX^@(Xi5qw6z#Pf~HvDPaJ^9C_V1~B89zM z_3Z#5SXvSbTcVy!I$dkpl5`ZH`{^lw@|NILU*Z@fk@nK)sKvSdB%te92(Y0iSVR(tSa==3n_WskwFxPb= z*|0<_o7I9hmuc+esoIrDtGc1a7HgSac{Hw2AphlutoH@Wv4W}TmVCT@%%J+lSKgcW z;9~$BX1Y&Q7f(LGXH;ZjQKiy3 zwY8?q$1n(n|01y`@t*hMi>A5E16$zpQe=XP!Js@d7%Z~MAb}W;7_j1f(b0wH&1=DN z1t1;p5dzlQ;Emg-$E?jhm1PF}s>0H*e*8oAIjF0`DV9nAcvz&B*N%KqeTNU#VS@%4 zSf*=OWP9kp0W4EcDEB+WC+nuOXp1gI#Nizemi>8Pjs&p0JCV|BD^_UKz#6rO+e_TIoh8V>4z;-sQU8~Psb(P^8WG$JI zC?E2}PjJ0SprC|N{dGKgu!|`Q!j99%jhpTDcrMlG2@@t*Or%S(dDA8nE#Mq+3_OR} zMw}uhE?=_5P6+^;?g@6x@%T(f< z)*_hYVV0OhL;oCDZdb!7i*RK}X^VbJeSClA_d9WNUMvboG z1D5~lX%Jzy$=Q&Wt9;tE4A$-fmPxc`%%88xFU(SFsAx(UruSM1tC-Chx78jvV% zKS`wQJO|wf194_w!`lM7W|${3t$ION*fdjFv`MbopX*QKy1lk zaAMc?ZPrphYREw4a+y*WhRNvDPd~$wvSW`uRud;owqQr)$f;>K88pB$Hq5XM@B7C; z|4G#~HCCO%ey}Ic^#bhp;aIYT1A%3J4pW(jZ}AZb%<-^|iaay``9KE0o6_Juee|O{ z?^0J5I3(H>2^Z9wPbeRYswJ5-u-tR_(FT^C{6%}$HZFg|ILm>;sntt*9lkR#9dXR>6T~3tH*4wzefS@AcO;ZrT(Z(5k4Zv+7?m zkrqpEOdZ5YrMUYHTQS{uV-hM_Y?o^E_EQdeOkOY)vS0ydAwlPOsT6Mf@Iy;@W<5XK z&KYg*NfRd9f+YM7&tvs36=ntpv7G_^4lk)iazxOO&cE;i8wi9?|KyXS0%^f3t#w~p zYEKe>7V`zuB!scHDMvGv`RCdfH2Y14ZmEq;Y`BF#v_kn* z>5PW-J6zwr`!02^t5Bh}S>asL0vGq`=44h!4jraLhYtPMSC)gNBpY9Uqf}Y;oMlhL zur5TfK*Cc8-9V^0(2@#|so4Y_Je{?ss-PD1P{%JpMW*~nLxy&A^8m1Pf>eN5++d$7E{wM{QC zS)!+=PZwj@Rh{Zh)rsLgVLO1*f=t!H(=f^_%YP3nn`Y%kJU8 zvR?{=-9#z$M`e-A91mS!lV4a=8m)PoPG zGL=-P>KfHm*BKD22*~c0te2%VQGt9Etw?thk!e}AE9Cg7Y19~0G_Xudg6iP3m*#59 zyceytOKZjl_;N=A7%Z>0`Zk%1WI=zcY}8rU zdzQ9s-)`^Ivqulh(DpR#Hr0W}3m59iCr9eqYp!(Dn8D_*)$gy>x#ym*Q%^fXi(gx) zAAJ8iy5WZFbjs=H>9vK6gX&JJdiCsSlc`IWEi*t4C)$5L|FzseaBj|dwrjZBF$bi7 zsyP1PD$#D(25)Sw33yO!X-g(`$=RptzU!}3IMHl_b=(wW_JD*vS=yn)bjZ+ST~(fm zaQojs^7zLq%TGV>R|l3OA=TC)tCv$%w5p`X?T7sQwYTKPeDO;2*=IV$DOT7 zjh`{owjgC9Arp6}`Wy?ztd+$^A3L{n0j!klXeIz1d!L{eT1vtKuxyp=vI;DALiS6C zqId6}c47cO$TBgocfqGGG6%C``!4$(ZEvc0J9ll@jvd>y^z}s=H-4Nhz2ss=I549X zQB~fc^Dn&622dHOx$V|Fbo0$O>fG}$(o1vanmiZ@UC&;J=*Amww1pE>Cr(tXw#G^A z(asE{gPanBtJ3=g8RayLeXpip&SDB90rkch-I0)!W@EE;TdO{I!Fjsn>My7|pHsLk zp+Y{bREU;VOwEbxzYQ#Rh(t=9WsW@_te*!go8Jjka6Is#@&#BnI!XYRNouSen$Bp$ z?ncd7yhzW!Fw2xY7+hfs9V?5iLIhPOs4Sa(1YkKJqS_Ewd7@t4{jrW#)OA6;-=PYJ z-{E+;Yj*D5Wy4bEop*up&U4vP-xEvZ~PSPlmKpkX*A^na3u@plINDl2MSC##};xY$<(Eye_s z|CXe)%qEapv@K?tv^F+3Y3BTSdUnoyXFJs~C81bV)u@m~38Q`8^}b-4vlh!SAnKP& zebmoVq4Qf8IZpfum1cfUHJL;SaC_vDM;PavYX<=7+O@MroOY`Dst-QcVAVfj7K2eF0%w3(EXzy{YW?7c(qPD?L58u$}2YDNzxA3f@4ob@HzCG1F9UV zC)f%6d2Aiq#+F-}8r7p$Z}V9Pe1zO^y00wz^KA(moe4r%I-?8DIa6Q1_8NtADOIrj zR5_)a_9#|gqs=MTN-qb?MY!UD?R=6n4Ad|_j)p;e*%vHxj@pt5D-LdLZqcjDmuvKM z4lGx6tTQ=6?jy{fZtKT^<-bS6z{gN%AqIGb3}z=N@Nm5->iBsY`0H=2SYgAPB+?A^ zVRsDa5s#qxAhk=OoTVl_=gpO?bjvNb*dm+9AA3xH`tzT4%PlwP^wZBbV9saVym6xj z3>jkj%5=OKJ||{-x**5FePy)NV4Jfkiv;x3k3$}@U>Ou!$(`*41Ac&IsD$~vMx1!O zzH!UfrBuQ?S`8I(8}Ng({7-@9zo&+QW5)P4EL*B49{7tIiUoD7s#YAC9EB`sTN^YS zwO~!F$GAGd_BE?i*`g9R-)S3r0BpIe_OvBMrZwsL*_!$4d~>3qumjcQmEyfx4uP0^ zyPQ}6COu~`$UOXdV=sZ`Uk{+j_f(lNEYuCih8ctb_^>9|%h+80xl6Ta(+75ur%s-z z`|kUOe)H>J?6uTn*X~B$a?5S1tgbUH!JBWoLErh#eHwD~iF$v{IvcRVK(G0Nn?MCD z*VlJYA=qSS_%`6n^0j;z%T+mp72baMY@hZW0EcU2$%J18PGv9@Rs~sqE~{I=_yt`$ z;$#&QEe4j!aslJ{XjHp18TA`JT!$WgjByD+39!6j>2i&}{{hqKt&WCOQ_DHdskWll zq~ow3uUiSY;5--y9)58=X6ttAY%$1%sk?qZU0^(Sc@$Q1{ zUpR`b+cw(};Phvw>aM$P*KdFGD?9(_F4JXbZc6EwA&{gp2`>Q;GW zd0()MAA{z@J#00OU?{abxvz*<83^UrY-pF(a#fXEG}E((`u00Qo40M%mJhdBJ3JP3 z6>^q@+}{K_iJ`=eo0S2;BzI-g!j&x2*F zy#$)IW;?7$&*w_AR?XRr);Be3*8F*z`QidAID{+0%H%^<0D;B>$-?U_<4H8r)RYCk{o162T@ZU^@;U$b@VW>Y9=2q-kkwiexb$8ATZK zowO2R}7)#thwk&prC>Z+~t!Oa6)Q(5B6MjEX}A8oz_I;dR$tqr(sH zYqD@q*cdQo77V{;%ef>Sdc+Y%1F^16!1?AlxW}N2aG!z6Z1e2LJUm#2Zfbrh=$^W+ zgc}b1+Lv$8Stp*Lcp;}u<8IZ*V`|;K+o@sXv!5Ji*@NYc%N-4)Lo}pnIj$*S+3O7! z^F_M|@nAi(l5nB&Y{<&m7Om!NS{ruk)S9hZ^}xu-l|Y*lUEnff@Q&I8 zX5*j&jDyN9n!N_DnHLCJ=@zs~OFV*YZ43<}FypHQIp+YGOt)5B!L_uJ{^0_)G&Sop z7hhy;a{>vxoU_h4L(k88)`a(QuKXR(9sTq(dftSyYlXEL$!r z%MGD$2`n@0R9{tR3qpL`kHF=ZXCUiD(}YAXU3?7 zDl%XhePA}xr89~~T!qJRmR)t)XaWJiap#cp6>z`;uuLnpysGaz2~KM^9OzC;@i?4x z2Re{3^A9R33{v@(@3Ur1(})qL>iOBz&7Pd?xa&3gsj+(a(ML>n=ds5gH%{q*K|`#9 zluEf3*Z}MCW5!wwi{sk0r%@d`HkcG0=gznL{6Gm{+AokO2g|Ml;q1dzmII24=PdIx z+UTZekXP558vVyN@6};lJG<&mA+Kz@O}R)>Nu++V4)F9ocDPliZPmhlmXi2M0>?r1 z9T9F=y8;14#_`Jc3U>LNK74bT(J=M}%Qdz2#*ion%l@A5>(QeuW?w!*uvu0bu0EvkrB?3ae& ze0#_So9SA3Q0bE`Z$l*DfE}M?d4(Jgq^oM{ZJQZI2jVYPVEF0S4Ao-Z9KQUY|L{AL zv;@@Pcc6(Nv4!t>`suNzl0agGhB9giLx-MV00-VXi)u)mCb3zKwd<8N+O}o0=_vz> z*@T%zd5FQbaKsWg!~l?NWDh`~s`!zw1Zv+EEd~R|K2e}HOrl;B4(V4v`H>Fk(pk}b zMv-jBV%g5EThy_8S1129^eFW<`LDQL8^E${M%;J6&z*9k+%Z4osb?w4Fe|J_3e`gw1yFAATr(cUzl2XxyW>)^E@=Q>R#G zJz86-3~>jo`__bYQ)xaLCCgWb++G@7S>$}A@O(vb&xpP-5AhDv|Z8vpY zhy8y=p@~9P`%D|*1bYG~Va?Q({p)BQ zK4`F$j&nmOCD}N?u&mTsFG*K&TkTc0{U}89oaGOeFS7x^hKNj>qc&RMhB=~fJK+RL z<17ONf;EJmgX$;(F$2LYJV<6)8Jbf|Cat$OuGiobPtx~(_A@P8waVSlWinJ=Da1SL z_H5kKGQ8O%UlcKbWm0pHU=X;3AQB1tDRI{b*kOk0^Cw|vD) z+wM1O#mXd5*u~H-d=YQ0xB4(@7 zW08;zgtA__k`{WPv+NhRU_;zkP!5sCTWJ>RTxJkoKK3U)W@ej59 zowr%(qj*)Nl8KbPW=Sz5IJS}`VeoIiXu{;44CQ;r47a2tZ`ozaxqkvB0pR@PZf-UjM*-%(}M+bf7Tx+vV z8#qYcz4KO8#i*nfrEEqaP+%mimSje)*@F5G8?Ii%hnPi~8h~xTE4KwdM7cLzs(cEt z9P~KXW&2^xUw*K3iJpA;Z|YW6r3iYtREueoM=Mla<=W|drg()*%mF}vPbaAmv4Kwp zfJi3sIUX!8TfbgIPdY_E`^C?-YW2IeKq*%!s&khv+O>O+RboEw!F|>)W7Mu)?St3; z?(uS0>uu2kBo9`xd;BS&ho8N^Xt8xP&}kk%e2BelGR1~ax2F8nSLRznIpXA#v}x-O zoqpCdS{Lnpg#TpyM}L6`fuN4veZKdan!uv>yI>P6U& zRitAP)x@I8wlwO*;X`cuT1`YYp96;&HydtX5;j_^rBG!j?L4;V8e5QRQiDH1Jw zEVQqTt=G+)TqN6Omw&iXgN{2!zxd^^v}_g2tXO1HrzFcFNGdCwk8fAJa7Ww@%v|TH z-1nDPmj6yj7D6rF&OG4e^HBI92BTw(AAzIF?^$lrr_Z5gSHX@a?b^M|W+jLdrsJJR znbaY^6EJ<%RaZOdxTPzMs>5)pA0E!;vn4rKFY9`sube}Z$qT-kmk0(ZvxSfWb3RK| zMa&l2ut4jSVT1JTyKYy!m@_G`hT1ygPsd}GYRzQSlu7B(fdh2p2`AWg%VI1hG!&fh zT#z)C$0WNLR=%-Li22aKtUm&lv7NBAdBt*#e(X`z@!U*G9jhvAd@u%ekfkKStONx? zv!$4uq2O~u5mPLpWHw_lix`3LY09RxZ2bnEboQD0&JTX56)WGgB+Cjzp@`DSv?>_% zE6JldP*`p|<;%i6NG^}rK4Cx5z3rI}-rmaXj@JV)J0YxzF zF6OWbMi5jagJdKOOzfQg=hS=Oo;%GDT>X0=cZQjs?%Vg)tvXe8>J$?KQntd;uq?Up zaxN?yMzp9HJ=(OvO>^eRa9`2sQ{pEBL7!SGf>Iyx3sL@14>K@Sf?x3~Dg)G`U8cpJir zh_pg!JOu$iHtpVxaWkgjx#i2Tcqye#l&)=3&dan=LDLeHGcmhNu7^~ujL}cYkgR+usDyzrL ze=~^lAr<dL!NvhYO6w&E^3@F-g+;R42CZ76R?F6M!G}(=#N<(JAvm4%pxW_YVL7AOJ~3 zK~xz5$PyP2C4*Q{Kub8yhV-CLpw!j%YL{m2a_Wt|K+pXdga&4DC8}lqyy@92co5f@$*0v{WKD z@bMb5^`wRC&v&g-!7`uE>Y(TkN7*4Ecv4xt-Dv}S#TeJ84`z%TL-G{t_PA75Vv&%v zKL~7!!!gvmq$O&#y+i;56PhGg*0(3QzDZ?+Ql9;J!E#V72RQKK2CR7LMFGp!SOgi= zb2k>xqUftX%a59$C5s z>1=zuoZ{rU{m;)XjIxF@r&a?XPT!j!a_^a{Jm&kjyzix3!mTz^$u5;H)KngFMS0E1 zO(h4B&!JKZ=N>ZBNe_y_!|No}HnnxHuW=VJEFg3(#maktlrB8Oj4}u7DW9;xT1e=OdCHIj(9{`qtRdp(NGvJ zmls8$0P?~L5u&XLhvPx`FsZ{(Z4X>mNkk+`aUo8y~Q%8l*@JDE(b*`3<6bEi~> zpLpU4j2m~QvKLXEQnp=KT!@VHESxxzhYlS&3AjFest^+=PQ=&izn6hOQbN=UZBpVC zU|~o1LLO)Oow%x;N>R-wokB)2kJBohD_h8i!IyTz+$q;eu_qA;Au~N2r}GP8ce$m& zQ{)SxPLqac(5a&ge+5|%SV3xNx*U@tGb~ea?{vPC$``Q zNVgPu+zt*F>m30u`ApnC%zX=_bOoYeQNE!K1wvsIghTjl*G^2FJqyn~^BkV~=Tj0# zylGycjj>`+8xq?vVwYZ$QQo;O4=kUnaKhIxgXL78#ecJ-Kps4O&cS{A$byAX}FSNT-Ku}W>1`eT(<|s`KRFWP}AOz7^zSe3r-dL(Xd%F)M5w5 zYC(|qf+J0BpkFt7|@-;bNH>ZRvV(P@K=4vbp1ZckF}f!`A>%W@K9 zn~m_^WLUy&RFzrbi6b13p@cFj0YA3_-0~L*R5cjiDH&f64Z_8R(=| zJdzGbbAK%chc2bE%*ucmmm%e*49&bs+o&q)jXdCny%O~9+e^4KUwr<#Os)U2c@vHv zJtW%z@3`YO^zGMMfI7hoff{8~e%ZPMy?XXXIKtPDi2}yjf4?t*PghTM2B@hVJRVJU zHyepmjM?HAy=!G;;#f5u#coTgbEuyiNdhNpLw?L3HyW4s>nZ!u2~Z=^kQgw5B3sY0 z?z(w1)N9+`0L!J4Q0H@o=L5@%w-?3!jhpbs^UtG#$0cCdl8C`&vnIi^*o{+ZS28&u z;8Mw!vn*JS#U*I@Sm6oyv0>*f+;r!i`1#kZ=r?2_EOrIFxj)|QNC=kCco<-rLsMq3 ztQ?5$N+{doHB`avOt381#t4So9LROIJin~8QJRNCGXGi2igG(_{NXzsIeZA+d-TAa zcit}Tb`>NoqVLO9$-n(}5bZm5k`_6W1P`+}(5tU2m+ zRD5?jcA<9|bR2o_KM9uiZTMb-R+Y3gzWEto+2vMC0`xKsRsk5S1pFIdnQc&lWhRKl zKEGO3eBcl!&76tfPaH?j-n|sia5@kOgpiS$DZFp>C?71VNe=bUwq^!AX5MCbl|q7L zxew# zB%KN?tV~nJlEIjtljn-n!E-&zt5BK!5`hDg4~N|?V426tX>>O$IFSHma!z7kUnGJ) zrF|L*%2rLMGYx@w6emL^sMow1>bGi_1k0hAbin^Iu)Od44Oso!tH^fPlVF(%Dw9F_ z8&^eZX#GF;NilTQ=x!><#{(R!qy!-F>Lr{h>#u@kHYQt zDrr=NnpJTcRIUT~xb(WqF@J0hTSX zxcF%%oFa7!8=STToTOof{g^a*IL2Hy2(f?<(V!n0-Yij!pbok}8Wpfyvtd0n>eBiD z8(2QHd6W1Z(oQXruz+QLWMUb15eb$hMp>2m7k{QI%Qo4oz^-F37E!d*L`-7V>0kig z@7{%5{&p|cum48mMwyhenj8#Aq?<}GD6!@&VA%|Y|5vbVzK>I1gG226kKASQor!_I zS+`DxJJ+xO3LQJOmg6Hprmc`NbmYhpP#atiGjpr#nl)>ryCIm!rIu}p)UH)+T)dFS z`M`2Cq3Ezow73tz67XZ{$k7-*bO_R5L7=!0PF9w~0mN-UFcLw5KZFKNo1#wp_NubX z1kLV21PRgevHulddG7{p@OuH3-42oeVpx>+gUwhD;4t>38>=2A2uRSP-l-_vN%q8w zAA?tspPGX{Y&&=eb8oo`#|w+mqIFB*JCy+}CS?M1Caytq@}8BJG?fq3ahbIUH3*fe zN-Sb<3(b{U0!~AUPAWaDG%D~+oz!8&hM;n#O5%KK)u=8&=&P^S3&mpS;6a!*YX9I93~s4bz7T+IoR=go zRR)aIpp6b}QeBWOQfgA4CUD1$$>`L)30wqa3`3T<5{`#ek`{{WS8LP|jk|RH%fYf# zmg6z({b2*%UbYN5q+uAtW2{0sZ7SIkB@DMqoQzz1Rvsj%bM-lSv`+b)1i{+zoG2;A zj>AVVbHM_c4sX`#5&{3Tbyu2d`RLa=n_o}rEbEFoD-)*ehgw38AlY1DCcqYbVyYfE z)W8J?$awaplVWUA;`Jown419E)~Z>(n&>r?Lr6Vs{%-Ev*%I8mUJoLXgvj*_8-6*` z(m3GbkjnC_udOhGmEy>eGN8I2r8Zoi^D$Qk%X2)WL@dwMh(!UTW8shnB**LuxxMz|4e21w;#U48_QlnRZ=Sq zuq+EmY)-JU%!;z^M5rL6z_RfAoCG{}RqabC{wcxoXIM9&>@3SRP2Y_g5`fc^^CFQkTPRWs zV3|n_6`7a-5Y#eOF`cI0De(o6=l5aPsS}tmeL9Yv%tMFH9g&%pjr^hlxLj%Sd<}** zBsg1TxjfL4S_~@hz9t~kd}iH=Fxw7kNL+lw=dhbed!YQ~Yp=Y5id8D1L&w&bcik-X z>oWk6XavWPpOi}Agb9-n3@~Z;V&cTfc;We%A6t(c!3}rZ zE{n*x2qX{+$$iPBfz&-;2{kg#4wlVHY@fWmV0qVf-{S4pmZ6eMfn{#(lh!lT))wy1QPOd0K#u@f%f?ykN&`_3+OQB; zSX_dDYtuyYAQ7D$!meGqVE2xlQlY6*y&4W3IfxD4e^0-?>1SVH*39dKQc|NvH4$`wZP{|Qq$J6aF58CFpU=GBx=fqSBsFBdVR(~iP{eaV z9;^I54rDoOc=)F4(4t-~(N~tAC)A({gE{$91j`j_)k2Fteg1M921Ir+fnDEzgMY7l zT`D}}EIX~_EZgC*sy3($*f<>mmU*-CA=B!Tv{25>CGuaa*s#*WMC(LR5%%Yu634T3 z+YYqv+6hjN7a=ABRwH53)RmNuVJQ#Zr~v7K31hNf+ni3a#7-oE(a%={q>{LB8aFAF zZV04{-m0R6_1aoje>h24HXljoD?B#N&Bs7-4e4 z6WH_JH+b{4S5ZA9BMFwBvV=q>=VB+M?RbJGs&yIS-+$BRpF zu&4+(-*p#${An{fb?uCd^b7>aFQm+bF(7OP%c&dJWVM26u*UrT*}$^-+HjEA{5QIV zZU#%VIW85TY#3YWtn%^SzijylJGN~_EFMM6OIk^AW80iEU{{SAgX{_wP^nTCk#2hC z>F11f)+)i$LqF%EVQ5=P^_fYqY^cca{PG?U8eA+QU^(4s#oY@RpjrLeQd!PUOG6|S zLNpvfJZ44I3gn0V$i1irF6nxyw5$n+`E$)=Owus^7qCovOFV`h>%PW&tKL9Gk2?vL z$#EoD)|F+UVc3jVW^`^uzSOQZ!qM+=2#7XRRP4h^UkMHeN-$;iZ2W%WB$~HuA<9qD zL=0J3xhUppW|@H~t)HcW<oD1|Yo@!Y_UQ;sU-ijTelu~b=h)>?V*rrcT1eL zDaqA81D07?rlvT-vQRWd(>x-D6t5+Qdv3Z8EgRL9_0|MDE{8|7=0nk#fMtI)j;ggT z!o@wh3ul>NIVAFqTz>W^ImI%PLkm zCBf2QnZ*QxrBWDn57ME1S_RQtg3FTVDsm?O3T4G^WST3u)YAyR>e4t zcB-r^m9^OhEQ8LcxvzV$+IzUPwOO76BfM%#$7_)9SU(kg+3pS6%^pOKY$xU?cg`fTt{2D786V(WfKSl5=WMkaUI8!BRTF z6UUAsD>oa11`U!5GPzt1hYjgzX(F3L9n*a3nl@>I?%glN%9Se-3%VofDIhAE|U}7Gp2c~qD&~8W@4@qESE8qMWCaSF4d)wHOyRb z4XgMaf@LOB`9;MzSyY4rC55={{`+zI)M@ET{B~f!xT@^z3MeQnfYrfP^Vz|&EYC1? zB2ocMd9aN`i5D1gnG8X|G(lB0Oo-Nd8^8?8lED zMT=H#)V9(8ypNzSfPq7XNi6;3az z6$n-fE%7kCb{n!B7CdnKLe#FD1Fyq|SSTQadn}X?D6_j*5{{zsMb*(vz%nP~oHB$d z9f9(|veDtXpaDOE=tcDa#}l`RP|Uq|BfS!fu#n3ReG%1ds`yT4_Y$wVDX zEue5{m*7@3#q;wqW!f~kCm5$l1M2IY(@5gRxL=vQ1- zYR!u2s=*jeLaY748^WATowwKn-d-*i1{RmhTS z$lr56Rkky3oKzIm zu%Bw%D+-27ahJ*GKF6cX{bJC<%=SY+#UL7v80X*RmhKhxaI58H3RtdLAshBsNc7(Q zB_*;rCKOi15`Q8JXJ!UE3>Yli%i>WBEH1UMMUP>XLT9>Q6SzMgSe76Yz%O5|$NO); zg(_6Ph{uG6;YoAJ&<~Z9*hvu@gE8R8b0Z0i%_TmJ++Y?j$j1*yA~;o0h~otXI2H-w z=KJoGq4q}~TZ*TjeHMH7{|1MHNg69v=dUcQE@t@~HqQr^>EE=!(UnFs_~zg1eFC!A zARHFmWDfrMe8t$gYnvos1k{XKIoY`agg*WBbNT$^#*N3f-+qhTyY`A*k%plLv{EA{ z!l>?ql->#QEy{;b- zz_OW!q3zFXhXwih!YAi-XGNLa;rfjl$;xUL2~X$e%g;FnLHnVWJ1fqsSFc7Q62X)i zGlWV=K&=;zNWtjD3E@DC?B$;T%U0dTSO}SRJ1ThGSbF!psF>z~Ga5sd z*Mky&F^c`g$jHqSuv{1jqgw6SXx6o>(&#q8vOf|=8k6V00xWM>yB7al`)>g}UZ-8a zGFuV+N<{+(E^+csX6eRFz``IWMnykYwIkT&Bv>x;1q3X|ylI$u(@i4H!`9f1H!Z}Y zOP0XtRH_(43YTRYiZ@ysoKz5FbweCR%$N{{P2I>w3tn@4&45&YFR#z$vC%dcq^W5P zy7g`VCmSmbhI#_CrC=x|l^iYwppM|70|zDhVg^idd?Xk_r_PFR(82|%l;%_! zw~d2jeg&$@cTOY_hz4QtrlZ}UVbrimp5xLu`oDu^Dq&D+Y|}>{p$0&%m#UJesdUmXME;B1LF$~w2$o|gC@jX|{8Nahdog3-LZvtCapSf- z?!g8MR|?qyEKqXMcdGA zW@}n$>#Ek5v@$_W$s*LPTUWTs1kDEz9+sd*aKz;%tirYL*bzN@^}=J1Q6WZE-vyi- z3ogzFiZ!q)?|I4dAlw4A8lCqi?`86_6NxBlSFV76+;SVT?A-N2`-=)Em4TQ1Y_@_4 zmTehcv>QAKQMSXRqV^YoWzsNWVf?c0O99KZa&ll#!~`s-c?fEps;!p-mUYs_Yhp8W z)BSA!OZzS%Q}u^W<-zB4V*Z`CBOD08YPaKtg*W2mmtTg@A5{LvkmV~6EX%niWyO$h zG*@*rP)_a4q*ibuQ8n17e4Eiu4jgyy)g$Q z2tJppJ%JKGdi3fg6&~v6>Y{@NvR&y3CoDeK~EOFGR zn1j0)U5{!x8E_^dvclM3q!zRg@6i7T5QEL*L8rmP1T3?VZ*_Cvt5juG5`2Bn{ZX(S z@Z+a1*Wtr=-$B)kbm5(5I@|)5Jzlq3j$m{LsA40PX3F4+uDjX^Kv1f|GU;7;`2_-& zW7!#)I(M!tK??XvaQmHi;-Akw1Imqhv&eZTgZBJ1jI&X1&IgtW8X0ft7jz%O`^YL~iI>(t1(uzp9T+RBN!QesupEnE`?ud<_43yQER#A&u*`GpcBRQNC?yPn zb5+!%Ka$xZf@Lb*aOj`jo|{l(QJl^%kOEIMGZQlx%vbBJ0W6q5AOCpbACe64dU5FT zTwqzvW2uKZQBM|e&a(xNzvgpwvX+{(@fZZhM5AgrblWxo&$KtrPqc2+MjdA`DAi?F z!w>A;D}@QtGANh&jD&qzzK~uX2@YGRVVhFu(u+AOJ~3K~#RBk5r#2$8E7A z6r~n6JJCk*C>lhT!+}cPG^s2TXLu4oZe}_Pit-LeuffL8zd(k~3Xk263~!nk35`a$JJM27PDiS?6pD5^ z1{Ob@ScgJDJ#L1InjUp$DC6hH(HB>b?MH0@S zUl1(H$xW21XK3B8bo2IytrS7dPowv&cu68tt-i1hFE@$heyyjNIw$?e*frwQbCB!QvO*k^3o9iJilM~gq6HbU+0l8(a9GmQ%azCF8 zUia49*zn)~B8NkL77H@mZUH<5e*%s76{pk-6O{;d zA3g+cwW=6DW4bIOVX``D@>DE;eWf9#WlttdX0R-Yf}xzEhd7hh)+m?gV3nlunA+{) zgISqRC?yHu-Wgz7k}2VKl+rLtL2Fqq2%j4Y1aVQ#>awz!954cAI-lH%70|eGWBl`< z|5V^KriK;ud-JP$pYjopK7O+^O$E(z9*iyu)iCHpNv)!^U?^OI){PqA@ADSG%N5IR z-X96XqiXvl?=iMRc^$$|8#)ad2x|s`o$3TJfaobLRW<$}D$7JFh~cwUuVeFf-=YGO z@o*5;vU5aokNWOpQDVdud^$gW!(S5KQF$%ozL z!nkY33H>F_n<0xqEXMuH&2-|VH7(2Nf`F70Be9lqX>_7edG7jJ>BNlhCrfTb*E+@b zq{xYxgJRixFb-c~AsRGkB0N;KIa!sWKOdiCmf>Zzxb$5bBp()M(=dposjaYo=G z-;XQMxh<2lxp)F;0>M}uJqVV)=~88+ za-$}xsb1v&2$qcvexJR*3cvjDJ*czH%5wFbisJX|ZWeRwqSY;}bc>=fP;Ewlk26gM z(U}l(K#NoKw8nzs66`s81nC!5$JmJz;YiPrTYcn+5qSGw?@A!2597iux$emYK&3V$ zwql}Tq}qQwxXby$y zhdBo7Wf12B%Vv8^wHwh{jw`BDu`dWatNAvk3~3b{KZYLdTH($c<{;e`hnov0s74Y= zfXO8*{rv2a7*HGvpx5Y8NW`LuySaVSDO$PO`%2%$1eVEN<^OEwsVpY~0T~SbY}Fh1 zVcl0k!(e6EYpBR@Ig19%Vl&1)tP4C`dF~4ZVPRLxYC%a*EdeSjF2U}jhmpw2#&x&e zBE>yE#*P~&n|;HS z0+v5n{wlV8_pRvHF}Lx0+#(%Epe#mX*Ss%|&8un^!Lm#h8~T2vcao&F}TQ@ zu3~mx`up+>RcWHCU~P7!8Z2u%Nz!4;x#wot0J^qpj(g|KK!$}v-s+|k!->U26P3YL zbc+)}mqC}ok((==)AI#VZ6fCb%NEiw5(#{=awWEW_Z@N_Hl#7x;*h9|Ytj|nf`C)1 zY@8w{)U+w^>~b31QA#*PNyCW47Y+(Y+i~y!vTN7GggJ8roSrd;@sl`yw(7#iOmjbb82CcGynN%6R9xFDi z;4qWt@Lzsmfh+`IMMzz9-Cbd)MZt-)f#p;iD(_lqThXm_ZiV9ec*q}Q^*H87hh`V! z{@L@8jwoy{rN1m1%W}4D0+tCVe2D})4eAF+ZUw~2J!G<}Rwl}%&HoIR4bJk1%U{Ko zjT=yr9f(*2RWh@rm_)inDp;0wD5)UqHW^>p_K#a>KLkBdsT|XGvg*~w#5uF&^Ar{+ zMT}j$cS$Q<0Iy*q9AK97ZQK{)>ILwq>T_zKF@t4&pXg+q*G5-(9nQ3JInSwq(Cqun zt~oPPRe)F-&#hERx?F6FGErxxnTv0?<-t-g2lDgP8$HguLh zdTj-M-M9fc93D=@Q8gNo6_zR2~Kl8iWm-Hi{aCXnMzt?x0cqqe786;nEvw&F5F!jrKX^0p;X%l)VL| zl|?gHF5mBzrJ*U1a|#i1f2&jxja*g>S!JdSn67S~X+LVi;e~?b@?u;nSmsh2#$QUu z6`eeRULD)ww)r#RwZ@WQnKTRymW4+iO^8-^&nvG;(lBBidNfj6&08+BD2x7!8uI6( zVFZIhqxkfV*Rf&!I+@+jV3`$Cr#nrm$Se{{l5VI^Nq3qwCr_HF=~x-_EfBCAg&Hj0 zd*m=Y)v9CKg83*ZEEc~{#hV{C{2=~}=ZjrC!@-{cmicpYWw|`itZ6ygSD3-F`ukF; z$yB@1iJRHaq<&wuS`DF%M96KfSW!ST=^0ecV5K>=BYWm+{W-AA*h9%vf@Ocmmjuhv zq9Sx}+XlDKnTK>P&Et?iIpf^UngW*TcY0rT84|>%ZqHu_mgVM6#PII3Ph;QDKcRAZ zIylC|wi_!^)EndlB3M?^U#hiB${#n=XbnyVQBgBU(13#Q1w+_=;2>%?Z-OyXrpORQ ziLV4LT3&+v`}VPIaWJf?vA!n!gw4PkAxFAH6!X!JRXwz!~;S#e=`+HXRAxR6U5tr6pPt zPoPb&zDTcDO~5k2fLgYB?#KDSvM>;%QM~)Y3plXlS7bYF$RsbBnR=RA9E1YPM#3eF z02GH@z_ZmUgI44Ka(ItmnfkYE|L;0*0F@io$2GHNioJ!xAv9>%7>AD>hQ-F#UR+jV z@}aAO$%IFWqm-yi!m2P*RC#5ozZq6P)ELQCl?Rz* zjAf;6B$7-J`8vYMHGr{h*P9nvoUaOC2K(kKsXv#r(wU&dlx?v+%3v0W`q8sp8{9d4 zI?^b$=wuQRL0l%q6<8KpRU(d40Y5qp>JM+#YKT!1%H~!GncWK(9F_GaD?a*OJ+B&u z0hZr;@p+#=`JqqzPDNvaYIw>OR&w%e*$?cWic{eFa05EmL5b)xnDO>SEkX z`W*{S96yFjd-cMO-8+$=CRS=M0LVU5Fg z`V{(g?TAHlrXtM}h08(~avX`6(yo@uGG`FNF#*fH1`PzVGG%SCbdSU^6`3x%zFIjf z0m}T(c|Nc#>#nW%aQSQ4^zApOp6M0aVP%=|oZA^$4d+0s*p3FvIF|uHWE}QBLFwL5`U_) ztYTdhs~>+1zwgVGtP}=ifbgsC~b6ulWYtMmKvHt?=Y^f241F(l*-^J2TJ?18I{>sLIwh?h75%s z7}D}%8Z2vr)xkE^$!VvQ3YPi&WFkTNG6Td5(6m`3^Bd5mBW{^CUY3&xC>36`ktk4B zg;W5pybgxYqWh(&Sg+n+2$qet4Uq^|J^2)l@7;?`y9L=Ew*=3O^t3WyS+&l|Pc8+^ ziMUnTpd7ei1zdw=CR(fxHg4Yzmyf$zDkRihyz+{Xc>lu>3v2VwA0n2F)8?vNrYmr2p zfnD={&0txi%&ct9Iz;TB{J~HpF70uG<(&ujqj8rG7x?BUHwM~|MD%0L`dGvug@ zZUe)i*pCrdB-u8BW%K>3?L-GJbK+#y#np6#3k_7|0b5qNq@xv9$uAQtekEvT6;}@v zmr3-`P$oFL^_T&Fs!x(6LDV8xNZ^2+0?TBq6D$wt(G~NiPJlfcM4H1Q$uW*OcuuSPV z1CXSG*sC{48ZUiy9_crNcD z$8!N-+5ER>+PI=&P_d@OAA-~EQS=o{456Yz4C&P!*G;)bb_6&PheQ01Rp^^^35?}b z(kclB(5_oIcx%-Z4PE+Tf@K~bseW=k3|gS>Ze0*qmaaqs|5^45e*WQm)Xd40t^~m{ ztM6QmOa%`!SmtMx?ld<=x;*d&17*N6yC|e#>^XcG7d35$u~VlQ#C$7y_v(fJe)(Ty zX5|R4TzAJ)2mJJTOsy=N?{9u)9T(1a-<#)a%JVDdOQLz7YEVo&lbsDF+c5+83yDqV zdQN#@nYKbT46Bpe<)D(q43@we3}Qg{ZkRt|5MRsfNK#zl~eB zM&&xSk#JBEL&=`f=ln^q90#W_-hBKq9NW7KSuQ8M9MG~mke=q1=}-ZlMhjhU?<057 zLDIXi6^Tj)1j>O(L?mE*p|Aj+R^7W`(8v)8bCTNS!u;!Rz&{>;98RZK&Z8deOUiP| zjbOpeix%SEd+)+UHR}m)CTV0c6c`g)1vyx^+_DJ6h7LxxYE^OaWF9{J;3M4sz~6D~ z_;I;OrJ|f{%X9F}f(jLKar2@D7&3T(`n$Y5eEiAhc`>>F9Q+ZeZK+s{O#|er>LJNhQzWM7iZY*_;&p#czM}M{PXD-lGSTg`^148 zvFX@z`S=rsM=ShYQ&i zDLV+ElN_NSSZt_Qw>}mvx&f_Qw-g!#+t{Cc@);g{a4`-ZJd`{Ix_z!4Qk5!|anqt3 zF?8r4RI93O-eTB7ss4hZb*RT#z%mOg zi6~b7<1rlGyGLjknI0Fs+>m9r!sAVo!915i151Jh*)k^VGXcw@gkb{9Lc=()53T$5 zM6V%(WdJiPCmT22ya}oK?7A8Ap;~9T3|Kb&iyo#oCs_vTM-2oTY8b1YeICDU+lm_5Sps-iStbo5 zEjwKS8$&XV^E3+Z7|I3?k8BDhU4mczK`xC*$Y3#P7?*VGiUA`>s+kCf9XBmpC@a%B zlrD*sUT>XDuu8#OFjRalw|d6!-0tk;&v=Xy({5W-YC95}KEuNgFU8>_N9DPx^sjpL z>f-r{S>J5#=qvVQhM3g~TTFLw8g!L=B@nup@CH zrWObJ0%5q*yh?f#QN;W{Trr>zrjHv5cOnc&A|`-GYJ>?YlTeih2!~=Q4EoUMl1otS zk`{{Ybsn%xpv?cBx3Ww>9E;%HS6;@}O+SjF6#4GycDu|5P?pqccP9OgMW|s=J+2&oO>*93=8PFKOv$8yzKFA5at)1>p1ST@E9gwP zb{r;69FL|KUo0K@pMLrUf4lENY~K8{_ybMr(FGXdh)R_zrudzc%I`e11cwhFQQo*z zPgVY{Z0B}#?$l9Ucf-cbxc#pCMBR(ATM`JnT_}S*{_N~5eEro&%63v>)*mwba;n}^ z5HZv+2$s3-n(rU-7s&>{p}l)y_SM(OauOF6TzD2`&2?PBax{^EFA_(>;XuV&wa~Cl zYh^d$P}HjQKM$6pQLK7=DSqFx6S-*~Szns&_6S&JD_ycw$Dv1*g5E`4!_`G`cYvZ#|KNR9QA7*C{& z-VuXW<0^NHJ5)D)hf@L6*m2V>==!znFu;#7Jl*loIWd%9d9(4%dAy^(cs2^sG zybQJo*UVB7oU%p=K=ReJuzh|YgvyN?p;5=q2G{ib8mt!#mZMRucNh?aaj*q98kQ|4t;u}{}scfbw!%VGtWGS z*|TQ}Sf=Br>Sn6LrnA@l@$qBF;fW`f!s}IC3~ht_-tP}!@ZjP2{`(DQP%|1fY=BQb zS$kF+88mbRHvjZd9FY_p=scN$}d4Z-ZoN5Bydz+&SH zY&AS1b{bcFRSq8J2Lq_wq#+u2?4$w!2U6HeH%15)Sk_fS?Jh4IEH8iTQ5+{f-DX2h zdKx_7(h-M}isJ@RW1v`rKn{b-7B+G~G+2gBW+hlzCRpBna39+D?}NU>FGDaC6ufRqacJ3}!Mu;mq&y5S_;_5LY(52@9@h{2qW2%r} zXz)tChXg3G-OV-Dk+`ZVJDj|M1T0^5#bua0`bxxt#qd}YvVceyS%``Vm64QQH@l0~ zYS%}-jveJ*X9+q=Du&wEC%{(?`5Dr2e*`QC{8;te3)r`Pn}B5ko+_C+;{RM3o+MaS zlr)1=%y`AF1ZfyiRu~mn=Bi@0(luD_I%pue4;~C(Q8B#PS$OT$S8?s636e^=y=gL3 zDj>x;!RDnTe*`SkZZuftak3zDcE3}I!9z#l=U=uYlV={o#TPfmmtTA+vFU&jn`$vO z1%l|)Z#cGZ-B{olIn!{}RU^>7#{fhrq;2vm=3>Ly?58~cQ~I+r!7>X}1k09i z2xEo~!uTtPz!eX{7Ne31lQFf_OoL@Arxf^#r83xuE!aK8mmM1xW_5;ZD( zfnb@5Rw#fqFTE)Auez0TMM;HVnd&q2DFn;(JA!+RtU;E2*sKC}36@zjVB%Ng_lXS= zER%-Ou}?qr8#Yu1p?OW8c`RG4qiCKjhF!&1m{PUJ11&A+hww+X5Gib;tY}>w5e5J%% z7Es-8TsL<*#*DraJ$emJ`kf2)GpWxjFWKVx;gS)XiyZZ+TAJf8k_~<%1`WiN5u@Os z-aEUT^c|8&aivx)36`xa*kxp(ZLglfE2rI9xQK|wDuY5;YV=AXm-b^xq?Dy}OSw$P zI2ysqB@g4|zP-pzPe&S8g<2g*=jJ|#6;5NlDnFba%2QLtE^&1v=SMk2#5Q3(h9aLI zC6O4m?cIZ(!-t~hph2>BlP8?|j@0xk)jL(y84Vt5)~t!YKX@NTjJQ%hPmP-OMEj4` z1oKDvMkT>cEmiq&?HY9L z(n$i)y!kg_)8?PiyjfE$S$v-aM*dy5o&>mRZ8q1XsL4QtgS}%YS{Sw7Z^Ea0>1v{dqod1PJF2xFt0#qgI~*$$%Yh* zq6*0C8H+n~i%%S$&5BS-A*PNUg>i%W0e%(y<>od5kOc5pT!H|>vbSx^-WpSKmHzEhPh|l7=ZmmANxRF0euU`uOR` z4RE_%c=p*B@$kb-aOB8Q)TvV&ci(**#*Q5$LkrECw^r>j3D}C$$AHzfYiI1-xeN0a zEX2l5o6xLjQ!IVt?`YSyjo3)1Zhgeo)%)A<@!Gf0y=!MY`SkO+<&M9}&lf*L#|c8}k+{!p0vri+_3ak^7VWrHg=+(pLCK z@4qE~^VHMN_?ICeC~3>koEpa^bDTn2h&*qSzLE!{kMy0{qG zm8+w9j~)PJ01dEA?FojiKLwWkKD_zDOW40-yU;KQc&LUU8~i+~Wv+FWwZf7v?wG+c z)pyKbnJPRzFB^ug0|&xiT!OTWbo{bq3)*+?D8pGy+R3jqgEcc)W(*>bQVA4emU;P< zigmZ%x(FjiT#m(ym*V!@?=~uzHk02{n8YIh03ZNKL_t(xY+8sPH*H3X=FRZPV%m=K zJB(>&8pelf-$A!-%64wM{T{g~`TS{9uf>;NevQFH$EXdwHXA~r0CID)@$=^O7&V%H z=S?oU3V41eVrA8iaI+rcVVhMXJig8yA!2&1db9m zS5(}i1aS%`UaXQ9OBLyMN}rBbZ%5PjsQ zAFnm}orT!6=_m0!+ID`W?R4#3216xn=bz8vR>O9dJo13p&VRrB8iR(6PHs`953P`! zgRNV>!RV_dWBu3Pmk%8*=91sp(SQ_fAv?_tuY)a7 zuUb{?vnVfZH>e+<2PUMkgObE}|6t@<*>E43;EFn8O>d9F9{zp>vrrc28v3;VYTccJJ$sqY!q;eeIzfD$!R;}F_(U6k=;_qI4q6(Hs>!Q3g=;_@C{5GgJY zO-QFhRm+%(YjDk%EeVI=x7yKdz(629t4ziETwu90u`;$#q*Q*SMih_X^~WB^$vwZx zpbd4F+2(UPRc6jM94FA_#x^R;l*>_i%ar_zi{eRu16r&`1%g7u*tvf{296np&V70+ z8zF}_8b`BBTHxTmgUJk8bIg^SR_BiP^u~(i7&Y=ryz{O)|^+>@>7yy+8LTF zmu6sOR&z-OKW3e7#&+6=H6DZ8X+t-TO9eVUolnpMOh(=_s z^ly9iiDtK!c$A|yt>tkGEcY0S9;NK&8w~*dk$6tx!R& zMRyv*S;p#LR+g2?ssUYcf>|9VK+|BEfQK9W_8dBd9>a#<(jh~XUD#~0ZL?m3`od`r zM#v#A?aZn3Z1{HLoO7sFs)pRkZRq0agrr-yE&_@-Zrp^PJ^Lp+O=iE-R&3{R^14;5 zSOFW2*feU)c)b6?$MQQaLppZkH?f^M^_wZ%NmxZS6!}0uTIWW2#rcp#MF_=xRJJ<;$pn{ z;tSZb^;guZT18ZNsPsaxOl2J=>0IC>*O@k86xuitDqt=gOoHVie~HZ6&t^{XP}Oti&=_ zAj9iLu&6*(w#Hp{8O9D94qG?`s{xj!$U{lW1ZSRN2*eVwr@2uW3Zv)cmy3K{OeA34 zTEHoZjkIC#Y8aJey&~@%>Iac9RzA8I1qb(`a!w|k39GE?pSm7xQhOuq`Z!##+s#6EVCCgToHSQT_OPyMbdV}AmpMHq?GJvKY zHL6#auNT#BfRiUr$q=G`JhJ%jm^W_@R;^l%2@@wvyO;xivXav7!qO#+F>}ULtbF}V zOrLq37#~{*PdvUD>5r zZ4=VcJm}eH2sUo~Q6@ASHEe({zxV(?pC8p~HspMvyiebLmtw_hFXG~+ZG|^YT}C?S zXjp-11`;{mcwDw~Y29k=fRY1$Mp;pugDligAkQlLg5(tVaN~?==-a*(5cCO8nOsk4 zElZ0~ajse2@I}a5j-f-(p77MTNXYJb5b^BW3)K1mgZ!a_aG4ec!Ea19X{~tjDdg?h zgZjA@VduHd@W>Xed;9`kr+=AjjSorQ+_wU8%NfX8KXuILp zDbuE6`Kv2LNL^Q0^zfz*Ox*UkXZJSIg>2ux8@6ouRXH6a>*e`r-@Yx@ef0&_zW)J+ z4Ig1t2Az0h@q?HP zEy4|K*rb&>8lT^fhV|>=yKg=hzE{&0?ZEAFv_p0_2$mZ+Z39wd~_71Uyu%gezu zuUF}qvw9khii{(FFS2{wVn>AwDrzLu!W-d+QxSz#LEg6s3nH8?a5+UYmv-af8qr_? z3unzh&o-?Q50$`TiA$m-0hP;DWRVGnWeJvpvO2m=&tAx=QeC9MObrnuFtG*7N2v~~ z+^;fzU>C5X`KQ7g<5Pt?5W|Wki*aKAUeu~wMQq1ob4ak~^(AkFen&LS4X&L|n4NY? zz(KkYR;No8c$gG&ZesJ!9T+op3L3S%M9vcvbo#PIx7>`y4?QBUtrK$kGIM2zKPQ*` zRNis#-csa5kL{P@FH@_qAGoj__C zkF$TjK6vrDC(*d^C5YQBIDYIToG!a8Qz$%r5>5}b)R|bTwld}CH207i-`v8LRiQ$% zNT5Hv?o9EXVgkZK2<1J=8+1821j%ayl$>6%*vAP#N4@a@$9qD%ivld5K4CPc&r>=*PTG=97%FVDpl#0S=vrc zb~b+a;Tz=SFMM|NSk<@3pZEWw0p zuf~d%t0Z=@HBJfB-8(jm->F}}nIwxmj;d9vV)Kvd;12}Quu&WFM?9WOFYSicmOX=} z%{t&@-YI!s-XFZDw2Wmm7DY~OuBZ~xx6xnmHA!KkZ7}xnn59Z;{9F&z%l#3L!<&|l zk`h01D&(TLxKQ}+2nR*Q;KtcA(7QtiBz(m{Bm@VS4jDtA3A+UrZnmVqg9Qa8KJ@6{ zPbKM|G}-RQB#!i;GwYY?CpJTFg*iRbaYGJ3fHIYuEp!^uI9~qS{{ev@a?;X}h=h>g zr3!`<-t0^%TCtlV-6CV|i4|rRbwv8j!NJgk=q4om6xMi-@Z7V zmoIwyd|ZG1^?2;De@Hi~q}Z=wpRom2x*oi5EEe3ja6TS*;Qz4Zt+#RYc+!51hf(hD z*r7d!4jGJJw)~1WSHGLI@rNI}4|8WvmzXv0x`jCL`|qe&r3%`#X(QYA*a@39bs}DW zV-2QGpCi|mHgojQZoxGT8@CjCDM5YhI(6{HC;t*$)4BTqiFu^KPMmNJ9)I)!wC&gn zJGX8_t$Ov6OOzO=xPjD@ks+_mLYcp)1i6(fO3X`7Peak^0%YW5CF!EP3WCx~X9vr=%0ojf4~&9&;wDn&EYCs&!(PoDuZ|GnZ(MW-*8O)K7TvrEH{CcJ zZ?1kD`Gv(&Jzu?MjbzFf)u<*8ht9WBw?$qQmu4mb&^FY z^%M=3nMv{`xw(mz<#0lQWzpz9bO2XPpN?j&TPgs^;UFfR#Fqrh>eD3z5S={nJGO4yhD%zp5}+1ceEQLUgn}_?$}Fr} zvqpI7qehNI|Ni}DW7-W1=Hu!yS7O`t9T+oqk__ZT6tRIgSAY=QlI?Z*;mXaf_+kHPmFHeuPTE3kk6e*F03k65r^fdo<7BsV4PKX?FZ zR=+LwP_udsaYC6H84@6yG--mbzy2EAwrx|xUQpY&#K|+6H8}cq(kUqa>a8pereTn1OFHf&6___Km#S;n9% z$1!z08Z7JTU=l2ccz?(6(gXJ+n4c%hNVtbG&FK217Yi_UmtZF?rrR)NkG_*}36!7cX9nTW+}x8JU>^Uilz+(-nLTTxbi& z4j&M|Fl5MO`1G^Sg*qemQz8LXS$-M2_v}UEi(9Io>Tu!HkN%BrT{~go6A2y%!7}Mz zd=D;CIezj44xTuHYZuH%wYqiTcBctYpdCE)&_iN71P0V8mc+p5{_yjPCpF$LVRQ$z zU1@ghOD{f$apT5f^5hwK?X{IeZp4Ty zFUQR36R>^9PK+BrO?(CY&e+kH%MkLR!$)!D$g5>t`rO&mP^EGOZ2sw2y#K)$az8PN z7(H?@zWwe;yt0goouYX6?YA&%&Rnsrci(*%Lx&C(zq4x9DioeRg-$(K;XWk4=Te+@ z?b?a2`sJseWJ4nTv2>qFiPQ3$QiXNE?++q7H%r!UdmIkL!vW+tow#A<40LVTl0ze~ zM1tzp7D&P6LRJAxOc*(|Tj&d-b^G?ntW^u33J=e>oaj=}BY43GS;Bvh7?ou^L_$o} z)T1CPn#+$Zq(6nDc=7K0V2_58o0cJLXS#|c+Dw?A?an%9?J#!vu@Dg5=I z*)Uu^{#vYg>#gLcQjSl3N-mdCwr8kTSnT-tqj$ycOqwzW@4ojhxgPX6Otjc_?|Er= zOqy^Ne*JYDF1z9?*-E@;&mP=;$07_FG7ww0?Zng1z9h$Y*By&ct7Z-C*tG{=uKPi- zS1=gB_1DeBy05>*vR7Z1=Y6zxt@t)-c)$7Pn_@f1jvd1rZ@eLcfQ=e865HVY!$K2n zh}&yvKfEWkB&fcJL|T;<9)vT^g(JsLqD_}B$ZF6)?1fz*A; z$FXej-;oxL$iDV0Z+hvC;Gsyj0y(7<-_*+`xKmC-G!iXV1fyJd5JQnagd%?c`%fOj z)cFf=QNw!4b|g>Ks8M6EX3g73^QtX=0&)!cfG#p5!SY3QB`D}t5gpLM1AAl>(WO26 z;G6Z|$krxVn!+IzSkb6aWBl~v*OF1^RH`jNAtyHrJAU1S?5r%TdH3Hqu>YVqg+`5< zVE+91xaXd~Vejsp*s=X5`JB%^{|fR83k94UIItf#FT7s(ujU7{ueBe2fjjTK8@qS! z#p6pK#;6g)@!-Qt@#gDqV#0(8c=td5#@@Yq@#vDpO4UPJwpKK3*jV2G?RVZoW@dI7 zfXwIc^66@p1_}Ji)~F@I)vgxYv+xGAs8a(mUkMWND2OX0U~%?|Rd(v&(g+g?6a|CG zs(ulg^yqnkU|DX>Gr_VtIHlWTi6L+*4=*iQ0(ZcVs-6sZ-FDfI#_F=0yk#Dbg&~e0 zN6)^i8=pVpN^UxwU?hRCaKOUCdEbBhcT8Te02kG(Bd@^<9l_?PQKRto+wY3=XZ2N8 zS9hordF1du2`H^vx5xJFJ4~El^}OcIn_=UI?{NBbKC0HJZBQTV_-*%AP|cus z-y!&Z;|8$>CXM8s5opw_TL;%%H9{u-Cr_OxT@tR~-u~+r{PffJ0>aG?g6(IYe@#~H zZrQR0&6_pG@L_{7d)`6}A3j_F+>WhV(Wz@!366Yx@WBVTYV26N_uhNhwRaExvGg%X z&{%z71&BfG_19m=J8!=y_oj&HvrTExP*_>!al4JyQ=HOE2~sdzu!cj(wpnrKjSFx| zy?O}y3lWcn1uT=^;}9Khhsgig5;6GV5#)tps8p{$8n^EVu)SDj&8(vRsOqr^EOV-m z*T$$UmkXAC#dz}m|3kVJ$YwyNe3K^~cAHIfNwtI-H)XM9B1$sG22Y#ul{(7=VHzwK zheEQ2ZN?2Zpjy4UNgymq%EXCsziC-E+JOek8YpWJbp3Vn@ZbaYNdUOvhMVx;|9&ME zpnm=O;?X4!BR4k(Q>V|CgopM?XMA9k78itaWL8H*RLNw{^)ZFRQKF-Pf~7&CF7p?8g z$$er9N`?|FJ4H*GOC&6CB_g={mYdP6cC92>W@VXRnYKtyuke?{9M4JMR5*-^wQHbB zr%p(4D`M!=KqMP|BNd|*xvm)fZH@v?za zw!5lQOO(|-6IfQ-?lDP#SS37p>NJiP+t`$`|dcYs%-03xvHykH#vhK zC?Fz9a+F|X#vH&zRKOg^JUU~}In6ktj-w)G1r>A7j#+XJokQjNeruh3s;Zj?=Dqj* z^WOD`ohsbAcb|RM-h1t}^Ye|mls(wM{Opp~l*xPPrI#>z)G$n)G68euoh#e9>Z+@B z|4B{i+qbVW)eNBe57-ayyz`D4t=!Ovh*w{IU35~a zR%!3cP`|SDw|C!Ljv+$^W8|2z=+e0}7A`mwefQlLl~q+z!?^pN`|$c3Z)U) zl~m(8E9zbeO;Bq&foM8`>iR}>?A{$+1`lyYl+yzE7*ct%$A1|t?^wMOPuzYBO1&-= zgn}r{3!6CjP#96_z~zJX*DFgW0E_swsfX1~Ti&&++WD&k7Wfzh*o1Z8pM6$?;rr zIb|%VvwT$+3gYSu&O`TB#RAJrL33&!9S?at1k1`!!)yr5E+>L{7&LLRDQPuPzHPEr za(>t|Sl+Q_CH{Wg=b?4S_8AomE^yjTetw}*Yj8O1PC+75(j*Pz)mLA{*fFDV&%O8K zth3H_{$|`NpZoW}J)$N*9z~^X%-C(Xv2Dw0b(RkpI2^zH{;M_#-tR*XJyiFIQTFRE zEz$G-c=SyDjiv7Q-+y0@?!0prVEBPU_1QOV-iphv__J(-8{bbq{(vVJKY|M`x(tsz z`WVKJ9gDZ#dP`1~kvBIkX8&maYuByAE3dyM9^EN3X6l^3|L!||emb*fo_Pl0yaHtn zSt^sAIO-XsZpda5ro@*ZmUE>M3I>p@t4G^#9vk(c~b+H4b8%AEM^pK%V1f&Q$CneKG&_py*FNu4kaZ5 z$_12<3m1y(7tSvrM7VsebQM4#ZojG8cr)xn=CO}Q5aMoE1aox4oWGEYUVetC1>5o9!I(yo2#n!d* zO9KuVp~?g4Bm}d}_L-^&@Z8gn>19rvvj|(aZqxG_9E}-03TG{xhoM6T$yaUKvK80< z^+u_-aMOF`<(Ki|lBaR`)z{+I+wQ>h>C^Q*+9b2b+>rQ>oBpPaTk!0&OSB0xm}8(o zI~hE9u292y3}vgMo_ung3${2hP0 z>n^k^%vT1gecN)xa5nA$03ZNKL_t(U8tdh+rHQNF8fP6iyiksPXLgxDj8qY32iX9W zNTnnJR#8=rZS{3He*Ro^+-on?*Eee2GO2Omi6;s?YY%j|a#{M0No-guOO*SW9ik)3 zf*+rL@&S7H-WwxFjl;(ueU_npnTo9on>VjAwliQjep|H?^))r<)U~SupEYaN2n;{} z>|))kqmDgA_mTH+*|KHYoBn#;RTw;Ipk8a+_DWoO>D4GKDmLIgnZT_#UxTZzz5%z~ zdIzRWo2DuR&zVW5Awz~J6Ug@=b%0fnqS6w9Dn6fqIwy}Z`SAGTkLw%=qL}=#bSB#* zofis=T1k8N1z6ciAkXJRys-gYTerqJb7rF_6|BfhO~wRNX*X0fAPvKUWj5InM{o+; zkf~FRSD}9sZ#k05kY9kG*By)h%ob%6yJ1-9f1x30}4?p~{g5rt_ zQ=w?6H@ycoA8u`wkNx?V??mx>{D~)U;_=7p`8JrfzUPLUZpEd4x-uIGy1dx7Wu>v5 zfg`bH>lWP`?jy`D(^s*n{gDUn)Jq(C#Bq{P{pOo*@YeF>=s%!8Zn^2N7`Xp_vfuR^ zH{zWmfJf zH3t0h`KNg0Zx5qGQK1Hs6om72Gt5LAGi8iA%N8t~H{--UCbd0^*p1dHjVF$VcpTfS z>roYpV*Z8aBV1CHp;)jZ{nJlBmkuKVG;fe{M(no`Czn(TFCz8EiMMNS!Ls>)Qg(nhqpoU`p4YxpPi)`5BandWGN za(a~9qT{g<8$XxF#SJ1Yu5?Wzjs9cDBd=8}m9n#$54#kbe`RjSfFS;7n+A=w88+ch zpM8QC9(xR33X4$a_MtdGEU?USmTBTMU|Ehvye~sHkrSW*Ig4b@je z_a6wF(ir)LY|hfah;-770Vc488-qrVL#VXe(69uOvtGw?l8tBB87x}|C4F6i;mjKVW{*^yKd)s2nV zURA9T-KU>(77EMDGZl%EBS$JDM#o7ms1@7i^9c%dy>c{2dvxuFJMX*=6UL8o{7%#1 zMN6K40T*2KCv4ofN%xmFTwlFeuhYF(e^Gy!N#f7Uu+&#qBd@SfkKxg(Z8vP+vIU-i z*{JD5xS4L-vPIlUyLNa^wUw1v`oc3>c1Ik36pG8rHV!rEPL!V_?UBd@r7#<-n^l;RK(gvL%z|x)202v&<|`IvPQjHmz{}!ZXpnpb&}r zTCm5Q(s81IaoS>lJuRg0xYTIJM(^5G41?G&QC6z^C4fLyVv`<-ooN`&!7?+;qd*#_4R!ilqVVL%N;2w_&moATA7Y;bCt0$gOueQ_)HK$k zs-_0ji5TXbcP_$ZWvH&M)%s&qX~l{aXx*Bc+1oOS2%FeoaBhPw-V=gl8+7sOyt#95 z%Plvm$L53+XUgvxe{LEPc~n+zFt*dZA2x2;glGf%`JsDVRauFW(h^i`GrI6SdiBT3 zUw^}X0|(;QUw_qJROZ+^{loTc6^Jy{qestPD#QQnk$Xh{JN|^z^nCgm`U_GlXgjQ& z(T;fSNW-8lm6Vt1Z?s+RQw-#3qx3tpDFSucj-_GPy_|gISYu4R77TE?*hAXStI?-( zH!PZcIyw{;X~={(olwIuIj$*>1D3sB$=MMsM-pjN*4JU&m<_0@t3^#LhWQtrhhTBB05;d(#EBC#euvnhrrI>jSz4EwrL8)la{CSxmXs)2$bg4{+UhA66&GXGs#V%&xW_(p|6Ky& zhyUT&Ok#lG_?s`jKw)XA?1=b|01ZL%zK_pee;J)hizOS!&S&zqv{*txH4JGZahlE; zoh!gk5cDwX!wriOI!o$F)J3D%Qc;71--k0Ux&ZE=;pBe(_1ALPbX*zv9Y&Pe0L`!r z>MzroMe0pgIKeW3tuZLGJl3x>H?z+^{jg?@Gg!juP^LjksbbB~W&WOyAn+i6xwNT3_SRIN;F+@`JZ;m z4Du7*amQU)xbRHW)YhVH`)&>m#)Z|t|J&Hez~T6P)oOtSdyjbESngW4vZ-y6Hb7gV zL!jefV-x`jv!Zk+{C>jtvG~_hf5V`mV>S4Oj;}cl+a!3Q4XR0dEzgu@) zv~U5!q&7tBq;^2cjLk0lDYKJGf?7A^5!OZLFn6Lc@03|? z0+!{QqWEy>5`6ada9pmt2IH(*Q{hFL~ZvAFLqJZfsVN6&%`*%@FhV)GS@`=5kPl;E5-nlC6+u z%%gXo-Z*Q~0-SLCu?o~DO+G|JXP8+g4TH9`-@xJc_N%YeNXL6(8;IMqZiSzJ_)@kR z2$yTK;`=fPr(H9s=Ne}QkH6#Nc)w{oPe1v03>Y**15WrHs%zZv*K3qbB$esIk3PXg zmt28On>On;7*MhVY!8AyZc>e;GnJSCRJP)*8-8!)GFeTOvYq1}nOP=Sj@Q?r?_S+; z_MF)$2?UU6tV6)%MmS)m3lb>X%(9zZ=>fkaM0YgQqSt@{XxnoyHG}J)Bk|RwChFLd zZSW&lHsyAcS*AU@)u07@`odCtv}`%LcWj45v=MDul^_wP`a)O@ez_St?g`2&Yosz? zjeR!hCV+=vhuP(ZbP5YDy#$S^lqd|Avr8Y8mzS@M7&F&dpiIzfz%LI`P@HM9{JEs0 z7(f2-y}tI@r$2uGeWk#*rHR<8;cve=d((j7Qs7bJt}31p-8W_&SN-~yr?RP$ak3RSSt=hFyfbS0l^_6=5{`~w*VuhfZ=fL;jHLwFuY$A=enTqoqgR*^( z-y^VGUsHhtdhd$`r=N;qYNyAd8cM=y7r` zrbV#ql+taJ->$$iP1rQ}85#ze>WC-t)yuEqy;t5q$5v&UR9s$KgxZFBfn|Rmo5U%1j$=AY*2E5fgA(1nu-dP zwP|D4hr>{4iH6|{nNjsz=gG!KP325Q8_=y?2mI;0bHq2NJ~umc0)97wfdB%mr0Ozp z7>*nDkp`r_e(a#X8aN0g-MMGccG) ze~pf%rKY)tgC%@^Py&a#q-JAuCfaez4uOtJEkHC*(G6x@Ooo}#aV))U*t#9TvJ%WY z?_5P-yfDmokZ&ol?C6YUxyVKY-|MAzGX)-OX1P;FPKl4@b3gz5W9-+zKSqrnhtIzF zN?CAgblkLh_3VLfzWhMCy1n)p=#)S``1ph6=-+Q&j2S;w*=+-sv#o=B_3D9dKKnq~ zqP_bJ(%)IGvzv-Qy;Z4jC?RwXoWl0>zn0*pTkcebg^un06|bX+bM12ucGZs@J4FEB z>MAo+uG^#XphHFB^>#A9x!GSCm*0n2eJzIe>4gi=oCkM99n#Lg7oQq2U4};{E}SVZ zEAy3zNlqodLr3%;HryBtOA-!>$?896PuOfHva+nilWdDmGO}^c+;<)1F&ON z`pN+_WsRGqdH*a})}$s4yf8pOlpaRwE;s6&$&XuiRKZt}k9ikgsLUcC$8rv{8zxI@ z0v9EwbWf}loyqX9JKcbR6b?La2+lm?4D|2c59Q^p)X;b59e3l$pMJu>zyBJ){Q8@K zv5vGGpM3Nt`t{ov<0eeQC!c+RSe%VRlsGgOiUTA*|KuIn7Bh%kFAN%aj?BsuyjpP0 zY`!MQ6%}P{xfSgar%FGIR}|v-)gI)!_bn@5X7T z&cyReU&Qezo}$6SQaQa;gR6pzF~cc(L)<#Bj5v#v99V$e~B*aTYAw zUVQ%U!w=t*-x)vt5PbgCml<^mzCP`3?_NFe%~v03Z`!BdU}fl5{r)?A0kh_5W6a#q zUKm94;QjsV(-l~{^kv+5(;W)N`t<3I58i8OZ>q)Mq2t8cR-o@ON*M&jWo2aoL8`zy z98;Sdu=|SzL8=(0T?mE4vi(4wPr($`N`?>EA7`F=iUvw}qERp$$P4-551N5BTy$)bmvp^>Z@GAT&<1!qdQygsQoRaDnVc_ij@ z;j~3(Dzi)#2!iDa6DBCYB8S+#@? z*TYj&g*HWnPFC5JgC+h?^#z~N8`MV4P0PtBGvjQg8JP_ymPks;fKfTYa$c)4oPN&P zV0W-J2rGr7X@DF^VaGYM*@0s2CPYBAp;})%bm)SuPJ^F5Rw{v)UV0HzCLe^8PC5n8 zKL26{FewWMV9e-|c=e@cH4tFb*vST1rPEmY+>_ENJYmM^Si1BjLk)3sqq#uFjTwbk zmi`N0eDO8LjGJb%dJZi@X4`C3B!73tywfr3w3!$>Vq&JW`}C8KV(OGhShoCa%$a|- zUg!RMZo|Y0WAMtW%W&)or)EGZGr~NKM5=M#&aT{qCSfuWZf!=fnrciKasU>dIuo(# z3M84$bR4F~%h9wP8El#|HO5#ME`h2@42irD22VK1aCmgB&ELss%?0MVUjoZU=Bdd+ z&I}z_VPYv6{0flNCG9kPn0^NHI$WfzKqz2RvjzvHxK)v; zk0h|Qq5`3kVw`r~IVx##(Q)yylulkb%a@v*mgzt@dIz4t%B&w>|HS$2b{>t`tG3`pFo4;5apR@qGUI#G{xtb&|%B(nk0h@4W4L zOqw_jue`QQN*l3c%*mvip(zBDnvNDr>e}*qNyt%Viy3y0q5AL_0!0ZE$eQdtv(0X# z>gzD}fI(Pr+Np?E?Eu(h<7b15$yTeHDzW(k=fV`BiylbHb6z{@xWiNgFhKlR=J#|V3yR_T$hovvPXneRc@|XdMJ(eta3X>*{ z$IO{?u*7*BU&Hv90LG6WgBPEFT1g)6X}oW?0zrUmfwFj@&Y166r_aRfStnz_z!B2N z<>McH_-;&@GEsZei6_kxxPI{dJ1}nCD7^aGG7Zw=`;kt`^XEO3ii1NJu?Zu7ZrO@M zBg=62)!dm-hP0->PJSgE3J5HZ89W5@Pdf$anmV}SF@fd$P!K*=o_(|lHu$*_pu`~8 zxyy%|NF(BIHx8V7hy#`l|8%!t*%9pG4#0m@O^~(G?^M>{<;9Ef^XFfqPmgW_%Wd1W z!uE%MSofV-6NS`84LvKSwW_n@!GwF(dHax>dOb4a_)YF5Z0Woy_ZOT>GOyPQU$! zW7S&HL{jL{y&Jyy?0s#J9eeasme9VoeSZNxHvY?r8-QQS)EHl9%Ty?#B)I(EQGXUqpX%jt;u9A*elI_V_*@WW3=(ZHFqXl%!c5ygj2qksRt zTKqr%{F69$Ms>wBk8*Rn`|dk%%E>cu!;QD%s%!q5$sE%LXgk!}o;`O#)~>YYx}?Ru zXu&)@{seWF7iGAL)>d-wDbJ&A+t&E{^LKI5$#b#%O=BZGhYf4~?byf&tX*rUJKef< z(PL#JUH3(TnGmxroBwC308W6FDF+z-xkM_Q-zoFs1YmI&16`NEcBHBT(?*ZM+!-gK zZrf(W8fvA9&8Aoz4Eh+jB8@QhM3XU<`KCUwviNacob4CX&=wIf}KPzK9HbIeVJJf%- zYq}-d;b-HN$FDwr7c)+oC;!5O=e%Lf53-%UEZMJFtKWC;-WA_`Vf;&nF8egK+ZKMx zy=S>LW3~>%D^~EHObLimB%rQx2aY`SV9Y$`C{(Q5XgH@FLX;OWy)CSa5hQ!vYWkzL zyf+xe_L?d*#FH35g+r0@0S1w5xuO}Xf@V%oUr6!eedhn2#EB8#Nx>(|6`T9k;IaGe zMWNR#sZ*XGvxC)jRp92F;&ew!{aL;64DXa+Ib|A(sTLE?SI}NjQ;T3;2*0dcg-$)Y zsagn_#4)m32Gm**D{XW&ceIAyq5 zjc_PmT$6D&mIVVEp5^lUC09vX`SItU&}ZO&n0m}n2o~n6`pM720G-MuRI^}U!fCX| zA6UuC?C`0F9=;bdW}Jva4nG2~zV=$CA}(L<_F}+({qgC??@JST-+qJ5?Ma(y!V4G9 z)t)tLj>mic7Ggt{#I&k3oLh_DC?04H}w_JxnmY8_u%Hz7Z^^ z@%yKrV9DSAhVJEMC<++eM3zv<*Aiz?*&R017=Xw_+^@75utCRTE+!>ksFiCrt~DDs zqx-)5;P8`9)YNuHQv|zwtqmJCNb8SX{2F#bHA4?0RhBu7<4MNq^}203bU?+n9de}N zy1;Ez1m1jIS)G0ZhKZ(Ov&S5j`^Bg4qjRTDIOf<>u=J&uOlclT4TE^=wU_if@(MNa z$f0&H)56kbr%oMl^l>xs>T7SBMQ58{a)Kn$9QU@_ZD^kh0nXm;nwl~&e-yuU#+I=siQl|8kySQ?#IiW$3E;I6z zWkv@qC)thac45`$pX2#|JdSqZFiP@5$|4Y$FdNC{9@&q>Ro3R~49`$D%PFbrrQKd_ zUd%#KMvh>a8o7rZdkkCwlfkeDJGMuT9Ieta0gpNNY$?lJQ{b}8F2UuOU5dvSKY^1^ zJ|*LL2vn&W@Y$yy>fQ|+ItoAjXcSO*P|0HX8!w`=vI_kM43)H;J$QXT|MXoAjG&FY z_|ofp1j`TIe}_8Rk3T7EBb>aoaqUlzjqI0s56Y3P{>`zGPQ8@D$mV2s2FsZR?|=$Y z1aj{sb!KUM1k3yr`w=2lRXFD0LvYd`|9}eGPNZIC&~TxVi{!t6moy9mmYFGY`8)!o z6%7p-FmxD-I(0GBEN8gGZox8V*I3X)jxnoA9;mtRxy6s6G@OUlMMVa51v%zAEC5BI zB8rZid7&&&HoRq%G9ndBlfq(g`J8AvCBVZ?>#!3~KrCSzbnQB3)8t`?PnYdjYL%sv zWcko((J-bTaX21)@L|k9V?kzf<2q$xfHrjZowsA=j1%zOk{58&%+s{CWIM0FAlvCb z@Ic*H3zYN2;U>1j4Dg=7@`Lx?t~H(OU+7o3X<7ebC;r)f3;CB$z0@SNyW>9r%Us9o zYhe=>Gs}%NRXBF~;W%#k;n=Zu16&DiPA;u`j-zKrm4PyS78}LW)W7!-STvxfz7a!5 zk4A{Yrqmqjm8gnia$MaL$gwAZlm24L~x$8gkI26m4 z8NbtaKl&Zhv%~vjZ09}oI2?1_OjQr;9+Z2J?S4YA{J?#;Bb*<`2`8SOd5COh{V%ee z?tAT*p*M=t>i8WtEi((fy9s_-zmrW;<=PV!3SzN{z%uVJCpBstudq zrCqt*X4-4eCnXF`&I|YuBHo}_0N1$3gY7jn7(8MW3aFx?s)PZ{vI_${oeBbxtpk>w z+i&DFWAKaKlft&IzsKSS9ze&ERw&LhQm~!6c0^@$6#`UpBE3w~aWYcveXL>$^AMM? z(!%C3f@Pl{wT+F4r<3^UmtU~okOOe=NhhGDjuoQfOmi`Z%FLX3iuBLPr{5J=KKzJ7 z@UMS8DGJ8;Ns}^rmi&&(gGV2J0LLG9jAle|=#jYqj^A0fw2AH5`%#dekI$Sv>)7K@ zmhJ4;FSy-!;J!O#bH|@#8bW!{W;U%elSaGl)whZ5tp4qLgKIkNwMV~```#^q<)l+p zFaxwaD9+2rw)JZ<^SI;jheM~KV)Isb(h2xnE(8OV8qJf5`<}D(* zlkUJ0JF|}*NWv_*-LUB3mc6!An;M_TQUW<(B(2|j_iZ?6;y6h@4I42@08|-ir<`UR z@aVMp`(Z-|W9gD7aKNx}iu5d4XV&Z0m!46%{_cAp#6_1~CC7H%)tBSUd9(1|`yXM- zVMoE60eB`0k;#mTdG0cqH7B#I$kNF;)1ky_s&Lkf6ES(z2&`YXMu3JOl?o%2JtO~= z8D<9u8;XMCz_(S`phM4|=rVAyfNV=n*BUghxaF8K;xwBWQ$L0#|KXCQ_+;5~bS$Cm zgbi2@=cyA~O;iL)&X5$z{WwjbCR1lVH)WfMeJF1iPrD`mwPwQx95`kSMjt%Q2roE| zZF~;xlaA-H#~zbTx3QUQP-D*BC7GtLzWh`h)YVu28F$`wkAkfcBZlLiyYEy`^bb}h z<}rJm-L&{#%U*vWYa^%5m5s2m@BVvk$3X{8kZqB6!`HK%J^3vsvtu{81BVU93(r4= zK|{x7#@E`+^UE(how1Qi{&bDb`r2zQ6J>)oGVRc#%y1ELvCOAxo>|TOr{24PbW%MX)UA+oO#w76+3<+70jmZR7u3d-0qefx$)JdXYSZaf{=~GTU9e;cD zQLPnyu8iNwjv^m2crf01YncLvfBa)HZoTbx{Px>Q@xJ%&(+6iSTA)$t)N!A1&@_Dc z<=2Ma>v9P!H}@~bc5c)3J!3oLGfl@fP`0*X*W<9EL-E4%Pd2d~Yh$mx_%FwH9>OJm zy1GT%X^Aq{(ne)%HTSE{ENdcUG9|F=PQ{UoG~m=@kHaAoCt%B(HIlHTw!7ASVZNHe zjBFtg;#Uo#qTfhkYeg0I?$;0P`}H%aI$uEaAOd0oOB|Yx23t|3$(i&ixJ6|az@r3E z3ZE@~86PfRhSr4zXjM$=mj}hA1?n##SdJ$+-a6ZGXQqWEk%&7D>CWU?Pavouu&TCB z=grc0|Dl60cG@(7Wu6fgL&z=XapH+HB-zNSt351Ow%5;sWq#eVdA-Wu#~ptXmM%3E z46|0OziH}sUVr@s^;pBY4Q@8A6g2y_(uj%^6#W^vgyj}M!c~R zCm(kl4xKO_TUM@ym(77555l1!ydfXl0k0aB34A=%LT2@d1$Va_+p4S4yZ-=m;D8B& zS%T#pW+2sZ%)t^SX+AcqY(}uNF;tI9B=F6vuVclFFQIFzb|?;;>4a_CwL*2Y0ipb` zl7p&(I+QWn8$sLAb!SD2bh{`kZhlnN)hTJXa`jpa9yJ_eryq*#6|@5 z;?YMR%_ym~lvySP<;yQWL7(2eHCgu3%PzxDKmRJ}xAV_A2dABSvZxn>hmOSWE7zEh zoHjPK?2YF$eusF7)eQNadvDM9odZWsFm%1$9K(kX(_pqiL&xl7JFmP*Tr*s_=8`{M z<@lY;H9hdX_dmq6Lyv5cs=BMUYcaFT-Zv)y*n8l1N&SLDNlrcSBupAR3fnhs&VXeq zIFW`yyhGsw+Eg;uAPxL&zqoJW+M!r#EwukXQkEDXPSywsxq8EmMQrmIV6Bx>A$Yu zfPUr%3?w$Rm&7w9{rGFI?bcZ*BB%Kx#Z@cwz0@cMw=+x=?aTUNf<* zYxnMW`^{Gbka^HJ2zq&tOg`bDL-FH}KPwWoV3}V@hj@GW%e#19H6~4&t|>{m^b5Xb zu381b=X)z&#q&#F#&tK|s`u2!%S6LgZ--w?fMiSW&YdM#7U<;$)>w}VPCpex`uD@84eM2YV5c@0rd2f{F!Hh_ zN)8q?JRA+_^-2%2xP5!{89QF8Blg@|GH45yUCdHR;?GP`=ebb&>)Ctn!-jwVfUae& zP?(p8KwcmNmT5n16jBBza;x4ocyo^^m8;EP{rTB*Z(dsIJ4B4I44#h(j@O z%;+ZBLGt7HJZi|2juFn!cN7wK2Fu)r&p2ZqZoBp7%tur6iBlo?=%Y_?=n+Rs$2K=J z%?I;dt$6FzUE9{=BV=24!?KG$7cBEyfAH?>cz)?ixZ$QdGUs4zvG?A+@Xp)TM%F4D z-nFZ-kBIW;0{cd9bl`b44Y}J9a>y5hDN}Iot-6(3Xwk=0Y)#XOowhrWRNv zoWP56Qn5xn_u&0l_xn%iSXPGofFJpJVNozlCx22?*l0U^m4u4{y5YFnAx1n$O)z(P z&=5(Wk^`3S&Fh z-+22@OLKR&GiKbu`03|g_PA-a1avY1y8~UNOpr(-6!5AMG~fp2%{&<+4j71yD_2Tm zIpFii=TJq!8#KH_Qhq1}NZv9h0n#sR+PVX6+IK*ov11H()E^XB=JmHgS+arzwhYDv zXq_?X9C$*HNc&2r@WTBMVeOAUplxvx%ACw{xPYU%8AagO(6QaaRg2@;2l@%@0 ziquQtp^}Ojf<(RLwHwxB%%q7JLb*Wodbl$Zee_!#q&0i?>`ZphRwHsJ_?e(Jr9{q( z6{b4brE5=BGi^mT3$~l~f^_N96>q)u(k}hZ#AddWdk?LR(#Ah{Z@HTKuD{{7oo%PL z@jJ9@?M>;l{0`U2*l`ET@BB}}GJS_8Z}MP29`9>1f%&J+!pH*#V#BX15puhb@AH}c zij!UgrXk!6L>D#zopAC9&rCZgy8!LmEx z!;b1|L=tgq+`I*251NR*_V0(n^3senEA56pi=)!7xZ(=Ls2#lv8V05I`tG|AR;*Z_ zX`;*ZJKP)2TyPGaeCp|(#y`jJbnT3H-rf}+BCg5$ot=!r`Gv#^-d*PS9fNCf594=U zb#M*$EZR;NgKNf3{g3=k?(4M#mYIf=l1m@}Z!(E|e^63!vrax4g9h}&rZwx}cc&5X z`;Zs(8qP9-GU=z>_hJz>&DT-i-S5M;+B%fA?})xbhA}KI~ zF@lv_HsX&bort{$3@~8X0V#G$)WsKHitDexQGmyk3=K8JMqF`A!)V*yjJuYsoM`|e zXlK@~RjYDbddc}XcM!CjYXPL1Hq;rWgLzM7w4G)&{?2fijm#4>F&rs!%{dFuxx5Uk*R4@jP93VG zNqAk#5VA3iU@6D|gAM2`#ivuKYiNYGpa}aPG*ugxI?Y>>!f<4FIIgMJn;nV)o&jpow40UzR#TNrI%iY>#n;_nPpp+&jqT+hKwS{m@y-9=_Qv) z4THA!^G`ox@#3fO$Rm#lpc}xOZ9uj6oHlaF#TV>kTi5;NMyy|Fv~syFax*;Hb8unq z>{D>&8M9P*$W9tGpvxZJyLG`eS6+(Yj*Wcy@u#@_s_QgX-M+rr44OJEYn$Zw^T_2Y zXUew^y&8dS8yX{`lihaoZhtn;<^p zceB8UzUY#R&fUp&uBGj)H_}eJuXb(cBry29xwB8j8S`gLW{}zImOxRD9^G*D74$EL zyZF(^pUHMsI=1sa%`DT`^PaOD9%jRCq#i|~AQsJ;gI=9GVe{(M$oB`3pBI!o7zdEJ z36%Y8&~$^v&OARm;gbSpl@&FTAREX56TDO$eeHl{p1+3GIAB@yFY?tL+fI`*L4ZVB zQY4B;Z@Lx9sw%W*f~SC^(dkFXZ%-i*W}=54l5%n8-V!7m(2|n>A@7{!SneYnRm_q) z*XV}Ln=$>EqtNq!fvB#nMmTJw{df>e-hTU?nwltmeMbVz1X@jb`{c_1`I@U_J3svJ zBZdqeVb-DZ9MUA51>SUF!>xVn!i&$|*>7Oul%4AhF ze*1kTzWnMd+;GD!`0e*qO>HM9#ZKF~^wOq&=Z$4=;<~@wBn6&59dl-%s-CUE#5GZa zYnmUzHCJ5P1lL@C)wTbz-^qQwmcTNR7q2&yZ)x({-KLjr-sz{KN2d7fjKC8vz|hfSfV^;1uxw98{(l$at}R%uTDJy| z-+B|ud~TFFgB1vNe8G^}?*Er)cD8hNCdxa z*^E=>auQN^fn~F?8?eI+;qc)j@x>QkAumj@%xKH1CMx&sMBxUItAp4VG?F`x@>Fgn zmSsLmgV36h(ud`%nI%zd&MmoX-8=6gP~fObaKkPOhj7)R1;|4h+qWB` zZ+7((&l*VdbrW^;UYnoJPDB|{E&_Pq+&M*4Uz%sdlqEuwTa@D2{`1{Sb zp(qV>C@e-EGm_x|yrF=yHsURNeG>l9YE+u)1HrN>C2}BKP(fK0H9gZnbsZHAwqfR+ z*=XCVyK#IuSv{Wrfd`JzBt({KEe#`g5i-+beovYNoBGU<2P@ZSOIONj$xa+uFsmP( zd9hrzkQ_d+bx>BxWT#-mQRQ$HMshbb3znNZ3j3D1f6r!4n!2p!VA*n&Gq&esmI;>m zxtW=jq?{%q<>Rum&ynraZrg&Ag0LzAG)OgD`hD^@r*YGIJaorx$oIL>y0}obSz25sJ7J~C z7j3FA2H37@KuLRU;EG8eZx*A(6DskfJr=We$Zm5eiiu21RKMQ(> z4jYayzxW~pmdTON4PY|Y-w9^9_KbX&QCqQk&(@!0?prg(nB3Rg)xF*oST?@GymD?Z zW__Fe{q8ou{~utPYnW@bARLsYa@*1poOkA#C=Lct#equUFv593`CbBCwxV%uV2FxM+@{j-u#E4|H(cmUGqC~7O!9E=B3NZ6Jf27iEK|{dyy~snx8syK zv(UOncf=DM1&&M^o#(R8K7H}qZ@)=O(yEBqETO$O+A|#L7_SS#nuca&lzPlCCUZ1X z8M10YIU_f6eMj@}TLR0fZf3xE%NDY$Xyq3VS+eN;648?^7()jkJ zU1;CB3=3z^k?PI%&0C~`kx$BA(2IbNN?7c1;eG{#iG7G_d;wAOB59yLnZ~FI6X7W= z+8HdjM8nA4j19m8Hvjw+p1R{!w8;yhtgujx41xT7c-Y|MNTZmMr{>xGLiLMCV^mSP zkvU7L)X$qr@pN{uR!1Y)P+g5VXDvW^yS5oXW33_>8h@h3 za-u0Ugj%;&Fm5xX%@+VwY1Muy zniENb1Pd`SD>nT43!c3FPIL_Cqji3vv{u<5!P1oYn*>JU9U8#NERGzGQ-M%bLK_MB z&3;tY)gY2gp{60CDQxr4It$@;t+Z*;KCI-7Y-j%iv}v)FZZbRO9%nZsQ>9=zSkxV7 zv&tp9>3I$S5-V1Y$jZ%S9a8RuB@41M*C}T(hp{b3HNmD~+m9^Hu5cV*5eL+q1Yr$g#1L}<Ba`cIow1Xb5{DOT9B4X06{3HhkP6H z1%vj(#$wI9MX(^O>|kRojz}zy>V`V(sI0((bI(Rzo7T?lCXFPf1Ox4*QztV%-6W54 z6)?VYxz_~q0s@NU0W(|7zJv?UIUDZA zD3Y}eC=9Z%#%}^~Vqzxg!U3b7t3ZeHqAqyyLa3*faa{wZPCvqMPANX%_?j#-F`4C5 z!VS0I^m>qnK^#Cb7wQ{PyKy5PxbYTrYuy?}-XQYB0nv6+oagBGAVum8B@IQxpe>rQ z?V|BGV3|89!E%(%%6=aXI=05vstQee?kZI#Cj4xG zWxi(BFf{Q{`)n30Yes>5Qg)_5uB|j7Z*%?pF9*wBPeALftf&Z$wKZ@j3yFw&001BW zNklE6KP>UA^St0@~M2wVl#&%qG*{FbNdnDD_~Tn!eNi0JhgPVC+GY z;VUR~)J}4|=I+3`1WtpIp#ssb7nRAj8FNoKtObTs>fQg%r<(*QW zSRj`&bhUM&MN~G_qqdPpMS7xBY9)k>6CZ#LV zpdN|G@4E*b%1cm|pNEj&r_H6dwq8}OV1SuBGnSZu&CoECh{R(?*EL2SEwz1p(mkz< zMi7S!TdJy1+gOi9=U;$8S%KbPCg^C6^Lv72+71KET(E4frTmW8l(8KPw5?4si_gdA z+MK!9O~G=mKe6|+Iq?0jfaT^k&>VO-|NEXYJbMDmq)_qTV1VMnLeVg~cW96E&sv1~ z9oykeB%CH<)4<1adoVxGfF7?KDQYlN+dJjfUXfo=sOnLVefy!j&)$aG=V3;A=ge|i zymzP1fs`9H3j&Gi8dR=bj|XnO89h66K-kZzk0BHl=bP%g-z&uec!LVkMFFFKP$}JH z2l;nZFbWE#-c%orNQsBRItNpnd&x!c6&7fp<2l%h1p8o4KYccyefC-8g>0{c^%cga zs2{_W1f?3lM3AwSrqXic!aBQD^V?>Aww>8I8N%lNU{`@Q&qEUi9UsurSLr3~=I_}( zv*pvXzugs(XI40rXPRpZ3c~80DJ?9(#b=$3hRRBK;|UZ5g7Pbr^WwduG(NwE?G5!NQ43RkmwIMc2~&c{+23h9Nd;SuN>{=q>YxS7Yd3FJWg_WHXRmHpG;R=bU&H2Dk-QgAZL zLd6Eu$Z^1M!0cG)+y!hhzDgV8ezt$ z`FsW<&C2q*6cOtuEr7~(diHzrmCg5@Nat`HCC}$prf2AW{V?a)qck&JUAxj@bV|0I zyyWvrx`_iyDC0xWB!`iVYxCdH7(uuF4?xF#_A&ag%DmadXX!9(I5fgeZV6Vhv>~xv zxLhgx`pKtw;gLttjkXgul5w8AplpX3LXJD7j1)6O>S~q}M$%+=xT#P_F<_=e(q?KJ z>(LNTVD-igC~w;ivlcC48?$3GhHq*!`LpND!$S`~h)`Z$lgzT+lz6=j9mPDyZca^r zuA^yfH?8d7?B~x)(&cVcO#n}(OrE3o(1I#Pt~1KDrRH|>pMvEKNNz#nIM<%2%}JEO zjYG|Tu^5K!HvlvK_(ym+93>Uk-`U(}8aHV>egs_}RVAo0z$_t;7`a~_pT+^V-={Y^ z^y{agHW{#N7NsNQWH?~TzG~= zQ4Ph85=P8vAU2y8H0dv#R{)MFjwBM&V%<_%DK&(7=bvlBbJ1M0!4G}U8D}iO;>C+I zL6hBta^n=OCuitF_MT)jK-OlOY%+GuXDB*5mqVKap4~x_+%dQU8E6C>9Y*ujM1fjt1AAg8v|NbaCw<$we zVLtMFK8?6$z|ATFo3ChZ1mU!wI4wJ2Cd;ZfhUe|_qJ5k8*tBJv<^ojK)nP|nHN2rb zEV%eW*$w&e93B#hM&v{CLU}my$fNP%i!W-Fc&=7FeW(q5_|?i4GB`ICtEN2>xqH>l zzQr_pH-Ah^K4@3=W4ZpSXo|wp^eeNiE&bj;Zg+OMtMkaUD=*hCZ&@S?k2?ilI*nn2 z2V&;Y$EdWq@yvj z>=JjGAwT^N11Ty4t!m6n!EXn>Nm zT&wfvpNV_#y*ER{P=UjtRb+e+WeUR#^qL+)Hx;ej-QQ;IF*~103xnBm zAC#r189J?5*)4xHr)YK78NiuD1QRxt8Y~C}1(x^k+Xp8fcRXD2sK7FHmN^dFioHhK`XdsbU&Mo29F`jV0rfCj0jX z@8FHakE2s*v7#(SLIgVm%&`PPve&3D(C}jhBy;Lf#L)=m=EDKJ8$;xhEsadP!AL|i z(${R>gr55iz){S8N?Vy1#nKmCn&d*QT#mmcAh*0^Wd)Or&eQO)nUC*p$D*dP5^w^V z)Cg`Sagza?4p`3JP%@MWn?cS*?S`7*0_TPs=Wnu;CQ8c6V@ysD`GMpMr&6ei#nHO=KInPC0j4=c*JNj~tjs7gzuXqNf~Ebid4LJ#5}v> zi|_8Rt>96OirrJ*wpJdnO4*Ipq2$SWW?T@hIAL>WW?rv}l-WpEHf1O=M$t36|X+eEs%v zy!Fqg(6v>W#!j*{8OkqE$7hV$08%hG#n0I+NV8zqIUSFtx-mlZ2ThdCiGJ}oYU}Iq z`}(yQd+;F`J8g1i5D8yH{6Vi5S6q1ouDR;!%w#rQP=}ktn@cVtWydUEN5Iu7l`AmF zi3;ox4}NH=MKl9Nxj;mQW;KnS$4R?hVP3Wgqoo_%QfbN>qMQ!{2|7>Z@_p)qgf7(~OU9uc7EK%9b0xBzq=u!K=N__MYbQl5?F=?)_ECQAfKy;0x^%Eb|%?EE7D}bM&y^i*1!P*syI2#!op2 zW2a8m21j3$n+Ul|N*GrwIBXK2aNRJY&CYo}hkR>0Y0KW#rkQ0kM9CaY?$7@bu*~bh zKr6)NSR|3Cug9cuV{qglhe(^-!wIAb4m&cMxF*Bn*ZQX%VMwxrNdy9UDyOq~wRM{QHySK4`7*<0UvK7&B>L*kMFL)YtKG`POZz-=&UMQnAt&Z6R^y+5o0B@ z8CZ5DQ}B6$I^XKrdIf0Ps;cnoy49FAeL6-SG!gZU^=bg6q$O>Q_HgBuSK{WIZbf4Q zB~2Ybl4-(X1u#dm-m!sP|FI`ul50o*+rcuMwA5stB8@L4fPB!{F*st{H1#aFB=jwHr07639G8HY2dSuvjft02bT9#QTo3CmbG_N zYnc+1DHjeLdH{|*_)w(d5jFe~EE9VYUC?%@{6(AOlg4`1Ew1qquQXV zYHF}?`*xf#XBPI}uU|$s&NkY7`~7zqK72UpYwI#RVMX5rnJ#807?sk>f}vw&odYN$wB9Q9t+B;oy^5}_@s$AV$3K&UH%+NY_jeqLzYHf&@aFf z40tuQO|%4-+8xK=*!70>oc>dkzm=C#OKRi$9vDcAlu3J zdjys#sl#j^2N7hzvc%<8P0?6T4SaOKtKa8CVFX`u9~< zTiiyCs!pk?Z}8y3vbEfMWbeJ5s%5VwrG88x)U-m7iMBJ`z?L)1d)nZ#QTVRQWV-{) z&B0dl_uEqz;Xeh-ye>hn3$dDdOrJa%hfg{P$@*G3mv|!51S~VNY{9ZG;FcpISaxR7 zpt7+61)V#h@0c;FGHKm7-reHFU4dmao2JwF>aAsXcj=4hSXv~o?Du&@sUTR6@kMen z%LG}>EVClPhMiQ>1VBL_%lk1k8*|fIzj+(BRPK+P*z{A4tv9z<&gm2|75Szz9U7@Xhi!@b*j3qGPL4fo0NqELbKa;{K&! zHlptU5mqHwN+(buw?ji#*svHyV>B+C+qi8TR&HE}`DdSvE`9dS=sXiF(@uW+=_ed< z#1UAxX1(#3&fdhTSFYNHz2?~oeJ$VRUD<^F{r`5boTmTxy5V!VDR6;UeGR4`JPi{@ zje;i?ZxJkuis69eU>IuJBtVU`kJlRp5Vr zW|{jSDKgaN4!eCAKXxRhjvX(pcWNuSQZa#La+WPvR)3P)gCY&o^Q&US%rd#<1j}tY zbjH2}%cR%+mov*Q4?cW(DL#4mCG>3H7GZ}o#5ZDAmmru!3K*HQgP57Y1ZCe?8YSX! zWO=wKnD}G%pr)ZgqeBVC&c5VA6tyaIfU9{97sQzh7vS!@?t+gqz?~_1Mr+4pb*Nlm zOI$4hU(p#7wjqzaH=AM1HpMm14%*E?V8qfLa;E0-eV7Qgz&AJRWHSb~oYoxtTJDz_ zk7<-8ES)1m{os2sG1pAfI5)%0#iP%iquH$UwtKY8Em}n~+JK`EJ{VJn3_&W|DBfSp z;Q)ISsX|?$$;L($7lu((RG&z^h(x^EJ_3Eam zu93pWue^khUU&t)I!gL=B5UP(lcp zsG$O;toY=E52lJ&^Wa0OFr|?KDN!hu-9gc$vT95UDU>CG%naSr)63sm>U{U!zyEG} zW`I;G0s9H6d!~E(zyH1GJKy=viFbBLCC_t-g%(>|8#ivmmMvSv1H9S}C(x}0I;LZGL=rSOic`B7~IMg_~FJ%vvgIswaS^TF?TzmCIub_!T-jf5Pq z%z}jR43c&hKY!{eL|fuAq|8D% zlg)`%dGnK-@vG;alYNkL5-h+>_ez4IOx(QICszmfzMNp01uf5^px1|x&x34g01qu& zirF(~!bhKeEyHj#%RKuj!|?hl2*)f$V<7>kB+V$1>`xCNK6Wf_>h1=@p^?F|4EGhp zm88hwW)^?NBHrDz2k-8FTim1wmi?ZJ1D5kBA{dT<%UZ~taz*wN1D36#SZ|5DOLNm0 zobONKLMDxrZR1=vg-uUC4PQh#GGxS|DkhS_XP$Wm&p!LCtVwq6DQ8s=pB09Hv9qcrD=iei zNBk>gD&5ZG)VcGBv^L}MUu@EzjmDSQD~srs#4P;d_9)7 zJ3H~?#~y=+fSZ;oa{Y4-gEh*4AJ>es$EJSWLM30oBg>W{F@1*U-3f9CmMK@@&CDQx5C=jja|p8F z@k+WM!7|&J1j_?MLnt*jVQxbYoqqDJ-vcW|?4_ zsaPHs8Xn84-*T4NE~^b500B7$H!&-Lc@ zV$Pj+sC{Py8HNGNWa4NOrF=_^IP%&~9No9O1}q!RGTm7SmL=YrT{PO9R*K--5q&XP z$_j@=qjDAz)TZqmj-NV-u~R1EhZ{DCq^H7xXpaXMk|}AaPn$LkeSLixOr|B+hydOc zw2EMEk-&))CuGft{i!olR&~QLI7hVmJnu$emalag2LC>$ ztzOsOE^ZiYktRHF-(uWy;|w7RN0VW2D6k$Z4`kA4zit9<{`zcKO-)w@mJjZD1%KN2 zw&+f&!{NoGFCy7ju^|g6FH&(ZC|j`07Bcj`WxA70dugD`_}9FRR3VRJpPoXZdk*e< zaJd6^_&dm6z4X%WuwwaAMU!hLS7~R)Z@R2I;HxtrI z(`0nn4m)9DvwiAy+)PYclr8L--;4FDR^n^p$D_m{Ej{=~`#63AR`c8hctexnF<@Cz z_2?T}qScm-Y%q*@WR|J-y9}^gk|}Xu?<+6kFMAIPSPr0sSUe^&41#69pSE>AJy6IN zXc>8?_zB>l#8JJWFu)eXCzp&e8J;-{7T~V??-Q^?J3+HKY~8w5;?YI-r6eaT>U{KR=Y7nzk$WF?-ZqzlFj91!1d*qU%~Qa%Mc8O#P+herA7JW*0A=~ zn?Mz{wVed_5T{zZ_0OxTWq=Zy`bI!#xPt!T>)%)!RS&#ITd~8qr~m*3PDw;TR3nXw z#71karW?nCUxQ_f9YK^ZCK$xphgV@zM+Yj!Jp6RgsRPS~SteK>!x&@Pf7HMoJ&g;N zN7~j4zH=|V#fAmT70YI$TA1a0o=)0HdM$CYOrhu{ETMV4ERxo5e)f2Hdn4|*^AHn2M}v(!z`xw(Hr>+!1CT5 zJMg!6j*1IUoSkzGmgxp$z;Z56eZAUuC=DdDEI~G9WdcjEOq*O9APfu*;*-;-@y&aB zu<-7?rR`7YfFg1%yzs&cShsE+T3T8pC0J~Boj@A1-&D^Y86(yqWy9UqqwgPAw+w@S zKZ}gX1dNFcxsfHHbbU~2NoaPRM@U67Aq1O!RbP32m_Y#xaGp(#>6b{R3V3B zCr@M9Lq9;Gd#-?GN5%k%1ICfw!}7;)163ZD+H~7xv7-(h4$vswAF;Fn%f_XGx-K;| zr_#mTn&XBb#HCd>Y$boUco!Q-1u_a8WYUj%rrEuKO&i|;XXB?V)^a96jg!%ub#MTT zvA)wGBIeL_oEr>-t?wcEJd`#N&6G` zL2AI+As`s?i`FEU&BCUZFF>$-2SB6lVZbsEd;$F~X4!z{J-^+GfA$^~8HTrHqp6wx zlFGt~VA%jzu^B9sB&>#qk8(&<8evIR3kEQ7Atf8rvCmH8{*@~*`?mSCiI?^{!7(?V z?(S~%_P#6Yld==TRV#B6aqd!^0q3th=%EBOBqIxk+TsN zJP>AC2K8vlZ@0Xa8b)Tb*#FwA`1_IfWWbLWW7I4+G447N za@;VeSLD4!z$0=C-AZTJga8h*PF@d^sX@^WetPLtbMa1Q?Cg>y zOK@QSe)&7&@fKVd7?5_l6l-$tD{CXSW|;?M?fqVzS~u6cArN&WOaEQ4e5oM$KLyL6 z48l`EYcz`WYuBJN9v3%^pbn03yJ3j+mv+Mlc_=Ma$*XR#Jdn*|(f5|9=-FYI<&nVh zf$iJy*Y^%y1eU%2paYh(>8z|Bo>xYO;Ref`Nt9vmvV}9}&k0yw@yIH4&6!I*iF~zm zb)t@b;kOrJ|Gs^4Cb9#{y_Rz|?uVJ@HQ%)XMD9JqeH~1Oz_kjNL&2z|_ffMPkA_9F z{L9UoBqi9mVX(_&tm8x`76^z8g9CoSNTmiWlUY7Zb~G? z16mnn3Ti=DR~J6~@I%>Gm?^;XuG$$lpjMGRLaykueBI#>n7zE3G>6C!wnX_jh(AqjISpGMs WIR@WGK-J0s0000?_*|G62Q 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

gv#?M~~FP#piP)&W#oqCeoOg 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

5}v69&w6R^zT z(E6rU0n6pxx}zJxGGpgoR9W8JP=~T!-Gvjs^|Mb<-`b2p!-rzZlqskvtw?c}87s7z zzU{W#@c848OYCsikMk4%%HwCSdBj>FjDBgAr6rhO9; zsVr+KBd65}&yMX-(lE$bRx8V-Vfdp7>=o`H0na$->=_+{WwC$*JpKSI8J6S#P6YaJ z7;nA!BEH`6t_=98oMqB&IN%pGX=K1p6IFCs#J!Jzivu@pILkC4;qXLLbE^#eH8eD$ zPv5>c{>-_`n1og%gIz|W22VZptPE#S*OEkjug?pMd7ln)TZ0<;x9q?Ew>ir(n#q_f z;=CAWb)zIZ4|7gB0mBClMC0CS*o{epBB~m+8SvAa^uk%TYfW(2?1)lZh58y5Z2gTS)eiw&#a!u#ttr3K3&a!oq{%MC3paJVwXIdsR) zYK)sO9>*Sc0wRfsnBkDK%vfP%kcJWj&Ht~xGwEq645RQVrL^3s17I*3VlXi-3>pTR z(xA+!iAI~aaLI3D%SIzYL?8|r2K@nODikOnVq1omwtzYB^_l|VQdY#!yKK6=`M&3# z_nh-`gihb!X#u~2XPFZ%6PDc$Cn~)@Jn8L2)15jbey!yN%YI#xyF)7cO59jniK5i& z#a+TOl{cG!UwW7IeC)%_f#u8|zK#y#-RmJ+SWY>JT4um6*Rw25JSdW-NQ&-5EU}62 z^9yjhRW!CV3oI9x>4?W;@Rs}Jt|aUbmbq1w!Uf+a`+oldEEATaODixm1zuH!p(+B) ztd3hEXPK9ME%WOBG$U|68q*4OQH)zAqv~z>yZ}VZ?YN!<^8K3-!^+XJ9o$azx zx}vNC$YkJlnc-muLg{r6hr=>e=b2+I(mF3-F2Hggu$)XWjczsz5S9;;DU82*iP^FD zrz*=9Ec23~4MSk0$n=BmWHO>4ul(GQ4%W}J)3R>1z4rk!*|any@Zkunr>6%~Q!_Hg zI$(b@1A;EAuhjIQT9rE%@UWZN4wmzM>Hc?ErVWE(KEJBs`QyiEsc%4ZAq>N#{AO$B zF0`_o3(GsPII1ct@gnpT^))qEjm*Q#^T0+~R^Wo6>BnGM3zVa-xe+A+|B0}icI?U$ zq+_rg-^9e*5zKs;w1wqVHhavooNL2iz;AhN4cJCSt()we)D>;j5%-%z@=}7GFk(F*fw(R9LpN zVems<^9HaHi(@YQ1BzlGc&`o3twBKNVx&b}xpq~=AvW(&^km*)^HS5;rfO)ATLcg{&!W^G(; zYm)>*M<&Lk4zc@TA38fbW#Y-!Ax`56#r^&L7#J7;OA}Zh$IMN>w$XgK=B)oK!1Bqk Z{0C`hXrtWfnNI)!002ovPDHLkV1o8GK?wi= literal 0 HcmV?d00001 diff --git a/docs/best-practices/performance/how-to-enable-pagespeed-booster.md b/docs/best-practices/performance/how-to-enable-pagespeed-booster.md index 7acee816..123cd870 100644 --- a/docs/best-practices/performance/how-to-enable-pagespeed-booster.md +++ b/docs/best-practices/performance/how-to-enable-pagespeed-booster.md @@ -24,7 +24,7 @@ To get started with the PageSpeed Booster (formerly known as Percolate), you mus - ***A development environment hosted on Hypernode containing a copy/mirror of the production site.*** - ***Varnish enabled on both the production and development environment.*** - ***Time to thoroughly test the environment with the PageSpeed Booster enabled.*** -- ***The PageSpeed Booster implemented on your development environment according to [these steps](https://support.hypernode.com/en/troubleshooting/performance/how-to-implement-pagespeed-booster#Configuring-PageSpeed-Booster-on-your-Development-Environment) listed in our documentation.*** +- ***The PageSpeed Booster implemented on your development environment according to [these steps](../../troubleshooting/performance/how-to-implement-pagespeed-booster.md#configuring-pagespeed-booster-on-your-development-environment) listed in our documentation.*** ## Step 1: Getting started @@ -90,7 +90,7 @@ Take note that [Cloudflare RocketLoader](https://support.cloudflare.com/hc/en-us ## Step 3: Implementation of the PageSpeed Booster -After following the above steps, it is now time to set up the necessary Hypernode server configuration for the PageSpeed Booster. These steps are written in our article [How to Implement PageSpeed Booster](https://support.hypernode.com/en/troubleshooting/performance/how-to-implement-pagespeed-booster). It is recommended to implement and use PSB first on your Development Hypernode and subdomain setup for PSB testing. +After following the above steps, it is now time to set up the necessary Hypernode server configuration for the PageSpeed Booster. These steps are written in our article [How to Implement PageSpeed Booster](../../troubleshooting/performance/how-to-implement-pagespeed-booster.md). It is recommended to implement and use PSB first on your Development Hypernode and subdomain setup for PSB testing. The steps include: @@ -98,7 +98,7 @@ The steps include: - Configure SSL and DNS - Configuring Varnish - Modifying your Varnish VCL configuration -- Add the user agent **PSB**to the [allowlist for the ratelimiter](https://support.hypernode.com/en/hypernode/nginx/how-to-resolve-rate-limited-requests-429-too-many-requests#Whitelisting-Additional-User-Agents) in\*\*~/nginx/http.ratelimit\*\* file +- Add the user agent **PSB**to the [allowlist for the ratelimiter](../../hypernode-platform/nginx/how-to-resolve-rate-limited-requests-429-too-many-requests.md#whitelisting-additional-user-agents) in `~/nginx/http.ratelimit` file - Turn off ESI Block Parsing - Add PageSpeed Booster as Flush Target diff --git a/docs/best-practices/performance/how-to-find-your-performance-bottleneck-with-new-relic.md b/docs/best-practices/performance/how-to-find-your-performance-bottleneck-with-new-relic.md index 435952ed..001f6185 100644 --- a/docs/best-practices/performance/how-to-find-your-performance-bottleneck-with-new-relic.md +++ b/docs/best-practices/performance/how-to-find-your-performance-bottleneck-with-new-relic.md @@ -6,6 +6,7 @@ myst: of your shop. redirect_from: - /en/best-practices/performance/how-to-find-your-performance-bottleneck-with-new-relic/ + - /knowledgebase/new-relic-performance-management/ --- diff --git a/docs/best-practices/performance/how-to-fix-performance-issues-caused-by-bots-and-crawlers.md b/docs/best-practices/performance/how-to-fix-performance-issues-caused-by-bots-and-crawlers.md index 337678ce..09517268 100644 --- a/docs/best-practices/performance/how-to-fix-performance-issues-caused-by-bots-and-crawlers.md +++ b/docs/best-practices/performance/how-to-fix-performance-issues-caused-by-bots-and-crawlers.md @@ -5,6 +5,7 @@ myst: Read here how to fix such performance issues on Hypernode. redirect_from: - /en/best-practices/performance/how-to-fix-performance-issues-caused-by-bots-and-crawlers/ + - /knowledgebase/fixing-bad-performance-caused-by-search-engines/ --- @@ -32,7 +33,7 @@ $ pnl --yesterday --php --bots --fields ua | sort | uniq -c | sort -n ``` -In this example, there were almost 4K Bingbot pageviews, 2K Google pageviews and almost 13K MegaIndex pageviews. So you could eliminate a large chunk of load by blocking MegaIndex (a shady crawler whose benefits to you are disputable). [Here](https://support.hypernode.com/knowledgebase/blocking-user-agents-referrers/) are instructions on blocking specific bots on Hypernode. +In this example, there were almost 4K Bingbot pageviews, 2K Google pageviews and almost 13K MegaIndex pageviews. So you could eliminate a large chunk of load by blocking MegaIndex (a shady crawler whose benefits to you are disputable). [Here](../../hypernode-platform/nginx/how-to-block-user-agents-and-referrer-sites.md) are instructions on blocking specific bots on Hypernode. # How to Block Bot Access to Layered Navigation @@ -88,5 +89,5 @@ Make sure all URLs in the layered navigation have “nofollow” in its links. H # Additional Information -- [How to Block Specific Countries From Accessing Your Shop](https://support.hypernode.com/knowledgebase/block-your-site-for-specific-countries/) -- [How to Resolve 429 Too Many Requests](https://support.hypernode.com/knowledgebase/resolving-429-many-requests/) +- [How to Block Specific Countries From Accessing Your Shop](../../hypernode-platform/nginx/how-to-block-your-webshop-for-specific-countries.md) +- [How to Resolve 429 Too Many Requests](../../hypernode-platform/nginx/how-to-resolve-rate-limited-requests-429-too-many-requests.md) diff --git a/docs/best-practices/performance/how-to-improve-your-magento-search.md b/docs/best-practices/performance/how-to-improve-your-magento-search.md index 016d7c75..4b374fc5 100644 --- a/docs/best-practices/performance/how-to-improve-your-magento-search.md +++ b/docs/best-practices/performance/how-to-improve-your-magento-search.md @@ -6,6 +6,7 @@ myst: possibilities. redirect_from: - /en/best-practices/performance/how-to-improve-your-magento-search/ + - /knowledgebase/how-to-improve-your-magento-search/ --- @@ -23,7 +24,7 @@ Another alternative is Sphinx Search. Sphinx is an open source search engine tha ## ElasticSearch -While previously it was already possible to use ElasticSearch with your Hypernode by connecting to an external search provider, we have now made it possible to use ElasticSearch for search in your shop out of the box on Hypernode without requiring any external service or configuration. In[this article](https://support.hypernode.com/en/hypernode/tools/how-to-use-elasticsearch-on-hypernode) we’ll explain a bit more about ElasticSearch and how to enable and configure it. +While previously it was already possible to use ElasticSearch with your Hypernode by connecting to an external search provider, we have now made it possible to use ElasticSearch for search in your shop out of the box on Hypernode without requiring any external service or configuration. In[this article](../../hypernode-platform/tools/how-to-use-elasticsearch-on-hypernode.md) we’ll explain a bit more about ElasticSearch and how to enable and configure it. Please note that due to the relatively heavy resource requirements for ElasticSearch this feature can only be enabled on every plan except the formerly known Grow plan. If you are on a smaller plan and previously already depended on an external paid ElasticSearch provider now might be a good time to consider simplifying your setup. @@ -65,7 +66,7 @@ When adjusting the Sphinx settings, you should make use the following informatio ### Troubleshooting -- When using the Mirasvit extension, Magento periodically restarts the Sphinx engine. If this happens too fast, the reload of Sphinx can be ratelimited causing the daemon to stop or to hang. To resolve this issue, whitelist the `Zend_Http_Client` as explained in [the instructions how to prevent a user agent from being rate limited](https://support.hypernode.com/knowledgebase/resolving-429-many-requests/#Ratelimitting_against_bots_and_crawlers). +- When using the Mirasvit extension, Magento periodically restarts the Sphinx engine. If this happens too fast, the reload of Sphinx can be ratelimited causing the daemon to stop or to hang. To resolve this issue, whitelist the `Zend_Http_Client` as explained in [the instructions how to prevent a user agent from being rate limited](../../hypernode-platform/nginx/how-to-resolve-rate-limited-requests-429-too-many-requests.md#rate-limiting-for-bots-and-crawlers). - If your shop is using too much memory, the `searchd` daemon can crash due to OOM. To resolve this upgrade to a bigger Hypernode, or improve the memory print of your webshop. - The `searchd`daemon is started from the Magento backend, but in case of a server reboot, memory issues or an otherwise very busy server the process kan be killed, causing an interruption in your search functionality. To circumvent these issues, add a cron that checks if the daemon is running and starts it if it’s not: - For Magento 1: diff --git a/docs/best-practices/performance/how-to-optimize-the-performance-of-your-magento-shop.md b/docs/best-practices/performance/how-to-optimize-the-performance-of-your-magento-shop.md index 2022d8ac..9c3c765d 100644 --- a/docs/best-practices/performance/how-to-optimize-the-performance-of-your-magento-shop.md +++ b/docs/best-practices/performance/how-to-optimize-the-performance-of-your-magento-shop.md @@ -40,7 +40,7 @@ Over the last years Magento made many performance improvements to their software It is recommended to upgrade your PHP version to PHP 7 as this causes a massive improvement in speed. Before you switch the PHP version, make sure your shop and all extensions are ready to be used with PHP 7 first. -On Hypernode you can easily order [development nodes](https://support.hypernode.com/en/hypernode/tools/how-to-use-hypernode-development-plans) or use the [Hypernode Docker](https://support.hypernode.com/en/best-practices/testing/hypernode-docker) to get your Magento installation running on PHP 7 without risking your production shop. More information can be found in [our article about PHP 7](https://support.hypernode.com/knowledgebase/php-7/). +On Hypernode you can easily order [development nodes](../../hypernode-platform/tools/how-to-use-hypernode-development-plans.md) or use the [Hypernode Docker](../../best-practices/testing/hypernode-docker.md) to get your Magento installation running on PHP 7 without risking your production shop. ## Avoid IonCube Extensions (\<5 mins) @@ -83,17 +83,17 @@ Bots happen to get stuck in this enormous list of urls, causing an increase in l Another critical performance killer is the catalog search functionality. Many crawlers recognise the results of a search query as a product page that should be indexed. Because the catalog search for Magento is one of the heaviest features in resource costs, it is highly recommended to block these too. -To reduce these effects caused by crawlers and bots,[block all dynamic entry points that should not be accessible by bots](https://support.hypernode.com/knowledgebase/fixing-bad-performance-caused-by-search-engines/). If you block these entry points using a status code 410, you tell the bots to drop the URL from the index and stop indexing it in the future. +To reduce these effects caused by crawlers and bots,[block all dynamic entry points that should not be accessible by bots](../../best-practices/performance/how-to-fix-performance-issues-caused-by-bots-and-crawlers.md). If you block these entry points using a status code 410, you tell the bots to drop the URL from the index and stop indexing it in the future. ## Use HTTPS so You Can Take Advantage of HTTP2 (\<10 mins) On Hypernode we recommend to serve your shop only over HTTPS. This is safer and is better for search indexation optimization. -Most of the available browsers only support HTTP2 when your pages are served over SSL so to use this faster technology, order an SSL certificate and make sure your site [is only served over HTTPS](https://support.hypernode.com/en/hypernode/nginx/how-to-configure-your-shop-to-only-use-https). +Most of the available browsers only support HTTP2 when your pages are served over SSL so to use this faster technology, order an SSL certificate and make sure your site [is only served over HTTPS](../../hypernode-platform/nginx/how-to-configure-your-shop-to-only-use-https.md). ## 404 Handling (5 mins) -Make sure 404 pages are not redirected to your catalog search and reduce load times of pages by moving [404 handling from Magento to Nginx](https://support.hypernode.com/knowledgebase/magento-and-smarter-404-handling/). +Make sure 404 pages are not redirected to your catalog search and reduce load times of pages by moving [404 handling from Magento to Nginx](../../best-practices/performance/how-to-set-up-smart-404-handling.md). ## Large `core_url_rewrite` Table (10 mins) @@ -111,13 +111,13 @@ Try to use price rules as little as possible and check your MySQL slow log for s Lesti FPC is a full page cache module that can massively improve the load times of your product pages. -We recommend the use of Lesti FPC on Hypernode, as it reduces server load and makes the shop much faster to load. [How to install can be found in our documentation.](https://support.hypernode.com/knowledgebase/configure-lestifpc/) +We recommend the use of Lesti FPC on Hypernode, as it reduces server load and makes the shop much faster to load. [How to install can be found in our documentation.](../../hypernode-platform/tools/how-to-configure-lesti-fpc.md) ## Warm Caches and Test URL’s Using the Sitemap (\<10 mins) When using a full page cache module like Lesti FPC or Varnish, the site gets a lot faster after the first visit when the page has been cached. We recommend to warm the caches periodically. This can be nightly through cron, or manually after adding many new products. -This can be done [using the n98-plugin available on all Hypernodes](https://support.hypernode.com/knowledgebase/warm-full-page-cache-lestifpc-varnish/). To make use of this script, [a sitemap.xml file should be present](https://support.hypernode.com/en/ecommerce/magento-2/how-to-create-a-sitemap-xml-for-magento-2-x)([Magento 2](https://support.hypernode.com/en/ecommerce/magento-2/how-to-create-a-sitemap-xml-for-magento-2-x)). +This can be done [using the n98-plugin available on all Hypernodes](../../ecommerce-applications/magento-2/how-to-configure-varnish-for-magento-2-x.md#warming-your-cache). To make use of this script, [a sitemap.xml file should be present](../../ecommerce-applications/magento-2/how-to-create-a-sitemap-xml-for-magento-2-x.md). ## Sessions in Redis (\<15 mins) @@ -125,11 +125,11 @@ On bigger Hypernodes with more memory available, you can reduce disk IO by stori This only works on bigger nodes, as there needs to be some memory available for rendering pages using PHP too. -To store sessions in Redis, take a look at [the instructions on how to configure this](https://support.hypernode.com/knowledgebase/configure-sessions-redis-magento1/) ([Magento 2](https://support.hypernode.com/knowledgebase/configure-sessions-redis-magento2/)) +To store sessions in Redis, take a look at [the instructions on how to configure this](../../ecommerce-applications/magento-1/how-to-configure-redis-for-magento-1.md) ([Magento 2](../../ecommerce-applications/magento-2/how-to-configure-redis-for-magento-2.md)) ## Image Optimizations (10 mins) -Big images take more time to download and view than smaller images. We created a resize tool to reduce the size of your images to improve load times. To do this, use the Hypernode-image-optimizer which is installed on all nodes. It’s recommended to run this command nightly through cron. More information can be found in [this article about optimizing your image size](https://support.hypernode.com/knowledgebase/magento-image-optimization-howto/). +Big images take more time to download and view than smaller images. We created a resize tool to reduce the size of your images to improve load times. To do this, use the Hypernode-image-optimizer which is installed on all nodes. It’s recommended to run this command nightly through cron. More information can be found in [this article about optimizing your image size](../../best-practices/performance/how-to-optimize-your-images.md). ## Static Content Optimization (15 mins) @@ -147,7 +147,7 @@ To do this, you can create a whitelist of IP’s that should only be allowed to This whitelist can then be included in Nginx configuration on locations that are restricted. -More information can be found [in our article about creating reusable config](https://support.hypernode.com/en/hypernode/nginx/how-to-create-a-reusable-config-to-include-in-custom-snippets). +More information can be found [in our article about creating reusable config](../../hypernode-platform/nginx/how-to-create-a-reusable-config-to-include-in-custom-snippets.md). In this example your Magmi is accessible through `https://www.example.nl/magmi`. @@ -180,7 +180,7 @@ It is highly recommended to protect your Magento admin backend and custom entry Most of the default and well-known entry points that can be abused for password guessing are already protected. -If you use custom entry points that can be abused, create [additional configuration using a whitelist](https://support.hypernode.com/knowledgebase/create-reusable-config-for-custom-snippets/) and include it in all location blocks that should be protected. +If you use custom entry points that can be abused, create [additional configuration using a whitelist](../../hypernode-platform/nginx/how-to-create-a-reusable-config-to-include-in-custom-snippets.md) and include it in all location blocks that should be protected. For additional help to check if your shop is brute force protected, use [MageReport](https://magereport.com/). @@ -194,7 +194,7 @@ To make sure a small set of IP addresses can’t take your shop down we use rate On smaller nodes (mostly on Hypernode Start and Grow plans) this can cause errors when working in the Magento admin. To resolve these errors, you can whitelist IP’s to make sure they will not be rate limited when working in the Magento admin backend. If you use nightly product imports through the Magento SOAP API, sometimes you need to whitelist the remote ip of the import tool as well. -[To whitelist these IP’s have a look at our article about rate limiting](https://support.hypernode.com/en/hypernode/nginx/how-to-resolve-rate-limited-requests-429-too-many-requests). +[To whitelist these IP’s have a look at our article about rate limiting](../../hypernode-platform/nginx/how-to-resolve-rate-limited-requests-429-too-many-requests.md). ## Configure Your API (\<10 mins) @@ -202,4 +202,4 @@ With most of the Magento installations, the API functionality works out-of-the-b In some cases however, specific to the use of clean URL’s, a 404 is returned when visiting the Magento API. -To fix this, use [this article about working with the Magento api on Hypernode](https://support.hypernode.com/knowledgebase/enable-magento-api/). +To fix this, use [this article about working with the Magento api on Hypernode](../../ecommerce-applications/magento-2/how-to-enable-the-magento-2-api.md). diff --git a/docs/best-practices/performance/how-to-optimize-your-images.md b/docs/best-practices/performance/how-to-optimize-your-images.md index ca0704bd..35be3795 100644 --- a/docs/best-practices/performance/how-to-optimize-your-images.md +++ b/docs/best-practices/performance/how-to-optimize-your-images.md @@ -5,6 +5,7 @@ myst: faster shop on Hypernode in only a couple of minutes. ' redirect_from: - /en/best-practices/performance/how-to-optimize-your-images/ + - /knowledgebase/magento-image-optimization-howto/ --- @@ -23,8 +24,8 @@ Thanks to Peter Jaap for doing the [initial research](https://www.byte.nl/blog/a First, log in on your Hypernode by SSH and type this command: -```nginx -$ hypernode-image-optimizer ~/public/media +```console +app@83f01a-example-magweb-cmbl:~$ hypernode-image-optimizer ~/public/media [46%] /data/web/public/media/custom_options/quote/h/o/46f68f14df54b639546a583a942cd7c2.png (255 KB smaller) [50%] /data/web/public/media/custom_options/quote/h/o/8a45641021fb82d172b9712f6631c49a.png (405 KB smaller) [30%] /data/web/public/media/custom_options/quote/p/l/a74e500c8e08c48e54ea65d8422bc68e.png (114 KB smaller) @@ -32,7 +33,6 @@ $ hypernode-image-optimizer ~/public/media [ 0%] /data/web/public/media/custom_options/quote/T/a/6bfddcd09ff981b24fc96e442700f2df.png (0 KB smaller) [... long list of files ...] Optimization profit over all files: 226 MB (30%) - ``` Great! It has not changed anything yet, but has calculated that you can save 226MB (or 30%) of disk-usage by optimizing your images. @@ -41,8 +41,8 @@ Great! It has not changed anything yet, but has calculated that you can save 226 Make sure you have a backup of your media files. Then use this command to replace the old images with the optimized images: -```nginx -$ hypernode-image-optimizer --quality 80 --write --newonly ~/path/to/media +```console +app@83f01a-example-magweb-cmbl:~$ hypernode-image-optimizer --quality 80 --write --newonly ~/path/to/media ``` Visit your site, do a CTRL-F5 (Mac: CMD-R) to refresh your cache and visually inspect the results. You will most likely not see a difference, apart from a much quicker page ;) @@ -51,7 +51,7 @@ Visit your site, do a CTRL-F5 (Mac: CMD-R) to refresh your cache and visually in To use the `hypernode-image-optimizer` and exclude one or more directories, specify `--exclude` with one or more paths. For example: -```nginx +```console app@83f01a-example-magweb-cmbl:~$ hypernode-image-optimizer /data/web/public | wc -l 431 app@83f01a-vdloo-magweb-cmbl:~$ hypernode-image-optimizer /data/web/public --exclude /data/web/public/static/frontend /data/web/public/static/adminhtml/Magento | wc -l @@ -59,7 +59,6 @@ app@83f01a-vdloo-magweb-cmbl:~$ hypernode-image-optimizer /data/web/public --exc # In this example images from the following directories were ignored: # /data/web/public/static/frontend # /data/web/public/static/adminhtml/Magento - ``` ## Recommended: Periodic Optimization Using Cron @@ -68,16 +67,14 @@ To keep the disk usage reduced and your shop fast, we recommend you to add a cro NB: [Magereport.com](http://magereport.com) checks for a cronjob that optimizes your images periodically. If you optimized your images only once, the check will come out red. -```nginx -$ crontab -e - +```console +app@83f01a-example-magweb-cmbl:~$ crontab -e ``` And add this line: -```nginx +```bash 30 4 * * * chronic hypernode-image-optimizer --experimental --quality 80 --write --newonly ~/public/media - ``` Presto, every night at 4:30 all new images (uploaded the previous day) will be optimized. @@ -94,12 +91,12 @@ Second, it will shrink big images: 2000+ pixels in width or height. If you want Since 21 June 2016, an `--experimental` mode is available. This yields better compression results (notably for PNG) but is slower. Example runs on our test images: -```nginx -$ hypernode-image-optimizer ~/public/media +```console +app@83f01a-example-magweb-cmbl:~$ hypernode-image-optimizer ~/public/media [...] Safe optimization profit over 1002 files: 11 MB (37%) -$ hypernode-image-optimizer ~/public/media --experimental +app@83f01a-example-magweb-cmbl:~$ hypernode-image-optimizer ~/public/media --experimental [...] Safe optimization profit over 1002 files: 17 MB (56%) @@ -111,6 +108,6 @@ As with the regular optimizer, ensure you have a backup before using the experim ## Examples of Different Quality Levels -[![result100](https://s3.amazonaws.com/cdn.freshdesk.com/data/helpdesk/attachments/production/48022287798/original/U4S0eOMYihH2sp0wE2feM67OowgJmjj0Gw.png?1578669560)](https://support.hypernode.com/assets/uploads/result100.png) +![result100](_res/result100.png) -[![result50](https://s3.amazonaws.com/cdn.freshdesk.com/data/helpdesk/attachments/production/48022287797/original/vPKSVy2Sc-MTWlhoN0MZyRfAeJpgqFAbAg.png?1578669560)](https://support.hypernode.com/assets/uploads/result50.png) +![result50](_res/result50.png) diff --git a/docs/ecommerce-applications/magento-2/how-to-set-up-smart-404-handling.md b/docs/best-practices/performance/how-to-set-up-smart-404-handling.md similarity index 100% rename from docs/ecommerce-applications/magento-2/how-to-set-up-smart-404-handling.md rename to docs/best-practices/performance/how-to-set-up-smart-404-handling.md diff --git a/docs/best-practices/performance/how-to-use-blackfire-on-hypernode-to-find-performance-issues.md b/docs/best-practices/performance/how-to-use-blackfire-on-hypernode-to-find-performance-issues.md index 7dd5e9e2..d5290e87 100644 --- a/docs/best-practices/performance/how-to-use-blackfire-on-hypernode-to-find-performance-issues.md +++ b/docs/best-practices/performance/how-to-use-blackfire-on-hypernode-to-find-performance-issues.md @@ -5,6 +5,7 @@ myst: bottlenecks in Magento. Read here how to use it on Hypernode. redirect_from: - /en/best-practices/performance/how-to-use-blackfire-on-hypernode-to-find-performance-issues/ + - /knowledgebase/profiling-magento-blackfire/ --- diff --git a/docs/best-practices/pwa/hypernode-and-pwa-hosting.md b/docs/best-practices/pwa/hypernode-and-pwa-hosting.md index 64e324ce..26cbe2df 100644 --- a/docs/best-practices/pwa/hypernode-and-pwa-hosting.md +++ b/docs/best-practices/pwa/hypernode-and-pwa-hosting.md @@ -43,6 +43,6 @@ A PWA is made up of service workers, which can run in the background. To avoid t ## Hypernode and PWA -Hypernode is PWA ready. Although Hypernode is managed hosting, our customers have the freedom to change the NGINX configuration in order to make Hypernode fully compatible with Magento Progressive Web Apps. [Let's Encrypt](https://support.hypernode.com/knowledgebase/use-lets-encrypt-hypernode/) can be used to set up a secure connection. +Hypernode is PWA ready. Although Hypernode is managed hosting, our customers have the freedom to change the NGINX configuration in order to make Hypernode fully compatible with Magento Progressive Web Apps. [Let's Encrypt](../../hypernode-platform/ssl/how-to-use-lets-encrypt-on-hypernode.md) can be used to set up a secure connection. We have noticed a few curious customers are already testing Magento Progressive Web Applications. Would you like to try it as well? Please share your successes and do not hesitate to involve us when you run into challenges! diff --git a/docs/best-practices/security/how-hypernode-protects-your-magento-shop.md b/docs/best-practices/security/how-hypernode-protects-your-magento-shop.md index 0292d509..7919104b 100644 --- a/docs/best-practices/security/how-hypernode-protects-your-magento-shop.md +++ b/docs/best-practices/security/how-hypernode-protects-your-magento-shop.md @@ -16,7 +16,7 @@ But, this is not only applicable for acute security issues. As Magento nerds we The following security issues named in Magereport will not pose a threat to Hypernode customers. - Security patch 5344 (Shoplift) - In February 2015, we implemented a platform fix within a matter of only 4 hours. Despite this fix, we still advise our customers to patch their shop(s). -- Unprotected Magmi? - Standardly the access to Magmi is blocked. If you would like it to be unblocked, check [our Hypernode documentation](https://support.hypernode.com/en/hypernode/tools/unblocking-and-accessing-magmi-for-hypernode). +- Unprotected Magmi? - Standardly the access to Magmi is blocked. If you would like it to be unblocked, check [our Hypernode documentation](../../hypernode-platform/tools/unblocking-and-accessing-magmi-for-hypernode.md). - Unmaintained server? - Hypernode always runs on safe software versions. - Unprotected version control? - For all shops on our platform, it is not possible to visit the git directory from the outside. - Security patch 5994 (admin disclosure) - We regularly check whether a login is attempted and cover it. diff --git a/docs/best-practices/security/how-to-apply-magento-patches.md b/docs/best-practices/security/how-to-apply-magento-patches.md index 5cc0824a..df5fe751 100644 --- a/docs/best-practices/security/how-to-apply-magento-patches.md +++ b/docs/best-practices/security/how-to-apply-magento-patches.md @@ -36,7 +36,7 @@ There’s a chance that certain plugins or elements in your webshop aren’t com ### Step 2: Log on to SSH (Shell) -Log on to the shell server. If you don’t how to log on, contact your hosting provider or technical contact. Hypernode customers can follow the steps in the article [How to Log in to the Hypernode With SSH](https://support.hypernode.com/en/hypernode/ssh/how-to-log-in-to-the-hypernode-with-ssh). +Log on to the shell server. If you don’t how to log on, contact your hosting provider or technical contact. Hypernode customers can follow the steps in the article [How to Log in to the Hypernode With SSH](../../hypernode-platform/ssh/how-to-log-in-to-the-hypernode-with-ssh.md). ### Step 3: Download and Upload the Patch diff --git a/docs/best-practices/security/how-to-fix-malicious-javascript-credit-card-hijack.md b/docs/best-practices/security/how-to-fix-malicious-javascript-credit-card-hijack.md index ebf3c322..77c42f2f 100644 --- a/docs/best-practices/security/how-to-fix-malicious-javascript-credit-card-hijack.md +++ b/docs/best-practices/security/how-to-fix-malicious-javascript-credit-card-hijack.md @@ -170,7 +170,7 @@ The script below was found during the research done by Hypernode. It covers the Since Credit Card Hijack is an ongoing credit card fraud dating from May 2015, it’s difficult to pinpoint how exactly the hackers got in. We assume it’s due to a combination of various know Magento leaks. It’s likely hackers used these security vulnerablities to set up this credit card fraud. -We recommend you ‘clean’ your shop following the steps written in the article [Recover a Hacked Magento Shop](https://support.hypernode.com/knowledgebase/recover-a-hacked-magento-shop/) after installing all Magento patches, deleting inactive Magento admins and removing malicious code. +We recommend you ‘clean’ your shop following the steps written in the article [Recover a Hacked Magento Shop](../../best-practices/security/how-to-recover-a-hacked-magento-shop.md) after installing all Magento patches, deleting inactive Magento admins and removing malicious code. ## Need Help? diff --git a/docs/best-practices/security/how-to-protect-magento-against-brute-force-attacks.md b/docs/best-practices/security/how-to-protect-magento-against-brute-force-attacks.md index 7ce9b44c..9de80dec 100644 --- a/docs/best-practices/security/how-to-protect-magento-against-brute-force-attacks.md +++ b/docs/best-practices/security/how-to-protect-magento-against-brute-force-attacks.md @@ -1,6 +1,7 @@ --- redirect_from: - /en/best-practices/security/how-to-protect-magento-against-brute-force-attacks/ + - /knowledgebase/how-to-protect-your-magento-store-against-brute-force/ --- diff --git a/docs/best-practices/security/how-to-recover-a-hacked-magento-shop.md b/docs/best-practices/security/how-to-recover-a-hacked-magento-shop.md index a87f00a8..44b89e44 100644 --- a/docs/best-practices/security/how-to-recover-a-hacked-magento-shop.md +++ b/docs/best-practices/security/how-to-recover-a-hacked-magento-shop.md @@ -6,6 +6,7 @@ myst: Hypernode. redirect_from: - /en/best-practices/security/how-to-recover-a-hacked-magento-shop/ + - /knowledgebase/recover-a-hacked-magento-shop/ --- @@ -20,7 +21,7 @@ In many cases, Magereport.com would tell you if your shop has been hacked! Mager You may also get alerted some other way, perhaps via a central agency such as the NCSC, or your local equivalent. -On Hypernode we also provide a [Malware scanner](https://support.hypernode.com/en/best-practices/security/how-to-scan-your-hypernode-for-malware), based on [Yara](http://yara.readthedocs.io/) with an [extra set of signatures to detect magento directed malware](https://github.com/gwillem/magento-malware-scanner). Every night an audit on new or changed files will be performed and when the scanner hits a possible infected file, it will notify Hypernode's abuse department. We will check if it is a false-positive and if not; we'll send you a warning message by email. +On Hypernode we also provide a [Malware scanner](../../best-practices/security/how-to-scan-your-hypernode-for-malware.md), based on [Yara](http://yara.readthedocs.io/) with an [extra set of signatures to detect magento directed malware](https://github.com/gwillem/magento-malware-scanner). Every night an audit on new or changed files will be performed and when the scanner hits a possible infected file, it will notify Hypernode's abuse department. We will check if it is a false-positive and if not; we'll send you a warning message by email. ## What to do When your Shop is Hacked @@ -50,7 +51,7 @@ In most cases this will be: - Install all the relevant patches, for both Magento and any plugins. - Upgrade your Magento to the latest version. - Configure brute force protection. -- Run a scan using the [Magento corediff scanner](https://support.hypernode.com/en/hypernode/tools/how-to-use-magento-corediff-on-hypernode). If any clearly suspicious files are found, move them to a non reachable directory (like `/data/web/hacked/`) for later analysis, remove them from your website, and restore a trusted copy of the affected files. +- Run a scan using the [Magento corediff scanner](../../hypernode-platform/tools/how-to-use-magento-corediff-on-hypernode.md). If any clearly suspicious files are found, move them to a non reachable directory (like `/data/web/hacked/`) for later analysis, remove them from your website, and restore a trusted copy of the affected files. ### Throw the Hacker Out @@ -59,7 +60,7 @@ An intruder most likely has left one or more backdoors. These could be separate To avoid recurring hacking incidents, your code and database should be thoroughly clean. The only trustworthy way to accomplish this, is to remove everything and recover from a (known clean) backup or git checkout. Establish which files were changed and go back to the latest clean version. For example, do a `git diff origin/. Do not trust any git checkout on the server, as that could have been compromised as well. If you do not have a backup or version control, success is not guaranteed. But you could try to find -suspicious and/or recently modified files. And you could compare with a new Magento installation to see if core files have been modified. You may also use [a historical back-up](https://support.hypernode.com/en/hypernode/backups/how-to-restore-your-hypernode-from-a-backup) to restore (parts) of your Hypernode to a trusted copy. +suspicious and/or recently modified files. And you could compare with a new Magento installation to see if core files have been modified. You may also use [a historical back-up](../../hypernode-platform/backups/how-to-restore-your-hypernode-from-a-snapshot.md) to restore (parts) of your Hypernode to a trusted copy. ## Need help? diff --git a/docs/best-practices/security/what-you-need-to-know-about-the-visbot-malware.md b/docs/best-practices/security/what-you-need-to-know-about-the-visbot-malware.md index 508599f7..ddc35a07 100644 --- a/docs/best-practices/security/what-you-need-to-know-about-the-visbot-malware.md +++ b/docs/best-practices/security/what-you-need-to-know-about-the-visbot-malware.md @@ -54,6 +54,6 @@ Visbot stores its intercepted POST data in random locations. In the wild, we hav ## Recovery -See our instructions on [how to recover a hacked Magento store](https://support.hypernode.com/knowledgebase/recover-a-hacked-magento-shop/). +See our instructions on [how to recover a hacked Magento store](../../best-practices/security/how-to-recover-a-hacked-magento-shop.md). Are you a Hypernode customer? Our intrusion prevention rules filter almost all known attacks. But if you happen to migrate a previously hacked store to our platform, our support team will contact you to get it resolved quickly. diff --git a/docs/best-practices/testing/how-to-check-if-everything-works.md b/docs/best-practices/testing/how-to-check-if-everything-works.md index 4238c0cf..7e83909a 100644 --- a/docs/best-practices/testing/how-to-check-if-everything-works.md +++ b/docs/best-practices/testing/how-to-check-if-everything-works.md @@ -21,20 +21,20 @@ A bigger checklist is available [on the Github account](https://gist.github.com/ - Test all storefronts *(use the storefront view in MageReport Premium (only for Magento 1.x versions)).* - Test front pages, categories and product pages. -- Test the catalog search functionality and additional indexers like [Elasticsearch](https://support.hypernode.com/knowledgebase/how-to-improve-your-magento-search/#ElasticSearch) or [Sphinx](https://support.hypernode.com/knowledgebase/how-to-improve-your-magento-search/#Sphinx) +- Test the catalog search functionality and additional indexers like [Elasticsearch](../../best-practices/performance/how-to-improve-your-magento-search.md#elasticsearch) or [Sphinx](../../best-practices/performance/how-to-improve-your-magento-search.md#sphinx) - Verify whether the search pages are fully functional and if you don’t get 404 errors when visiting the products in the results. -- Test [restricted areas](https://support.hypernode.com/knowledgebase/deny-access-locations-directories/) and [password protected directories](https://support.hypernode.com/knowledgebase/protect-a-directory-with-a-password-in-nginx/) (downloads, etc). +- Test [restricted areas](../../hypernode-platform/nginx/how-to-deny-access-to-locations-and-directories.md) and [password protected directories](../../hypernode-platform/nginx/how-to-protect-your-magento-store-with-a-password-in-nginx.md) (downloads, etc). - Test if you can add new products through the Magento admin. - Test the admin functionality by flushing your cache, reindex your indexers and navigate through the Magento admin. -- Test if your webshop [can send mail](https://support.hypernode.com/knowledgebase/hypernode-email-policy/) that [can be received](https://support.hypernode.com/en/ecommerce/magento-2/how-to-set-the-return-path-for-a-magento-2-shop) without [ending up in the spamfolder](https://support.hypernode.com/en/best-practices/email/how-to-prevent-spam-being-sent-from-your-name-or-email-address). -- [Test if your cronjobs work](https://support.hypernode.com/knowledgebase/configure-cronjobs-on-hypernode/). +- Test if your webshop [can send mail](../../hypernode-platform/email/policy-for-sending-email-on-hypernode.md) that [can be received](../../ecommerce-applications/magento-2/how-to-set-the-return-path-for-a-magento-2-shop.md) without [ending up in the spamfolder](../../best-practices/email/how-to-prevent-spam-being-sent-from-your-name-or-email-address.md). +- [Test if your cronjobs work](../../hypernode-platform/tools/how-to-use-periodic-tasks-cronjobs-on-hypernode.md). - Test if all caching mechanisms using Memcached are replaced with Redis: ```nginx grep -Ri memcache /data/web/public/app/etc ``` -- Test if your timezone is set correctly. Instructions how to do this can be found in the article [Magento and UTC on Hypernode](https://support.hypernode.com/knowledgebase/magento-utc-hypernode/). +- Test if your timezone is set correctly. Instructions how to do this can be found in the article [Magento and UTC on Hypernode](../../ecommerce-applications/magento-2/how-to-set-magento-2-x-to-the-utc-timezone.md). - Test if additional software (such as WordPress) works as well. - Verify that connections with external systems (CRM, inventory, analytics, etc) still work and keep working when the IP address of the node changes. In some cases you need to notify your external supplier of the new IP. Find your IP with the `ping example.hypernode.io` command. @@ -49,10 +49,10 @@ grep -Ri memcache /data/web/public/app/etc Cancel your payment order to see if the callback requests and redirect from the payment provider to your shop is functional. - Test for images, css, js and mixed content warnings. - Test if all static content is loaded: View the console in your browser to check if there are javascript errors or 404 errors on stylesheets and js files. -- Test if [the Magento API is accessible when used](https://support.hypernode.com/knowledgebase/enable-magento-api/). -- Test if the sitemap is accessible for [Magento 1](https://support.hypernode.com/en/ecommerce/magento-1/how-to-create-a-sitemap-xml-for-magento-1-x)or [Magento 2](https://support.hypernode.com/en/ecommerce/magento-2/how-to-create-a-sitemap-xml-for-magento-2-x). -- Test if [you can easily download the robots.txt file](https://support.hypernode.com/knowledgebase/create-robots-txt-magento1/) (Or for [Magento 2](https://support.hypernode.com/knowledgebase/create-robots-txt-magento-2/)). +- Test if [the Magento API is accessible when used](../../ecommerce-applications/magento-2/how-to-enable-the-magento-2-api.md). +- Test if the sitemap is accessible for [Magento 1](../../ecommerce-applications/magento-1/how-to-create-a-sitemap-xml-for-magento-1-x.md)or [Magento 2](../../ecommerce-applications/magento-2/how-to-create-a-sitemap-xml-for-magento-2-x.md). +- Test if [you can easily download the robots.txt file](../../ecommerce-applications/magento-1/how-to-create-a-robots-txt-for-your-magento-1-shop.md) (Or for [Magento 2](../../ecommerce-applications/magento-2/how-to-create-a-robots-txt-for-magento-2-x.md)). - Test product and price import and export routines. - Test product push mechanisms for search engines. -If every box has been checked, you can change the DNS settings of your original domain to Hypernode. Instructions on how to do this, can be found in the article [Go Live With Your Hypernode.](https://support.hypernode.com/en/best-practices/testing/how-to-go-live-with-your-hypernode) +If every box has been checked, you can change the DNS settings of your original domain to Hypernode. Instructions on how to do this, can be found in the article [Go Live With Your Hypernode.](../../best-practices/testing/how-to-go-live-with-your-hypernode.md) diff --git a/docs/best-practices/testing/how-to-go-live-with-your-hypernode.md b/docs/best-practices/testing/how-to-go-live-with-your-hypernode.md index 3fc5c9d2..dc618f52 100644 --- a/docs/best-practices/testing/how-to-go-live-with-your-hypernode.md +++ b/docs/best-practices/testing/how-to-go-live-with-your-hypernode.md @@ -5,6 +5,7 @@ myst: it's time to go live. Follow these steps for a smooth transition. redirect_from: - /en/best-practices/testing/how-to-go-live-with-your-hypernode/ + - /knowledgebase/go-live-with-your-hypernode/ --- @@ -89,7 +90,7 @@ To add a new vhost, for example the domainname [www.example.com](http://www.exam Please note that defining the vhosts '[www.example.com](http://www.example.com)', does not automatically add 'example.com' as a vhost. You will have to manually define a vhost for this. Since most people simply want their 'example.com' to redirect to '[www.example.com](http://www.example.com)', you can simply use the `--type wwwizer` argument to set this up. This will configure the vhost to redirect all traffic to the www-version of the domain. -Read more about Hypernode Managed Vhosts in [this article](https://support.hypernode.com/en/hypernode/nginx/hypernode-managed-vhosts). +Read more about Hypernode Managed Vhosts in [this article](../../hypernode-platform/nginx/hypernode-managed-vhosts.md). ## Step 8: Change DNS Records @@ -115,7 +116,7 @@ As there are situations you cannot benefit from a dedicated IP on Hypernode, ple ### Setting up DNS records to send mail from your Hypernode -Please follow [this article](https://support.hypernode.com/en/hypernode/email/how-to-set-up-your-dns-for-outgoing-email) on how to setup your DNS to send mail from your Hypernode. +Please follow [this article](../../hypernode-platform/email/how-to-set-up-your-dns-for-outgoing-email.md) on how to setup your DNS to send mail from your Hypernode. Note that **4**different DNS records have to added or adjusted. @@ -129,19 +130,19 @@ The following example allows mail from both your mail exchangers and all your Hy mydomain.com TXT v=spf1 mx:mydomain.com include:spf.appname.hypernode.io ~all ``` -For more information have a look at [our article about SPF records](https://support.hypernode.com/knowledgebase/using-spf-hypernode/). +For more information have a look at [our article about SPF records](../../hypernode-platform/dns/how-to-set-up-your-spf-records-for-hypernode.md). ## Step 9: Configure SSL Enable SSL for your shop for safety and to improve search engine optimisation. -You can find a detailed how to in [this article](https://support.hypernode.com/knowledgebase/configuring-shop-use-https/)about configuring SSL on your shop. +You can find a detailed how-to in [this article](../../hypernode-platform/nginx/how-to-configure-your-shop-to-only-use-https.md) about configuring SSL on your shop. ## Step 10: Configure Cron Configure cron jobs to run on your Hypernode (`crontab -e`), and configure them not to run on your old host (`crontab -ir`). -Note that the time on Hypernode is configured to UTC, so the times used in the crontab are one or two hours later than Central European Time. More information about cronjobs can be found in [Configure Cronjobs on Hypernode](https://support.hypernode.com/en/hypernode/tools/how-to-use-periodic-tasks-cronjobs-on-hypernode). +Note that the time on Hypernode is configured to UTC, so the times used in the crontab are one or two hours later than Central European Time. More information about cronjobs can be found in [Configure Cronjobs on Hypernode](../../hypernode-platform/tools/how-to-use-periodic-tasks-cronjobs-on-hypernode.md). ## Step 11: Configure Backups on Hypernode (Optional) diff --git a/docs/best-practices/testing/hypernode-docker.md b/docs/best-practices/testing/hypernode-docker.md index 16c8e847..f77797ef 100644 --- a/docs/best-practices/testing/hypernode-docker.md +++ b/docs/best-practices/testing/hypernode-docker.md @@ -6,6 +6,7 @@ myst: it here. redirect_from: - /en/best-practices/testing/hypernode-docker/ + - /knowledgebase/hypernode-docker/ --- @@ -18,7 +19,7 @@ Interested in a case study? Read [this article](https://blog.guapa.nl/local-deve ## About the Hypernode Docker Image -We build this image multiple times a day (every time we do a [release](https://support.hypernode.com/category/changelog/)) by applying our configuration management on the [phusion/baseimage-docker](https://github.com/phusion/baseimage-docker) ['fat' container](https://blog.phusion.nl/2015/01/20/baseimage-docker-fat-containers-treating-containers-vms/). By treating the Docker as a lightweight VM instead of as a vehicle for a single process we stay close to what an actual Hypernode actually looks like. No micro-services or a multi-container application, but a single instance with minimal network overhead and all batteries included. +We build this image multiple times a day (every time we do a [release](https://changelog.hypernode.com/)) by applying our configuration management on the [phusion/baseimage-docker](https://github.com/phusion/baseimage-docker) ["fat" container](https://blog.phusion.nl/2015/01/20/baseimage-docker-fat-containers-treating-containers-vms/). By treating the Docker as a lightweight VM instead of as a vehicle for a single process we stay close to what an actual Hypernode actually looks like. No micro-services or a multi-container application, but a single instance with minimal network overhead and all batteries included. The `hypernode-docker` image has SSH, PHP, NGINX, MySQL, Redis, Varnish and Elasticsearch. The biggest difference between a real Hypernode and this container is that this environment does not have an [init system](https://en.wikipedia.org/wiki/Init). While it is possible to [run systemd within a Docker Container](https://developers.redhat.com/blog/2014/05/05/running-systemd-within-docker-container/) if the host is also runs [systemd](https://www.freedesktop.org/wiki/Software/systemd/), we choose not to do so to achieve greater compatibility and user-friendliness. @@ -64,13 +65,13 @@ hypernode-importer --host yourhypernode.hypernode.io --path /data/web/public --s To see the container in your browser you should change the base-url to “[http://127.0.0.1:8080/”](http://127.0.0.1:8080/%E2%80%9D) and don’t forget to flush your cache afterwards: -#### **Magento 1**[How to change base-urls in Magento 1](https://support.hypernode.com/knowledgebase/change-baseurl-magento1/#Configuring_your_base_URL8217s_using_SSH) +#### **Magento 1**[How to change base-urls in Magento 1](../../ecommerce-applications/magento-1/how-to-change-the-base-url-in-magento-1-x.md) ``` magerun ca:fl ``` -#### **Magento 2**[How to change base-url in Magento 2](https://support.hypernode.com/en/ecommerce/magento-2/how-to-change-your-magento-2-base-urls) +#### **Magento 2**[How to change base-url in Magento 2](../../ecommerce-applications/magento-2/how-to-change-your-magento-2-base-urls.md) ``` magerun ca:fl @@ -289,9 +290,9 @@ app@e4b7d958e69c:~$ ls /etc/hypernode/is_docker /etc/hypernode/is_docker ``` -5. +5. Import application -Run the [hypernode-importer](https://support.hypernode.com/knowledgebase/migrating-your-magento-to-hypernode/#Option_2_Migrate_your_shop_via_Shell_using_hypernode-importer_8211_Magento_1_2) to import a shop from a real Hypernode: +Run the [hypernode-importer](../../hypernode-platform/tools/how-to-migrate-your-shop-to-hypernode.md#option-2-for-all-customers-migrate-your-shop-via-shell-using-the-hypernode-importer) to import a shop from a real Hypernode: ``` hypernode-importer --host yourhypernode.hypernode.io --path /data/web/public --set-default-url diff --git a/docs/best-practices/usage/how-to-handle-composer-memory-issues.md b/docs/best-practices/usage/how-to-handle-composer-memory-issues.md index 876fa9f9..d1f82242 100644 --- a/docs/best-practices/usage/how-to-handle-composer-memory-issues.md +++ b/docs/best-practices/usage/how-to-handle-composer-memory-issues.md @@ -62,7 +62,7 @@ The Magento 2 crons are also quite heavy processes which will acquire their peac - Check the proceses which consume the most memory with htop -It is possible you'll see quite some "queue:consumers" processes. These all together could require a lot of memory as well. After disabling the Magento crons you could [track down those processes and kill them](https://support.hypernode.com/en/troubleshooting/performance/how-to-identify-and-stop-long-running-processes#Long-Running-SSH-Process) to free the memory. Do note that those processes will be starting again next minute if the Magento crons are enabled. +It is possible you'll see quite some "queue:consumers" processes. These all together could require a lot of memory as well. After disabling the Magento crons you could [track down those processes and kill them](../../troubleshooting/performance/how-to-identify-and-stop-long-running-processes.md#long-running-ssh-process) to free the memory. Do note that those processes will be starting again next minute if the Magento crons are enabled. Check your list of processes with htop to see if there are any other processes that are unnecessary claiming a lot of memory. This is something you'd have to think of carefully before just killing them, this can differ per server. diff --git a/docs/conf.py b/docs/conf.py index cc9faf39..236eca38 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -91,4 +91,4 @@ notfound_no_urls_prefix = True -myst_heading_anchors = 4 +myst_heading_anchors = 5 diff --git a/docs/ecommerce-applications/akeneo/how-to-install-akeneo-3-on-hypernode.md b/docs/ecommerce-applications/akeneo/how-to-install-akeneo-3-on-hypernode.md index da5982be..d310ad1a 100644 --- a/docs/ecommerce-applications/akeneo/how-to-install-akeneo-3-on-hypernode.md +++ b/docs/ecommerce-applications/akeneo/how-to-install-akeneo-3-on-hypernode.md @@ -16,7 +16,7 @@ Akeneo 3 preferably requires a Hypernode Pelican L, Falcon M, Eagle M hosting pl ## Enable managed_vhosts -All new Hypernodes (from April 2020) will automatically be booted with [Hypernode Managed Vhosts](https://support.hypernode.com/en/hypernode/nginx/hypernode-managed-vhosts). If you already have an older Hypernode, then you need to enable Hypernode Managed Vhosts by running the following command: +All new Hypernodes (from April 2020) will automatically be booted with [Hypernode Managed Vhosts](../../hypernode-platform/nginx/hypernode-managed-vhosts.md). If you already have an older Hypernode, then you need to enable Hypernode Managed Vhosts by running the following command: ```bash hypernode-systemctl settings managed_vhosts_enabled True @@ -40,7 +40,7 @@ hypernode-systemctl settings mysql_version 5.7 ## Upgrade Your PHP Version to 7.2 -Before installing Akeneo, make sure your [PHP version](https://support.hypernode.com/knowledgebase/php-versions-magento-shop-hypernode/#How_to_change_a_PHP_version_on_Hypernode) is changed to `PHP 7.2`. +Before installing Akeneo, make sure your [PHP version](../../hypernode-platform/php/supported-php-versions-and-how-to-change-them-on-hypernode.md#changing-the-php-version-you-use-on-hypernode) is changed to `PHP 7.2`. ```bash hypernode-systemctl settings php_version 7.2 @@ -133,7 +133,7 @@ tar zvxf akeneo.tar.gz -C ~/akeneo/ #### Setting up Akeneo -First change the MySQL username and password in `~/akeneo/pim-community-standard/app/config/parameters.yml` to your own [credentials](https://support.hypernode.com/knowledgebase/using-mysql-on-hypernode/#Finding_your_credentials). +First change the MySQL username and password in `~/akeneo/pim-community-standard/app/config/parameters.yml` to your own [credentials](../../hypernode-platform/mysql/how-to-use-mysql-on-hypernode.md#finding-your-credentials). ```bash mysql -e "create database akeneo_pim;" diff --git a/docs/ecommerce-applications/akeneo/how-to-install-akeneo-4-on-hypernode.md b/docs/ecommerce-applications/akeneo/how-to-install-akeneo-4-on-hypernode.md index 4d3657c5..06450630 100644 --- a/docs/ecommerce-applications/akeneo/how-to-install-akeneo-4-on-hypernode.md +++ b/docs/ecommerce-applications/akeneo/how-to-install-akeneo-4-on-hypernode.md @@ -6,6 +6,7 @@ myst: Akeneo 4 manually. redirect_from: - /en/ecommerce/akeneo/how-to-install-akeneo-4-on-hypernode/ + - /knowledgebase/installing-akeneo-4/ --- @@ -16,7 +17,7 @@ Akeneo 4 preferably requires a Hypernode Pelican L, Falcon M, Eagle M hosting pl ## Enable managed_vhosts -All new Hypernodes (from April 2020) will automatically be booted with [Hypernode Managed Vhosts](https://support.hypernode.com/en/hypernode/nginx/hypernode-managed-vhosts). If you already have an older Hypernode, then you need to enable Hypernode Managed Vhosts by running the following command: +All new Hypernodes (from April 2020) will automatically be booted with [Hypernode Managed Vhosts](../../hypernode-platform/nginx/hypernode-managed-vhosts.md). If you already have an older Hypernode, then you need to enable Hypernode Managed Vhosts by running the following command: ```bash hypernode-systemctl settings managed_vhosts_enabled True @@ -67,7 +68,7 @@ hypernode-systemctl settings mysql_version 8.0 ## Upgrade Your PHP Version to 7.3 -Before installing Akeneo, make sure your [PHP version](https://support.hypernode.com/knowledgebase/php-versions-magento-shop-hypernode/#How_to_change_a_PHP_version_on_Hypernode) is changed to `PHP 7.3`. +Before installing Akeneo, make sure your [PHP version](../../hypernode-platform/php/supported-php-versions-and-how-to-change-them-on-hypernode.md#changing-the-php-version-you-use-on-hypernode) is changed to `PHP 7.3`. ```bash hypernode-systemctl settings php_version 7.3 diff --git a/docs/ecommerce-applications/akeneo/how-to-install-akeneo-5-on-hypernode.md b/docs/ecommerce-applications/akeneo/how-to-install-akeneo-5-on-hypernode.md index 6b466756..7fa86d9d 100644 --- a/docs/ecommerce-applications/akeneo/how-to-install-akeneo-5-on-hypernode.md +++ b/docs/ecommerce-applications/akeneo/how-to-install-akeneo-5-on-hypernode.md @@ -16,7 +16,7 @@ Akeneo 5 preferably requires a Hypernode Pelican L, Falcon M, Eagle M hosting pl ## Enable managed_vhosts -All new Hypernodes (from April 2020) will automatically be booted with [Hypernode Managed Vhosts](https://support.hypernode.com/en/hypernode/nginx/hypernode-managed-vhosts). If you already have an older Hypernode, then you need to enable Hypernode Managed Vhosts by running the following command: +All new Hypernodes (from April 2020) will automatically be booted with [Hypernode Managed Vhosts](../../hypernode-platform/nginx/hypernode-managed-vhosts.md). If you already have an older Hypernode, then you need to enable Hypernode Managed Vhosts by running the following command: ```bash hypernode-systemctl settings managed_vhosts_enabled True @@ -67,7 +67,7 @@ hypernode-systemctl settings mysql_version 8.0 ## Upgrade Your PHP Version to 7.4 -Before installing Akeneo, make sure your [PHP version](https://support.hypernode.com/knowledgebase/php-versions-magento-shop-hypernode/#How_to_change_a_PHP_version_on_Hypernode) is changed to `PHP 7.4`. +Before installing Akeneo, make sure your [PHP version](../../hypernode-platform/php/supported-php-versions-and-how-to-change-them-on-hypernode.md#changing-the-php-version-you-use-on-hypernode) is changed to `PHP 7.4`. ```bash hypernode-systemctl settings php_version 7.4 diff --git a/docs/ecommerce-applications/akeneo/how-to-install-akeneo-6-on-hypernode.md b/docs/ecommerce-applications/akeneo/how-to-install-akeneo-6-on-hypernode.md index 5c721d6c..48a6798b 100644 --- a/docs/ecommerce-applications/akeneo/how-to-install-akeneo-6-on-hypernode.md +++ b/docs/ecommerce-applications/akeneo/how-to-install-akeneo-6-on-hypernode.md @@ -11,7 +11,7 @@ Akeneo 6 preferably requires a Hypernode Pelican L, Falcon M, Eagle M hosting pl ## Enable managed_vhosts -All new Hypernodes (from April 2020) will automatically be booted with [Hypernode Managed Vhosts](https://support.hypernode.com/en/hypernode/nginx/hypernode-managed-vhosts). If you already have an older Hypernode, then you need to enable Hypernode Managed Vhosts by running the following command: +All new Hypernodes (from April 2020) will automatically be booted with [Hypernode Managed Vhosts](../../hypernode-platform/nginx/hypernode-managed-vhosts.md). If you already have an older Hypernode, then you need to enable Hypernode Managed Vhosts by running the following command: ```bash hypernode-systemctl settings managed_vhosts_enabled True @@ -62,7 +62,7 @@ hypernode-systemctl settings mysql_version 8.0 ## Upgrade Your PHP Version to 8.0 -Before installing Akeneo, make sure your [PHP version](https://support.hypernode.com/knowledgebase/php-versions-magento-shop-hypernode/#How_to_change_a_PHP_version_on_Hypernode) is changed to `PHP 7.4`. +Before installing Akeneo, make sure your [PHP version](../../hypernode-platform/php/supported-php-versions-and-how-to-change-them-on-hypernode.md#changing-the-php-version-you-use-on-hypernode) is changed to `PHP 7.4`. ```bash hypernode-systemctl settings php_version 8.0 diff --git a/docs/ecommerce-applications/akeneo/how-to-use-a-basic-staging-environment-with-akeneo-3.md b/docs/ecommerce-applications/akeneo/how-to-use-a-basic-staging-environment-with-akeneo-3.md index 31fcbe59..539b33d7 100644 --- a/docs/ecommerce-applications/akeneo/how-to-use-a-basic-staging-environment-with-akeneo-3.md +++ b/docs/ecommerce-applications/akeneo/how-to-use-a-basic-staging-environment-with-akeneo-3.md @@ -11,7 +11,7 @@ redirect_from: # How To Use A Basic Staging Environment with Akeneo 3 -Hypernode offers a staging environment so it can be used as a sandbox for your Akeneo PIM project. Please keep in mind that your staging environment for Akeneo shares resources (disk, CPU, memory) with your production environment. It’s also possible to order a [development plan](https://support.hypernode.com/knowledgebase/development-plans-for-your-magento-shop/) instead, so your production environment will not be affected. Once again a big thank you to our partner [Experius](https://www.experius.nl/) for contributing to this article! +Hypernode offers a staging environment so it can be used as a sandbox for your Akeneo PIM project. Please keep in mind that your staging environment for Akeneo shares resources (disk, CPU, memory) with your production environment. It’s also possible to order a [development plan](../../hypernode-platform/tools/how-to-use-hypernode-development-plans.md) instead, so your production environment will not be affected. Once again a big thank you to our partner [Experius](https://www.experius.nl/) for contributing to this article! ## Update managed_vhosts diff --git a/docs/ecommerce-applications/akeneo/how-to-use-a-basic-staging-environment-with-akeneo-4-and-5.md b/docs/ecommerce-applications/akeneo/how-to-use-a-basic-staging-environment-with-akeneo-4-and-5.md index 70633d24..5d957bdc 100644 --- a/docs/ecommerce-applications/akeneo/how-to-use-a-basic-staging-environment-with-akeneo-4-and-5.md +++ b/docs/ecommerce-applications/akeneo/how-to-use-a-basic-staging-environment-with-akeneo-4-and-5.md @@ -11,7 +11,7 @@ redirect_from: # How To Use A Basic Staging Environment with Akeneo 4 and 5 -Hypernode offers a staging environment so it can be used as a sandbox for your Akeneo PIM project. Please keep in mind that your staging environment for Akeneo shares resources (disk, CPU, memory) with your production environment. It’s also possible to order a [development plan](https://support.hypernode.com/knowledgebase/development-plans-for-your-magento-shop/) instead, so your production environment will not be affected. +Hypernode offers a staging environment so it can be used as a sandbox for your Akeneo PIM project. Please keep in mind that your staging environment for Akeneo shares resources (disk, CPU, memory) with your production environment. It’s also possible to order a [development plan](../../hypernode-platform/tools/how-to-use-hypernode-development-plans.md) instead, so your production environment will not be affected. ## Create a vhost diff --git a/docs/ecommerce-applications/magento-1/how-to-change-the-base-url-in-magento-1-x.md b/docs/ecommerce-applications/magento-1/how-to-change-the-base-url-in-magento-1-x.md index 4a275d17..70382138 100644 --- a/docs/ecommerce-applications/magento-1/how-to-change-the-base-url-in-magento-1-x.md +++ b/docs/ecommerce-applications/magento-1/how-to-change-the-base-url-in-magento-1-x.md @@ -5,13 +5,14 @@ myst: storefronts. Find detailed instructions for each in this article. ' redirect_from: - /en/ecommerce/magento-1/how-to-change-the-base-url-in-magento-1-x/ + - /knowledgebase/change-baseurl-magento1/ --- # How to Change the Base URL in Magento 1.x -*Information about how to change the Base URL in Magento 2.x can be found [here](https://support.hypernode.com/en/ecommerce/magento-2/how-to-change-your-magento-2-base-urls)* +*Information about how to change the Base URL in Magento 2.x can be found [here](../../ecommerce-applications/magento-2/how-to-change-your-magento-2-base-urls.md)* There are several ways to change the Base URL of your Magento 1.x storefronts. Below we will provide you with instructions for each of these ways. @@ -28,7 +29,7 @@ There are several ways to change the Base URL of your Magento 1.x storefronts. B ### Change the Base URL via phpMyAdmin -- Login to [phpMyAdmin](https://support.hypernode.com/knowledgebase/use-phpmyadmin/) +- Login to [phpMyAdmin](../../hypernode-platform/mysql/how-to-use-phpmyadmin.md) - Select the database you're using for Magento and open the table `core_config_data` - Click in the top navigation bar on `SQL` - Change the command to `SELECT * FROM `core_config_data` WHERE path like '%web%secure%'` and click on `Go` diff --git a/docs/ecommerce-applications/magento-1/how-to-clean-the-magento-1-x-logs.md b/docs/ecommerce-applications/magento-1/how-to-clean-the-magento-1-x-logs.md index a7ba2209..5c890d0e 100644 --- a/docs/ecommerce-applications/magento-1/how-to-clean-the-magento-1-x-logs.md +++ b/docs/ecommerce-applications/magento-1/how-to-clean-the-magento-1-x-logs.md @@ -6,6 +6,7 @@ myst: 1.x logs here. redirect_from: - /en/ecommerce/magento-1/how-to-clean-the-magento-1-x-logs/ + - /knowledgebase/magento-log-cleaning/ --- diff --git a/docs/ecommerce-applications/magento-1/how-to-configure-redis-for-magento-1.md b/docs/ecommerce-applications/magento-1/how-to-configure-redis-for-magento-1.md index 0312b32b..e779dce7 100644 --- a/docs/ecommerce-applications/magento-1/how-to-configure-redis-for-magento-1.md +++ b/docs/ecommerce-applications/magento-1/how-to-configure-redis-for-magento-1.md @@ -6,6 +6,7 @@ myst: works. redirect_from: - /en/ecommerce/magento-1/how-to-configure-redis-for-magento-1/ + - /knowledgebase/configure-sessions-redis-magento1/ --- @@ -14,9 +15,9 @@ redirect_from: Redis is a caching method which can increase the speed of the backend and frontend of your shop. On Hypernode every customer has access to Redis cache, starting from 64 MB, depending on the plan. This article will explain how to configure Redis on your Magento 1 shop on Hypernode and how to work with redis-cli. -**NB: When you used the [hypernode-importer](https://support.hypernode.com/en/hypernode/tools/how-to-migrate-your-shop-to-hypernode "Migrate your Magento to Hypernode") and you were already using Redis you don't have to follow this tutorial.** +**NB: When you used the [hypernode-importer](../../hypernode-platform/tools/how-to-migrate-your-shop-to-hypernode.md#how-to-migrate-your-shop-to-hypernode) and you were already using Redis you don't have to follow this tutorial.** -Want to know how to configure Redis in Magento 2? Have a look at [this article](https://support.hypernode.com/knowledgebase/configure-redis-magento2/)! +Want to know how to configure Redis in Magento 2? Have a look at [this article](../../ecommerce-applications/magento-2/how-to-configure-redis-for-magento-2.md)! ## Setup Redis by Changing your local.xml File @@ -217,4 +218,4 @@ This will flush out all available Redis databases. Please keep in mind that this As you know, the sessions of your webshop can also be stored in Redis. If you use Redis caching and store the sessions in Redis as well, you’ll have to share the available Redis memory. This shouldn’t be a problem on a regular basis, however we’ve seen scenarios wherein a shop stores its sessions in Redis and had some aggressive bots/crawlers visiting the shop. This resulted in a much larger amount of sessions to be stored in Redis than usual which is causing the Redis memory to fill up in no time, and crashes Redis. -You can check the bot traffic on your shop at any time on MageReport. If you want to get a more detailed insight in the bot traffic you can use the command `pnl --yesterday --php --bots --fields ua | sort | uniq -c | sort -n` to get an overview of the top 10 bots that visited your webshop yesterday. For more information about abuse bot check our [article](https://support.hypernode.com/knowledgebase/fixing-bad-performance-caused-by-search-engines/). +You can check the bot traffic on your shop at any time on MageReport. If you want to get a more detailed insight in the bot traffic you can use the command `pnl --yesterday --php --bots --fields ua | sort | uniq -c | sort -n` to get an overview of the top 10 bots that visited your webshop yesterday. For more information about abuse bot check our [article](../../best-practices/performance/how-to-fix-performance-issues-caused-by-bots-and-crawlers.md). diff --git a/docs/ecommerce-applications/magento-1/how-to-configure-varnish-for-magento-1-x.md b/docs/ecommerce-applications/magento-1/how-to-configure-varnish-for-magento-1-x.md index ece4f80d..cd30c297 100644 --- a/docs/ecommerce-applications/magento-1/how-to-configure-varnish-for-magento-1-x.md +++ b/docs/ecommerce-applications/magento-1/how-to-configure-varnish-for-magento-1-x.md @@ -5,15 +5,16 @@ myst: in order to boost your Magento shop. redirect_from: - /en/ecommerce/magento-1/how-to-configure-varnish-for-magento-1-x/ + - /knowledgebase/varnish-on-magento1/ --- # How to Configure Varnish for Magento 1.x -Customers with Hypernode Pelican, Falcon (formerly known as Professional) and Eagle (formerly known as Excellence) plans can use Varnish to boost their Magento shop. To manage and configure Varnish for Magento 1.x you’ll need Turpentine. This article explains how you can configure Varnish for your Hypernode. Do you have a Magento 2.x shop, please check [this article](https://support.hypernode.com/en/ecommerce/magento-2/how-to-configure-varnish-for-magento-2-x) +Customers with Hypernode Pelican, Falcon (formerly known as Professional) and Eagle (formerly known as Excellence) plans can use Varnish to boost their Magento shop. To manage and configure Varnish for Magento 1.x you’ll need Turpentine. This article explains how you can configure Varnish for your Hypernode. Do you have a Magento 2.x shop, please check [this article](../../ecommerce-applications/magento-2/how-to-configure-varnish-for-magento-2-x.md) -Although Varnish is extremely awesome when it get's to speeding up websites, Varnish is a complex technique that needs some experience to set it up. Don't implement Varnish on production nodes while still under development but use [development node](https://support.hypernode.com/knowledgebase/development-plans-for-your-magento-shop/) or a local staging environment like the [Hypernode Docker](https://support.hypernode.com/en/best-practices/testing/hypernode-docker) instead. +Although Varnish is extremely awesome when it get's to speeding up websites, Varnish is a complex technique that needs some experience to set it up. Don't implement Varnish on production nodes while still under development but use [development node](../../hypernode-platform/tools/how-to-use-hypernode-development-plans.md) or a local staging environment like the [Hypernode Docker](../../best-practices/testing/hypernode-docker.md) instead. ## Table of Contents @@ -34,7 +35,7 @@ Before installing Turpentine we recommend enabling Varnish on your Hypernode usi ### All Customers: Via the hypernode-systemctl CLI Tool -Activating Varnish and set which version to use on your Hypernode can be done via the [hypernode-systemctl tool](https://support.hypernode.com/knowledgebase/hypernode-systemctl-cli-tool/). +Activating Varnish and set which version to use on your Hypernode can be done via the [hypernode-systemctl tool](../../hypernode-platform/tools/how-to-use-the-hypernode-systemctl-cli-tool.md). ### Dutch Customers: Via Your Service Panel @@ -97,8 +98,8 @@ We highly recommend you to test Varnish on a staging environment first. This way There are 2 ways to create a Hypernode staging environment for testing Varnish; -1. [Hypernode development plan](https://support.hypernode.com/knowledgebase/development-plans-for-your-magento-shop/) -1. The [Hypernode Docker](https://support.hypernode.com/en/best-practices/testing/hypernode-docker) +1. [Hypernode development plan](../../hypernode-platform/tools/how-to-use-hypernode-development-plans.md) +1. The [Hypernode Docker](../../best-practices/testing/hypernode-docker.md) We recommend you to use a development node (which can be cancelled any time). **A basic staging environment doesn’t work well with Varnish.** @@ -140,4 +141,4 @@ HTTP/1.1 200 0.79 secs: 14856 bytes ==> /vogelbekdier.html ## Troubleshooting -If your Varnish setup is not working over SSL, check [this article.](https://support.hypernode.com/en/hypernode/ssl/how-to-use-ssl-certificates-on-your-hypernode-when-ordered-via-byte-nl#Redirecting-to-HTTPS-When-Using-Varnish) +If your Varnish setup is not working over SSL, check [this article](../../hypernode-platform/ssl/how-to-use-ssl-certificates-on-your-hypernode-when-ordered-via-hypernode-nl.md#redirecting-to-https-when-using-varnish). diff --git a/docs/ecommerce-applications/magento-1/how-to-create-a-robots-txt-for-your-magento-1-shop.md b/docs/ecommerce-applications/magento-1/how-to-create-a-robots-txt-for-your-magento-1-shop.md index 1030828d..0389ba2e 100644 --- a/docs/ecommerce-applications/magento-1/how-to-create-a-robots-txt-for-your-magento-1-shop.md +++ b/docs/ecommerce-applications/magento-1/how-to-create-a-robots-txt-for-your-magento-1-shop.md @@ -6,6 +6,7 @@ myst: storefront(s). redirect_from: - /en/ecommerce/magento-1/how-to-create-a-robots-txt-for-your-magento-1-shop/ + - /knowledgebase/create-robots-txt-magento1/ --- diff --git a/docs/ecommerce-applications/magento-1/how-to-create-a-sitemap-xml-for-magento-1-x.md b/docs/ecommerce-applications/magento-1/how-to-create-a-sitemap-xml-for-magento-1-x.md index eb50a437..a1b4a68d 100644 --- a/docs/ecommerce-applications/magento-1/how-to-create-a-sitemap-xml-for-magento-1-x.md +++ b/docs/ecommerce-applications/magento-1/how-to-create-a-sitemap-xml-for-magento-1-x.md @@ -16,7 +16,7 @@ redirect_from: ### Configure Magento to Create Sitemaps - To enable sitemaps inside Magento, log in to your admin -- Make sure your [crontab is working properly](https://support.hypernode.com/knowledgebase/configure-cronjobs-on-hypernode/) +- Make sure your [crontab is working properly](../../hypernode-platform/tools/how-to-use-periodic-tasks-cronjobs-on-hypernode.md) - Navigate to `System` > `Configuration` > `Catalog` > `Google Sitemap` > `Generation Settings` Now fill in the information: diff --git a/docs/ecommerce-applications/magento-1/how-to-enable-the-magento-1-api.md b/docs/ecommerce-applications/magento-1/how-to-enable-the-magento-1-api.md index fb4de824..9e94f474 100644 --- a/docs/ecommerce-applications/magento-1/how-to-enable-the-magento-1-api.md +++ b/docs/ecommerce-applications/magento-1/how-to-enable-the-magento-1-api.md @@ -32,4 +32,4 @@ location /api { } ``` -NB: If you don’t want to update IP addresses in all config files with every change of IP address, you can choose to use [**include files**](https://support.hypernode.com/knowledgebase/create-reusable-config-for-custom-snippets/). +NB: If you don’t want to update IP addresses in all config files with every change of IP address, you can choose to use [**include files**](../../hypernode-platform/nginx/how-to-create-a-reusable-config-to-include-in-custom-snippets.md). diff --git a/docs/ecommerce-applications/magento-1/how-to-fix-soap-error-parsing-wsdl-couldnt-load-from-failed-to-load-external-entity.md b/docs/ecommerce-applications/magento-1/how-to-fix-soap-error-parsing-wsdl-couldnt-load-from-failed-to-load-external-entity.md index 29f80142..caeb3986 100644 --- a/docs/ecommerce-applications/magento-1/how-to-fix-soap-error-parsing-wsdl-couldnt-load-from-failed-to-load-external-entity.md +++ b/docs/ecommerce-applications/magento-1/how-to-fix-soap-error-parsing-wsdl-couldnt-load-from-failed-to-load-external-entity.md @@ -6,6 +6,7 @@ myst: \ to Fix SOAP errors." redirect_from: - /en/ecommerce/magento-1/how-to-fix-soap-error-parsing-wsdl-couldn-t-load-from-failed-to-load-external-entity/ + - /knowledgebase/soap-error-parsing-wsdl-couldnt-load-failed-load-external-entity/ --- @@ -43,7 +44,7 @@ If you are not able to `curl` for the WSDL, chances are high that this may be th ## Check If the User Agent of the SOAP Client Is Rate Limited -If the source IP of the SOAP client is [rate limited](https://support.hypernode.com/knowledgebase/resolving-429-many-requests/), find the corresponding rate limit `zone` in `/var/log/nginx/access.log` and add the user agent to the user agent mapping or the IP rate limit whitelist. +If the source IP of the SOAP client is [rate limited](../../hypernode-platform/nginx/how-to-resolve-rate-limited-requests-429-too-many-requests.md), find the corresponding rate limit `zone` in `/var/log/nginx/access.log` and add the user agent to the user agent mapping or the IP rate limit whitelist. ## Check If the IP of the Server Is Allowed to Make HTTP Requests diff --git a/docs/ecommerce-applications/magento-1/how-to-flush-the-wsdl-cache.md b/docs/ecommerce-applications/magento-1/how-to-flush-the-wsdl-cache.md index cab49df8..24aefc81 100644 --- a/docs/ecommerce-applications/magento-1/how-to-flush-the-wsdl-cache.md +++ b/docs/ecommerce-applications/magento-1/how-to-flush-the-wsdl-cache.md @@ -23,4 +23,4 @@ This can be resolved in some cases by removing the WSDL cache file so this file rm /tmp/wsdl-* ``` -**NB: This does not solve the following error: `SOAP error: Parsing WSDL: Couldn’t load from "": failed to load external entity.` This error is related to [Magento not being able to access it’s own API](https://support.hypernode.com/knowledgebase/soap-error-parsing-wsdl-couldnt-load-failed-load-external-entity/)** +**NB: This does not solve the following error: `SOAP error: Parsing WSDL: Couldn’t load from "": failed to load external entity.` This error is related to [Magento not being able to access its own API](../../ecommerce-applications/magento-1/how-to-fix-soap-error-parsing-wsdl-couldnt-load-from-failed-to-load-external-entity.md)** diff --git a/docs/ecommerce-applications/magento-1/how-to-install-magento-1-on-hypernode.md b/docs/ecommerce-applications/magento-1/how-to-install-magento-1-on-hypernode.md index b7d10923..d8794bd1 100644 --- a/docs/ecommerce-applications/magento-1/how-to-install-magento-1-on-hypernode.md +++ b/docs/ecommerce-applications/magento-1/how-to-install-magento-1-on-hypernode.md @@ -13,13 +13,13 @@ redirect_from: Although Magento 1 has been End of Life since June 30 2020, it is still possible to host your Magento 1 store at Hypernode by using OpenMage. OpenMage is a free of charge fork of Magento 1, and allows store owners to continue the use of Magento 1 as a stable and secure eCommerce platform for the next years to come. -OpenMage can be installed by using their [documentation](https://www.openmage.org/magento-lts/install.html). Don't implement OpenMage on production nodes without testing OpenMage first on a [Development plan](https://support.hypernode.com/en/hypernode/tools/how-to-use-hypernode-development-plans). +OpenMage can be installed by using their [documentation](https://www.openmage.org/magento-lts/install.html). Don't implement OpenMage on production nodes without testing OpenMage first on a [Development plan](../../hypernode-platform/tools/how-to-use-hypernode-development-plans.md). -Would you rather install the officially supported Magento 2? Installing Magento 2 on Hypernode can be done by following the steps in the article: [Installing Magento 2 on Hypernode](https://support.hypernode.com/en/ecommerce/magento-2/how-to-install-magento-2-on-hypernode) +Would you rather install the officially supported Magento 2? Installing Magento 2 on Hypernode can be done by following the steps in the article: [Installing Magento 2 on Hypernode](../../ecommerce-applications/magento-2/how-to-install-magento-2-on-hypernode.md) ## Cleaning up existing installed software -Before you can install Magento, you first need to ensure you've removed any and all applications installed in /data/web/magento2, or /data/web/public. More information on how to do so can be found in [our documentation about deleting your Magento installation](https://support.hypernode.com/knowledgebase/remove-magento-installation/). +Before you can install Magento, you first need to ensure you've removed any and all applications installed in /data/web/magento2, or /data/web/public. More information on how to do so can be found in [our documentation about deleting your Magento installation](../../ecommerce-applications/magento-1/how-to-remove-your-magento-1-x-installation.md). ## Install our Pre-installed Magento 1 version with ONE command @@ -43,7 +43,7 @@ app@example.hypernode.io:~$ ls -l /data/web/public ### Activate Magento 1 Mode -By default, your Hypernode is configured to use Magento 2. If you wish to instead use Magento 1, disable the [Magento 2 Mode](https://support.hypernode.com/en/ecommerce/magento-2/how-to-install-magento-2-on-hypernode#Activate-Magento-2-Mode). +By default, your Hypernode is configured to use Magento 2. If you wish to instead use Magento 1, disable the [Magento 2 Mode](../../ecommerce-applications/magento-2/how-to-install-magento-2-on-hypernode.md#activate-magento-2-mode). This disables the configuration that is only needed for Magento 2. To do this, run the following command @@ -51,7 +51,7 @@ This disables the configuration that is only needed for Magento 2. To do this, r rm ~/nginx/magento2.flag ``` -You will also need to [configure your vhost](https://support.hypernode.com/en/hypernode/nginx/hypernode-managed-vhosts) to use the magento 1 configuration. +You will also need to [configure your vhost](../../hypernode-platform/nginx/hypernode-managed-vhosts.md) to use the magento 1 configuration. ```bash hypernode-manage-vhosts --type=magento1 example.hypernode.io @@ -115,7 +115,7 @@ magerun install - admin’s email - base url - After this, the script will install Magento for you. -- When the installation is finished, [flush your caches](https://support.hypernode.com/en/ecommerce/magento-1/how-to-flush-the-magento-1-x-caches). +- When the installation is finished, [flush your caches](../../ecommerce-applications/magento-1/how-to-flush-the-magento-1-x-caches.md). - When you’re asked if you want to write the base-url to your .htaccess file, press “n” and the script will reindex all data in your shop. - The installation is complete. @@ -125,12 +125,12 @@ Your shop will now be visible through your Hypernode URL. ### Configure Redis as Cache Backend -Follow the steps mentioned in the article [Configure Redis](https://support.hypernode.com/en/ecommerce/magento-1/how-to-configure-redis-for-magento-1) to configure Redis as your cache backend. +Follow the steps mentioned in the article [Configure Redis](../../ecommerce-applications/magento-1/how-to-configure-redis-for-magento-1.md) to configure Redis as your cache backend. ### Optional: Change Your Base URL -If you wish to change your Base URL, please follow our documentation on changing the [Base URL in Magento 1](https://support.hypernode.com/en/ecommerce/magento-1/how-to-change-the-base-url-in-magento-1-x). +If you wish to change your Base URL, please follow our documentation on changing the [Base URL in Magento 1](../../ecommerce-applications/magento-1/how-to-change-the-base-url-in-magento-1-x.md). ### Optional: Configure Lesti::FPC -If you’d like to use Lesti::FPC on Hypernode, please follow the steps mentioned in article [How to Configure Lesti::FPC](https://support.hypernode.com/en/hypernode/tools/how-to-configure-lesti-fpc). +If you’d like to use Lesti::FPC on Hypernode, please follow the steps mentioned in article [How to Configure Lesti::FPC](../../hypernode-platform/tools/how-to-configure-lesti-fpc.md). diff --git a/docs/ecommerce-applications/magento-1/how-to-set-up-a-staging-environment-for-magento-1.md b/docs/ecommerce-applications/magento-1/how-to-set-up-a-staging-environment-for-magento-1.md index b06175ce..3298e71c 100644 --- a/docs/ecommerce-applications/magento-1/how-to-set-up-a-staging-environment-for-magento-1.md +++ b/docs/ecommerce-applications/magento-1/how-to-set-up-a-staging-environment-for-magento-1.md @@ -22,7 +22,7 @@ This article explains how you set one up on Hypernode for a Magento 1 shop. Keep in mind: -- Your staging environment **shares resources** (disk, CPU, memory) with your production site. If you want to do things such as automated load tests, it is recommended to order a [development plan](https://support.hypernode.com/knowledgebase/development-plans-for-your-magento-shop/) instead, so your production site will not be affected. +- Your staging environment **shares resources** (disk, CPU, memory) with your production site. If you want to do things such as automated load tests, it is recommended to order a [development plan](../../hypernode-platform/tools/how-to-use-hypernode-development-plans.md) instead, so your production site will not be affected. - We don't recommend creating hardlinks from your production media folder to your staging media folder as our backup mechanism does not cope well with hardlinks. ## How Does it Work @@ -152,7 +152,7 @@ htpasswd -bc /data/web/htpasswd-staging hypernode hypernode ``` -Read more [here](https://support.hypernode.com/knowledgebase/protect-a-directory-with-a-password-in-nginx/)about using HTTP basic authentication on Hypernode. +Read more [here](../../hypernode-platform/nginx/how-to-protect-your-magento-store-with-a-password-in-nginx.md) about using HTTP basic authentication on Hypernode. ## Nginx Configuration diff --git a/docs/ecommerce-applications/magento-2/how-to-change-your-magento-2-base-urls.md b/docs/ecommerce-applications/magento-2/how-to-change-your-magento-2-base-urls.md index b1894c07..914b4c1e 100644 --- a/docs/ecommerce-applications/magento-2/how-to-change-your-magento-2-base-urls.md +++ b/docs/ecommerce-applications/magento-2/how-to-change-your-magento-2-base-urls.md @@ -43,13 +43,13 @@ To clear your caches, click the big orange button at the top of the page: ### Configure Your Base URLs Using PHPmyAdmin -As changing the base URLs using PHPmyAdmin works the same for both Magento 1 and Magento 2, take a look at [the Magento 1 article about changing base URLs](https://support.hypernode.com/knowledgebase/change-baseurl-magento1/#Configure_your_base_URLs_usingphpMyAdmin). +As changing the base URLs using PHPmyAdmin works the same for both Magento 1 and Magento 2, take a look at [the Magento 1 article about changing base URLs](../../ecommerce-applications/magento-1/how-to-change-the-base-url-in-magento-1-x.md#change-the-base-url-via-phpmyadmin). ## Configuring Your Base URLs Using SSH ### Change Base URLs Settings With MySQL From the Command Line -To change your base URLs using plain MySQL queries, you can use exactly the same commands as described in [the Magento 1 article](https://support.hypernode.com/knowledgebase/change-baseurl-magento1/#Change_base_URL8217s_settings_with_mysql_from_the_command_line). +To change your base URLs using plain MySQL queries, you can use exactly the same commands as described in [the Magento 1 article](../../ecommerce-applications/magento-1/how-to-change-the-base-url-in-magento-1-x.md#change-the-base-urls-directly-in-mysql-from-the-commandline). ### Change Your Base URL Using n98-magerun2 diff --git a/docs/ecommerce-applications/magento-2/how-to-configure-redis-for-magento-2.md b/docs/ecommerce-applications/magento-2/how-to-configure-redis-for-magento-2.md index 177c7734..ad98646f 100644 --- a/docs/ecommerce-applications/magento-2/how-to-configure-redis-for-magento-2.md +++ b/docs/ecommerce-applications/magento-2/how-to-configure-redis-for-magento-2.md @@ -6,6 +6,9 @@ myst: works. redirect_from: - /en/ecommerce/magento-2/how-to-configure-redis-for-magento-2/ + - /knowledgebase/configure-sessions-redis-magento2/ + - /knowledgebase/configure-redis-magento2/ + - /knowledgebase/setup-php-redis-admin-manage-redis-caches/ --- @@ -14,7 +17,7 @@ redirect_from: Redis is a caching method which can increase the speed of the backend and frontend of your shop. On Hypernode every customer has access to Redis cache, starting from 64 MB, depending on the plan. This article will explain how to configure Redis on your Magento 2 shop on Hypernode and how to work with redis-cli. -Want to know how to configure Redis in Magento 1? Have a look at [this article](https://support.hypernode.com/en/ecommerce/magento-1/how-to-configure-redis-for-magento-1)! +Want to know how to configure Redis in Magento 1? Have a look at [this article](../../ecommerce-applications/magento-1/how-to-configure-redis-for-magento-1.md)! ## Configure Redis Cache for Magento 2 @@ -179,4 +182,4 @@ A more extended how-to about configuring Redis caches can be found on the [Magen As you know, the sessions of your webshop can also be stored in Redis. If you use Redis caching and store the sessions in Redis as well, you'll have to share the available Redis memory. This shouldn't be a problem on a regular basis, however we've seen scenarios wherein a shop stores its sessions in Redis and had some aggressive bots/crawlers visiting the shop. This resulted in a much larger amount of sessions to be stored in Redis than usual which is causing the Redis memory to fill up in no time, and crashes Redis. -You can check the bot traffic on your shop at any time on MageReport. If you want to get a more detailed insight in the bot traffic you can use the command `pnl --yesterday --php --bots --fields ua | sort | uniq -c | sort -n`to get an overview of the top 10 bots that visited your webshop yesterday. For more information about abuse bot check our [article](https://support.hypernode.com/knowledgebase/fixing-bad-performance-caused-by-search-engines/). +You can check the bot traffic on your shop at any time on MageReport. If you want to get a more detailed insight in the bot traffic you can use the command `pnl --yesterday --php --bots --fields ua | sort | uniq -c | sort -n`to get an overview of the top 10 bots that visited your webshop yesterday. For more information about abuse bot check our [article](../../best-practices/performance/how-to-fix-performance-issues-caused-by-bots-and-crawlers.md). diff --git a/docs/ecommerce-applications/magento-2/how-to-configure-varnish-for-magento-2-x.md b/docs/ecommerce-applications/magento-2/how-to-configure-varnish-for-magento-2-x.md index 32882e92..7019d776 100644 --- a/docs/ecommerce-applications/magento-2/how-to-configure-varnish-for-magento-2-x.md +++ b/docs/ecommerce-applications/magento-2/how-to-configure-varnish-for-magento-2-x.md @@ -11,15 +11,15 @@ redirect_from: # How to Configure Varnish for Magento 2.x -Customers with Hypernode Pelican, Falcon (formerly known as Professional) and Eagle (formerly known as Excellence plans can use Varnish to boost their Magento shop. This article explains how you can configure Varnish 4 or 6 for your Hypernode. If you want to know which Varnish version you need to configure, please check the [Magento documentation](https://devdocs.magento.com/guides/v2.4/install-gde/system-requirements.html) first. Do you have a Magento 1 shop, please check [this article](https://support.hypernode.com/knowledgebase/varnish-on-magento1/). +Customers with Hypernode Pelican, Falcon (formerly known as Professional) and Eagle (formerly known as Excellence plans can use Varnish to boost their Magento shop. This article explains how you can configure Varnish 4 or 6 for your Hypernode. If you want to know which Varnish version you need to configure, please check the [Magento documentation](https://devdocs.magento.com/guides/v2.4/install-gde/system-requirements.html) first. Do you have a Magento 1 shop, please check [this article](../../ecommerce-applications/magento-1/how-to-configure-varnish-for-magento-1-x.md). -Although Varnish is extremely awesome when it get's to speeding up websites, Varnish is a complex technique that needs some experience to set it up. Don't implement varnish on production nodes without testing Varnish first on a [development node](https://support.hypernode.com/knowledgebase/development-plans-for-your-magento-shop/) or the [Hypernode Docker](https://support.hypernode.com/en/best-practices/testing/hypernode-docker). +Although Varnish is extremely awesome when it get's to speeding up websites, Varnish is a complex technique that needs some experience to set it up. Don't implement varnish on production nodes without testing Varnish first on a [development node](../../hypernode-platform/tools/how-to-use-hypernode-development-plans.md) or the [Hypernode Docker](../../best-practices/testing/hypernode-docker.md). ## Enable Varnish 4.0 or 6.0 for Magento 2.x As Magento 2 supports Varnish out of the box, there is no need for the turpentine extension anymore in Magento 2. Simply follow the steps below to configure Varnish 4.0 or 6.0 for Magento 2. -**First configure the Varnish version (4.0 or 6.0) via the [hypernode-systemctl tool](https://support.hypernode.com/knowledgebase/hypernode-systemctl-cli-tool/)** +**First configure the Varnish version (4.0 or 6.0) via the [hypernode-systemctl tool](../../hypernode-platform/tools/how-to-use-the-hypernode-systemctl-cli-tool.md)** ```console $ hypernode-systemctl settings varnish_version 4.0 @@ -31,7 +31,7 @@ $ hypernode-systemctl settings varnish_version 4.0 $ hypernode-systemctl settings varnish_version 6.0 ``` -**Enable Varnish via the [hypernode-systemctl tool](https://support.hypernode.com/knowledgebase/hypernode-systemctl-cli-tool/)** +**Enable Varnish via the [hypernode-systemctl tool](../../hypernode-platform/tools/how-to-use-the-hypernode-systemctl-cli-tool.md)** ```console $ hypernode-systemctl settings varnish_enabled true @@ -199,7 +199,7 @@ In our experience the by default generated .vcl from your Magento backend often ## Troubleshooting - If you are receiving `Permission denied` errors while running `varnishadm` or other Varnish CLI commands, and you have just activated Varnish, close any existing ssh sessions, and log back in to reload your updated permissions. -- If your Varnish setup is not working over SSL, check [this article](https://support.hypernode.com/en/hypernode/ssl/how-to-use-ssl-certificates-on-your-hypernode-when-ordered-via-byte-nl#Redirecting-to-HTTPS-When-Using-Varnish) +- If your Varnish setup is not working over SSL, check [this article](../../hypernode-platform/ssl/how-to-use-ssl-certificates-on-your-hypernode-when-ordered-via-hypernode-com.md#redirecting-to-https-when-using-varnish) ### 502 Errors diff --git a/docs/ecommerce-applications/magento-2/how-to-create-a-robots-txt-for-magento-2-x.md b/docs/ecommerce-applications/magento-2/how-to-create-a-robots-txt-for-magento-2-x.md index 5fbea505..e8c5a7bb 100644 --- a/docs/ecommerce-applications/magento-2/how-to-create-a-robots-txt-for-magento-2-x.md +++ b/docs/ecommerce-applications/magento-2/how-to-create-a-robots-txt-for-magento-2-x.md @@ -5,6 +5,7 @@ myst: article we explain how to generate and configure Robot.txt on Magento 2.x. redirect_from: - /en/ecommerce/magento-2/how-to-create-a-robots-txt-for-magento-2-x/ + - /knowledgebase/create-robots-txt-magento-2/ --- diff --git a/docs/ecommerce-applications/magento-2/how-to-create-a-sitemap-xml-for-magento-2-x.md b/docs/ecommerce-applications/magento-2/how-to-create-a-sitemap-xml-for-magento-2-x.md index ccded66d..d6d947b6 100644 --- a/docs/ecommerce-applications/magento-2/how-to-create-a-sitemap-xml-for-magento-2-x.md +++ b/docs/ecommerce-applications/magento-2/how-to-create-a-sitemap-xml-for-magento-2-x.md @@ -118,7 +118,7 @@ When you can successfully request your sitemap.xml, add it to your `robots.txt`: Sitemap: http://www.example.com/sitemap.xml ``` -You can add the sitemap manually or use the generated robots.txt Magento 2 provides. If you use the generated robots.txt, keep in mind all manual changes will be overwritten when you save your changes in the Magento admin. For configuring a `robots.txt` in Magento 2, have a look at [this article](https://support.hypernode.com/en/ecommerce/magento-2/how-to-create-a-robots-txt-for-magento-2-x). +You can add the sitemap manually or use the generated robots.txt Magento 2 provides. If you use the generated robots.txt, keep in mind all manual changes will be overwritten when you save your changes in the Magento admin. For configuring a `robots.txt` in Magento 2, have a look at [this article](../../ecommerce-applications/magento-2/how-to-create-a-robots-txt-for-magento-2-x.md). ## Troubleshooting diff --git a/docs/ecommerce-applications/magento-2/how-to-enable-the-magento-2-api.md b/docs/ecommerce-applications/magento-2/how-to-enable-the-magento-2-api.md index a2856e20..0f0b94ce 100644 --- a/docs/ecommerce-applications/magento-2/how-to-enable-the-magento-2-api.md +++ b/docs/ecommerce-applications/magento-2/how-to-enable-the-magento-2-api.md @@ -5,6 +5,7 @@ myst: Hypernode by creating correct users (and code to solve 404 errors). ' redirect_from: - /en/ecommerce/magento-2/how-to-enable-the-magento-2-api/ + - /knowledgebase/enable-magento-api/ --- @@ -34,4 +35,4 @@ location /api { } ``` -NB: If you don’t want to update IP addresses in all config files with every change of IP address, you can choose to use [**include files**](https://support.hypernode.com/knowledgebase/create-reusable-config-for-custom-snippets/). +NB: If you don’t want to update IP addresses in all config files with every change of IP address, you can choose to use [**include files**](../../hypernode-platform/nginx/how-to-create-a-reusable-config-to-include-in-custom-snippets.md). diff --git a/docs/ecommerce-applications/magento-2/how-to-enable-the-magento-2-web-setup-wizard.md b/docs/ecommerce-applications/magento-2/how-to-enable-the-magento-2-web-setup-wizard.md index a3b11bc4..e1503222 100644 --- a/docs/ecommerce-applications/magento-2/how-to-enable-the-magento-2-web-setup-wizard.md +++ b/docs/ecommerce-applications/magento-2/how-to-enable-the-magento-2-web-setup-wizard.md @@ -5,6 +5,7 @@ myst: Web Setup Wizard for your Magento 2 shop. redirect_from: - /en/ecommerce/magento-2/how-to-enable-the-magento-2-web-setup-wizard/ + - /knowledgebase/using-magento-2-web-setup-wizard/ --- diff --git a/docs/ecommerce-applications/magento-2/how-to-fix-the-general-error-1030-got-error-1-from-storage-engine.md b/docs/ecommerce-applications/magento-2/how-to-fix-the-general-error-1030-got-error-1-from-storage-engine.md index b7a6557d..16645b1d 100644 --- a/docs/ecommerce-applications/magento-2/how-to-fix-the-general-error-1030-got-error-1-from-storage-engine.md +++ b/docs/ecommerce-applications/magento-2/how-to-fix-the-general-error-1030-got-error-1-from-storage-engine.md @@ -15,7 +15,7 @@ redirect_from: In some very rare occassions an up- or downgrade results in some of your categories and/or product not showing on the frontend of your webshop. When this happens you will usually come across an error like the one below in `/data/web/magento2/var/report/1234567890`: -```nginx +```console app@83f0vz-jesper-magweb-cmbl:/data/web/magento2/var/report$ cat 191158599534 {"0":"SQLSTATE[HY000]: General error: 1030 Got error 1 from storage engine, query was: SELECT `main_table`.*, count(main_table.value) AS `count` FROM (SELECT `main_table`.`category_id` AS `value` FROM `catalog_category_product_index_store1` AS `main_table`\n INNER JOIN `search_tmp_5fbf5581f1df68_75800387` AS `entities` ON main_table.product_id = entities.entity_id\n INNER JOIN `catalog_category_entity` A ``` diff --git a/docs/ecommerce-applications/magento-2/how-to-flush-the-magento-2-x-caches.md b/docs/ecommerce-applications/magento-2/how-to-flush-the-magento-2-x-caches.md index 87266bdc..c125887f 100644 --- a/docs/ecommerce-applications/magento-2/how-to-flush-the-magento-2-x-caches.md +++ b/docs/ecommerce-applications/magento-2/how-to-flush-the-magento-2-x-caches.md @@ -5,6 +5,7 @@ myst: commandline or the backend for example. Read instructions per way in this article. ' redirect_from: - /en/ecommerce/magento-2/how-to-flush-the-magento-2-x-caches/ + - /knowledgebase/magento-cache-management/ --- diff --git a/docs/ecommerce-applications/magento-2/how-to-install-magento-2-on-hypernode.md b/docs/ecommerce-applications/magento-2/how-to-install-magento-2-on-hypernode.md index 0c50a0ba..405842be 100644 --- a/docs/ecommerce-applications/magento-2/how-to-install-magento-2-on-hypernode.md +++ b/docs/ecommerce-applications/magento-2/how-to-install-magento-2-on-hypernode.md @@ -5,19 +5,21 @@ myst: on Hypernode. It will only take you 5-10 minutes. redirect_from: - /en/ecommerce/magento-2/how-to-install-magento-2-on-hypernode/ + - /knowledgebase/installing-magento-on-hypernode/ + - /knowledgebase/installing-magento-2-on-hypernode --- # How to Install Magento 2 on Hypernode -Magento 2 requires preferably a Falcon M hosting plan or bigger. Want to [install Magento 1](https://support.hypernode.com/knowledgebase/installing-magento-on-hypernode/) instead? +Magento 2 requires preferably a Falcon M hosting plan or bigger. Want to [install Magento 1](../magento-1/how-to-install-magento-1-on-hypernode.md) instead? Installing Magento 2 will take only 5-10 minutes (add 15 minutes if you want the sample data). ## Upgrade Your PHP Version -**Before installing Magento,**[**change your PHP version**](https://support.hypernode.com/knowledgebase/php-versions-magento-shop-hypernode/#How_to_change_a_PHP_version_on_Hypernode)**to php7.1 or higher** +**Before installing Magento,**[**change your PHP version**](../../hypernode-platform/php/supported-php-versions-and-how-to-change-them-on-hypernode.md#changing-the-php-version-you-use-on-hypernode)**to php7.1 or higher** Some vendor libraries are not compatible with older PHP version anymore, causing errors during the installation. @@ -132,7 +134,7 @@ rm --dir /data/web/public ln -s /data/web/magento2/pub /data/web/public ``` -### Build Static Assets (CSS & JS) +### Build Static Assets ``` cd ~/magento2 diff --git a/docs/ecommerce-applications/magento-2/how-to-protect-the-magento-2-api.md b/docs/ecommerce-applications/magento-2/how-to-protect-the-magento-2-api.md index 4b864f58..d37959c1 100644 --- a/docs/ecommerce-applications/magento-2/how-to-protect-the-magento-2-api.md +++ b/docs/ecommerce-applications/magento-2/how-to-protect-the-magento-2-api.md @@ -7,7 +7,7 @@ redirect_from: # How to Protect the Magento 2 API -**The Magento team released security update**[**Magento 2.0.3**](https://magento.com/security/patches/magento-203-security-update)\*\*on March 30th 2017. This release contains a security fix that restricts access to anonymous web APIs.\*\*\*\*[Read more.](https://magento.com/security/best-practices/restricting-access-anonymous-web-apis)\*\***We recommend you to**[**update your Magento**](https://support.hypernode.com/en/ecommerce/magento-2/how-to-update-magento-2)**version to Magento 2.0.3 instead of blocking the API.** +**The Magento team released security update**[**Magento 2.0.3**](https://magento.com/security/patches/magento-203-security-update)\*\*on March 30th 2017. This release contains a security fix that restricts access to anonymous web APIs.\*\*\*\*[Read more.](https://magento.com/security/best-practices/restricting-access-anonymous-web-apis)\*\***We recommend you to**[**update your Magento**](how-to-update-magento-2.md)**version to Magento 2.0.3 instead of blocking the API.** In March 2016, Paul Bosselaar and others discovered that the Magento 2 API by default discloses information that can be considered private: diff --git a/docs/ecommerce-applications/magento-2/how-to-remove-your-magento-2-x-installation.md b/docs/ecommerce-applications/magento-2/how-to-remove-your-magento-2-x-installation.md index 7a97db04..6e908d81 100644 --- a/docs/ecommerce-applications/magento-2/how-to-remove-your-magento-2-x-installation.md +++ b/docs/ecommerce-applications/magento-2/how-to-remove-your-magento-2-x-installation.md @@ -5,6 +5,7 @@ myst: the removal of your Magento 2.x installation. ' redirect_from: - /en/ecommerce/magento-2/how-to-remove-your-magento-2-x-installation/ + - https://support.hypernode.com/knowledgebase/remove-magento-installation/ --- diff --git a/docs/ecommerce-applications/magento-2/how-to-set-magento-2-x-to-the-utc-timezone.md b/docs/ecommerce-applications/magento-2/how-to-set-magento-2-x-to-the-utc-timezone.md index 6f6b42ee..f4edbe27 100644 --- a/docs/ecommerce-applications/magento-2/how-to-set-magento-2-x-to-the-utc-timezone.md +++ b/docs/ecommerce-applications/magento-2/how-to-set-magento-2-x-to-the-utc-timezone.md @@ -6,6 +6,7 @@ myst: 2.x. redirect_from: - /en/ecommerce/magento-2/how-to-set-magento-2-x-to-the-utc-timezone/ + - /knowledgebase/magento-utc-hypernode/ --- diff --git a/docs/ecommerce-applications/magento-2/how-to-set-the-return-path-for-a-magento-2-shop.md b/docs/ecommerce-applications/magento-2/how-to-set-the-return-path-for-a-magento-2-shop.md index 2df32180..d46820dd 100644 --- a/docs/ecommerce-applications/magento-2/how-to-set-the-return-path-for-a-magento-2-shop.md +++ b/docs/ecommerce-applications/magento-2/how-to-set-the-return-path-for-a-magento-2-shop.md @@ -6,6 +6,8 @@ myst: so in Magento 2. redirect_from: - /en/ecommerce/magento-2/how-to-set-the-return-path-for-a-magento-2-shop/ + - /en/ecommerce/magento-2/workaround-return-path-email-bug-in-magento-2/ + - /knowledgebase/set-return-path-email-sent-from-magento-shop/ --- diff --git a/docs/ecommerce-applications/magento-2/how-to-set-up-a-basic-staging-environment-for-magento-2.md b/docs/ecommerce-applications/magento-2/how-to-set-up-a-basic-staging-environment-for-magento-2.md index ed0ad2b5..196b87fc 100644 --- a/docs/ecommerce-applications/magento-2/how-to-set-up-a-basic-staging-environment-for-magento-2.md +++ b/docs/ecommerce-applications/magento-2/how-to-set-up-a-basic-staging-environment-for-magento-2.md @@ -6,15 +6,16 @@ myst: shop. redirect_from: - /en/ecommerce/magento-2/how-to-set-up-a-basic-staging-environment-for-magento-2/ + - /knowledgebase/using-a-basic-staging-environment-magento2/ --- # How to Set Up a Basic Staging Environment for Magento 2 -This article is an extension to the [article for Magento 1](https://support.hypernode.com/en/ecommerce/magento-1/how-to-set-up-a-staging-environment-for-magento-1). For information about the capabilities of the staging environment, please read it first. +This article is an extension to the [article for Magento 1](../magento-1/how-to-set-up-a-staging-environment-for-magento-1.md). For information about the capabilities of the staging environment, please read it first. -Your staging environment **shares resources**(disk, CPU, memory) with your production site. If you want to do things such as automated load tests, it is recommended to order a [development plan](https://support.hypernode.com/knowledgebase/development-plans-for-your-magento-shop/) instead, so your production site will not be affected. +Your staging environment **shares resources**(disk, CPU, memory) with your production site. If you want to do things such as automated load tests, it is recommended to order a [development plan](../../hypernode-platform/tools/how-to-use-hypernode-development-plans.md) instead, so your production site will not be affected. ## How to Make a Copy of a Live Site @@ -121,7 +122,7 @@ A big thank you to our partner [Experius](https://www.experius.nl/) for providin #### Manually Change the Base URL's of Your Storefronts -If you want to set the base URL's manually, check [our documentation](https://support.hypernode.com/a/solutions/articles/48000981301?lang=en)on changing your base URL's for Magento 1. Do you have a Magento 2 shop, please check [this article](https://support.hypernode.com/en/ecommerce/magento-2/how-to-change-your-magento-2-base-urls)on changing base URL's. +If you want to set the base URL's manually, check [our documentation](../magento-1/how-to-change-the-base-url-in-magento-1-x.md) on changing your base URL's for Magento 1. Do you have a Magento 2 shop, please check [this article](how-to-change-your-magento-2-base-urls.md) on changing base URL's. ### Step Seven: Change All References in Your Staging Directory @@ -129,7 +130,7 @@ If you want to set the base URL's manually, check [our documentation](https://su Keep in mind: -- Re-deploy your static files (clean out pub/static, and [deploy your static files](https://support.hypernode.com/knowledgebase/installing-magento-2-on-hypernode/#Build_static_assets_CSS_JS)\] +- Re-deploy your static files (clean out pub/static, and [deploy your static files](how-to-install-magento-2-on-hypernode.md#build-static-assets) - Find symlinks: `find /data/web/magento2_staging -type l -exec ls -lsa {} \;` - Grep for `/data/web/public` in your staging directory: `grep -R '/data/web/public' /data/web/staging` - Grep for `/data/web/magento2` in your staging directory: `grep -R '/data/web/magento2' /data/web/{staging,magento2_staging}` @@ -140,7 +141,7 @@ Keep in mind: Now you should be able to reach your Magento 2 staging environment on -For additional configuration and troubleshooting refer to the [Magento 1 staging environment article](https://support.hypernode.com/en/ecommerce/magento-1/how-to-set-up-a-staging-environment-for-magento-1) +For additional configuration and troubleshooting refer to the [Magento 1 staging environment article](../magento-1/how-to-set-up-a-staging-environment-for-magento-1.md) ## Staging Environment and Varnish @@ -160,23 +161,24 @@ In the example above the domain for the staging environment is always different ## Hypernode Manage Vhosts -Another solution is creating an unique vhost for your staging environment. This will allow you to use the normal ports so you don't have to use port `8443`. -For example you can create a vhost `staging.example.com`. Afterwards you can always choose to enable or disable varnish for this vhost. +Another solution is creating a unique vhost for your staging environment. This will allow you to use the normal ports so you don't have to use port `8443`. +For example, you can create a vhost `staging.example.com`. Afterwards you can always choose to enable or disable varnish for this vhost. -```nginx -hypernode-manage-vhosts staging.example.com --varnish -hypernode-manage-vhosts --list +```console +$ hypernode-manage-vhosts staging.example.com --varnish +$ hypernode-manage-vhosts --list +---------------------------------+------------+----------------+-------+-------------+---------+--------------+ | servername | type | default_server | https | force_https | varnish | ssl_config | +---------------------------------+------------+----------------+-------+-------------+---------+--------------+ | staging.example.com | magento2 | False | False | False | True | intermediate | +---------------------------------+------------+----------------+-------+-------------+---------+--------------+ - ``` To be able to reach the new staging environment you need to change the webroot of the vhost to whatever folder you like. In this case let's create a folder called **/data/web/example_staging/**. You can change the webroot in the nginx-folder that has been created by creating the vhost, in this case: **/data/web/nginx/staging.example.com/public.magento2.conf**. The webroot is set in the first uncommented line of the file: -`root /data/web/public;` +```nginx +root /data/web/public; +``` So now we want to set this to: `root /data/web/example_staging;` and save the file. Now you can set the Magento installation in this location and you're set. @@ -186,9 +188,8 @@ If you created a staging environment before on the same machine, you might want ### Cleanup -```nginx +```bash magerun2 --root-dir=/data/web/magento2_staging uninstall --installationFolder=/data/web/magento2_staging --force - ``` This will remove your Magento installation and drops the database as well. diff --git a/docs/ecommerce-applications/magento-2/how-to-update-magento-2.md b/docs/ecommerce-applications/magento-2/how-to-update-magento-2.md index 3e00c57c..249dd1bc 100644 --- a/docs/ecommerce-applications/magento-2/how-to-update-magento-2.md +++ b/docs/ecommerce-applications/magento-2/how-to-update-magento-2.md @@ -13,7 +13,7 @@ redirect_from: Does your Magento 2 version need an upgrade? This article explains how to upgrade to the latest Magento 2 version. Do you have a Magento 1 shop? Please follow the instructions on this page. -**N.B. You can’t update from Magento 1 to Magento 2. If you wish to use Magento 2, you’ll need a fresh install and start from the beginning. Read more about [How to install Magento 2 on Hypernode](https://support.hypernode.com/en/ecommerce/magento-2/how-to-install-magento-2-on-hypernode).** +**N.B. You can’t update from Magento 1 to Magento 2. If you wish to use Magento 2, you’ll need a fresh install and start from the beginning. Read more about [How to install Magento 2 on Hypernode](how-to-install-magento-2-on-hypernode.md).** ## Why You Should Update Your Magento Webshop @@ -25,7 +25,7 @@ Not updating your Magento can result in a bad performance and make your shop an Whatever version you’re updating, we always recommend you follow these steps first: -- Always make sure you have a recent and clean backup. Both a file- and database backup. You can restore your data quickly if anything goes wrong while updating. More information about making backups can be found in the article [Historical backups](https://support.hypernode.com/en/hypernode/backups/hypernode-backup-policy). +- Always make sure you have a recent and clean backup. Both a file- and database backup. You can restore your data quickly if anything goes wrong while updating. More information about making backups can be found in the article [Historical backups](../../hypernode-platform/backups/hypernode-backup-policy.md). - Check the version's release notes to see what changes have been made. - Please choose a quiet moment to update your Magento. Preferably when there’s hardly any traffic on your site. - You can test an update on a staging environment, development Hypernode or the Hypernode Docker to ensure all aspects of your shop are compatible with the newest version. @@ -37,7 +37,7 @@ Make sure you have a Magento account before you update your Magento 2 shop and c - Log on to your Magento backend. - Navigate to ‘System’. - Click ‘Web Setup wizard’. - - *If you can’t access the setup page, it’s possible the symlink wasn’t created when installing Magento 2.\*\*[To fix check this how to](https://support.hypernode.com/knowledgebase/using-magento-2-web-setup-wizard/).* + - *If you can’t access the setup page, it’s possible the symlink wasn’t created when installing Magento 2.\*\*[To fix check this how to](how-to-enable-the-magento-2-web-setup-wizard.md).* - Select the Magento version you wish to upgrade to and click ‘Next’. - Start the ‘Readiness check.’ - Click ‘Next’ if possible; otherwise, resolve the issues that need fixing before continuing. @@ -48,20 +48,20 @@ Make sure you have a Magento account before you update your Magento 2 shop and c Still not able to update Magento? Perhaps you haven’t connected your Magento shop with your Magento account yet: - First, get your secure keys by [following the steps in this article](http://devdocs.magento.com/guides/v2.0/install-gde/prereq/connect-auth.html). -- Add the public and private key to your shop via ‘System’ ->’ Web Setup Wizard’ -> ‘System config.’ -- Fill in the keys and click ‘Save config’. -- Go back to ‘System upgrade’ to update your Magento version. +- Add the public and private key to your shop via `System` -> `Web Setup Wizard` -> `System config`. +- Fill in the keys and click `Save config`. +- Go back to `System upgrade` to update your Magento version. ## Updating Magento 2 via Composer To update through composer, use the following commands: -```nginx +```bash export VERSION="2.0.2" cd ~/magento2 composer require magento/product-community-edition $VERSION --no-update -composer update< +composer update rm -rf var/di var/generation php bin/magento cache:clean @@ -74,8 +74,8 @@ php bin/magento indexer:reindex After upgrade, check your Magento version with the following command: -```nginx -php bin/magento --version +```bash +bin/magento --version ``` ## Need Help? diff --git a/docs/ecommerce-applications/shopware-5/how-to-configure-varnish-for-shopware-5.md b/docs/ecommerce-applications/shopware-5/how-to-configure-varnish-for-shopware-5.md index 20d23ae9..726e901d 100644 --- a/docs/ecommerce-applications/shopware-5/how-to-configure-varnish-for-shopware-5.md +++ b/docs/ecommerce-applications/shopware-5/how-to-configure-varnish-for-shopware-5.md @@ -17,13 +17,13 @@ The Hypernode platform supports Varnish as a caching layer and configuration is ## Step One: Enable Varnish on the Hypernode -Varnish can be enabled with a simple command using the [hypernode-systemctl CLI](https://support.hypernode.com/en/hypernode/tools/how-to-use-the-hypernode-systemctl-cli-tool): +Varnish can be enabled with a simple command using the [hypernode-systemctl CLI](../../hypernode-platform/tools/how-to-use-the-hypernode-systemctl-cli-tool.md): `hypernode-systemctl settings varnish_enabled True` ## Step Two: Enable Varnish for NGINX Vhost -The [hypernode-manage-vhosts](https://support.hypernode.com/en/hypernode/nginx/hypernode-managed-vhosts) (HMV) config allows you to enable varnish for every vhost individually. So if you for example have a domain example.com. You should create 2 vhosts: +The [hypernode-manage-vhosts](../../hypernode-platform/nginx/hypernode-managed-vhosts) (HMV) config allows you to enable varnish for every vhost individually. So if you for example have a domain example.com. You should create 2 vhosts: - example.com - [www.example.com](http://www.example.com) diff --git a/docs/ecommerce-applications/shopware-5/how-to-host-shopware-on-hypernode.md b/docs/ecommerce-applications/shopware-5/how-to-host-shopware-on-hypernode.md index 3b6224f6..57389932 100644 --- a/docs/ecommerce-applications/shopware-5/how-to-host-shopware-on-hypernode.md +++ b/docs/ecommerce-applications/shopware-5/how-to-host-shopware-on-hypernode.md @@ -5,6 +5,7 @@ myst: You only need a specific Nginx configuration. Check out how to use it here. redirect_from: - /en/ecommerce/shopware/how-to-host-shopware-on-hypernode/ + - /knowledgebase/how-to-host-shopware-on-hypernode/ --- @@ -25,7 +26,7 @@ Shopware is an e-commerce system roughly the same as Magento and both have the s ## Configuring Hypernode for Shopware -All you need to do is create a [vhost](https://support.hypernode.com/en/hypernode/nginx/hypernode-managed-vhosts#Managing-Vhosts) (or change an existing vhost) with type `shopware5` or `shopware6`. +All you need to do is create a [vhost](../../hypernode-platform/nginx/hypernode-managed-vhosts.md#managing-vhosts) (or change an existing vhost) with type `shopware5` or `shopware6`. This will make sure the specific vhost has the right nginx configuration to host your Shopware environment. So for example, your domain is `www.example.com` and you'd like a vhost with Shopware 6 configuration. You can create this vhost with the following command: `hypernode-manage-vhosts www.example.com --type shopware6 --https --force-https`. diff --git a/docs/ecommerce-applications/shopware-5/how-to-install-shopware-5-on-hypernode.md b/docs/ecommerce-applications/shopware-5/how-to-install-shopware-5-on-hypernode.md index 9b7c5220..e6df836a 100644 --- a/docs/ecommerce-applications/shopware-5/how-to-install-shopware-5-on-hypernode.md +++ b/docs/ecommerce-applications/shopware-5/how-to-install-shopware-5-on-hypernode.md @@ -5,6 +5,7 @@ myst: latest version of Shopware 5 as easy as possible. ' redirect_from: - /en/ecommerce/shopware/how-to-install-shopware-5-on-hypernode/ + - /knowledgebase/how-to-install-shopware-5-on-hypernode/ --- @@ -31,7 +32,7 @@ hypernode-systemctl settings php_version 7.2 ## Add the Shopware Nginx Config File -To be able to host Shopware on Hypernode you need to add an nginx config file so the server knows where to find the Shopware installation. You can add the `server.shopware` config file according to our [documentation](https://support.hypernode.com/knowledgebase/how-to-host-shopware-on-hypernode/#Configuring_Hypernode_for_Shopware) +To be able to host Shopware on Hypernode you need to add an nginx config file so the server knows where to find the Shopware installation. You can add the `server.shopware` config file according to our [documentation](how-to-host-shopware-on-hypernode.md#configuring-hypernode-for-shopware). ## Two Ways to Install Shopware 5 diff --git a/docs/ecommerce-applications/shopware-5/how-to-use-a-basic-staging-environment-with-shopware.md b/docs/ecommerce-applications/shopware-5/how-to-use-a-basic-staging-environment-with-shopware.md index afb4296d..4cc39a56 100644 --- a/docs/ecommerce-applications/shopware-5/how-to-use-a-basic-staging-environment-with-shopware.md +++ b/docs/ecommerce-applications/shopware-5/how-to-use-a-basic-staging-environment-with-shopware.md @@ -21,7 +21,7 @@ This article explains how you can set up a staging environment on Hypernode for Keep in mind: -- Your staging environment **shares resources** (disk, CPU, mem) with your production site. If you want to do things such as automated load tests, it is recommended to order a [development plan](https://support.hypernode.com/knowledgebase/development-plans-for-your-magento-shop/) instead, so your production site will not be affected. +- Your staging environment **shares resources** (disk, CPU, mem) with your production site. If you want to do things such as automated load tests, it is recommended to order a [development plan](../../hypernode-platform/tools/how-to-use-hypernode-development-plans.md) instead, so your production site will not be affected. - We don't recommend creating hard links from your production media folder to your staging media folder as our back up mechanism does not cope well with hard links. ## How to Make a Copy of a Live Site diff --git a/docs/ecommerce-applications/shopware-6/how-to-configure-varnish-for-shopware-6.md b/docs/ecommerce-applications/shopware-6/how-to-configure-varnish-for-shopware-6.md index 43aa32b3..e820ceea 100644 --- a/docs/ecommerce-applications/shopware-6/how-to-configure-varnish-for-shopware-6.md +++ b/docs/ecommerce-applications/shopware-6/how-to-configure-varnish-for-shopware-6.md @@ -9,17 +9,17 @@ redirect_from: Customers with Hypernode Pelican, Falcon (formerly known as Professional) and Eagle (formerly known as Excellence) plans can use Varnish to boost their shop. This article explains how you can configure Varnish for your Hypernode. -Although Varnish is extremely awesome when it get's to speeding up websites, Varnish is a complex technique that needs some experience to set it up. We'd recommend to first test varnish on a [staging environment](https://support.hypernode.com/en/ecommerce/shopware/how-to-use-a-basic-staging-environment-with-shopware-6) or a[development plan](https://support.hypernode.com/en/hypernode/tools/how-to-use-hypernode-development-plans) before implementing varnish on a live node. +Although Varnish is extremely awesome when it get's to speeding up websites, Varnish is a complex technique that needs some experience to set it up. We'd recommend to first test varnish on a [staging environment](how-to-use-a-basic-staging-environment-with-shopware-6.md) or a[development plan](../../hypernode-platform/tools/how-to-use-hypernode-development-plans.md) before implementing varnish on a live node. ## Step One: Enable Varnish on the Hypernode -You can enable varnish on the hypernode using the [systemctl-tool](https://support.hypernode.com/en/hypernode/tools/how-to-use-the-hypernode-systemctl-cli-tool) by running: +You can enable varnish on the hypernode using the [systemctl-tool](../../hypernode-platform/tools/how-to-use-the-hypernode-systemctl-cli-tool.md) by running: `hypernode-systemctl settings varnish_enabled True` ## Step Two: How to Setup Varnish for the Vhost -The [hypernode-manage-vhosts](https://support.hypernode.com/en/hypernode/nginx/hypernode-managed-vhosts) (HMV) config allows you to enable varnish for every vhost individually. So if you for example have a domain example.com. You should create 2 vhosts: +The [hypernode-manage-vhosts](../../hypernode-platform/nginx/hypernode-managed-vhosts.md) (HMV) config allows you to enable varnish for every vhost individually. So if you for example have a domain example.com. You should create 2 vhosts: - example.com - [www.example.com](http://www.example.com) diff --git a/docs/ecommerce-applications/shopware-6/how-to-install-shopware-6-on-hypernode.md b/docs/ecommerce-applications/shopware-6/how-to-install-shopware-6-on-hypernode.md index 8317c055..69137130 100644 --- a/docs/ecommerce-applications/shopware-6/how-to-install-shopware-6-on-hypernode.md +++ b/docs/ecommerce-applications/shopware-6/how-to-install-shopware-6-on-hypernode.md @@ -5,6 +5,7 @@ myst: latest version of Shopware 6 as easy as possible. ' redirect_from: - /en/ecommerce/shopware/how-to-install-shopware-6-on-hypernode/ + - /knowledgebase/how-to-install-shopware-6-on-hypernode/ --- diff --git a/docs/ecommerce-applications/shopware-6/how-to-use-a-basic-staging-environment-with-shopware-6.md b/docs/ecommerce-applications/shopware-6/how-to-use-a-basic-staging-environment-with-shopware-6.md index 7368ffa4..b07cd827 100644 --- a/docs/ecommerce-applications/shopware-6/how-to-use-a-basic-staging-environment-with-shopware-6.md +++ b/docs/ecommerce-applications/shopware-6/how-to-use-a-basic-staging-environment-with-shopware-6.md @@ -22,7 +22,7 @@ This article explains how you can set up a staging environment on Hypernode for Keep in mind: -- Your staging environment **shares resources** (disk, CPU, mem) with your production site. If you want to do things such as automated load tests, it is recommended to order a [development plan](https://support.hypernode.com/knowledgebase/development-plans-for-your-magento-shop/) instead, so your production site will not be affected. +- Your staging environment **shares resources** (disk, CPU, mem) with your production site. If you want to do things such as automated load tests, it is recommended to order a [development plan](../../hypernode-platform/tools/how-to-use-hypernode-development-plans.md) instead, so your production site will not be affected. - We don't recommend creating hard links from your production media folder to your staging media folder as our back up mechanism does not cope well with hard links. ## How To Make a Copy of a Live Site diff --git a/docs/getting-started/how-to-order/how-to-get-started-with-your-hypernode-trial.md b/docs/getting-started/how-to-order/how-to-get-started-with-your-hypernode-trial.md index 253e82c4..3444e67c 100644 --- a/docs/getting-started/how-to-order/how-to-get-started-with-your-hypernode-trial.md +++ b/docs/getting-started/how-to-order/how-to-get-started-with-your-hypernode-trial.md @@ -23,7 +23,7 @@ The specs of your trial are: 62GB storage, 3 CPU, 8GB RAM, 1024MB Redis cache, P ## Your Control Panel -Improving our Hypernode platform is [a continuous process](https://support.hypernode.com/category/changelog/) and the sole focus of our development team. You can log into your Control Panel via [this page](https://my.hypernode.com/). +Improving our Hypernode platform is [a continuous process](https://changelog.hypernode.com/) and the sole focus of our development team. You can log into your Control Panel via [this page](https://my.hypernode.com/). - Your Control Panel allows you to manage contact and billing information. - You can also change the PHP version of your Hypernode from the Control Panel. @@ -35,11 +35,11 @@ We recommend taking the following steps: ### Step 1 – Log in to your Hypernode via SSH -Get started by [creating SSH keys and logging in to your Hypernode via SSH](https://support.hypernode.com/knowledgebase/use-ssh-keys-on-hypernode/). +Get started by [creating SSH keys and logging in to your Hypernode via SSH](../../hypernode-platform/ssh/how-to-use-ssh-keys-on-hypernode.md). ### Step 2 – Configure Hypernode settings -You are in control and can change some Hypernode settings yourself via [the Hypernode-systemctl CLI tool](https://support.hypernode.com/knowledgebase/hypernode-systemctl-cli-tool/), like: +You are in control and can change some Hypernode settings yourself via [the Hypernode-systemctl CLI tool](../../hypernode-platform/tools/how-to-use-the-hypernode-systemctl-cli-tool.md), like: - PHP version: easily change the PHP version of your Hypernode - Enable Ioncube: only enable this if you really have to, as Ioncube is a performance killer @@ -51,18 +51,22 @@ You are in control and can change some Hypernode settings yourself via [the Hype ### Step 3a – Import an existing shop via the Hypernode Importer tool -We have developed an awesome time saving tool, the Hypernode Importer tool. With 1 simple command you import a copy of an existing shop onto your Hypernode. This will not have a negative impact on your live shop. Instructions can be found in the [Hypernode support documentation](https://support.hypernode.com/en/hypernode/tools/how-to-migrate-your-shop-to-hypernode#Option-2-for-all-customers%3A-Migrate-your-shop-via-Shell-using-hypernode-importer). +We have developed an awesome time saving tool, the Hypernode Importer tool. With 1 simple command you import a copy of an existing shop onto your Hypernode. +This will not have a negative impact on your live shop. +Instructions can be found in the [Hypernode support documentation](../../hypernode-platform/tools/how-to-migrate-your-shop-to-hypernode.md#option-2-for-all-customers-migrate-your-shop-via-shell-using-the-hypernode-importer). ### Step 3b – Install a new application on your Hypernode In our support documentation you will find detailed information about installing the different applications on a Hypernode: -- [Akeneo 3](https://support.hypernode.com/en/ecommerce/akeneo/how-to-install-akeneo-3-on-hypernode) -- [Akeneo 4](https://support.hypernode.com/knowledgebase/installing-akeneo-4/) -- [Magento 1](https://support.hypernode.com/knowledgebase/installing-magento-on-hypernode/) -- [Magento 2](https://support.hypernode.com/knowledgebase/installing-magento-2-on-hypernode/) -- [Shopware 5](https://support.hypernode.com/knowledgebase/how-to-install-shopware-5-on-hypernode/) -- [Shopware 6](https://support.hypernode.com/knowledgebase/how-to-install-shopware-6-on-hypernode/) +- [Akeneo 3](../../ecommerce-applications/akeneo/how-to-install-akeneo-3-on-hypernode) +- [Akeneo 4](../../ecommerce-applications/akeneo/how-to-install-akeneo-4-on-hypernode.md) +- [Akeneo 5](../../ecommerce-applications/akeneo/how-to-install-akeneo-5-on-hypernode.md) +- [Akeneo 6](../../ecommerce-applications/akeneo/how-to-install-akeneo-6-on-hypernode.md) +- [Magento 1](../../ecommerce-applications/magento-1/how-to-install-magento-1-on-hypernode.md) +- [Magento 2](../../ecommerce-applications/magento-2/how-to-install-magento-2-on-hypernode.md) +- [Shopware 5](../../ecommerce-applications/shopware-5/how-to-install-shopware-5-on-hypernode.md) +- [Shopware 6](../../ecommerce-applications/shopware-6/how-to-install-shopware-6-on-hypernode.md) ### Step 4 – Set up Hypernode Managed Vhosts @@ -84,13 +88,13 @@ To add a new vhost, for example the domainname [www.example.com](http://www.exam Please note that defining the vhosts '[www.example.com](http://www.example.com)', does not automatically add 'example.com' as a vhost. You will have to manually define a vhost for this. Since most people simply want their 'example.com' to redirect to '[www.example.com](http://www.example.com)', you can simply use the `--type wwwizer` argument to set this up. This will configure the vhost to redirect all traffic to the www-version of the domain. -Read more about Hypernode Managed Vhosts in [this article](https://support.hypernode.com/en/hypernode/nginx/hypernode-managed-vhosts). +Read more about Hypernode Managed Vhosts in [this article](../../hypernode-platform/nginx/hypernode-managed-vhosts.md). ### Step 5 – Configure Base URLs -You can find how to change your base URLs for Magento 1 [here](https://support.hypernode.com/en/ecommerce/magento-1/how-to-change-the-base-url-in-magento-1-x). +You can find how to change your base URLs for Magento 1 [here](../../ecommerce-applications/magento-1/how-to-change-the-base-url-in-magento-1-x.md). -You can find how to change your base URLs for Magento 2 [here](https://support.hypernode.com/en/ecommerce/magento-2/how-to-change-your-magento-2-base-urls). +You can find how to change your base URLs for Magento 2 [here](../../ecommerce-applications/magento-2/how-to-change-your-magento-2-base-urls.md). Please note: when you have an SSL certificate and use the secure base URL you should change the unsecure base URLs to HTTPS as well. This could result in conflicts when you leave this on HTTP. @@ -107,19 +111,19 @@ There are 2 ways to handle your DNS. Only customers who have access to the Servi One of the biggest differences between Hypernode and more traditional platforms is the use of Nginx (pronunciation: ‘Engine X’) over Apache. Nginx has much better performance than Apache, and allows us to serve your webshop to many more visitors than Apache would. -See [this category from our Support Documentation](https://support.hypernode.com/en/hypernode/nginx/) for more information about configuring Nginx. +See [this category from our Support Documentation](../../hypernode-platform/nginx.md) for more information about configuring Nginx. ### Step 8 – Start testing **Tools for shop development and optimization** -Try our handy [CLI tools](https://support.hypernode.com/knowledgebase/hypernode-cli-tools-magerun-plugins/), like: +Try our handy [CLI tools](../../hypernode-platform/tools/hypernode-cli-tools-and-magerun-plugins.md), like: - Save disk space by using the Magento Image Optimizer - Find out which Magento extensions slow down your shop using the php-slow-log - Debug issues by parsing the Nginx access logs -Also we have useful [Magerun plugins](https://support.hypernode.com/knowledgebase/hypernode-cli-tools-magerun-plugins/) to retrieve information super fast, like: +Also we have useful [Magerun plugins](../../hypernode-platform/tools/hypernode-cli-tools-and-magerun-plugins.md) to retrieve information super fast, like: - Analyze all pages in sitemap.xml and get a performance report - Check if all security patches have been installed for your Magento version @@ -130,10 +134,10 @@ Of course there is so much more to test, just decide for yourself what is import ## If You Started on a Trial, Upgrade Your Trial into a Paid Hosting Plan -Convinced about Hypernode? [Convert your trial into a paid hosting plan](https://support.hypernode.com/knowledgebase/order-a-hypernode-plan/). We are happy to help you with choosing the right plan for your shop. Should your shop need more or less resources in the future, you can up or downgrade your plan any time. You only pay for what you use. +Convinced about Hypernode? [Convert your trial into a paid hosting plan](../../about-hypernode/billing/how-to-choose-and-order-a-hypernode-plan.md). We are happy to help you with choosing the right plan for your shop. Should your shop need more or less resources in the future, you can up or downgrade your plan any time. You only pay for what you use. ## In Need of Support? -We encourage you to have a look at our extensive Hypernode support documentation on [support.hypernode.com](https://support.hypernode.com/). Here you will find useful information and tips and tricks on e.g. how to import a shop to Hypernode, recommended tools for developers, etc. +We encourage you to have a look at our extensive Hypernode support documentation on [support.hypernode.com](../../index.md). Here you will find useful information and tips and tricks on e.g. how to import a shop to Hypernode, recommended tools for developers, etc. Do you have questions about our Hypernode platform or would you like to give us some feedback? We would love to hear from you! Please send an email to [support@hypernode.com](mailto:support@hypernode.com) and we will get back to you. Our sales team and support team are available on weekdays from 8:00 AM until 18:00 PM CET/CEST (UTC+1/UTC+2). diff --git a/docs/getting-started/how-to-order/how-to-order-a-domain-presence-plan.md b/docs/getting-started/how-to-order/how-to-order-a-domain-presence-plan.md index cb925231..42ad39d0 100644 --- a/docs/getting-started/how-to-order/how-to-order-a-domain-presence-plan.md +++ b/docs/getting-started/how-to-order/how-to-order-a-domain-presence-plan.md @@ -51,8 +51,8 @@ A complete list of extensions we offer can be found [here](https://www.byte.nl/d **How can I transfer my domain?** -You can read a detailed description of the step-by-step plan [here](https://support.hypernode.com/en/services/domains/how-to-transfer-your-domain-to-hypernode). +You can read a detailed description of the step-by-step plan [here](../../services/domain-procedures/how-to-use-domains-in-the-control-panel.md#transfer-an-existing-domain-to-hypernode). **How can I order a SSL certificate?** -You can read a detailed description of the step-by-step plan [here](https://support.hypernode.com/en/hypernode/ssl/how-to-use-ssl-certificates-on-your-hypernode-when-ordered-via-byte-nl#Order-an-SSL-Certificate). +You can read a detailed description of the step-by-step plan [here](../../hypernode-platform/ssl/how-to-use-ssl-certificates-on-your-hypernode-when-ordered-via-hypernode-nl.md#order-an-ssl-certificate). diff --git a/docs/hypernode-platform/backups/how-to-restore-your-hypernode-from-a-snapshot.md b/docs/hypernode-platform/backups/how-to-restore-your-hypernode-from-a-snapshot.md index 06d60cdd..a4bdd175 100644 --- a/docs/hypernode-platform/backups/how-to-restore-your-hypernode-from-a-snapshot.md +++ b/docs/hypernode-platform/backups/how-to-restore-your-hypernode-from-a-snapshot.md @@ -5,6 +5,7 @@ myst: backup here, if needed after a mistake. We restore backups with snapshots. ' redirect_from: - /en/hypernode/backups/how-to-restore-your-hypernode-from-a-backup/ + - /knowledgebase/restore-hypernode-backup/ --- @@ -27,7 +28,7 @@ The backup snapshot is automagically detached/unmounted, before the backups are ### Instant and Older Backups -**Do you need access to backups older than one day or do you want the ability to create instant backups? These functionalities are part of the SLA Standard add-on, which is available for all Hypernodes. Please see [this article for more information about the difference between SLA Basic and SLA Standard](https://support.hypernode.com/en/hypernode/backups/hypernode-backup-policy#SLA-Standard).** +**Do you need access to backups older than one day or do you want the ability to create instant backups? These functionalities are part of the SLA Standard add-on, which is available for all Hypernodes. Please see [this article for more information about the difference between SLA Basic and SLA Standard](../../hypernode-platform/backups/hypernode-backup-policy.md#sla-standard).** ### Restore a Database From Snapshots diff --git a/docs/hypernode-platform/backups/hypernode-backup-policy.md b/docs/hypernode-platform/backups/hypernode-backup-policy.md index 2b7d71d7..b3d11e56 100644 --- a/docs/hypernode-platform/backups/hypernode-backup-policy.md +++ b/docs/hypernode-platform/backups/hypernode-backup-policy.md @@ -21,7 +21,7 @@ Snapshots are rotated daily after the creation of a new backup. This implies tha ## The Most Recent Snapshot of Your Hypernode -A snapshot is a saved state of the `/data` device at a given moment in time. We can use this to create a static copy of that given state in time and transform this to a virtual device which we can attach to your Hypernode. Once attached, this device is mounted under `/data/backup` and you can easily restore your files by copying them from this file system. To restore database and file backups, see [this article](https://support.hypernode.com/en/hypernode/backups/how-to-restore-your-hypernode-from-a-backup). +A snapshot is a saved state of the `/data` device at a given moment in time. We can use this to create a static copy of that given state in time and transform this to a virtual device which we can attach to your Hypernode. Once attached, this device is mounted under `/data/backup` and you can easily restore your files by copying them from this file system. To restore database and file backups, see [this article](how-to-restore-your-hypernode-from-a-snapshot.md). **Everyone can always attach the most recent snapshot to your Hypernode for free**. You can do so by using the following command to attach the latest available snapshot to your node: @@ -65,7 +65,7 @@ SLA Standard users can also create instant snapshots via the Control Panel (for ## Restoring Your Hypernode From a Snapshot -You can restore your Hypernode from a snapshot yourself by using [this article](https://support.hypernode.com/en/hypernode/backups/how-to-restore-your-hypernode-from-a-backup) from our support documentation. +You can restore your Hypernode from a snapshot yourself by using [this article](how-to-restore-your-hypernode-from-a-snapshot.md) from our support documentation. Besides attaching the snapshot, which requires you to restore your data yourself, we can also restore your Hypernode from a snapshot for you. This means that we restore the appropriate database, files or directories from the backup. This service costs €125,-. Contact Support for more information about this. @@ -73,7 +73,7 @@ Besides attaching the snapshot, which requires you to restore your data yourself ## Create Your Own Backup and Download it to Your Local Machine -Due to security reasons we don't have easy options to just click and download your files/database to your local machine from your Control Panel. If you still want to download the files/database to your local machine for your peace of mind you'd have to do this manually. You can find instructions in our [documentation](https://support.hypernode.com/en/support/solutions/articles/48001208755-how-to-create-a-backup-and-download-it-to-your-local-machine). +Due to security reasons we don't have easy options to just click and download your files/database to your local machine from your Control Panel. If you still want to download the files/database to your local machine for your peace of mind you'd have to do this manually. You can find instructions in our [documentation](../../best-practices/backups/how-to-create-a-backup-and-download-it-to-your-local-machine.md). ## Using Hard-Links for Backup Retention @@ -87,7 +87,7 @@ We recommend to avoid hard-links in your content at all times. We make use of two backup mechanisms: One for the Hypernodes running on Amazon (AWS) and Combell OpenStack, and another mechanism for backups on DigitalOcean. -Read more about restoring backups on Hypernode in [our restore backups article](https://support.hypernode.com/knowledgebase/restore-hypernode-backup/). +Read more about restoring backups on Hypernode in [our restore backups article](how-to-restore-your-hypernode-from-a-snapshot.md). ### Backups on DigitalOcean diff --git a/docs/hypernode-platform/dns/dns-for-service-panel-users.md b/docs/hypernode-platform/dns/dns-for-service-panel-users.md index 9ef52688..bc45945e 100644 --- a/docs/hypernode-platform/dns/dns-for-service-panel-users.md +++ b/docs/hypernode-platform/dns/dns-for-service-panel-users.md @@ -18,7 +18,7 @@ You can edit the DNS setting for your domain names in the Service Panel (Instell It takes 24 hours for a DNS change to be implemented everywhere. Take this into account. -More information about DNS settings for your Magento webshop on Hypernode technology, for example how to manage your DNS settings for a Hypernode can be found [here](https://support.hypernode.com/en/hypernode/dns/how-to-manage-your-dns-settings-for-hypernode). +More information about DNS settings for your Magento webshop on Hypernode technology, for example how to manage your DNS settings for a Hypernode can be found [here](how-to-manage-your-dns-settings-for-hypernode.md). ## Manage DNS With a Third Party @@ -30,7 +30,7 @@ nsb.byte.nl nsc.byte.nl -If it is not possible to change the name servers at your domain provider you can find how to direct your domain to your Hypernode [here](https://support.hypernode.com/en/hypernode/dns/how-to-manage-your-dns-settings-for-hypernode#Manage-your-own-DNS%3A-CNAME-for-the-www-record). +If it is not possible to change the name servers at your domain provider you can find how to direct your domain to your Hypernode [here](how-to-manage-your-dns-settings-for-hypernode.md#option-2-manage-an-external-dns-by-pointing-your-domain-to-hypernode-by-using-cname-and-not-an-a-record). ## How Does DNS Work at Hypernode? @@ -160,11 +160,11 @@ An SOA record is mainly used for the internal communication of different DNS ser ### SPF Records -With an SPF record you can define which mail servers are allowed to send email for that particular domain (and prevent spam from being sent from your domain). You can find more information about SPF records and how to use them for Hypernode [here](https://support.hypernode.com/en/hypernode/dns/how-to-set-up-your-spf-records-for-hypernode). +With an SPF record you can define which mail servers are allowed to send email for that particular domain (and prevent spam from being sent from your domain). You can find more information about SPF records and how to use them for Hypernode [here](how-to-set-up-your-spf-records-for-hypernode.md). ## DNS Caching -DNS Caching means that the content of a DNS record is stored on a server between your computer and the authoritative name server. Some providers store this data longer than specified in the TTL, so it can take up to a day for the changes to your DNS record to take effect everywhere. This is something to keep in mind when changing DNS settings. There is very little you can do about it that the whole world does not immediately see your new site (most of it), but as a developer it is of course annoying. Fortunately, there is a (local) solution, namely the hosts file. This is a file where you can enter hostnames and IP addresses yourself. This way you can link a domain name to an IP address so that when you visit this domain name, the DNS server is no longer consulted and you are always referred to the same IP address.Please see[this article](https://support.hypernode.com/en/best-practices/testing/how-to-test-your-website-by-changing-your-hosts-file) for more information about the host file. +DNS Caching means that the content of a DNS record is stored on a server between your computer and the authoritative name server. Some providers store this data longer than specified in the TTL, so it can take up to a day for the changes to your DNS record to take effect everywhere. This is something to keep in mind when changing DNS settings. There is very little you can do about it that the whole world does not immediately see your new site (most of it), but as a developer it is of course annoying. Fortunately, there is a (local) solution, namely the hosts file. This is a file where you can enter hostnames and IP addresses yourself. This way you can link a domain name to an IP address so that when you visit this domain name, the DNS server is no longer consulted and you are always referred to the same IP address.Please see[this article](../../best-practices/testing/how-to-test-your-website-by-changing-your-hosts-file.md) for more information about the host file. ### DKIM and DMARC diff --git a/docs/hypernode-platform/dns/how-to-manage-your-dns-settings-for-hypernode.md b/docs/hypernode-platform/dns/how-to-manage-your-dns-settings-for-hypernode.md index c6fe5217..210981ef 100644 --- a/docs/hypernode-platform/dns/how-to-manage-your-dns-settings-for-hypernode.md +++ b/docs/hypernode-platform/dns/how-to-manage-your-dns-settings-for-hypernode.md @@ -5,6 +5,7 @@ myst: avoid downtime when up- or downgrading here. ' redirect_from: - /en/hypernode/dns/how-to-manage-your-dns-settings-for-hypernode/ + - /knowledgebase/dns-settings-hypernode/ --- @@ -75,7 +76,7 @@ If a domain is linked to a Hypernode, it’s no longer possible to manually chan - By letting us manage your DNS, you will also be able to use your apex domain - Preferably the TTL for the DNS records is low to make the transition to Hypernode quick. Please check this before making any changes to your DNS. -## Option 2: Manage an external DNS by pointing your domain(s) to Hypernode by using CNAME and not an A-record +## Option 2: Manage an external DNS by pointing your domain to Hypernode by using CNAME and not an A-record If you cannot transfer your DNS to Hypernode, you can choose to only point the CNAME record to your Hypernode. We do not recommend this option because you cannot use SSL on your naked (also called apex) domain name: yourdomain.com, without the ‘www.’-prefix. @@ -122,7 +123,7 @@ yourdomain.com A 46.21.233.172 ### Let's Encrypt and Wwwizers -Also important to note is that [Let's Encrypt](https://support.hypernode.com/en/hypernode/ssl/how-to-use-let-s-encrypt-on-hypernode) does not work when you use the wwwizers, the Let's Encrypt validation cannot be completed and will return an error. The solution is to purchase a paid SSL certificate via us or to use the direct IP of your Hypernode instead. +Also important to note is that [Let's Encrypt](../ssl/how-to-use-lets-encrypt-on-hypernode.md) does not work when you use the wwwizers, the Let's Encrypt validation cannot be completed and will return an error. The solution is to purchase a paid SSL certificate via us or to use the direct IP of your Hypernode instead. Don’t fancy these solutions? Migrate your domain to Hypernode and let us manage your DNS. @@ -146,13 +147,13 @@ To add a new vhost, for example the domain name `www.example.com`, to your confi Please note that defining the vhosts '[www.example.com](http://www.example.com)', does not automatically add 'example.com' as a vhost. You will have to manually define a vhost for this. Since most people want their 'example.com' to redirect to '[www.example.com](http://www.example.com)', you can use the `--type wwwizer` argument to set this up. This will configure the vhost to redirect all traffic to the www-version of the domain. -Read more about Hypernode Managed Vhosts in [this article](https://support.hypernode.com/en/hypernode/nginx/hypernode-managed-vhosts). +Read more about Hypernode Managed Vhosts in [this article](../nginx/hypernode-managed-vhosts.md). ## Redirects in Nginx If you want to force a redirect to [www](http://www). or the non-[www](http://www). domain, you can use a redirect. -You can read how this works [in this article](https://support.hypernode.com/knowledgebase/redirect-from-or-to-www/). +You can read how this works [in this article](../nginx/how-to-redirect-from-or-to-www.md). ## Shop on a subdomain? diff --git a/docs/hypernode-platform/dns/how-to-set-up-your-spf-records-for-hypernode.md b/docs/hypernode-platform/dns/how-to-set-up-your-spf-records-for-hypernode.md index 1153f232..266a022c 100644 --- a/docs/hypernode-platform/dns/how-to-set-up-your-spf-records-for-hypernode.md +++ b/docs/hypernode-platform/dns/how-to-set-up-your-spf-records-for-hypernode.md @@ -5,6 +5,7 @@ myst: Find out here how to set it up for Hypernode. redirect_from: - /en/hypernode/dns/how-to-set-up-your-spf-records-for-hypernode/ + - /knowledgebase/using-spf-hypernode/ --- diff --git a/docs/hypernode-platform/dns/your-dns-is-misconfigured.md b/docs/hypernode-platform/dns/your-dns-is-misconfigured.md index 0465ff84..a9c2e303 100644 --- a/docs/hypernode-platform/dns/your-dns-is-misconfigured.md +++ b/docs/hypernode-platform/dns/your-dns-is-misconfigured.md @@ -13,4 +13,4 @@ redirect_from: You’ve reached this page because the DNS for this domain has been misconfigured. The administrator of this domain has pointed [www.domain.com](http://www.domain.com) to our DNS service, instead of appointing a CNAME to his/her Hypernode. -If you are the administrator of this domain, please refer to the documentation on how [to configure DNS for Hypernode correctly](https://support.hypernode.com/knowledgebase/dns-settings-hypernode/). +If you are the administrator of this domain, please refer to the documentation on how [to configure DNS for Hypernode correctly](how-to-manage-your-dns-settings-for-hypernode.md). diff --git a/docs/hypernode-platform/email/how-to-manage-your-email-queue.md b/docs/hypernode-platform/email/how-to-manage-your-email-queue.md index 90b687ee..d2de2d4c 100644 --- a/docs/hypernode-platform/email/how-to-manage-your-email-queue.md +++ b/docs/hypernode-platform/email/how-to-manage-your-email-queue.md @@ -36,7 +36,7 @@ app@yqc2sw-example-magweb-cmbl:~$ mailq --- 3 Kbytes in 3 Requests. ``` -In this use case there are three emails in the queue and one of them will not be send because the the DNS is not setup correctly. How to set up your DNS for outgoing email can be found in this [article](https://support.hypernode.com/en/hypernode/email/how-to-set-up-your-dns-for-outgoing-email). When the required DNS record is added to the domain DNS you are able to force a retry to send this email. This can be done from the Command Line Interface as the **app** user with: +In this use case there are three emails in the queue and one of them will not be send because the the DNS is not setup correctly. How to set up your DNS for outgoing email can be found in this [article](how-to-set-up-your-dns-for-outgoing-email.md). When the required DNS record is added to the domain DNS you are able to force a retry to send this email. This can be done from the Command Line Interface as the **app** user with: ``` app@yqc2sw-example-magweb-cmbl:~$ **/usr/sbin/sendmail -q** diff --git a/docs/hypernode-platform/email/how-to-set-up-your-dns-for-outgoing-email.md b/docs/hypernode-platform/email/how-to-set-up-your-dns-for-outgoing-email.md index 7bbe97af..61b4c8ef 100644 --- a/docs/hypernode-platform/email/how-to-set-up-your-dns-for-outgoing-email.md +++ b/docs/hypernode-platform/email/how-to-set-up-your-dns-for-outgoing-email.md @@ -17,17 +17,14 @@ In order to stop spam, and ensure reliable delivery of your webshop’s emails, ## Adding DNS Records -Please add the following DNS records to your nameservers, to authenticate your domain. If you already have an SPF record (the fourth record in the table) in place please check out our documentation on [SPF](https://support.hypernode.com/en/hypernode/dns/how-to-set-up-your-spf-records-for-hypernode), or contact our support for assistance on how to merge the SPF content into your existing values. +Please add the following DNS records to your nameservers, to authenticate your domain. If you already have an SPF record (the fourth record in the table) in place please check out our documentation on [SPF](../dns/how-to-set-up-your-spf-records-for-hypernode.md), or contact our support for assistance on how to merge the SPF content into your existing values. -| | | | | -| ------------------------------------- | -------- | ------- | ---------------------------------------------------------------- | -| **Name** | **Type** | **TTL** | **Content** | -| x-transip-mail-auth.***example.com*** | TXT | 600 | f491ddb3e61d1c92ab6de9f81257b1c0b95986d6550517f005c8e5e895da6fd2 | - -| -| \_domainkey.***example.com*** | TXT | 600 | o=~ | -| hypernode.\_domainkey.***example.com*** | CNAME | 600 | hypernode.\_domainkey.***example***.hypernode.io | -| ***example.com*** | TXT | 600 | v=spf1 include:spf.***example***.hypernode.io ~all | +| Name | Type | TTL | Content | +| --------------------------------------- | ----- | --- | ---------------------------------------------------------------- | +| x-transip-mail-auth.***example.com*** | TXT | 600 | f491ddb3e61d1c92ab6de9f81257b1c0b95986d6550517f005c8e5e895da6fd2 | +| \_domainkey.***example.com*** | TXT | 600 | o=~ | +| hypernode.\_domainkey.***example.com*** | CNAME | 600 | hypernode.\_domainkey.***example***.hypernode.io | +| ***example.com*** | TXT | 600 | v=spf1 include:spf.***example***.hypernode.io ~all | ## Validating your DNS records @@ -49,4 +46,4 @@ example.com - mail_auth: ok, dkim_hypernode: ok, spf_record: ok example.nl - mail_auth: error, dkim_hypernode: ok, spf_record: ok ``` -In this instance the audit gives a green light for **example.com**. From this domain you will be able to send email through your Hypernode and application. For the domain **example.nl** there is one mandatory DNS record missing, namely the **x-transip-mail-auth** This will lead to email from the domain **example.nl** to be **not send** and being held in your email queue. How to manage your email queue can be found in this [article](https://support.hypernode.com/en/hypernode/email/how-to-manage-your-email-queue). +In this instance the audit gives a green light for **example.com**. From this domain you will be able to send email through your Hypernode and application. For the domain **example.nl** there is one mandatory DNS record missing, namely the **x-transip-mail-auth** This will lead to email from the domain **example.nl** to be **not send** and being held in your email queue. How to manage your email queue can be found in this [article](how-to-manage-your-email-queue.md). diff --git a/docs/hypernode-platform/email/how-to-set-up-your-dns-for-using-office365.md b/docs/hypernode-platform/email/how-to-set-up-your-dns-for-using-office365.md index 5fc67f6a..694aef24 100644 --- a/docs/hypernode-platform/email/how-to-set-up-your-dns-for-using-office365.md +++ b/docs/hypernode-platform/email/how-to-set-up-your-dns-for-using-office365.md @@ -44,6 +44,6 @@ When you want to keep using the Hypernode name servers while using Office365 you You don't need to add a new SPF record if you already have one (for example for your Hypernode) you can just edit the current one (with the pencil icon) and add the Outlook value to the current record -Please note that if you had created email boxes and email addresses at Hypernode, you must delete them. You can do this under **Instellingen > Email**in the Service Panel. Make sure to [export the emails](https://support.hypernode.com/en/best-practices/email/how-to-export-your-emails) in the inbox if you want to save them to your new Office365 account before deleting the accounts at Hypernode. +Please note that if you had created email boxes and email addresses at Hypernode, you must delete them. You can do this under **Instellingen > Email**in the Service Panel. Make sure to [export the emails](../../best-practices/email/how-to-export-your-emails.md) in the inbox if you want to save them to your new Office365 account before deleting the accounts at Hypernode. Do you have any questions about how Office 365 works? Then it is best to visit the [Office 365 Community](https://techcommunity.microsoft.com/t5/office-365/bd-p/Office365General). diff --git a/docs/hypernode-platform/email/policy-for-sending-email-on-hypernode.md b/docs/hypernode-platform/email/policy-for-sending-email-on-hypernode.md index 4fe861a1..c1734584 100644 --- a/docs/hypernode-platform/email/policy-for-sending-email-on-hypernode.md +++ b/docs/hypernode-platform/email/policy-for-sending-email-on-hypernode.md @@ -5,6 +5,7 @@ myst: email platform that filters spam and infected emails. Read here about its policies. ' redirect_from: - /en/hypernode/email/policy-for-sending-email-on-hypernode/ + - /knowledgebase/hypernode-email-policy/ --- diff --git a/docs/hypernode-platform/ftp/how-to-configure-ftp-sftp-on-hypernode.md b/docs/hypernode-platform/ftp/how-to-configure-ftp-sftp-on-hypernode.md index 0dd857f0..182fddea 100644 --- a/docs/hypernode-platform/ftp/how-to-configure-ftp-sftp-on-hypernode.md +++ b/docs/hypernode-platform/ftp/how-to-configure-ftp-sftp-on-hypernode.md @@ -5,6 +5,7 @@ myst: users) and which credentials to use to make a FTP/SFTP connection. redirect_from: - /en/hypernode/ftp/how-to-configure-ftp-sftp-on-hypernode/ + - /knowledgebase/configuring-ftp/ --- @@ -17,7 +18,7 @@ NB: We strongly recommend using SSH or SFTP for file transfers. FTP is an inhere ## Managing FTP -**NB: The FTP users created with the instructions below can also be used for SFTP. More information about this can be found**[**here**]()**.** +**NB: The FTP users created with the instructions below can also be used for SFTP. More information about this can be found**[**here**](#sftp-ssh-file-transfer-protocol)**.** ### Adding FTP Users @@ -163,15 +164,15 @@ You can login with the default app user credentials. The below instructions will #### Generate an SSH Keypair -Start by generating a keypair (a private and a public key). This can be done through a **Terminal** (Linux and Mac OSX have this program pre-installed) or through **PuTTY**. How to do this is covered in this [article](https://support.hypernode.com/knowledgebase/use-ssh-keys-on-hypernode/). +Start by generating a keypair (a private and a public key). This can be done through a **Terminal** (Linux and Mac OSX have this program pre-installed) or through **PuTTY**. How to do this is covered in this [article](../ssh/how-to-use-ssh-keys-on-hypernode.md). #### Add Your Public Key to Your Hypernode When you have generated the keypair you need to add your public key to your Hypernode. -Service Panel users can use the SSH Keymanager in the [Service panel.](https://support.hypernode.com/en/hypernode/ssh/how-to-use-ssh-keys-on-hypernode#Service-Panel-Users%3A-Add-Public-Key-to-the-SSH-Keymanager-2) +Service Panel users can use the SSH Keymanager in the [Service panel](../ssh/how-to-use-ssh-keys-on-hypernode.md#service-panel-users-add-public-key-to-the-ssh-keymanager). -Control Panel users also have access to an SSH Keymanager via their Control panel. How this works is explained in [this article](https://support.hypernode.com/en/services/control-panel/how-to-add-keys-to-the-ssh-keymanager). +Control Panel users also have access to an SSH Keymanager via their Control panel. How this works is explained in [this article](../../services/control-panel/how-to-add-keys-to-the-ssh-key-manager.md). Alternatively you can also add the public key to the the `~/.ssh/authorized_keys` file. diff --git a/docs/hypernode-platform/mysql/how-to-free-disk-space-from-mysql-ibdata1.md b/docs/hypernode-platform/mysql/how-to-free-disk-space-from-mysql-ibdata1.md index 2e48abb7..5c1b23cf 100644 --- a/docs/hypernode-platform/mysql/how-to-free-disk-space-from-mysql-ibdata1.md +++ b/docs/hypernode-platform/mysql/how-to-free-disk-space-from-mysql-ibdata1.md @@ -6,6 +6,7 @@ myst: up disk space. redirect_from: - /en/hypernode/mysql/how-to-free-disk-space-from-mysql-ibdata1/ + - /knowledgebase/free-diskspace-ibdata1/ --- diff --git a/docs/hypernode-platform/mysql/how-to-use-mysql-on-hypernode.md b/docs/hypernode-platform/mysql/how-to-use-mysql-on-hypernode.md index 07fd61c6..e7ebad88 100644 --- a/docs/hypernode-platform/mysql/how-to-use-mysql-on-hypernode.md +++ b/docs/hypernode-platform/mysql/how-to-use-mysql-on-hypernode.md @@ -6,6 +6,7 @@ myst: are included. redirect_from: - /en/hypernode/mysql/how-to-use-mysql-on-hypernode/ + - /knowledgebase/using-mysql-on-hypernode/ --- @@ -38,7 +39,7 @@ host = mysqlmaster.example.hypernode.io - Can create your own databases; - Create users; - Define views and triggers. -- If you want to use a GUI to work on your database we recommend using a local GUI ([HeidiSQL](https://support.hypernode.com/en/best-practices/database/how-to-use-heidisql-on-hypernode)) instead of an online GUI ([PHPMyAdmin](https://support.hypernode.com/en/hypernode/mysql/how-to-use-phpmyadmin)). +- If you want to use a GUI to work on your database we recommend using a local GUI ([HeidiSQL](../../best-practices/database/how-to-use-heidisql-on-hypernode.md)) instead of an online GUI ([PHPMyAdmin](../mysql/how-to-use-phpmyadmin.md)). ## Whitelisting Your IP Address @@ -153,7 +154,7 @@ You should consider using Magerun (see above), but you could use HeidiSQL to cre Hypernode offers several version of MySQL to be able to meet te requirements of several Magento, Shopware and Akeneo versions. For example, if you want to install Magento 2.4, you'd have to run MySQL 5.7 or 8.0. -To upgrade your MySQL version you can use[the hypernode-systemctl tool](https://support.hypernode.com/en/hypernode/tools/how-to-use-the-hypernode-systemctl-cli-tool#MySQL) through the command line. +To upgrade your MySQL version you can use[the hypernode-systemctl tool](../tools/how-to-use-the-hypernode-systemctl-cli-tool.md#mysql) through the command line. ```nginx hypernode-systemctl settings mysql_version --value 5.7 diff --git a/docs/hypernode-platform/mysql/how-to-use-phpmyadmin.md b/docs/hypernode-platform/mysql/how-to-use-phpmyadmin.md index 939e1b8c..6af161e6 100644 --- a/docs/hypernode-platform/mysql/how-to-use-phpmyadmin.md +++ b/docs/hypernode-platform/mysql/how-to-use-phpmyadmin.md @@ -5,6 +5,7 @@ myst: you can use PHPMyAdmin and how to create a database dump. ' redirect_from: - /en/hypernode/mysql/how-to-use-phpmyadmin/ + - /knowledgebase/use-phpmyadmin/ --- @@ -13,7 +14,7 @@ redirect_from: This article will explain how you can use PHPMyAdmin and how to create a database dump. -*For your protection, phpMyAdmin by default is only accessible through the `example.hypernode.io/phpmyadmin/` URL, on Vagrant via the `*`example`*.hypernode.local/phpmyadmin/` url and on Docker through `YourBaseURL/dbadmin/` after you followed [these](https://support.hypernode.com/knowledgebase/use-phpmyadmin/#Reroute_phpmyadmin_to_dbadmin_and_add_a_whitelist) instructions. You can adjust this behaviour to your own preference.* +*For your protection, phpMyAdmin by default is only accessible through the `example.hypernode.io/phpmyadmin/` URL, on Vagrant via the `*`example`*.hypernode.local/phpmyadmin/` url and on Docker through `YourBaseURL/dbadmin/` after you followed [these](#configure-phpmyadmin) instructions. You can adjust this behaviour to your own preference.* ## Accessing PHPMyAdmin @@ -101,7 +102,7 @@ This is probably because you redirect ALL traffic over HTTPS. Try using PHPMyAdm - **I'm receiving an error while dumping the database** -Most of the time this happens when a database is large and you exceed the `max_execution_time` or `memory_limit` in php. If this happens try [dumping your database on the command line](https://support.hypernode.com/knowledgebase/using-mysql-on-hypernode/#Creating_a_MySQL_back-up) +Most of the time this happens when a database is large and you exceed the `max_execution_time` or `memory_limit` in php. If this happens try [dumping your database on the command line](how-to-use-mysql-on-hypernode.md#creating-a-mysql-back-up) - **My phpMyAdmin does not show any images** diff --git a/docs/hypernode-platform/nginx/basic-authentication-on-hypernode-development-plans.md b/docs/hypernode-platform/nginx/basic-authentication-on-hypernode-development-plans.md index c709d043..001331c3 100644 --- a/docs/hypernode-platform/nginx/basic-authentication-on-hypernode-development-plans.md +++ b/docs/hypernode-platform/nginx/basic-authentication-on-hypernode-development-plans.md @@ -5,6 +5,7 @@ myst: Authentication challenge to all visitors. Read all about it in this article. ' redirect_from: - /en/hypernode/nginx/basic-authentication-on-hypernode-development-plans/ + - /knowledgebase/basic-authentication-on-development-plans/ --- @@ -44,7 +45,7 @@ If your Development node lacks this file, or if your whitelist configuration onl To whitelist an IP address from basic authentication, you can add it to the geo statement in the whitelist file. You may also use an IP range, in [CIDR notation](https://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing). Please note you cannot use hostnames in the whitelist. -To find out the IP's that need to be whitelisted, please contact the external service provider, or [check your access logs](https://support.hypernode.com/en/troubleshooting/performance/general-troubleshooting) to see what IP's are accessing the website. +To find out the IP's that need to be whitelisted, please contact the external service provider, or [check your access logs](../../troubleshooting/performance/general-troubleshooting.md) to see what IP's are accessing the website. ### Whitelist a User Agent @@ -75,4 +76,4 @@ Please note that Google and Bing are still blocked when everyone else is allowed ## Troubleshooting - Google Pagespeed analysis uses the Google bot user agent and can therefore not be used on development nodes. -- In some cases, particularly if you have not yet enabled [Hypernode Managed Vhosts](https://support.hypernode.com/nginx-configuration/hypernode-managed-vhosts/), it’s possible the Basic Authentication blocks the Let’s Encrypt validation server. If you wish to make use of Let’s Encrypt on your development Hypernode, you should add the ‘letsencrypt’ user agent to the whitelist file. +- In some cases, particularly if you have not yet enabled [Hypernode Managed Vhosts](../../hypernode-platform/nginx/hypernode-managed-vhosts.md), it’s possible the Basic Authentication blocks the Let’s Encrypt validation server. If you wish to make use of Let’s Encrypt on your development Hypernode, you should add the ‘letsencrypt’ user agent to the whitelist file. diff --git a/docs/hypernode-platform/nginx/how-to-add-custom-http-headers-to-a-file-or-location.md b/docs/hypernode-platform/nginx/how-to-add-custom-http-headers-to-a-file-or-location.md index 39226277..f085b0d2 100644 --- a/docs/hypernode-platform/nginx/how-to-add-custom-http-headers-to-a-file-or-location.md +++ b/docs/hypernode-platform/nginx/how-to-add-custom-http-headers-to-a-file-or-location.md @@ -55,7 +55,7 @@ add_header Access-Control-Allow-Origin "https://www.example.com"; And don’t forget to change the domain name in the above example. You could add more file extensions if you want. -# Keep in Mind +## Keep in Mind - It is only possible in Nginx to add locations once. Only the first location in the configuration file takes presence. This is because the Nginx config works on a per-request base. - Don’t use a colon (`:`) when adding headers. This will result in inconsistent results in different browsers. diff --git a/docs/hypernode-platform/nginx/how-to-block-allow-ip-addresses-in-nginx.md b/docs/hypernode-platform/nginx/how-to-block-allow-ip-addresses-in-nginx.md index 8e119b47..a4724873 100644 --- a/docs/hypernode-platform/nginx/how-to-block-allow-ip-addresses-in-nginx.md +++ b/docs/hypernode-platform/nginx/how-to-block-allow-ip-addresses-in-nginx.md @@ -5,6 +5,7 @@ myst: module. Find thorough guidelines in this article. ' redirect_from: - /en/hypernode/nginx/how-to-block-allow-ip-addresses-in-nginx/ + - /knowledgebase/blocking-allowing-ip-addresses-in-nginx/ --- diff --git a/docs/hypernode-platform/nginx/how-to-block-user-agents-and-referrer-sites.md b/docs/hypernode-platform/nginx/how-to-block-user-agents-and-referrer-sites.md index 0a244d56..af979cd2 100644 --- a/docs/hypernode-platform/nginx/how-to-block-user-agents-and-referrer-sites.md +++ b/docs/hypernode-platform/nginx/how-to-block-user-agents-and-referrer-sites.md @@ -5,6 +5,7 @@ myst: sites here. ' redirect_from: - /en/hypernode/nginx/how-to-block-user-agents-and-referrer-sites/ + - /knowledgebase/blocking-user-agents-referrers/ --- diff --git a/docs/hypernode-platform/nginx/how-to-configure-nginx-for-a-multistore.md b/docs/hypernode-platform/nginx/how-to-configure-nginx-for-a-multistore.md index af1c3f02..75b6df9b 100644 --- a/docs/hypernode-platform/nginx/how-to-configure-nginx-for-a-multistore.md +++ b/docs/hypernode-platform/nginx/how-to-configure-nginx-for-a-multistore.md @@ -25,11 +25,11 @@ There is multiple scenarios possible to set up your Magento multistore. You can - Using subdirectories (e.g. example.com/en/ and example.com/fr/ etc.) - Using a combination of different domains and subdirectories (e.g. example.com and example.net/en/ and example.net/fr/) -Below we have provided the instructions on how to set up each of the scenarios within Nginx on your Hypernode. Please do note that in order to follow the instructions your Hypernode must have [Hypernode Managed Vhosts](https://support.hypernode.com/en/hypernode/nginx/hypernode-managed-vhosts) enabled. Furthermore we cannot guarantee that the instructions will work with all plugins and custom configurations since this has only been tested with the default Luma theme and without any customizations. +Below we have provided the instructions on how to set up each of the scenarios within Nginx on your Hypernode. Please do note that in order to follow the instructions your Hypernode must have [Hypernode Managed Vhosts](hypernode-managed-vhosts.md) enabled. Furthermore, we cannot guarantee that the instructions will work with all plugins and custom configurations since this has only been tested with the default Luma theme and without any customizations. ### Using Different Domains -When you opt for using different domains for each storefront then it will be relatively simple to setup Nginx for your multistore. Simply following the instructions on adding a new vhost with the instructions provided in the [Hypernode Managed Vhosts](https://support.hypernode.com/en/hypernode/nginx/hypernode-managed-vhosts) documentation. Once you have added the required vhost you need to add a `server.storecode` file to the specific vhost directory (`/data/web/nginx/example.com/`) with the following content: +When you opt for using different domains for each storefront then it will be relatively simple to setup Nginx for your multistore. Simply following the instructions on adding a new vhost with the instructions provided in the [Hypernode Managed Vhosts](hypernode-managed-vhosts.md) documentation. Once you have added the required vhost you need to add a `server.storecode` file to the specific vhost directory (`/data/web/nginx/example.com/`) with the following content: ```nginx set $storecode "example_storecode"; @@ -123,7 +123,7 @@ Below you can find an example setup where all the above options have been combin +----+---------+------------------------------------+--------------------+ ``` -First add the following vhosts using the information from the [Hypernode Managed Vhosts](https://support.hypernode.com/en/hypernode/nginx/hypernode-managed-vhosts) documentation. +First add the following vhosts using the information from the [Hypernode Managed Vhosts](hypernode-managed-vhosts.md) documentation. - [www.example.com](http://www.example.com) - [www.example.nl](http://www.example.nl) diff --git a/docs/hypernode-platform/nginx/how-to-configure-your-shop-to-only-use-https.md b/docs/hypernode-platform/nginx/how-to-configure-your-shop-to-only-use-https.md index b38de45d..a55f5d83 100644 --- a/docs/hypernode-platform/nginx/how-to-configure-your-shop-to-only-use-https.md +++ b/docs/hypernode-platform/nginx/how-to-configure-your-shop-to-only-use-https.md @@ -6,6 +6,7 @@ myst: article. redirect_from: - /en/hypernode/nginx/how-to-configure-your-shop-to-only-use-https/ + - /knowledgebase/configuring-shop-use-https/ --- @@ -16,15 +17,15 @@ On Hypernode we recommend serving your site only over HTTPS traffic. This is saf Most of the available browsers only support HTTP/2 when your pages are served over SSL so to use this faster and newer HTTP technology, order an SSL certificate and make sure your site is only served over HTTPS. -You can find more in-depth information in [this article about SSL on Hypernode](https://support.hypernode.com/knowledgebase/use-ssl-certificates-on-your-hypernode/). +You can find more in-depth information in [this article about SSL on Hypernode](../ssl/how-to-use-ssl-certificates-on-your-hypernode-when-ordered-via-hypernode-com.md). ## How to Use SSL Certificates via Hypernode.com -Please check out [this article](https://support.hypernode.com/en/hypernode/ssl/how-to-use-ssl-certificates-on-your-hypernode-when-ordered-via-hypernode-com) for the different SSL options when you use the Hypernode Control Panel. +Please check out [this article](../ssl/how-to-use-ssl-certificates-on-your-hypernode-when-ordered-via-hypernode-com.md) for the different SSL options when you use the Hypernode Control Panel. ## How to Use SSL Certificates via Hypernode.nl -Please check out [this article](https://support.hypernode.com/en/hypernode/ssl/how-to-use-ssl-certificates-on-your-hypernode-when-ordered-via-byte-nl) for the different SSL options when you use the Byte Service Panel. +Please check out [this article](../ssl/how-to-use-ssl-certificates-on-your-hypernode-when-ordered-via-hypernode-nl.md) for the different SSL options when you use the Byte Service Panel. ## Order Let’s Encrypt Certificates @@ -48,13 +49,19 @@ This command will not only request a LE Certificate but because of the --force-h ### On Hypernodes Without Hypernode Managed Vhosts Enabled -To order [Let’s Encrypt](https://support.hypernode.com/knowledgebase/use-lets-encrypt-hypernode/) certificates for all storefronts, use the following command: +To order [Let’s Encrypt](../ssl/how-to-use-lets-encrypt-on-hypernode.md) certificates for all storefronts, use the following command: -```nginx -## Create an entry for each storefront for DOMAIN in $( n98-magerun sys:store:config:base-url:list --format=csv | sed 1d | cut -d , -f 3 | perl -pe "s/https?://(www.)?//" | tr -d "/" | sort -u ) ; do echo -e "$DOMAIN www.${DOMAIN}" >> ~/.dehydrated/domains.txtdone ## Order the certificatesdehydrated -c --create-dirs +```bash +## Create an entry for each storefront +for DOMAIN in $( n98-magerun sys:store:config:base-url:list --format=csv | sed 1d | cut -d , -f 3 | perl -pe "s/https?://(www.)?//" | tr -d "/" | sort -u ); do + echo -e "$DOMAIN www.${DOMAIN}" >> ~/.dehydrated/domains.txt +done + +## Order the certificates +dehydrated -c --create-dirs ``` -Don’t forget to [add the cron to renew your certificates](https://support.hypernode.com/knowledgebase/use-lets-encrypt-hypernode/) to the crontab if you are using Let’s Encrypt! +Don’t forget to [add the cron to renew your certificates](../ssl/how-to-use-lets-encrypt-on-hypernode.md) to the crontab if you are using Let’s Encrypt! ## Changing Your Base URLs @@ -78,7 +85,7 @@ Run the following command to add the configuration to Nginx that routes all traf echo 'if ($scheme = http) { return 301 https://$host$request_uri; }' >> /data/web/nginx/public.ssl_redirect ``` -**Please note that if you have [Hypernode Managed Vhosts](https://support.hypernode.com/en/hypernode/nginx/hypernode-managed-vhosts) enabled, you can skip this.** +**Please note that if you have [Hypernode Managed Vhosts](hypernode-managed-vhosts.md) enabled, you can skip this.** ## Check Settings of Third Party Solutions diff --git a/docs/hypernode-platform/nginx/how-to-create-a-reusable-config-to-include-in-custom-snippets.md b/docs/hypernode-platform/nginx/how-to-create-a-reusable-config-to-include-in-custom-snippets.md index 892d3c6e..4f6516cf 100644 --- a/docs/hypernode-platform/nginx/how-to-create-a-reusable-config-to-include-in-custom-snippets.md +++ b/docs/hypernode-platform/nginx/how-to-create-a-reusable-config-to-include-in-custom-snippets.md @@ -6,6 +6,7 @@ myst: you. ' redirect_from: - /en/hypernode/nginx/how-to-create-a-reusable-config-to-include-in-custom-snippets/ + - /knowledgebase/create-reusable-config-for-custom-snippets/ --- @@ -19,7 +20,7 @@ This can be very useful to keep your configuration files tidy and clear. In this ## Create a Whitelist -If you work with additional applications like [phpRedisAdmin](https://support.hypernode.com/knowledgebase/setup-php-redis-admin-manage-redis-caches/), [Adminer](https://support.hypernode.com/knowledgebase/working-adminer-php-hypernode/), [Magmi](https://support.hypernode.com/knowledgebase/unblocking-and-accessing-magmi-for-hypernode/) or [PHPMyAdmin on a different domain or over ssl](https://support.hypernode.com/knowledgebase/use-phpmyadmin/#Hiding_PHPMyAdmin_from_the_world_by_adding_a_whitelist), a reusable whitelist or basic auth file can make things much easier, as you only need to manage a single file instead of one for every additional location. +If you work with additional applications like [Magmi](../tools/unblocking-and-accessing-magmi-for-hypernode.md) or [PHPMyAdmin on a different domain or over ssl](../mysql/how-to-use-phpmyadmin.md), a reusable whitelist or basic auth file can make things much easier, as you only need to manage a single file instead of one for every additional location. When a new developer joins or when the office IP of your organization changes, you can easily change the config without the need to grep for `allow` statements or multiple `basic_auth` files. @@ -61,9 +62,9 @@ Using this construction, you don’t need to update every location when another ### Create a Basic Auth Config File -In case you haven’t [created a basic auth password file](https://support.hypernode.com/knowledgebase/protect-a-directory-with-a-password-in-nginx/), do this first. +In case you haven’t [created a basic auth password file](how-to-protect-your-magento-store-with-a-password-in-nginx.md), do this first. -In this example we use the password file that is [automagically created on Hypernode Development nodes](https://support.hypernode.com/knowledgebase/basic-authentication-on-development-plans/): `/data/web/nginx/htpasswd-development`. +In this example we use the password file that is [automagically created on Hypernode Development nodes](basic-authentication-on-hypernode-development-plans.md): `/data/web/nginx/htpasswd-development`. ### Include the Configuration File in Custom Snippets diff --git a/docs/hypernode-platform/nginx/how-to-deny-access-to-locations-and-directories.md b/docs/hypernode-platform/nginx/how-to-deny-access-to-locations-and-directories.md index e7074d46..bbdf11ba 100644 --- a/docs/hypernode-platform/nginx/how-to-deny-access-to-locations-and-directories.md +++ b/docs/hypernode-platform/nginx/how-to-deny-access-to-locations-and-directories.md @@ -5,6 +5,7 @@ myst: accessed through the web, create a location and deny access to it. redirect_from: - /en/hypernode/nginx/how-to-deny-access-to-locations-and-directories/ + - /knowledgebase/deny-access-locations-directories/ --- diff --git a/docs/hypernode-platform/nginx/how-to-protect-your-magento-store-with-a-password-in-nginx.md b/docs/hypernode-platform/nginx/how-to-protect-your-magento-store-with-a-password-in-nginx.md index a0619fb2..d4a9e5d9 100644 --- a/docs/hypernode-platform/nginx/how-to-protect-your-magento-store-with-a-password-in-nginx.md +++ b/docs/hypernode-platform/nginx/how-to-protect-your-magento-store-with-a-password-in-nginx.md @@ -5,6 +5,7 @@ myst: about restricing access to a directory, specific domain or more in this article. ' redirect_from: - /en/hypernode/nginx/how-to-protect-your-magento-store-with-a-password-in-nginx/ + - /knowledgebase/protect-a-directory-with-a-password-in-nginx/ --- diff --git a/docs/hypernode-platform/nginx/how-to-redirect-from-or-to-www.md b/docs/hypernode-platform/nginx/how-to-redirect-from-or-to-www.md index 2d07ac0f..5ec49e2d 100644 --- a/docs/hypernode-platform/nginx/how-to-redirect-from-or-to-www.md +++ b/docs/hypernode-platform/nginx/how-to-redirect-from-or-to-www.md @@ -6,6 +6,8 @@ myst: to WWW here. redirect_from: - /en/hypernode/nginx/how-to-redirect-from-or-to-www/ + - /knowledgebase/redirect-from-or-to-www/ + - /knowledgebase/redirect-specific-domains-urls-https/ --- @@ -20,7 +22,7 @@ If you use the wwwizer servers, which are sometimes used when your domain is not For Service Panel customers only: when your domain is hosted at Hypernode, simply link it to your Hypernode through the [Service Panel](https://service.byte.nl/) -More info can be found [on our page about setting your DNS](https://support.hypernode.com/knowledgebase/dns-settings-hypernode/). +More info can be found [on our page about setting your DNS](../dns/how-to-manage-your-dns-settings-for-hypernode.md). ## Redirect From Apex to WWW diff --git a/docs/hypernode-platform/nginx/how-to-resolve-rate-limited-requests-429-too-many-requests.md b/docs/hypernode-platform/nginx/how-to-resolve-rate-limited-requests-429-too-many-requests.md index af5bca25..96d23f71 100644 --- a/docs/hypernode-platform/nginx/how-to-resolve-rate-limited-requests-429-too-many-requests.md +++ b/docs/hypernode-platform/nginx/how-to-resolve-rate-limited-requests-429-too-many-requests.md @@ -5,6 +5,7 @@ myst: and show you how to find which one applies and if needed, how to override them. redirect_from: - /en/hypernode/nginx/how-to-resolve-rate-limited-requests-429-too-many-requests/ + - /knowledgebase/resolving-429-many-requests/ --- @@ -52,7 +53,7 @@ A log entry where the rate limit is applied per IP address (based on the `zonepe ## Rate Limiting for Bots and Crawlers -Every day, your webshop is visited by many different bots and crawlers. While some, like Google, are important, many only have [a negative impact](https://support.hypernode.com/en/best-practices/performance/how-to-fix-performance-issues-caused-by-bots-and-crawlers) on your site, especially if they don’t follow your robots.txt. To protect your Hypernode against negative performance impacts by misbehaving bots, it utilizes an advanced rate-limiting mechanism. This slows down the hit rate for unimportant bots, leaving more performance for the bots you do care about and, more importantly, your actual visitors. +Every day, your webshop is visited by many different bots and crawlers. While some, like Google, are important, many only have [a negative impact](../../best-practices/performance/how-to-fix-performance-issues-caused-by-bots-and-crawlers.md) on your site, especially if they don’t follow your robots.txt. To protect your Hypernode against negative performance impacts by misbehaving bots, it utilizes an advanced rate-limiting mechanism. This slows down the hit rate for unimportant bots, leaving more performance for the bots you do care about and, more importantly, your actual visitors. ### Rejecting 429 Too Many Requests @@ -112,7 +113,7 @@ Besides the above-known plugins that will hit the blacklisted keyword, `http.rat To prevent a single IP from using all the FPM workers available simultaneously, leaving no workers available for other visitors, we implemented a per IP rate limit mechanism. This mechanism sets a maximum amount of PHP-FPM workers that can be used by one IP to 20. This way, one single IP address cannot deplete all the available FPM workers, leaving other visitors with an error page or a non-responding site. -**Please note:** if [Hypernode Managed Vhosts](https://support.hypernode.com/en/hypernode/nginx/hypernode-managed-vhosts) is enabled, only add the `http.conn_ratelimit` file in the Nginx root. Don't add it to the specific vhost as well, as these files will cancel each other out. +**Please note:** if [Hypernode Managed Vhosts](hypernode-managed-vhosts.md) is enabled, only add the `http.conn_ratelimit` file in the Nginx root. Don't add it to the specific vhost as well, as these files will cancel each other out. ### Exclude IP Addresses from the per IP Rate Limiting diff --git a/docs/hypernode-platform/nginx/how-to-restrict-access-to-your-admin-area.md b/docs/hypernode-platform/nginx/how-to-restrict-access-to-your-admin-area.md index 4a1bb553..d58cd5ff 100644 --- a/docs/hypernode-platform/nginx/how-to-restrict-access-to-your-admin-area.md +++ b/docs/hypernode-platform/nginx/how-to-restrict-access-to-your-admin-area.md @@ -12,7 +12,7 @@ redirect_from: # How to Restrict Access to Your Admin Area -It is very important to restrict access to your Magento admin panel. Hypernodes do have a [Fail2Ban](https://support.hypernode.com/knowledgebase/how-to-protect-your-magento-store-against-brute-force/), but if your password has been leaked, hackers will have access to all your data and your customers data with all the consequences that entails. One of the best ways to restrict access is by limiting the IP address that can even access the admin section. +It is very important to restrict access to your Magento admin panel. Hypernodes do have a [Fail2Ban](../../best-practices/security/how-to-protect-magento-against-brute-force-attacks.md), but if your password has been leaked, hackers will have access to all your data and your customers data with all the consequences that entails. One of the best ways to restrict access is by limiting the IP address that can even access the admin section. The snippet below will restrict access to the admin panel to 80.113.31.106 and 81.114.32.107. All other IP's will be denied. Replace the IP addresses with your IP address(es), if you don't know your current network IP, just visit [icanhazip.com](http://icanhazip.com). diff --git a/docs/hypernode-platform/nginx/how-to-use-nginx.md b/docs/hypernode-platform/nginx/how-to-use-nginx.md index c6340788..d1c7144a 100644 --- a/docs/hypernode-platform/nginx/how-to-use-nginx.md +++ b/docs/hypernode-platform/nginx/how-to-use-nginx.md @@ -56,11 +56,11 @@ Tips: Some typical scenarios are explained below: -- [How to block/allow IP-addresses in Nginx](https://support.hypernode.com/en/hypernode/nginx/how-to-block-allow-ip-addresses-in-nginx) -- [How to Protect Your Magento Store With a Password in Nginx](https://support.hypernode.com/en/hypernode/nginx/how-to-protect-your-magento-store-with-a-password-in-nginx) -- [How to Set the Server Name in Nginx](https://support.hypernode.com/en/hypernode/nginx/how-to-set-the-server-name-in-nginx) +- [How to block/allow IP-addresses in Nginx](how-to-block-allow-ip-addresses-in-nginx.md) +- [How to Protect Your Magento Store With a Password in Nginx](how-to-protect-your-magento-store-with-a-password-in-nginx.md) +- [How to Set the Server Name in Nginx](how-to-set-the-server-name-in-nginx.md) -More specific Nginx configurations can be found in [the category page about Nginx](https://support.hypernode.com/en/hypernode/nginx/). +More specific Nginx configurations can be found in [the category page about Nginx](../nginx.md). ## Modern Logging diff --git a/docs/hypernode-platform/php/how-to-resolve-502-gateway-errors.md b/docs/hypernode-platform/php/how-to-resolve-502-gateway-errors.md index 61172dec..4a3f5b15 100644 --- a/docs/hypernode-platform/php/how-to-resolve-502-gateway-errors.md +++ b/docs/hypernode-platform/php/how-to-resolve-502-gateway-errors.md @@ -73,7 +73,7 @@ You could experience a 502 error due to a misconfiguration of Varnish. For examp - Have you configured Varnish caching in the backend? Check if Varnish is enabled on the Hypernode: `hypernode-systemctl settings varnish_enabled` this should return `true`. If not, enable Varnish: `hypernode-systemctl settings varnish_enabled true` -- Is [HMV](https://support.hypernode.com/en/hypernode/nginx/hypernode-managed-vhosts) enabled? Check if Varnish is enabled for the vhost: +- Is [HMV](../nginx/hypernode-managed-vhosts.md) enabled? Check if Varnish is enabled for the vhost: `hypernode-manage-vhosts --all` If not, enable Varnish for the vhost:`hypernode-manage-vhosts example.com --varnish` - Or if you've just disabled Varnish in the backend, make sure to disable Varnish for the vhosts as well: diff --git a/docs/hypernode-platform/php/supported-php-versions-and-how-to-change-them-on-hypernode.md b/docs/hypernode-platform/php/supported-php-versions-and-how-to-change-them-on-hypernode.md index 281afb36..b8aceca2 100644 --- a/docs/hypernode-platform/php/supported-php-versions-and-how-to-change-them-on-hypernode.md +++ b/docs/hypernode-platform/php/supported-php-versions-and-how-to-change-them-on-hypernode.md @@ -5,6 +5,7 @@ myst: out which ones and how to change them here. ' redirect_from: - /en/hypernode/php/supported-php-versions-and-how-to-change-them-on-hypernode/ + - /knowledgebase/php-versions-magento-shop-hypernode/ --- @@ -52,7 +53,7 @@ It's quite easy to change the PHP version used on your Hypernode. You can change ### Via the hypernode-systemctl Tool -The easiest way to switch is by using the [hypernode-systemctl tool](https://support.hypernode.com/knowledgebase/hypernode-systemctl-cli-tool/). +The easiest way to switch is by using the [hypernode-systemctl tool](../tools/how-to-use-the-hypernode-systemctl-cli-tool.md). To see what version your Hypernode is configured with, you can run the following command: @@ -99,7 +100,7 @@ Afterwards it may take up to 10 minutes before your upgrade has completed. ## Testing a PHP Version -Unfortunately it is not possible to test with 2 PHP versions on one Hypernode. Before switching your PHP version we recommend you to test your shop to see if everything works as it should in the new PHP version. Testing your shop without having your customers notice anything can be done with [Docker for Hypernode](https://support.hypernode.com/knowledgebase/hypernode-docker/). Docker is a tool that gives you the opportunity to set up a virtual staging environment. You can also temporarily order a [Hypernode development package](https://support.hypernode.com/knowledgebase/development-plans-for-your-magento-shop/) to test your shop on. +Unfortunately it is not possible to test with 2 PHP versions on one Hypernode. Before switching your PHP version we recommend you to test your shop to see if everything works as it should in the new PHP version. Testing your shop without having your customers notice anything can be done with [Docker for Hypernode](../../best-practices/testing/hypernode-docker.md). Docker is a tool that gives you the opportunity to set up a virtual staging environment. You can also temporarily order a [Hypernode development package](../tools/how-to-use-hypernode-development-plans.md) to test your shop on. ## The Importance of Upgrading PHP @@ -143,4 +144,4 @@ According to Magento's Documentation, Magento 1.9.4 supports PHP 5.6, 7.0, 7.1, ### Ioncube compatibility -We support Ioncube for PHP 5.6 and PHP 7.x, but this extension is not enabled by default as it is a big performance killer. If you wish to have Ioncube enabled, please manually enable it via [the hypernode-systemctl tool](https://support.hypernode.com/knowledgebase/hypernode-systemctl-cli-tool/). +We support Ioncube for PHP 5.6 and PHP 7.x, but this extension is not enabled by default as it is a big performance killer. If you wish to have Ioncube enabled, please manually enable it via [the hypernode-systemctl tool](../tools/how-to-use-the-hypernode-systemctl-cli-tool.md). diff --git a/docs/hypernode-platform/php/what-limits-apply-to-active-php-requests-per-ip.md b/docs/hypernode-platform/php/what-limits-apply-to-active-php-requests-per-ip.md index 6e427253..ee72ad8e 100644 --- a/docs/hypernode-platform/php/what-limits-apply-to-active-php-requests-per-ip.md +++ b/docs/hypernode-platform/php/what-limits-apply-to-active-php-requests-per-ip.md @@ -20,4 +20,4 @@ When one IP uses up most or all of the available workers, this causes a processi Previously we configured a limit of `vCPUs * 5 - 2`. For our largest Hypernode plans, this could theoretically mean one IP using up to 99% of the available workers. This is undesired behaviour, but it can happen when a lot of people are accessing the admin pages from one office IP. This is why we have chosen to set the limit at 30 workers per IP. -Users that overstep this limit will be served a [429 too many requests status code](https://support.hypernode.com/knowledgebase/resolving-429-many-requests/). You can always circumvent this per IP rate-limiting by [whitelisting IP's in the NGINX config](https://support.hypernode.com/knowledgebase/resolving-429-many-requests/#Exclude_known_IP8217s_from_the_per_IP_rate_limiting_mechanism). +Users that overstep this limit will be served a [429 too many requests status code](../nginx/how-to-resolve-rate-limited-requests-429-too-many-requests.md). You can always circumvent this per IP rate-limiting by [whitelisting IP's in the NGINX config](../nginx/how-to-resolve-rate-limited-requests-429-too-many-requests.md#exclude-ip-addresses-from-the-per-ip-rate-limiting). diff --git a/docs/hypernode-platform/ssh/how-to-log-in-to-the-hypernode-with-ssh.md b/docs/hypernode-platform/ssh/how-to-log-in-to-the-hypernode-with-ssh.md index 162f49d6..8f5e8a4a 100644 --- a/docs/hypernode-platform/ssh/how-to-log-in-to-the-hypernode-with-ssh.md +++ b/docs/hypernode-platform/ssh/how-to-log-in-to-the-hypernode-with-ssh.md @@ -5,6 +5,7 @@ myst: shows how to log in to the Hypernode with PuTTY or Terminal using SSH. ' redirect_from: - /en/hypernode/ssh/how-to-log-in-to-the-hypernode-with-ssh/ + - /knowledgebase/login-hypernode-ssh/ --- @@ -15,7 +16,7 @@ Congratulations with your new Hypernode! To access it, you need to use an SSH cl This tutorial shows how to log in to the Hypernode with PuTTY (for Windows users) or Terminal (Linux and Mac OSX) using SSH. -NB: If you want to create SSH keys, please read the article: [Create SSH Keys on Hypernode](https://support.hypernode.com/knowledgebase/use-ssh-keys-on-hypernode/). +NB: If you want to create SSH keys, please read the article: [Create SSH Keys on Hypernode](../ssh/how-to-use-ssh-keys-on-hypernode.md). ## For Windows Users diff --git a/docs/hypernode-platform/ssh/how-to-use-ssh-keys-on-hypernode.md b/docs/hypernode-platform/ssh/how-to-use-ssh-keys-on-hypernode.md index 5c659518..149de82b 100644 --- a/docs/hypernode-platform/ssh/how-to-use-ssh-keys-on-hypernode.md +++ b/docs/hypernode-platform/ssh/how-to-use-ssh-keys-on-hypernode.md @@ -5,6 +5,7 @@ myst: users) or Terminal (Linux and Mac OSX) to log in to your Hypernode. redirect_from: - /en/hypernode/ssh/how-to-use-ssh-keys-on-hypernode/ + - /knowledgebase/use-ssh-keys-on-hypernode/ --- @@ -34,7 +35,7 @@ To generate an SSH keypair and connect to your Hypernode, you’ll need to use t After you have created a key pair, make sure you add your public key to your Hypernode. Please check first if you have access to a Byte Service Panel or a Hypernode control Panel. -### Service Panel Users: Add Public Key to the SSH Keymanager +### Service Panel Users: Add Public Key to the SSH Keymanager from Windows If you log in via the **Service Panel**, you have access to an SSH Keymanager to add your public keys to a Hypernode. The steps: diff --git a/docs/hypernode-platform/ssl/how-to-upgrade-your-ssl-settings-to-an-a.md b/docs/hypernode-platform/ssl/how-to-upgrade-your-ssl-settings-to-an-a.md index 5e344742..1c7aafe1 100644 --- a/docs/hypernode-platform/ssl/how-to-upgrade-your-ssl-settings-to-an-a.md +++ b/docs/hypernode-platform/ssl/how-to-upgrade-your-ssl-settings-to-an-a.md @@ -15,7 +15,7 @@ Many developers use the [Qualys SSL labs server test](https://www.ssllabs.com/ss ## SSL on Hypernode Background -There are multiple ways of configuring SSL on Hypernode, you can use [Let’s Encrypt](https://support.hypernode.com/en/hypernode/ssl/how-to-use-let-s-encrypt-on-hypernode), [Your own SSL certificate](https://support.hypernode.com/knowledgebase/use-ssl-certificates-on-your-hypernode/) or [Buy one from Hypernode via your Service Panel](https://support.hypernode.com/knowledgebase/link-ssl-certificate-hypernode/). Option 2 and 3 are only applicable if you are a **Service Panel** user with access to the [Service Panel](https://service.byte.nl/). +There are multiple ways of configuring SSL on Hypernode, you can use [Let’s Encrypt](../ssl/how-to-use-lets-encrypt-on-hypernode.md) or [order an SSL certificate](../ssl/how-to-use-ssl-certificates-on-your-hypernode-when-ordered-via-hypernode-com.md). All these methods of enabling SSL on your Hypernode, share the same configuration templates that we use for creating an Nginx configuration. @@ -33,7 +33,7 @@ It is possible to switch to the [Modern Compatibility Settings](https://wiki.moz #### Mozilla Modern Configuration and Hypernode Managed Vhosts -The Hypernode Managed Vhosts (HMV) system is currently enabled by default on all new booted Hypernodes (booted after 01-05-2020). Read more about HMV [here](https://support.hypernode.com/en/hypernode/nginx/hypernode-managed-vhosts). +The Hypernode Managed Vhosts (HMV) system is currently enabled by default on all new booted Hypernodes (booted after 01-05-2020). Read more about HMV [here](../nginx/hypernode-managed-vhosts.md). When you have different vhosts configured, you also need to enable the SSL config **per vhost**. You do this by running this command: @@ -78,26 +78,26 @@ If the site is served over HTTPS and static content is requested over HTTP, an e Google has written some incredible instructions on [how to fix and prevent mixed content warnings](https://developers.google.com/web/fundamentals/security/prevent-mixed-content/fixing-mixed-content) that can help you circumvent issues regarding mixed content. -If you experience many mixed content warnings after [changing your base-URLs in Magento](https://support.hypernode.com/knowledgebase/change-magento-baseurl/), clear your cache to ensure all cached URLs are replaced with the changed URL settings. +If you experience many mixed content warnings after [changing your base-URLs in Magento](../../ecommerce-applications/magento-2/how-to-change-your-magento-2-base-urls.md), clear your cache to ensure all cached URLs are replaced with the changed URL settings. For more experienced CLI users, searching with grep is the easiest way to solve these warnings: -```nginx +```bash grep -RE 'http://(www\.)?example\.com' /data/web/public ``` Or when you are on Magento 2: -```nginx +```bash grep -RE 'http://(www\.)?example\.com' /data/web/public /data/web/magento2 ``` ## Redirect all traffic from HTTP to HTTPS To redirect all traffic to HTTPS, you can easily add some configuration in Nginx. -To do so, use [the instructions in our article about redirecting all traffic to HTTPS](https://support.hypernode.com/knowledgebase/redirect-all-http-traffic-to-https-in-nginx/). +To do so, use [the instructions in our article about redirecting all traffic to HTTPS](../nginx/how-to-configure-your-shop-to-only-use-https.md). -If not all of your domains are HTTPS enabled (which is recommended), you can [selectively redirect specific domains to HTTPS, using a mapping](https://support.hypernode.com/knowledgebase/redirect-specific-domains-urls-https/). +If not all of your domains are HTTPS enabled (which is recommended), you can [selectively redirect specific domains to HTTPS, using a mapping](../nginx/how-to-redirect-from-or-to-www.md). ## Additional Information and Troubleshooting @@ -115,6 +115,6 @@ If the Qualys SSL labs server test is not working on your Hypernode, check the f - Make sure you have ordered or implemented an SSL certificate on your Hypernode - Check the [known issues page at Qualys](https://community.qualys.com/docs/DOC-4865) -- Check if the Qualys [user agent](https://support.hypernode.com/knowledgebase/blocking-user-agents-referrers/) or [IP address](https://support.hypernode.com/knowledgebase/blocking-allowing-ip-addresses-in-nginx/) is blocked -- Check if [the Qualys user agent or IP address is rate limited](https://support.hypernode.com/knowledgebase/resolving-429-many-requests/) +- Check if the Qualys [user agent](../nginx/how-to-block-user-agents-and-referrer-sites.md) or [IP address](../nginx/how-to-block-allow-ip-addresses-in-nginx.md) is blocked +- Check if [the Qualys user agent or IP address is rate limited](../nginx/how-to-resolve-rate-limited-requests-429-too-many-requests.md) - Check if basic auth is enabled on your node. If this is the case, add a temporary user name and password to the password file and adjust the URL to scan to https://:@example.com (Do not forget to remove the user after the test) diff --git a/docs/hypernode-platform/ssl/how-to-use-lets-encrypt-on-hypernode.md b/docs/hypernode-platform/ssl/how-to-use-lets-encrypt-on-hypernode.md index bc21160e..d5348558 100644 --- a/docs/hypernode-platform/ssl/how-to-use-lets-encrypt-on-hypernode.md +++ b/docs/hypernode-platform/ssl/how-to-use-lets-encrypt-on-hypernode.md @@ -6,6 +6,7 @@ myst: Hypernode. redirect_from: - /en/hypernode/ssl/how-to-use-let-s-encrypt-on-hypernode/ + - /knowledgebase/use-lets-encrypt-hypernode/ --- @@ -29,7 +30,7 @@ See their website for more information about how to use [Let's Encrypt](https:// ## Let’s Encrypt and Hypernode Managed Vhosts -**Please note:** If you want to use Let’s Encrypt and have the [Hypernode Managed Vhosts (HMV)](https://support.hypernode.com/en/hypernode/nginx/hypernode-managed-vhosts) system enabled, you need to create a vhost for every domain you want to use Let’s Encrypt on or else it won’t work. +**Please note:** If you want to use Let’s Encrypt and have the [Hypernode Managed Vhosts (HMV)](../nginx/hypernode-managed-vhosts.md) system enabled, you need to create a vhost for every domain you want to use Let’s Encrypt on or else it won’t work. First, check if HMV is enabled on your Hypernode: `hypernode-systemctl settings managed_vhosts_enabled` @@ -148,7 +149,7 @@ magerun2 config:store:set web/secure/base_url https://my.hypernode.io magerun2 cache:clean ``` -Read more [here](https://support.hypernode.com/knowledgebase/dns-settings-hypernode/). +Read more [here](../dns/how-to-manage-your-dns-settings-for-hypernode.md). Or, additionally you can make use of the scripts we created to change your baseurl provided for [Magento 1](https://gist.github.com/hn-support/0c76ebb5615a5be789997db2ae40bcdd) or for [Magento 2](https://gist.github.com/hn-support/083aabc8f9125b29098454cee1f25c89). @@ -174,7 +175,7 @@ If you want to switch to an SSL certificate managed by Hypernode (for example yo - Remove the cronjob from your crontab - Renew the Nginx configuration by running `hypernode-ssl-config-generator` -If you decide to not use any SSL certificate anymore and switch back to http (not recommended), don't forget to change your Magento base-url settings back to http, please see these docs for [Magento 1](https://support.hypernode.com/knowledgebase/change-baseurl-magento1/) and [Magento 2](https://support.hypernode.com/knowledgebase/change-baseurl-magento2/). +If you decide to not use any SSL certificate anymore and switch back to http (not recommended), don't forget to change your Magento base-url settings back to http, please see these docs for [Magento 1](../../ecommerce-applications/magento-1/how-to-change-the-base-url-in-magento-1-x.md) and [Magento 2](../../ecommerce-applications/magento-2/how-to-change-your-magento-2-base-urls.md). ## Troubleshooting diff --git a/docs/hypernode-platform/ssl/how-to-use-ssl-certificates-on-your-hypernode-when-ordered-via-hypernode-com.md b/docs/hypernode-platform/ssl/how-to-use-ssl-certificates-on-your-hypernode-when-ordered-via-hypernode-com.md index adf38bbd..dba850ce 100644 --- a/docs/hypernode-platform/ssl/how-to-use-ssl-certificates-on-your-hypernode-when-ordered-via-hypernode-com.md +++ b/docs/hypernode-platform/ssl/how-to-use-ssl-certificates-on-your-hypernode-when-ordered-via-hypernode-com.md @@ -119,7 +119,7 @@ Let’s Encrypt is a way to order free SSL certificates through domain validatio - Let’s Encrypt does not provide wildcard and/or EV certificates - Let’s Encrypt SSL Certificates are only valid for a 3 months period. -See [our documentation about configuring Let’s Encrypt on your Hypernode](https://support.hypernode.com/en/hypernode/ssl/how-to-use-let-s-encrypt-on-hypernode) on how to setup Let’s Encrypt on your Hypernode. +See [our documentation about configuring Let’s Encrypt on your Hypernode](../ssl/how-to-use-lets-encrypt-on-hypernode.md) on how to set up Let’s Encrypt on your Hypernode. ## Changing Your Base URLs diff --git a/docs/hypernode-platform/ssl/how-to-use-ssl-certificates-on-your-hypernode-when-ordered-via-hypernode-nl.md b/docs/hypernode-platform/ssl/how-to-use-ssl-certificates-on-your-hypernode-when-ordered-via-hypernode-nl.md index 5fe19d43..0ca00203 100644 --- a/docs/hypernode-platform/ssl/how-to-use-ssl-certificates-on-your-hypernode-when-ordered-via-hypernode-nl.md +++ b/docs/hypernode-platform/ssl/how-to-use-ssl-certificates-on-your-hypernode-when-ordered-via-hypernode-nl.md @@ -6,6 +6,7 @@ myst: via Byte.nl. redirect_from: - /en/hypernode/ssl/how-to-use-ssl-certificates-on-your-hypernode-when-ordered-via-byte-nl/ + - /knowledgebase/use-ssl-certificates-on-your-hypernode/ --- @@ -28,7 +29,7 @@ SSL sends information across the internet encrypted so that only the intended re We recommend purchasing an SSL certificate through Hypernode, because you’ll benefit from our managed hosting services. -When using a third party SSL certificate or [Let’s Encrypt](https://support.hypernode.com/en/hypernode/ssl/how-to-use-let-s-encrypt-on-hypernode), you are responsible for implementing, maintaining and renewing the certificate. We cannot provide any support on custom SSL certificates and related issues. +When using a third party SSL certificate or [Let’s Encrypt](../ssl/how-to-use-lets-encrypt-on-hypernode.md), you are responsible for implementing, maintaining and renewing the certificate. We cannot provide any support on custom SSL certificates and related issues. ## Buy an SSL Certificate Via Hypernode (Recommended) @@ -98,7 +99,7 @@ To upload your custom SSL, follow the steps below: ## Use Let’s Encrypt -For the more technical equipped developers we provide [Let’s Encrypt](https://support.hypernode.com/en/hypernode/ssl/how-to-use-let-s-encrypt-on-hypernode). +For the more technical equipped developers we provide [Let’s Encrypt](../ssl/how-to-use-lets-encrypt-on-hypernode.md). Let’s Encrypt is a way to order free SSL certificates through domain validation. This has a few limitations: @@ -106,7 +107,7 @@ Let’s Encrypt is a way to order free SSL certificates through domain validatio - Let’s Encrypt does not provide wildcard and/or EV certificates - Let’s Encrypt SSL Certificates are only valid for a 3 months period. -See [our documentation about configuring Let’s Encrypt on your Hypernode](https://support.hypernode.com/en/hypernode/ssl/how-to-use-let-s-encrypt-on-hypernode) on how to setup Let’s Encrypt on your Hypernode. +See [our documentation about configuring Let’s Encrypt on your Hypernode](../ssl/how-to-use-lets-encrypt-on-hypernode.md) on how to setup Let’s Encrypt on your Hypernode. ## How Do I remove a Custom SSL certificate From My Hypernode? @@ -121,7 +122,7 @@ Removing an SSL certificate from your Hypernode is easily done via your Service Your SSL certificate is now removed from your Hypernode. If you wish to add it again, simply go back to the overview page and click ‘Koppel handmatig een certificaat’. -To remove Let’s Encrypt certificates you need to log in to your hypernode and[delete the created certificates](https://support.hypernode.com/en/hypernode/ssl/how-to-use-let-s-encrypt-on-hypernode#Stop-using-dehydrated-/-Cleanup) over SSH. +To remove Let’s Encrypt certificates you need to log in to your hypernode and[delete the created certificates](../ssl/how-to-use-lets-encrypt-on-hypernode.md#stop-using-dehydrated--cleanup) over SSH. ## Changing Your Base URLs @@ -163,7 +164,7 @@ To check if all went well, check if `/data/web/nginx/nginx_error_output` is pres Now test your result by visiting the domain! -It is also possible to [selectively redirect to HTTP or HTTPS](https://support.hypernode.com/knowledgebase/redirect-specific-domains-urls-https/) depending on the domain, by using a mapping. +It is also possible to [selectively redirect to HTTP or HTTPS](../nginx/how-to-redirect-from-or-to-www.md) depending on the domain, by using a mapping. Redirecting all traffic to https and www @@ -193,7 +194,7 @@ All files in /data/web/nginx starting with public.\* will be included in front o ## Things to Remember When Using an SSL Certificate -- Don’t forget to point the DNS for your domain to your Hypernode. More information about how this is done [can be found in the article DNS settings Hypernode](https://support.hypernode.com/knowledgebase/dns-settings-hypernode/). +- Don’t forget to point the DNS for your domain to your Hypernode. More information about how this is done [can be found in the article DNS settings Hypernode](../dns/how-to-manage-your-dns-settings-for-hypernode.md). - You will need a storefront in Magento with a secure_base_url. Otherwise Magento will redirect you to the main store. You can change the base urls using the script mentioned above, you can also do this using the following support documentation. ## SSL on Your (non-www) Naked Domain While Using the Www-izer @@ -201,7 +202,7 @@ All files in /data/web/nginx starting with public.\* will be included in front o If you use the www-izer forwarders in the DNS settings for your domain name, people that visit directly will get an error message, either indicating that there is no https available or a plain connection refused error. If Hypernode manages your DNS, or you’ve configured your DNS to point directly to the Hypernode, this will not be a problem. -For more information please read the article [DNS Settings Hypernode](https://support.hypernode.com/knowledgebase/dns-settings-hypernode/) +For more information please read the article [DNS Settings Hypernode](../dns/how-to-manage-your-dns-settings-for-hypernode.md) ## Enable SSL Stapling diff --git a/docs/hypernode-platform/ssl/how-to-validate-your-ssl-certificate-and-more-frequently-asked-questions-about-ssl.md b/docs/hypernode-platform/ssl/how-to-validate-your-ssl-certificate-and-more-frequently-asked-questions-about-ssl.md index d1fe0a04..726f9a1e 100644 --- a/docs/hypernode-platform/ssl/how-to-validate-your-ssl-certificate-and-more-frequently-asked-questions-about-ssl.md +++ b/docs/hypernode-platform/ssl/how-to-validate-your-ssl-certificate-and-more-frequently-asked-questions-about-ssl.md @@ -36,7 +36,7 @@ The costs for an SSL certificate consist of two aspects: the costs for the actua The certificate costs you pay for an SSL certificate that you order via Hypernode, is the purchase prise we pay at our supplier. We arrange the entire SSL application for you. You do not have to do anything more than to order the certificate in your Service Panel. Only with EV-SSL you still have to take care of a number of things (as explained [here](#what-kind-of-certificates-can-i-order-via-hypernode)). -In the background, the certificate is requested with the correct data, the validation is done (place file, perform validation), the certificate is retrieved and safely stored in the right place. We ensure that your SSL certificate works properly, even if you change your plan. All you have to take care of is to install the SSL on the right Hypernode (which can be done with [one click](https://support.hypernode.com/en/hypernode/ssl/how-to-use-ssl-certificates-on-your-hypernode-when-ordered-via-byte-nl#Install-the-SSL-Certificate-on-your-Hypernode)). +In the background, the certificate is requested with the correct data, the validation is done (place file, perform validation), the certificate is retrieved and safely stored in the right place. We ensure that your SSL certificate works properly, even if you change your plan. All you have to take care of is to install the SSL on the right Hypernode (which can be done with [one click](../ssl/how-to-use-ssl-certificates-on-your-hypernode-when-ordered-via-hypernode-nl.md#install-the-ssl-certificate-on-your-hypernode)). ### Your SSL Certificate Is Automatically Renewed @@ -74,13 +74,13 @@ If the telephone validation fails, you can contact our support department. We ca ## Can I Request an SSL Certificate on My Hypernode Name? -Please note that you cannot request an SSL certificate for your app name (e.g. example.hypernode.io). You can create a [Let's Encrypt certificate](https://support.hypernode.com/en/hypernode/ssl/how-to-use-let-s-encrypt-on-hypernode) for this. If you want SSL for your domain, you need a Presence or Presence Plus plan for each domain for which you want to request an SSL certificate. This is necessary because the domain must be known in our administration before we can order an SSL certificate. +Please note that you cannot request an SSL certificate for your app name (e.g. example.hypernode.io). You can create a [Let's Encrypt certificate](../ssl/how-to-use-lets-encrypt-on-hypernode.md) for this. If you want SSL for your domain, you need a Presence or Presence Plus plan for each domain for which you want to request an SSL certificate. This is necessary because the domain must be known in our administration before we can order an SSL certificate. So first make sure that you have ordered a Presence plan, even if your domain is registered externally. Then you order the SSL certificate as an add-on to this Presence plan. Make sure that you have the Contractant role for both plans. ## How Do I Order an SSL Certificate? -You can request an SSL certificate via our Service Panel. You can order this as an add-on to a Presence package. You can find out how to do that [here](). +You can request an SSL certificate via our Service Panel. You can order this as an add-on to a Presence package. You can find out how to do that [here](../ssl/how-to-use-ssl-certificates-on-your-hypernode-when-ordered-via-hypernode-nl.md#buy-an-ssl-certificate-via-hypernode-recommended). ## How Can I Link the SSL Certificate to the Hypernode? @@ -112,4 +112,4 @@ Make sure there are no more redirects to the HTTPS version of your site. ## Can I Use My Own SSL Certificate? -You can also use a (custom) SSL certificate you purchased elsewhere on a Hypernode. You can find out how to install this on your Hypernode [here](https://support.hypernode.com/en/hypernode/ssl/how-to-use-ssl-certificates-on-your-hypernode-when-ordered-via-byte-nl#Add-a-Custom-SSL-Certificate). +You can also use a (custom) SSL certificate you purchased elsewhere on a Hypernode. You can find out how to install this on your Hypernode [here](../ssl/how-to-use-ssl-certificates-on-your-hypernode-when-ordered-via-hypernode-nl.md#add-a-custom-ssl-certificate). diff --git a/docs/hypernode-platform/tools/how-to-configure-lesti-fpc.md b/docs/hypernode-platform/tools/how-to-configure-lesti-fpc.md index d09e5a46..37299a49 100644 --- a/docs/hypernode-platform/tools/how-to-configure-lesti-fpc.md +++ b/docs/hypernode-platform/tools/how-to-configure-lesti-fpc.md @@ -16,13 +16,13 @@ Lesti::FPC is a FPC Full Page Caching module you can use to speed up the fronten More information about the internals of the module can be found on [the website of the developer of the module, Gordon Lesti.](https://gordonlesti.com/lesti-fpc-documentationversion-1-4-5/) -A tutorial on how it works is available on the page [“How does Lesti::FPC work”](https://gordonlesti.com/how-does-lesti-fpc-work/) . +A tutorial on how it works is available on the page [How does Lesti::FPC work](https://gordonlesti.com/how-does-lesti-fpc-work/). This module also works in combination with `Redis`. -This article will explain how to configure Lesti::FPC and use it on Hypernode. It is however recommended to first enable [Redis Cache](https://support.hypernode.com/en/support/search/solutions?term=redis+cache) as your caching backend before proceeding with this tutorial. +This article will explain how to configure Lesti::FPC and use it on Hypernode. It is however recommended to first enable [Redis Cache](../../ecommerce-applications/magento-1/how-to-configure-redis-for-magento-1.md) as your caching backend before proceeding with this tutorial. -**NB: When you used the [hypernode-importer](https://support.hypernode.com/en/hypernode/tools/how-to-migrate-your-shop-to-hypernode#Option-2-for-all-customers%3A-Migrate-your-shop-via-Shell-using-hypernode-importer) and you were already using `Lesti::FPC`, you can skip this tutorial, as we already added the configuration for caching using `Lesti::FPC`.** +**NB: When you used the [hypernode-importer](how-to-migrate-your-shop-to-hypernode.md#option-2-for-all-customers-migrate-your-shop-via-shell-using-the-hypernode-importer) and you were already using `Lesti::FPC`, you can skip this tutorial, as we already added the configuration for caching using `Lesti::FPC`.** ## Download Lesti::FPC diff --git a/docs/hypernode-platform/tools/how-to-deploy-your-application-using-hypernode-deploy-v1.md b/docs/hypernode-platform/tools/how-to-deploy-your-application-using-hypernode-deploy-v1.md index 7467827a..14b48476 100644 --- a/docs/hypernode-platform/tools/how-to-deploy-your-application-using-hypernode-deploy-v1.md +++ b/docs/hypernode-platform/tools/how-to-deploy-your-application-using-hypernode-deploy-v1.md @@ -18,7 +18,7 @@ Before starting, make sure you have the following requirements setup correctly: - (Access to) a Hypernode - A Github account -Make sure to [create a new SSH key pair](https://support.hypernode.com/en/hypernode/ssh/how-to-use-ssh-keys-on-hypernode) as a deployment key, and [add this to your Hypernode via the Control Panel](https://support.hypernode.com/en/services/control-panel/how-to-add-keys-to-the-ssh-keymanager). We'll use this SSH key in the deployment process to upload your application to the Hypernode. +Make sure to [create a new SSH key pair](../ssh/how-to-use-ssh-keys-on-hypernode.md) as a deployment key, and [add this to your Hypernode via the Control Panel](../../services/control-panel/how-to-add-keys-to-the-ssh-key-manager.md). We'll use this SSH key in the deployment process to upload your application to the Hypernode. ## Configure your Deployment SSH key pair in Github diff --git a/docs/hypernode-platform/tools/how-to-free-up-disk-space.md b/docs/hypernode-platform/tools/how-to-free-up-disk-space.md index fdf27afa..ce244466 100644 --- a/docs/hypernode-platform/tools/how-to-free-up-disk-space.md +++ b/docs/hypernode-platform/tools/how-to-free-up-disk-space.md @@ -25,13 +25,13 @@ To display the disk usage report sorted in descending order: `ncdu /data` In most situations, there was an explosion of session-files. Check in /data/web/public/var/session whether this is the case. You could consider to store your sessions in MySQL or Redis. If the amount of sessions is not the problem (ie less than 100K), then use this command to find the folder with the most files: -```nginx +```bash find /data -xdev -printf '%h\n' | sort | uniq -c | sort -k 1 -n ``` If you have identified a folder with lots (millions) of files, this is a handy command to, for example delete all session files older than 2 days: -```nginx +```bash cd /data/web/public/var/session find . -type f -mtime +2 -ls -delete ``` @@ -40,13 +40,13 @@ find . -type f -mtime +2 -ls -delete Try to see where you can clear up the most space. The following command (using SSH) will show you the top 10 largest directories: -```nginx +```bash du -h /data/web /data/mysql | sort -h | tail -10 ``` ## Have You Tried Optimizing Your Images Yet? -This can save you up to 30% in disk space without any downsides. Additionally, your site will become a lot faster for your visitors. Use the Hypernode Image Optimizer to [optimize your Magento images](https://support.hypernode.com/knowledgebase/magento-image-optimization-howto/) within 5 minutes. +This can save you up to 30% in disk space without any downsides. Additionally, your site will become a lot faster for your visitors. Use the Hypernode Image Optimizer to [optimize your Magento images](../../best-practices/performance/how-to-optimize-your-images.md) within 5 minutes. ## Another Quick Fix Would Be to Clear the Magento Cache. @@ -54,13 +54,13 @@ This can be done through the Magento back-end (“clear cache”). You can also For Magento 1: -```nginx +```bash magerun cache:flush ``` For Magento 2: -```nginx +```bash magerun2 cache:flush ``` @@ -68,7 +68,7 @@ magerun2 cache:flush You can remove these with the following command: -```nginx +```bash find ~/public/var/reports -type f -delete find ~/public/var/log -type f -delete ``` @@ -77,18 +77,18 @@ find ~/public/var/log -type f -delete When running specific extremely long queries (several hours), MySQL disk usage may grow but is freed. This is known behaviour of MySQL and can only be resolved manually. Check whether you are affected: -```nginx +```console $ ls -lah /data/mysql/ibdata1 -rw-rw---- 1 mysql mysql 29G Jun 28 12:48 /data/mysql/ibdata1 ``` -If the size is more than 2 GB, see our instructions on [how to resolve growing ibdata1](https://support.hypernode.com/knowledgebase/free-diskspace-ibdata1/). +If the size is more than 2 GB, see our instructions on [how to resolve growing ibdata1](../mysql/how-to-free-disk-space-from-mysql-ibdata1.md). ## Find out If You Cleaned up Adequate Space You can check your disk usage with: -```nginx +```bash df -h /data df -i /data ``` @@ -97,13 +97,13 @@ df -i /data In case you have deleted some supersized log files or other ambiguous and huge files, but this doesn’t result in more available disk space when checking it with the aforementioned commands, then some process is still using these files. You can easily check this with: -```nginx +```bash lsof +L1 ``` This will show you a list of processes that are still using the original file and preventing the disk space to be reclaimed as being available. Just copy the process id (PID) and kill the process using: -```nginx +```bash kill ``` diff --git a/docs/hypernode-platform/tools/how-to-migrate-your-shop-to-hypernode.md b/docs/hypernode-platform/tools/how-to-migrate-your-shop-to-hypernode.md index eff12511..a7cb1077 100644 --- a/docs/hypernode-platform/tools/how-to-migrate-your-shop-to-hypernode.md +++ b/docs/hypernode-platform/tools/how-to-migrate-your-shop-to-hypernode.md @@ -5,6 +5,7 @@ myst: shop to Hypernode for testing on this page. ' redirect_from: - /en/hypernode/tools/how-to-migrate-your-shop-to-hypernode/ + - /knowledgebase/migrating-your-magento-to-hypernode/ --- @@ -22,7 +23,7 @@ Congratulations with your brand new Hypernode! In case you already have a shop, - Shopware 5 - Shopware 6 -Before importing your shop, make sure your [vhost](https://support.hypernode.com/a/solutions/articles/48000981127?lang=en) is of the right `type`. You can verify that by listing the existing vhosts with the following command: `hypernode-manage-vhosts --list`. This will generate a list of every vhost, their type and some additional information that might be interesting. +Before importing your shop, make sure your [vhost](../nginx/hypernode-managed-vhosts.md) is of the right `type`. You can verify that by listing the existing vhosts with the following command: `hypernode-manage-vhosts --list`. This will generate a list of every vhost, their type and some additional information that might be interesting. If your vhost isn't the right `type`, you should chance the type of the vhost. You can achieve this by the following command: @@ -54,7 +55,7 @@ When you select the maintenance box in the importer tool in the Service Panel, t \*If your domain is hosted at Hypernode, there is a quick and easy way to switch your DNS to the Hypernode. Login into the [Service Panel](https://service.byte.nl). Make sure your Hypernode is selected in the dropdown menu -> Instellingen -> SSL & DNS instellingen -> Find your domain in the list -> change the 'Beschikbaar' value into 'Koppel domeinnaam aan deze Hypernode'. Repeat these steps for all the domains that should be linked to your Hypernode. -\*If your domain is being hosted externally, you need to change the DNS settings manually. Read [this article](https://support.hypernode.com/knowledgebase/dns-settings-hypernode/)to see which records you need to modify. +\*If your domain is being hosted externally, you need to change the DNS settings manually. Read [this article](../dns/how-to-manage-your-dns-settings-for-hypernode.md)to see which records you need to modify. \*Although the Shop importer is a very easy way to import a shop, please keep in mind that is using the command line is a requirement. So if needed, find yourself an [experienced developer](https://www.byte.nl/partners#specialisms=Hypernode&cms=Magento) that can assist you with these tasks. @@ -78,7 +79,7 @@ The `hypernode-importer` is a very comprehensive tool as it has several alternat Please follow these steps: -- [Log in to your Hypernode with SSH](https://support.hypernode.com/knowledgebase/login-hypernode-ssh/) +- [Log in to your Hypernode with SSH](../ssh/how-to-log-in-to-the-hypernode-with-ssh.md) - Use the `hypernode-importer`to automatically migrate the shop to your Hypernode. All data currently on your Hypernode will be overwritten. Its usage is simple: - `--host` Enter the SSH hostname - `--user` Enter the SSH user @@ -96,7 +97,7 @@ Please follow these steps: ## Done Migrating? -Done? Now it's time to[check if everything works](https://support.hypernode.com/a/solutions/articles/48000985053?lang=en) as it should! +Done? Now it's time to[check if everything works](../../best-practices/testing/how-to-check-if-everything-works.md) as it should! ## Tips and Tricks diff --git a/docs/hypernode-platform/tools/how-to-use-elasticsearch-on-hypernode.md b/docs/hypernode-platform/tools/how-to-use-elasticsearch-on-hypernode.md index a4340d2b..cb567252 100644 --- a/docs/hypernode-platform/tools/how-to-use-elasticsearch-on-hypernode.md +++ b/docs/hypernode-platform/tools/how-to-use-elasticsearch-on-hypernode.md @@ -12,7 +12,7 @@ redirect_from: # How to Use Elasticsearch on Hypernode -While previously it was already possible to use Elasticsearch with your Hypernode by [connecting to an external search provider](https://support.hypernode.com/knowledgebase/how-to-improve-your-magento-search/#ElasticSearch), we have now made it possible to use Elasticsearch for search in your Magento shop out of the box on Hypernode without requiring any external service or configuration. In this article we'll explain a bit more about Elasticsearch and how to enable and configure it. +While previously it was already possible to use Elasticsearch with your Hypernode by [connecting to an external search provider](../../best-practices/performance/how-to-improve-your-magento-search.md#elasticsearch), we have now made it possible to use Elasticsearch for search in your Magento shop out of the box on Hypernode without requiring any external service or configuration. In this article we'll explain a bit more about Elasticsearch and how to enable and configure it. ## What is Elasticsearch? @@ -22,13 +22,13 @@ The implementation of Elasticsearch on Hypernode is built for this primary use-c *If you do want to treat Elasticsearch as a primary database, you should not use the Elasticsearch instance on the Hypernode itself but arrange something externally instead. While we will keep the data between plan upgrades and downgrades, you should regard the built-in Elasticsearch on Hypernode as a cache (akin to how we treat Redis on Hypernode), and not as a consistent database. It is possible that due to future upgrade paths or as a result of a backup restore scenario the data stored in the Elasticsearch will be lost.* -In our release note you'll find a [more detailed description of Elasticsearch.](https://support.hypernode.com/changelog/release-6270-elasticsearch-on-hypernode/) +In our release note you'll find a [more detailed description of Elasticsearch.](https://changelog.hypernode.com/release-6270-elasticsearch-on-hypernode/) ## How to Enable Elasticsearch on Hypernode **Please note that when you change versions all Elasticsearch data will be deleted.** -Elasticsearch can be enabled on all Hypernodes. To enable Elasticsearch, you can [talk to the API](https://community.hypernode.io/#/Documentation/hypernode-api/settings/README) or use the [hypernode-systemctl command-line tool](https://support.hypernode.com/knowledgebase/hypernode-systemctl-cli-tool/). First configure the Elasticsearch version you wish to use. You can see the available versions of Elasticsearch which you can use on your Hypernode when running hypernode-systemctl settings. This will show the following: +Elasticsearch can be enabled on all Hypernodes. To enable Elasticsearch, you can [talk to the API](https://community.hypernode.io/#/Documentation/hypernode-api/settings/README) or use the [hypernode-systemctl command-line tool](../tools/how-to-use-the-hypernode-systemctl-cli-tool.md). First configure the Elasticsearch version you wish to use. You can see the available versions of Elasticsearch which you can use on your Hypernode when running hypernode-systemctl settings. This will show the following: ```bash $ hypernode-systemctl settings |& grep elasticsearch_version @@ -61,7 +61,7 @@ elasticsearch_enabled is set to value False ``` -When you choose to enable Elasticsearch on a production node, keep in mind that Elasticsearch will use a lot of resources. We allocate up to 10% of the system memory as the [JVM heap](https://www.elastic.co/guide/en/elasticsearch/reference/current/heap-size.html), with a maximum of 10GB or RAM. Note that the service can have a big impact on the CPU and [IO utilization](https://support.hypernode.com/knowledgebase/magento-disk-performance-optimization/) of your Hypernode. If you notice adverse effects, you can disable the service again or consider upgrading (especially if you already have other opt-in features like [RabbitMQ enabled as well](https://support.hypernode.com/changelog/platform/release-6052-rabbitmq-on-hypernode/)). +When you choose to enable Elasticsearch on a production node, keep in mind that Elasticsearch will use a lot of resources. We allocate up to 10% of the system memory as the [JVM heap](https://www.elastic.co/guide/en/elasticsearch/reference/current/heap-size.html), with a maximum of 10GB or RAM. Note that the service can have a big impact on the CPU and [IO utilization](../../troubleshooting/performance/how-to-optimise-your-magento-disk-performance.md) of your Hypernode. If you notice adverse effects, you can disable the service again or consider upgrading (especially if you already have other opt-in features like [RabbitMQ enabled as well](https://changelog.hypernode.com/release-6052-rabbitmq-on-hypernode/). To enable Elasticsearch you can run the following: @@ -158,7 +158,7 @@ yellow open magento2_product_1_v2 0HHoI2ahT6CdX4Z5ybSKcw 5 1 187 0 469.2kb 469.2 ``` -Note that the status is yellow instead of green. This is because the index was created with an expected number of replicas. Because on Hypernode there is no Elasticsearch cluster but there is just a single instance, this is expected. If you need guarantees about the replication of your Elasticsearch data we recommend that you use another solution. For some examples check [this list](https://support.hypernode.com/knowledgebase/how-to-improve-your-magento-search/) of external Elasticsearch providers that we recommend. +Note that the status is yellow instead of green. This is because the index was created with an expected number of replicas. Because on Hypernode there is no Elasticsearch cluster but there is just a single instance, this is expected. If you need guarantees about the replication of your Elasticsearch data we recommend that you use another solution. For some examples check [this list](../../best-practices/performance/how-to-improve-your-magento-search.md) of external Elasticsearch providers that we recommend. You can configure your created index to expect an amount of zero replicas. That will turn the cluster status back to green. Since Elasticsearch 6`.x` it is not possible to set index level settings in the node configuration, but you can do so during runtime with this command: diff --git a/docs/hypernode-platform/tools/how-to-use-hypernode-development-plans.md b/docs/hypernode-platform/tools/how-to-use-hypernode-development-plans.md index 5e12d9d4..c3d81326 100644 --- a/docs/hypernode-platform/tools/how-to-use-hypernode-development-plans.md +++ b/docs/hypernode-platform/tools/how-to-use-hypernode-development-plans.md @@ -6,6 +6,7 @@ myst: plans here. ' redirect_from: - /en/hypernode/tools/how-to-use-hypernode-development-plans/ + - /knowledgebase/development-plans-for-your-magento-shop/ --- @@ -47,7 +48,7 @@ If you log in via [my.hypernode.com](https://auth.hypernode.com/), please use th - Or click **Change your plan** in the Hypernode overview. - You'll now see an overview of your current plan on the left and the new plan on the right. - Select the desired plan and the type of environment, which is Production. -- Select an add-on. Read more about our two SLA levels [here](https://support.hypernode.com/en/about/support/emergency-support-outside-office-hours-#Hypernode-Emergency-Service-Costs). +- Select an add-on. Read more about our two SLA levels [here](../../about-hypernode/support/emergency-support-outside-office-hours.md#hypernode-emergency-service-costs). - Agree with terms and conditions and click Change to this plan. Your plan will be changed immediately. ## Limitations @@ -67,7 +68,7 @@ The default user credentials for development nodes are: You can of course change these credentials, and add and remove user accounts. It is also possible to whitelist IP addresses to exclude them from the basic authentication. This allows you to whitelist services and third party tools that can’t use basic authentication, or easily allow your merchant access to the development environment. -For information on how to configure this, we have an article on how to use [Basic Authentication on Hypernode Development Plans](https://support.hypernode.com/en/hypernode/nginx/basic-authentication-on-hypernode-development-plans). +For information on how to configure this, we have an article on how to use [Basic Authentication on Hypernode Development Plans](../nginx/basic-authentication-on-hypernode-development-plans.md). To override a single IP from the basic authentication, you can whitelist this IP address by adding it to `/data/web/nginx/whitelist-development-exception.conf`. @@ -100,4 +101,4 @@ The Hypernode Docker is a tool that allows you to set up a virtual Hypernode for ## How To Start? -Order a development plan and start developing in no time! Do you already have a shop and do you wish to import it onto a Development node? Learn more about migrating it in [this article](https://support.hypernode.com/en/hypernode/tools/how-to-migrate-your-shop-to-hypernode). +Order a development plan and start developing in no time! Do you already have a shop and do you wish to import it onto a Development node? Learn more about migrating it in [this article](../tools/how-to-migrate-your-shop-to-hypernode.md). diff --git a/docs/hypernode-platform/tools/how-to-use-magento-corediff-on-hypernode.md b/docs/hypernode-platform/tools/how-to-use-magento-corediff-on-hypernode.md index 10999ff4..d1013974 100644 --- a/docs/hypernode-platform/tools/how-to-use-magento-corediff-on-hypernode.md +++ b/docs/hypernode-platform/tools/how-to-use-magento-corediff-on-hypernode.md @@ -38,4 +38,4 @@ In the example above, you can see that the file */data/web/magento2/app/Mage.php ## Cleaning up malicious code -If you do end up finding malicious code, we advise you to follow our guide on recovering [a hacked magento shop](https://support.hypernode.com/en/best-practices/security/how-to-recover-a-hacked-magento-shop). +If you do end up finding malicious code, we advise you to follow our guide on recovering [a hacked magento shop](../../best-practices/security/how-to-recover-a-hacked-magento-shop.md). diff --git a/docs/hypernode-platform/tools/how-to-use-mailhog-on-hypernode.md b/docs/hypernode-platform/tools/how-to-use-mailhog-on-hypernode.md index 18c4936f..f8eb30c9 100644 --- a/docs/hypernode-platform/tools/how-to-use-mailhog-on-hypernode.md +++ b/docs/hypernode-platform/tools/how-to-use-mailhog-on-hypernode.md @@ -6,6 +6,7 @@ myst: here. redirect_from: - /en/hypernode/tools/how-to-use-mailhog-on-hypernode/ + - /knowledgebase/how-to-use-mailhog-on-hypernode/ --- @@ -40,7 +41,7 @@ This will forward `localhost:8025` (where MailHog is running) to our local `8025 ## Access MailHog with HMV and Basic Authentication -If HMV ([Hypernode Managed Vhosts](https://support.hypernode.com/en/hypernode/nginx/hypernode-managed-vhosts)) is enabled on your Hypernode, you can easily create a vhost for MailHog by using the command below which also enables Basic Authentication. +If HMV ([Hypernode Managed Vhosts](../nginx/hypernode-managed-vhosts.md)) is enabled on your Hypernode, you can easily create a vhost for MailHog by using the command below which also enables Basic Authentication. ```nginx hypernode-manage-vhosts mailhog.example.hypernode.io --https --force-https --type mailhog diff --git a/docs/hypernode-platform/tools/how-to-use-periodic-tasks-cronjobs-on-hypernode.md b/docs/hypernode-platform/tools/how-to-use-periodic-tasks-cronjobs-on-hypernode.md index aead84ed..df951965 100644 --- a/docs/hypernode-platform/tools/how-to-use-periodic-tasks-cronjobs-on-hypernode.md +++ b/docs/hypernode-platform/tools/how-to-use-periodic-tasks-cronjobs-on-hypernode.md @@ -6,6 +6,7 @@ myst: to use them. redirect_from: - /en/hypernode/tools/how-to-use-periodic-tasks-cronjobs-on-hypernode/ + - /knowledgebase/configure-cronjobs-on-hypernode/ --- diff --git a/docs/hypernode-platform/tools/how-to-use-the-hypernode-systemctl-cli-tool.md b/docs/hypernode-platform/tools/how-to-use-the-hypernode-systemctl-cli-tool.md index c15badad..69e37be2 100644 --- a/docs/hypernode-platform/tools/how-to-use-the-hypernode-systemctl-cli-tool.md +++ b/docs/hypernode-platform/tools/how-to-use-the-hypernode-systemctl-cli-tool.md @@ -6,6 +6,7 @@ myst: easier. redirect_from: - /en/hypernode/tools/how-to-use-the-hypernode-systemctl-cli-tool/ + - /knowledgebase/hypernode-systemctl-cli-tool/ --- @@ -40,7 +41,7 @@ To see which values you can set and which values they are allowed to have take a - `openvpn_enabled`: Enables [OpenVPN](https://community.hypernode.io/#/Documentation/hypernode-vpn/README?) for secure database connections - `override_sendmail_return_path`: Override the return-path (Due to the bug in Magento 2) - `password_auth`: indicates whether password authentication for the Hypernode is allowed instead of only SSH keys. -- `permissive_memory_management`: Configure [memory management policy](https://support.hypernode.com/changelog/platform/release-5946-configurable-memory-management-policy-and-rss-bruteforce-detection/) (OOM kills) +- `permissive_memory_management`: Configure [memory management policy](https://changelog.hypernode.com/release-5946-configurable-memory-management-policy-and-rss-bruteforce-detection/) (OOM kills) - `php_version`: Change the PHP version - `php_apcu_enabled`: Enable the PHP-apcu - `redis_persistent_instance` @@ -70,13 +71,13 @@ If an invalid value is provided you will be notified of this during the setting ### Blackfire -- `blackfire_enabled`Indicates whether Blackfire is enabled. Check out [this article](https://support.hypernode.com/knowledgebase/profiling-magento-blackfire/) on how to set up Blackfire. +- `blackfire_enabled`Indicates whether Blackfire is enabled. Check out [this article](../../best-practices/performance/how-to-use-blackfire-on-hypernode-to-find-performance-issues.md) on how to set up Blackfire. - `blackfire_server_token`The BlackFire server token for your Blackfire setup. - `blackfire_server_id` The BlackFire server ID for your Blackfire setup. ### Disable optimizer switch -Indicates whether `use_index_extensions` and `mrr` are turned off. If turned off this can improve performance due to an issue in PHP 5.6 related to Multi-Range Read Optimization. For more information about this setting see this [changelog](https://support.hypernode.com/changelog/release-5340-block-ftp-access-sftp-used-systems-tweaks/#Opt-in_use_index_extensions_and_Multi-Range_Read_Optimization). +Indicates whether `use_index_extensions` and `mrr` are turned off. If turned off this can improve performance due to an issue in PHP 5.6 related to Multi-Range Read Optimization. For more information about this setting see this [changelog](https://changelog.hypernode.com/release-5340-block-ftp-access-sftp-used-systems-tweaks/). ### Elasticsearch @@ -89,30 +90,30 @@ This options allows you to enable IonCube if needed. Note: IonCube is a huge per ### Firewall block FTP -Indicates whether FTP is completely blocked or not in favour of SFTP. For more information about this setting see this [changelog](https://support.hypernode.com/changelog/release-5340-block-ftp-access-sftp-used-systems-tweaks/). +Indicates whether FTP is completely blocked or not in favour of SFTP. For more information about this setting see this [changelog](https://changelog.hypernode.com/release-5340-block-ftp-access-sftp-used-systems-tweaks/). ### Mailhog -This options enables Mailhog. Mailhog is an email testing tool for developers. Check our [documentation](https://support.hypernode.com/knowledgebase/how-to-use-mailhog-on-hypernode/) for a more detailed explanation about Mailhog on Hypernode. +This options enables Mailhog. Mailhog is an email testing tool for developers. Check our [documentation](../../hypernode-platform/tools/how-to-use-mailhog-on-hypernode.md) for a more detailed explanation about Mailhog on Hypernode. ### Managed Vhosts -Eanble the Hypernode Managed Vhosts option to setup the Hypernode with a specific Nginx config which allows you to setup multiple domain names with their own independent Nginx configuration. See our [documentation](https://support.hypernode.com/en/hypernode/nginx/hypernode-managed-vhosts) for more information. +Eanble the Hypernode Managed Vhosts option to setup the Hypernode with a specific Nginx config which allows you to setup multiple domain names with their own independent Nginx configuration. See our [documentation](../nginx/hypernode-managed-vhosts.md) for more information. ### Modern SSH config enabled -Indicates whether this node will have a stricter set of SSH encryption algorithms enabled. See [this](https://support.hypernode.com/changelog/release-5139-stricter-ssh-encryption-algorithms/%22%3Ethis) [changelog](https://support.hypernode.com/changelog/release-5139-stricter-ssh-encryption-algorithms/) for more information about this setting. +Indicates whether this node will have a stricter set of SSH encryption algorithms enabled. See [this changelog](https://changelog.hypernode.com/release-5139-stricter-ssh-encryption-algorithms/) for more information about this setting. ### Modern SSL config enabled -Indicates whether this node will have the Mozilla Modern SSL configuration configured. This provides a higher level of security but loses compatibility with some browsers. For more information about this setting see [this changelog](https://support.hypernode.com/changelog/release-4582-updated-configurable-ssl-ciphers/). +Indicates whether this node will have the Mozilla Modern SSL configuration configured. This provides a higher level of security but loses compatibility with some browsers. For more information about this setting see [this changelog](https://changelog.hypernode.com/release-4582-updated-configurable-ssl-ciphers/). ### MySQL - `mysql_version`: Change the MySQL version (note, once set to 5.7 this can't be reverted) - `mysql_disable_stopwords` -This setting makes it possible to disable the built-in stopword file for MyISAM search indexes. Read the [changelog](https://support.hypernode.com/changelog/release-6079-opt-in-disable-stopwords-for-myisam-search-indexes/) for more information. +This setting makes it possible to disable the built-in stopword file for MyISAM search indexes. Read the [changelog](https://changelog.hypernode.com/release-6079-opt-in-disable-stopwords-for-myisam-search-indexes/) for more information. - `mysql_ft_min_word_len` @@ -120,21 +121,21 @@ This setting will make it possible to configure the ft_min_word_len for MySQL. T - `mysql_tmp_on_data_enabled` -Indicates whether the MySQL tmp directory is located in the `/data/` directory of the `app` user or in the `/tmp/` directory of the `root` user. The `root` user does not have the same amount of space available as the `app` user, so enabling this might prevent MySQL from taking up all disk space at the cost of taking of the space of the `app` user. Mostly useful for large shops who create a lot of temporary tables with MySQL. For more information about this settings see [this changelog](https://support.hypernode.com/changelog/release-5133-configurable-mysql-temporary-directory-extra-space/). +Indicates whether the MySQL tmp directory is located in the `/data/` directory of the `app` user or in the `/tmp/` directory of the `root` user. The `root` user does not have the same amount of space available as the `app` user, so enabling this might prevent MySQL from taking up all disk space at the cost of taking of the space of the `app` user. Mostly useful for large shops who create a lot of temporary tables with MySQL. For more information about this settings see [this changelog](https://changelog.hypernode.com/release-5133-configurable-mysql-temporary-directory-extra-space/). - `mysql_enable_large_thread_stack` -This option allows you to use a larger MySQL thread_stack from 192K to 512K. Check our [changelog](https://support.hypernode.com/changelog/release-7083-opt-in-large-mysql-thread_stack/) for more information. +This option allows you to use a larger MySQL thread_stack from 192K to 512K. Check our [changelog](https://changelog.hypernode.com/release-7083-opt-in-large-mysql-thread_stack/) for more information. ### Open VPN enabled -Our Hypernode-vpn solution implements a standard OpenVPN TLS tunnel to the Hypernode. Which can be used to talk to the MySQL database securely. You simply enable OpenVPN on your Hypernode and all the required packages and configuration are installed automatically. The automation will generate a default user configuration which you can use to connect to the Hypernode. More information can be found [here](https://support.hypernode.com/knowledgebase/how-to-use-hypernode-vpn/) +Our Hypernode-vpn solution implements a standard OpenVPN TLS tunnel to the Hypernode. Which can be used to talk to the MySQL database securely. You simply enable OpenVPN on your Hypernode and all the required packages and configuration are installed automatically. The automation will generate a default user configuration which you can use to connect to the Hypernode. ### Override sendmail return-path Indicates if this node has a return-path set. When you send emails from your Magento shop with no return-path set, the return-path will default to noreply@hypernode.io. This email address may be recognised as a spam address by spam filters, as it is a very generic email used on all Hypernodes without same email configuration. -Check out [this article](https://support.hypernode.com/knowledgebase/set-return-path-email-sent-from-magento-shop/) for more information. +Check out [this article](../../ecommerce-applications/magento-2/how-to-set-the-return-path-for-a-magento-2-shop.md) for more information. ### Password Auth @@ -142,7 +143,7 @@ Indicates whether password authentication for the node is allowed instead of onl ### Permissive Memory Management -Configure the OOM-killer to be permissive of short term memory usage, allowing memory hungry processes to run without executing overly drastic measures. For more information see our [documentation](https://support.hypernode.com/en/troubleshooting/performance/how-to-debug-out-of-memory-oom-events). +Configure the OOM-killer to be permissive of short term memory usage, allowing memory hungry processes to run without executing overly drastic measures. For more information see our [documentation](../../troubleshooting/performance/how-to-debug-out-of-memory-oom-events.md). ### PHP @@ -151,15 +152,15 @@ Configure the OOM-killer to be permissive of short term memory usage, allowing m ### Redis persistent instance -Enable this feature to start another Redis instance for sessions instead of caching. Please note that this might require some changes on your end. For more information about this setting see [this changelog](https://support.hypernode.com/changelog/experimental-changes-redis-sessions-aws-performance/). +Enable this feature to start another Redis instance for sessions instead of caching. Please note that this might require some changes on your end. For more information about this setting see [this changelog](https://changelog.hypernode.com/experimental-changes-redis-sessions-aws-performance/). ### RabbitMQ Enabled -This options enables RabbitMQ which allows you to run tasks in the background. RabbitMQ is message-queueing software where queues can be defined. Applications can connect to the queue and transfer a message onto it. This way you can (for example) import many products into Magento without having to wait a substantial time until the process is finished. The import takes place in the background. Check our [documentation](https://support.hypernode.com/en/best-practices/database/how-to-run-rabbitmq-on-hypernode) for more information. +This options enables RabbitMQ which allows you to run tasks in the background. RabbitMQ is message-queueing software where queues can be defined. Applications can connect to the queue and transfer a message onto it. This way you can (for example) import many products into Magento without having to wait a substantial time until the process is finished. The import takes place in the background. Check our [documentation](../../best-practices/database/how-to-run-rabbitmq-on-hypernode.md) for more information. ### Supervisor Enabled -This option allows you to use Supervisor. Supervisor allows you to use programs that need to run all the time on your Hypernode. These (usually long running) programs should not fail if there is an error. To accomplish this Supervisor watches your programs and restarts them if they might fail. Supervisor works great for use cases where a web hook or metrics always needs to run. See the [changelog](https://support.hypernode.com/changelog/release-6892-supervisord-support/) for more information on Supervisor. +This option allows you to use Supervisor. Supervisor allows you to use programs that need to run all the time on your Hypernode. These (usually long running) programs should not fail if there is an error. To accomplish this Supervisor watches your programs and restarts them if they might fail. Supervisor works great for use cases where a web hook or metrics always needs to run. See the [changelog](https://changelog.hypernode.com/release-6892-supervisord-support/) for more information on Supervisor. ### UnixODBC diff --git a/docs/hypernode-platform/tools/hypernode-brancher.md b/docs/hypernode-platform/tools/hypernode-brancher.md index 691b6a7c..6b935e5d 100644 --- a/docs/hypernode-platform/tools/hypernode-brancher.md +++ b/docs/hypernode-platform/tools/hypernode-brancher.md @@ -23,7 +23,7 @@ Hypernode Brancher is a mutable and temporary copy of your Hypernode. It’s bas If you wish to get a more recent state on the Brancher node, you can create a new backup on your Hypernode using `hypernode-systemctl create_backup`. Note that this requires SLA Standard to be enabled on your Hypernode. -Read more about our [backup policy here](https://support.hypernode.com/en/hypernode/backups/hypernode-backup-policy). +Read more about our [backup policy here](../backups/hypernode-backup-policy.md). ## Why should I use it? diff --git a/docs/hypernode-platform/tools/hypernode-cli-tools-and-magerun-plugins.md b/docs/hypernode-platform/tools/hypernode-cli-tools-and-magerun-plugins.md index b0922252..55023eec 100644 --- a/docs/hypernode-platform/tools/hypernode-cli-tools-and-magerun-plugins.md +++ b/docs/hypernode-platform/tools/hypernode-cli-tools-and-magerun-plugins.md @@ -5,6 +5,7 @@ myst: and hypernode-vagrant to Hypernode users to make your life as a developer easier. redirect_from: - /en/hypernode/tools/hypernode-cli-tools-and-magerun-plugins/ + - /knowledgebase/hypernode-cli-tools-magerun-plugins/ --- @@ -26,7 +27,7 @@ The hypernode-systemctl tool allows you to set certain values for your Hypernode - Firewall block - Safer SSL and SSH configuration -Details can be found in [a separate article about the hypernode-systemctl tool](https://support.hypernode.com/en/hypernode/tools/how-to-use-the-hypernode-systemctl-cli-tool). +Details can be found in [a separate article about the hypernode-systemctl tool](../tools/how-to-use-the-hypernode-systemctl-cli-tool.md). ## Command Line Utilities @@ -34,31 +35,31 @@ Details can be found in [a separate article about the hypernode-systemctl tool]( Tool to create FTP users and credentials -*More info can be found in*\*[the article about how to manage ftp users](https://support.hypernode.com/knowledgebase/configuring-ftp/).\* +*More info can be found in*\*[the article about how to manage ftp users](../ftp/how-to-configure-ftp-sftp-on-hypernode.md).\* ### hypernode-parse-nginx-log Parse the json based Nginx access logging and filter specific fields. -*More info can be found in [the article about working with logs](https://support.hypernode.com/en/hypernode/nginx/how-to-find-the-the-top-10-visitors-by-parsing-the-nginx-access-logs).* +*More info can be found in [the article about working with logs](../nginx/how-to-find-the-the-top-10-visitors-by-parsing-the-nginx-access-logs.md).* ### hypernode-cron-flockerizr Converts your cron file entries to make use of flock. -*More information about how to use flock can be found in [the article about periodic tasks](https://support.hypernode.com/knowledgebase/configure-cronjobs-on-hypernode/).* +*More information about how to use flock can be found in [the article about periodic tasks](how-to-use-periodic-tasks-cronjobs-on-hypernode.md).* ### hypernode-fpm-slow-modules Detects Magento extensions that slow down the shop by parsing the /var/log/php-fpm/php-slow.log -*More info about how to detect slow extensions can be found in*[*the article about interpreting the php-slow-log.*](https://support.hypernode.com/knowledgebase/spot-slow-extensions-using-phps-slow-log/) +*More info about how to detect slow extensions can be found in*[*the article about interpreting the php-slow-log.*](../../troubleshooting/performance/how-to-spot-slow-extensions-using-the-php-slow-logs.md) ### hypernode-image-optimizer This tool provides a very easy way of optimizing images to improve performance and save diskspace. -*More information about how to optimize your images can be found*\*[in the documentation about the hypernode-image-optimizer](https://support.hypernode.com/knowledgebase/magento-image-optimization-howto/).\* +*More information about how to optimize your images can be found*\*[in the documentation about the hypernode-image-optimizer](../../best-practices/performance/how-to-optimize-your-images.md).\* ### hypernode-fpm-status @@ -85,7 +86,7 @@ optional arguments: --version show program's version number and exit ``` -More information on this handy command can be found in this [Hypernode Changelog](https://support.hypernode.com/changelog/release-5070-new-hypernode-servicectl-utility-restart-services-app-user/) and the one dedicated to [restarting Redis](https://support.hypernode.com/changelog/release-5840-hypernode-servicectl-can-also-restart-redis/). +More information on this handy command can be found in this [Hypernode Changelog](https://changelog.hypernode.com/release-5070-new-hypernode-servicectl-utility-restart-services-app-user/) and the one dedicated to [restarting Redis](https://changelog.hypernode.com/release-5840-hypernode-servicectl-can-also-restart-redis/). ### hypernode-importer @@ -93,7 +94,7 @@ The hypernode-importer is a neat tool to fully automagically import your site on It can be used to either create a copy of your shop on the Hypernode, or copy your site to a Hypernode Docker. -*To find more information about how to migrate your Magento to Hypernode, check the*\*[documentation about the hypernode-importer](https://support.hypernode.com/knowledgebase/migrating-your-magento-to-hypernode/).\* +\*To find more information about how to migrate your Magento to Hypernode, check the [documentation about the hypernode-importer](how-to-migrate-your-shop-to-hypernode.md). ### hypernode-postsuper diff --git a/docs/hypernode-platform/tools/unblocking-and-accessing-magmi-for-hypernode.md b/docs/hypernode-platform/tools/unblocking-and-accessing-magmi-for-hypernode.md index 5797a316..563b8c1f 100644 --- a/docs/hypernode-platform/tools/unblocking-and-accessing-magmi-for-hypernode.md +++ b/docs/hypernode-platform/tools/unblocking-and-accessing-magmi-for-hypernode.md @@ -6,6 +6,7 @@ myst: it. redirect_from: - /en/hypernode/tools/unblocking-and-accessing-magmi-for-hypernode/ + - /knowledgebase/unblocking-and-accessing-magmi-for-hypernode/ --- @@ -27,7 +28,7 @@ To unblock Magmi and offer **secure** access to it for your users and/or develop Then pick one of the snippets that applies to your wishes and save it as `server.magmi` or in your `/data/web/nginx/magmi.conf` config file. -*NB: If you don’t want to update IP addresses in all config files with every change of IP address, you can choose to use*\*[include files](https://support.hypernode.com/knowledgebase/create-reusable-config-for-custom-snippets/).\* +*NB: If you don’t want to update IP addresses in all config files with every change of IP address, you can choose to use*\*[include files](../nginx/how-to-create-a-reusable-config-to-include-in-custom-snippets.md).\* ### Protect Your Magmi Installation With HTTP Basic Authentication @@ -44,7 +45,7 @@ location ~* /magmi($|/) { } ``` -Don’t forget to [create a user](https://support.hypernode.com/knowledgebase/protect-a-directory-with-a-password-in-nginx/): +Don’t forget to [create a user](../nginx/how-to-protect-your-magento-store-with-a-password-in-nginx.md): ```bash htpasswd -c /data/web/nginx/magmi.htpasswd exampleuser @@ -87,7 +88,7 @@ location ~* /magmi($|/) { We strongly recommend enforcing HTTPS-only on Magmi because of the possibility of entering database passwords or transferring other sensitive information. -If you haven’t [enforced HTTPS across your whole site](https://support.hypernode.com/knowledgebase/redirect-all-http-traffic-to-https-in-nginx/), you can enforce it for Magmi by adding the following line inside the `location` block: +If you haven’t [enforced HTTPS across your whole site](../nginx/how-to-configure-your-shop-to-only-use-https.md), you can enforce it for Magmi by adding the following line inside the `location` block: ```nginx if ($scheme = http) { diff --git a/docs/hypernode-platform/varnish/how-to-enable-varnish-on-hypernode.md b/docs/hypernode-platform/varnish/how-to-enable-varnish-on-hypernode.md index fa6e116e..633f301b 100644 --- a/docs/hypernode-platform/varnish/how-to-enable-varnish-on-hypernode.md +++ b/docs/hypernode-platform/varnish/how-to-enable-varnish-on-hypernode.md @@ -7,7 +7,7 @@ redirect_from: # How to enable Varnish on Hypernode -Customers with a Trial, Pelican M (or up), Falcon S (or up) or Eagle plan can use Varnish to boost the performance of their application. After enabling Varnish, you still need to configure both Varnish and your application. We have [support documentation per application](https://support.hypernode.com/en/hypernode/varnish/how-to-enable-varnish-on-hypernode#Configure-Varnish-on-your-application) available to guide you through the process: +Customers with a Trial, Pelican M (or up), Falcon S (or up) or Eagle plan can use Varnish to boost the performance of their application. After enabling Varnish, you still need to configure both Varnish and your application. We have [support documentation per application](../varnish/how-to-enable-varnish-on-hypernode.md#configure-varnish-on-your-application) available to guide you through the process: ## Enable Varnish 4.0 or 6.0 @@ -27,14 +27,14 @@ At Hypernode it’s possible to enable Varnish 4.0 or 6.0 via the Control Panel, - Click on "Varnish" - Use the switch to enable Varnish -**Configure Varnish 6.0 via the [hypernode-systemctl tool](https://support.hypernode.com/knowledgebase/hypernode-systemctl-cli-tool/)** +**Configure Varnish 6.0 via the [hypernode-systemctl tool](../tools/how-to-use-the-hypernode-systemctl-cli-tool.md)** `hypernode-systemctl settings varnish_version 6.0` **Or if you want to switch to Varnish 4.0** `hypernode-systemctl settings varnish_version 4.0` -**Enable Varnish via the [hypernode-systemctl tool](https://support.hypernode.com/knowledgebase/hypernode-systemctl-cli-tool/)** +**Enable Varnish via the [hypernode-systemctl tool](../tools/how-to-use-the-hypernode-systemctl-cli-tool.md)** `hypernode-systemctl settings varnish_enabled true` @@ -48,7 +48,7 @@ Since the introduction of \*\*[hypernode-manage-vhosts](https://changelog.hypern The last step will be configuring Varnish on your application. Below you can find our available documentation for configuring Varnish on the application you’re using: -- [How to configure Varnish for Magento 1](https://support.hypernode.com/en/ecommerce/magento-1/how-to-configure-varnish-for-magento-1-x) -- [How to configure Varnish for Magento 2](https://support.hypernode.com/en/ecommerce/magento-2/how-to-configure-varnish-for-magento-2-x) -- [How to configure Varnish for Shopware 5](https://support.hypernode.com/en/support/solutions/articles/48001207016-how-to-configure-varnish-for-shopware-5) -- [How to configure Varnish for Shopware 6](https://support.hypernode.com/en/support/solutions/articles/48001200525-how-to-configure-varnish-for-shopware-6) +- [How to configure Varnish for Magento 1](../../ecommerce-applications/magento-1/how-to-configure-varnish-for-magento-1-x.md) +- [How to configure Varnish for Magento 2](../../ecommerce-applications/magento-2/how-to-configure-varnish-for-magento-2-x.md) +- [How to configure Varnish for Shopware 5](../../ecommerce-applications/shopware-5/how-to-configure-varnish-for-shopware-5.md) +- [How to configure Varnish for Shopware 6](../../ecommerce-applications/shopware-6/how-to-configure-varnish-for-shopware-6.md) diff --git a/docs/services/control-panel/different-control-panel-scenarios.md b/docs/services/control-panel/different-control-panel-scenarios.md index 7e228497..1accfa15 100644 --- a/docs/services/control-panel/different-control-panel-scenarios.md +++ b/docs/services/control-panel/different-control-panel-scenarios.md @@ -11,7 +11,7 @@ redirect_from: # Different Control Panel Scenarios -**Please note that this FAQ only applies to Control Panel users that log in via my.hypernode.com. If you use the Service Panel and log in via service.byte.nl please see our [Different Service Panel Scenarios article](https://support.hypernode.com/en/about/support/different-service-panel-scenarios).** +**Please note that this FAQ only applies to Control Panel users that log in via my.hypernode.com. If you use the Service Panel and log in via service.byte.nl please see our [Different Service Panel Scenarios article](../../services/service-panel/different-service-panel-scenarios.md).** For security and usability, the Hypernode Control Panel's features are available to users based on the role assigned to the individual user. Each user invited to a team is assigned a role within the team. diff --git a/docs/services/control-panel/how-to-change-your-hypernode-settings.md b/docs/services/control-panel/how-to-change-your-hypernode-settings.md index 99646c98..8c3c661d 100644 --- a/docs/services/control-panel/how-to-change-your-hypernode-settings.md +++ b/docs/services/control-panel/how-to-change-your-hypernode-settings.md @@ -37,7 +37,7 @@ Indicates whether the MySQL tmp directory is located in the `/data/` directory o ### Blackfire enabled -Indicates whether Blackfire is enabled. Check out [this article](https://support.hypernode.com/en/best-practices/performance/how-to-use-blackfire-on-hypernode-to-find-performance-issues) on how to set up Blackfire. +Indicates whether Blackfire is enabled. Check out [this article](../../best-practices/performance/how-to-use-blackfire-on-hypernode-to-find-performance-issues.md) on how to set up Blackfire. ### Blackfire server token @@ -67,7 +67,7 @@ Indicates whether FTP is completely blocked or not in favour of SFTP. For more i ### New Relic enabled -Indicates whether New Relic is enabled. Check out [this article](https://support.hypernode.com/en/best-practices/performance/how-to-find-your-performance-bottleneck-with-new-relic) on how to set up New Relic. +Indicates whether New Relic is enabled. Check out [this article](../../best-practices/performance/how-to-find-your-performance-bottleneck-with-new-relic.md) on how to set up New Relic. ### Modern SSH config enabled @@ -81,4 +81,4 @@ Indicates whether this node will have the Mozilla Modern SSL configuration confi Indicates if this node has a return-path set. When you send emails from your Magento shop with no return-path set, the return-path will default to noreply@hypernode.io. This email address may be recognised as a spam address by spam filters, as it is a very generic email used on all Hypernodes without same email configuration. -Check out [this article](https://support.hypernode.com/en/ecommerce/magento-2/how-to-set-the-return-path-for-a-magento-2-shop) for more information. +Check out [this article](../../ecommerce-applications/magento-2/how-to-set-the-return-path-for-a-magento-2-shop.md) for more information. diff --git a/docs/services/control-panel/how-to-link-your-domain-to-your-hypernode.md b/docs/services/control-panel/how-to-link-your-domain-to-your-hypernode.md index 35bc85d1..e05a3e50 100644 --- a/docs/services/control-panel/how-to-link-your-domain-to-your-hypernode.md +++ b/docs/services/control-panel/how-to-link-your-domain-to-your-hypernode.md @@ -44,7 +44,7 @@ This way we know which domains are used on a node that is being migrated or upgr To make this work your domains should be hosted at Hypernode, so [order your domain](https://www.byte.nl/hosting/domeinnaam) or migrate it to Hypernode. -If your domains are not hosted at Hypernode, read the documentation about [how to configure your DNS for Hypernode](https://support.hypernode.com/en/hypernode/dns/how-to-manage-your-dns-settings-for-hypernode). +If your domains are not hosted at Hypernode, read the documentation about [how to configure your DNS for Hypernode](../../hypernode-platform/dns/how-to-manage-your-dns-settings-for-hypernode.md). ### Link your Domain to Your Hypernode @@ -63,4 +63,4 @@ To sync the DNS of your domain to a linked Hypernode, use the following steps: - Go the domain detail page by clicking **Details**. - Click the orange **DNS manager**button in the top right. -You can manage your domain's DNS on this page. Set the toggle at the top of the page, at **S\*\*\*\*ynchronize DNS with example.hypernode.io**, to **on**to sync your domain to the linked Hypernode. We will automatically add the  CNAME- and A-record that point to your Hypernode to the DNS. We also add [the required records for outgoing email](https://support.hypernode.com/en/hypernode/email/how-to-set-up-your-dns-for-outgoing-email). You can't edit these specific records while the domain is synced to the Hypernode. When you disable syncing, you are able to edit and/or remove these records. +You can manage your domain's DNS on this page. Set the toggle at the top of the page, at **S\*\*\*\*ynchronize DNS with example.hypernode.io**, to **on**to sync your domain to the linked Hypernode. We will automatically add the CNAME- and A-record that point to your Hypernode to the DNS. We also add [the required records for outgoing email](../../hypernode-platform/email/how-to-set-up-your-dns-for-outgoing-email.md). You can't edit these specific records while the domain is synced to the Hypernode. When you disable syncing, you are able to edit and/or remove these records. diff --git a/docs/services/control-panel/how-to-order-a-hypernode-and-transfer-ownership-to-a-customer.md b/docs/services/control-panel/how-to-order-a-hypernode-and-transfer-ownership-to-a-customer.md index 41d819ba..a0a87657 100644 --- a/docs/services/control-panel/how-to-order-a-hypernode-and-transfer-ownership-to-a-customer.md +++ b/docs/services/control-panel/how-to-order-a-hypernode-and-transfer-ownership-to-a-customer.md @@ -29,12 +29,11 @@ To order a new Hypernode plan, follow these steps: 1. Click on the orange 'Order Hypernode' button on the right. 1. Choose your Hypernode plan and click on the orange 'order now' button. 1. Choose the needed Hypernode plan configuration, SLA and continue: - -![](_res/uA9B2g-CkfkMKHl6NxGYv7LI3Y_US-rgDg.png) -6\. Read "[Step 2: Tips For Ordering a Hypernode](https://support.hypernode.com/en/services/control-panel/how-to-order-a-hypernode-and-transfer-ownership-to-a-customer#Step-2%3A-Tips-For-Ordering-a-Hypernode)" -7\. Give your Hypernode a name and proceed to checkout. -8\. Check if all information is correct and place your order. -9\. The new Hypernode plan will be booted and you will receive an email when it's ready. + ![](_res/uA9B2g-CkfkMKHl6NxGYv7LI3Y_US-rgDg.png) +1. Read "[Step 2: Tips For Ordering a Hypernode](../../services/control-panel/how-to-order-a-hypernode-and-transfer-ownership-to-a-customer.md#step-2-tips-for-ordering-a-hypernode)" +1. Give your Hypernode a name and proceed to checkout. +1. Check if all information is correct and place your order. +1. The new Hypernode plan will be booted and you will receive an email when it's ready. Please note: if you are a Service Panel user (i.e. you use the Dutch panel), please order your new plans directly via [this page in the Service Panel](https://service.byte.nl/planinfo/order-selection/). This is to prevent plans from being booted in the wrong system. @@ -44,8 +43,8 @@ Please note: if you are a Service Panel user (i.e. you use the Dutch panel), ple - Make sure you pick a node with enough disk space for both your shop and your database. - Don’t use environment indicators like staging test, testing, dev or development: - Without these indicators, you can easily change this node from a live to a test node without confusion or having to migrate to a server with another name. -- Still developing a shop? Then [select a development environment first](https://support.hypernode.com/knowledgebase/development-plans-for-your-magento-shop/). When your Hypernode [is ready to go live](https://support.hypernode.com/knowledgebase/go-live-with-your-hypernode/) you can easily switch to a production node. -- Use [this article to remove a Magento installation](https://support.hypernode.com/knowledgebase/remove-magento-installation/) in case you want to reuse an existing Hypernode or accidentally ordered a Hypernode with a preinstalled Magento on it. +- Still developing a shop? Then [select a development environment first](../../hypernode-platform/tools/how-to-use-hypernode-development-plans.md). When your Hypernode [is ready to go live](../../best-practices/testing/how-to-go-live-with-your-hypernode.md) you can easily switch to a production node. +- Use [this article to remove a Magento installation](../../ecommerce-applications/magento-2/how-to-remove-your-magento-2-x-installation.md) in case you want to reuse an existing Hypernode or accidentally ordered a Hypernode with a preinstalled Magento on it. ## Step 3: Transfer Ownership to your customer diff --git a/docs/services/control-panel/how-to-use-teams.md b/docs/services/control-panel/how-to-use-teams.md index c3444159..6615519e 100644 --- a/docs/services/control-panel/how-to-use-teams.md +++ b/docs/services/control-panel/how-to-use-teams.md @@ -45,7 +45,7 @@ There are two ways to add a Hypernode to a team: ## Manage Users in a Team -There are three different roles you can assign to members to members of your team. Each role is defined by a set of permissions. The permissions, based on the specific role, apply to all Hypernodes in a team. This also includes the SSL certificates that have been linked to the Hypernodes in the team. For detailed information on what those roles are and which permissions they have, please click [here](https://support.hypernode.com/en/services/control-panel/user-roles-and-permissions-on-hypernodes-control-panel). +There are three different roles you can assign to members to members of your team. Each role is defined by a set of permissions. The permissions, based on the specific role, apply to all Hypernodes in a team. This also includes the SSL certificates that have been linked to the Hypernodes in the team. For detailed information on what those roles are and which permissions they have, please click [here](user-roles-and-permissions-on-hypernodes-control-panel.md). ### Inviting a Member diff --git a/docs/services/control-panel/how-to-use-the-dns-check.md b/docs/services/control-panel/how-to-use-the-dns-check.md index e18a2007..3929ade1 100644 --- a/docs/services/control-panel/how-to-use-the-dns-check.md +++ b/docs/services/control-panel/how-to-use-the-dns-check.md @@ -55,7 +55,7 @@ This is the TransIP SPF record. If you already have an SPF record, you need to a | **Label** | **Type** | **TTL** | **Content** | | @ | TXT | 3600 | v=spf1 include:spf.example.hypernode.io ~all | -Please see [this article for how to set up your SPF records for Hypernode](https://support.hypernode.com/en/hypernode/dns/how-to-set-up-your-spf-records-for-hypernode). +Please see [this article for how to set up your SPF records for Hypernode](../../hypernode-platform/dns/how-to-set-up-your-spf-records-for-hypernode.md). ## Web Records @@ -103,4 +103,4 @@ The DNS Check verifies whether the Hypernode is reachable via the URL you entere ## Using Cloudflare or Other CDN -If you are using Cloudflare or another CDN type product, we cannot check your records with our DNS Check. Use our [Support Documentation](https://support.hypernode.com/en/hypernode/dns/how-to-manage-your-dns-settings-for-hypernode#Manage-your-own-DNS%3A-CNAME-for-the-www-record)for managing your DNS settings for your Hypernode to make sure you have your DNS settings set up correctly. +If you are using Cloudflare or another CDN type product, we cannot check your records with our DNS Check. Use our [Support Documentation](../../hypernode-platform/dns/how-to-manage-your-dns-settings-for-hypernode.md#option-2-manage-an-external-dns-by-pointing-your-domain-to-hypernode-by-using-cname-and-not-an-a-record)for managing your DNS settings for your Hypernode to make sure you have your DNS settings set up correctly. diff --git a/docs/services/control-panel/user-roles-and-permissions-on-hypernodes-control-panel.md b/docs/services/control-panel/user-roles-and-permissions-on-hypernodes-control-panel.md index addb70f6..f91a4566 100644 --- a/docs/services/control-panel/user-roles-and-permissions-on-hypernodes-control-panel.md +++ b/docs/services/control-panel/user-roles-and-permissions-on-hypernodes-control-panel.md @@ -18,10 +18,10 @@ For security and usability, the Hypernode Control Panel's features are available A user can have different roles between teams. Each role is defined by a set of permissions. The permissions, based on the specific role, apply to all Hypernodes in a team. This also includes the SSL certificates that have been linked to the Hypernodes in the team. -- \*\*Owner:\*\*Can access and use every feature. This is the most powerful role and cannot be assigned. The Owner is the only one who can transfer the ownership of the Hypernode you can read more about this [here](https://support.hypernode.com/en/services/control-panel/transfer-ownership). The user creating the Team is automatically the Owner. The Owner is the person in charge of billing. -- **Admin:** Can use all features and change Hypernode plans. Please see [this article for](https://support.hypernode.com/en/about/billing/how-to-up-or-downgrade-your-hypernode-plan#Up--and-Downgrading-Your-Hosting-Plan-for-Control-Panel-Users) an explanation on how to change your Hypernode plan. They can invite other team members and set or change roles of team members. +- **Owner:** Can access and use every feature. This is the most powerful role and cannot be assigned. The Owner is the only one who can transfer the ownership of the Hypernode you can read more about this [here](how-to-transfer-ownership-of-a-hypernode-in-the-control-panel.md). The user creating the Team is automatically the Owner. The Owner is the person in charge of billing. +- **Admin:** Can use all features and change Hypernode plans. Please see [this article for](../../about-hypernode/billing/how-to-up-or-downgrade-your-hypernode-plan.md#up--and-downgrading-your-hosting-plan-for-control-panel-users) an explanation on how to change your Hypernode plan. They can invite other team members and set or change roles of team members. - **Developer:** Can manage all technical features on a Hypernode level. -- \*\*Merchant:\*\*Can access the Control Panel on a view-only basis. +- **Merchant:** Can access the Control Panel on a view-only basis. ## Permissions @@ -59,7 +59,7 @@ A user can have different roles between teams. Each role is defined by a set of Initially, the Owner is the only user that can assign roles to other team members. After assigning a user the Admin role, they will also be able to assign roles. Use the following steps to assign roles: 1. Log in to the Hypernode Control Panel. -1. If your Hypernode is not in a Team yet, create a Team first. [Here's](https://support.hypernode.com/en/services/control-panel/managing-your-teams) how to do this. +1. If your Hypernode is not in a Team yet, create a Team first. [Here's](how-to-use-teams.md) how to do this. 1. Click on **Teams** in the sidebar on the left and then select the applicable team. 1. Click **Invite new member**and follow the steps. diff --git a/docs/services/domain-procedures/how-to-transfer-your-domain-away-from-hypernode.md b/docs/services/domain-procedures/how-to-transfer-your-domain-away-from-hypernode.md index aa63c56a..fab85d15 100644 --- a/docs/services/domain-procedures/how-to-transfer-your-domain-away-from-hypernode.md +++ b/docs/services/domain-procedures/how-to-transfer-your-domain-away-from-hypernode.md @@ -7,7 +7,7 @@ redirect_from: # How to Transfer Your Domain Away From Hypernode -**Please note that this only applies to Control Panel users who log in via my.hypernode.com. If you use the Service Panel (service.byte.nl), you can use [this article](https://support.hypernode.com/en/services/domains/how-to-transfer-your-domain-name-to-another-provider) to transfer your domain away from Hypernode.** +**Please note that this only applies to Control Panel users who log in via my.hypernode.com. If you use the Service Panel (service.byte.nl), you can use [this article](how-to-transfer-your-domain-away-from-hypernode.md) to transfer your domain away from Hypernode.** ## **I Want to Transfer My Domain Name to Another Provider** diff --git a/docs/services/magereport/magereport-premium.md b/docs/services/magereport/magereport-premium.md index 45cd9f64..cdebf133 100644 --- a/docs/services/magereport/magereport-premium.md +++ b/docs/services/magereport/magereport-premium.md @@ -30,7 +30,7 @@ Accessing [MageReport Premium](http://magereport.com/) is easy by logging on to ## Security Level -The Security level checks are accessible for any Magento shop owner (Hypernode or not) and show you the safety of your Magento shop. If a check comes out red, navigate to the given support documentation how-to and find out how to fix the vulnerability. All Security level how-to’s can be found in the [Security category](https://support.hypernode.com/knowledgebase_category/security/). +The Security level checks are accessible for any Magento shop owner (Hypernode or not) and show you the safety of your Magento shop. If a check comes out red, navigate to the given support documentation how-to and find out how to fix the vulnerability. All Security level how-to’s can be found in the [Security category](../../best-practices/security.md). ## Performance Checks @@ -38,27 +38,27 @@ The Performance checks in MageReport Premium tell you how to make your shop even ### Number of Active Caches -This feature shows you how many caching options in your Cache Management (System –> Cache Management) have been enabled. The higher the number of active caches, the better. Caching stores data, so that future requests can be served faster. Read [Magento Cache Management](https://support.hypernode.com/knowledgebase/magento-cache-management/) for more information. +This feature shows you how many caching options in your Cache Management (System –> Cache Management) have been enabled. The higher the number of active caches, the better. Caching stores data, so that future requests can be served faster. Read [Magento Cache Management](../../ecommerce-applications/magento-2/how-to-flush-the-magento-2-x-caches.md) for more information. ### Var/log Directory Size -This check tells you how big your var/log directory has gotten. We recommend keeping your var/log directory below 100 MB. To keep your Magento shop optimised and fast, you’ll need to clean these logs. Cleaning your logs can be done automatically or manually. We recommend your to do it manually, since it’s more efficient. Read [Magento Log Cleaning](https://support.hypernode.com/knowledgebase/magento-log-cleaning/) for more information on how to clean up these logs. +This check tells you how big your var/log directory has gotten. We recommend keeping your var/log directory below 100 MB. To keep your Magento shop optimised and fast, you’ll need to clean these logs. Cleaning your logs can be done automatically or manually. We recommend your to do it manually, since it’s more efficient. Read [Magento Log Cleaning](../../ecommerce-applications/magento-1/how-to-clean-the-magento-1-x-logs.md) for more information on how to clean up these logs. ### Disk Usage -A full disk slows your Hypernode down. You can always [upgrade to a bigger node](https://service.byte.nl/planinfo/), but in most cases cleaning up your disk is sufficient. More information about cleaning up your disk is explained in [How to Free up Disk Space.](https://support.hypernode.com/en/hypernode/tools/how-to-free-up-disk-space) +A full disk slows your Hypernode down. You can always [upgrade to a bigger node](https://service.byte.nl/planinfo/), but in most cases cleaning up your disk is sufficient. More information about cleaning up your disk is explained in [How to Free up Disk Space.](../../hypernode-platform/tools/how-to-free-up-disk-space) ### Bot Traffic -When your shop has at least 1600 PHP requests in one day and 30% of those are bots, the bot traffic check in MageReport turns red. Search engines indexing your webshop are very welcome, though too many bots can quickly consume your shop’s resources. Bots and crawlers often get stuck in the layered navigation of your Magento shop, causing them to crawl every combination of your products and parameters, creating millions of URLs to index and causing bad performance. Read how to optimize your shop by controlling these bots and crawlers in [Fixing bad performance caused by search engines](https://support.hypernode.com/knowledgebase/fixing-bad-performance-caused-by-search-engines/). +When your shop has at least 1600 PHP requests in one day and 30% of those are bots, the bot traffic check in MageReport turns red. Search engines indexing your webshop are very welcome, though too many bots can quickly consume your shop’s resources. Bots and crawlers often get stuck in the layered navigation of your Magento shop, causing them to crawl every combination of your products and parameters, creating millions of URLs to index and causing bad performance. Read how to optimize your shop by controlling these bots and crawlers in [Fixing bad performance caused by search engines](../../best-practices/performance/how-to-fix-performance-issues-caused-by-bots-and-crawlers.md). ### Response Time -This check shows you your average PHP response time in seconds. Keeping your load time below 1 second is preferable to keep your shop fast. The faster the webshop, the higher the conversion. A good tool to further analyse performance bottlenecks, and improve your response time, is New Relic. Read all about New Relic in [Find your performance bottleneck with New Relic](https://support.hypernode.com/knowledgebase/new-relic-performance-management/). +This check shows you your average PHP response time in seconds. Keeping your load time below 1 second is preferable to keep your shop fast. The faster the webshop, the higher the conversion. A good tool to further analyse performance bottlenecks, and improve your response time, is New Relic. Read all about New Relic in [Find your performance bottleneck with New Relic](../../best-practices/performance/how-to-find-your-performance-bottleneck-with-new-relic.md). ### Memory Usage -We recommend you to keep at least 20% free to speed up file access and to make sure your Hypernode doesn’t slow down, or worse, stop working. If your shop is using more than 80%, consider upgrading to a bigger Hypernode to guarantee the continuity of your shop. Optimising your Hypernode with caching tools such as [Varnish](https://support.hypernode.com/en/ecommerce/magento-2/how-to-configure-varnish-for-magento-2-x) and Redis helps reduce the memory usage. Use New Relic to pinpoint which pages are slurping memory and find the cause. +We recommend you to keep at least 20% free to speed up file access and to make sure your Hypernode doesn’t slow down, or worse, stop working. If your shop is using more than 80%, consider upgrading to a bigger Hypernode to guarantee the continuity of your shop. Optimising your Hypernode with caching tools such as [Varnish](../../ecommerce-applications/magento-2/how-to-configure-varnish-for-magento-2-x.md) and Redis helps reduce the memory usage. Use New Relic to pinpoint which pages are slurping memory and find the cause. ### Optimize Images @@ -80,7 +80,7 @@ n98-magerun sys:store:config:base-url:list magerun2 sys:store:config:base-url:list ``` -This tool shows the storefronts configured in your shop and the storecode. In MageReport Premium you can check whether your DNS is configured correctly. See our manual on [configuring DNS](https://support.hypernode.com/en/hypernode/dns/how-to-manage-your-dns-settings-for-hypernode)for more information. +This tool shows the storefronts configured in your shop and the storecode. In MageReport Premium you can check whether your DNS is configured correctly. See our manual on [configuring DNS](../../hypernode-platform/dns/how-to-manage-your-dns-settings-for-hypernode.md)for more information. *If you’re using Cloudflare the check will say your storefronts aren’t configured correctly and your shop is not live. Right now MageReport can’t detect if a shop is using Cloudflare, so you can ignore this.* @@ -90,21 +90,21 @@ Most charts give you more specific information about a Performance check. ### PHP Requests per Minute -This chart shows the average number of PHP requests per minute. It includes visitors and bots requesting webpages. The orange line indicates requests done by bots. Bots and crawlers take up a lot of resources, especially in Magento, and can cause your shop to slow down. Read how to optimize your shop by controlling these bots and crawlers in [Fixing bad performance caused by search engines](https://support.hypernode.com/knowledgebase/fixing-bad-performance-caused-by-search-engines/). +This chart shows the average number of PHP requests per minute. It includes visitors and bots requesting webpages. The orange line indicates requests done by bots. Bots and crawlers take up a lot of resources, especially in Magento, and can cause your shop to slow down. Read how to optimize your shop by controlling these bots and crawlers in [Fixing bad performance caused by bots and crawlers](../../best-practices/performance/how-to-fix-performance-issues-caused-by-bots-and-crawlers.md). ### Average PHP Response Time (Seconds) The faster a page loads, the longer visitors will stay on your shop. Like the performance check ‘Response time’, the average PHP response time chart shows you (in seconds) how long it takes for pages to load. A well optimised Magento shop should be able to keep the response time below one second. -A good tool to further analyse performance bottlenecks, and improve response time, is New Relic. Read all about New Relic in [Find your performance bottleneck with New Relic.](https://support.hypernode.com/knowledgebase/new-relic-performance-management/) +A good tool to further analyse performance bottlenecks, and improve response time, is New Relic. Read all about New Relic in [Find your performance bottleneck with New Relic.](../../best-practices/performance/how-to-find-your-performance-bottleneck-with-new-relic.md) ### Long Running Processes -This chart shows you the duration of long running processes. We recommend you to keep FPM processes running under 5 to 10 minutes, SQL processes no longer than 60 minutes and SSH processes no longer than 24 hours. If the proces duration is longer than the given criteria, you should consider them stuck and fix them. Long running processes or stuck processes are often the result of errors in your PHP code, a missing index (in SQL) or a deadlock. Read more about how to stop long running processes in [How to Identify and Stop Long Running Processes](https://support.hypernode.com/en/troubleshooting/performance/how-to-identify-and-stop-long-running-processes). +This chart shows you the duration of long running processes. We recommend you to keep FPM processes running under 5 to 10 minutes, SQL processes no longer than 60 minutes and SSH processes no longer than 24 hours. If the proces duration is longer than the given criteria, you should consider them stuck and fix them. Long running processes or stuck processes are often the result of errors in your PHP code, a missing index (in SQL) or a deadlock. Read more about how to stop long running processes in [How to Identify and Stop Long Running Processes](../../troubleshooting/performance/how-to-identify-and-stop-long-running-processes.md). ### CPU Usage -A line of 50% or higher in this chart indicates your Hypernode is very busy. If your Hypernode uses a lot of resources, check for an increase of web requests (chart: PHP requests per minute). A periodic cronjob can also cause an increase in CPU usage. Optimising your Hypernode with caching tools such as [Varnish](https://support.hypernode.com/en/ecommerce/magento-2/how-to-configure-varnish-for-magento-2-x) and [Redis](https://support.hypernode.com/en/ecommerce/magento-2/how-to-configure-redis-for-magento-2) helps reduce the CPU usage. Consider upgrading to a bigger node if your shops consistently use more than 50% of the available CPU. +A line of 50% or higher in this chart indicates your Hypernode is very busy. If your Hypernode uses a lot of resources, check for an increase of web requests (chart: PHP requests per minute). A periodic cronjob can also cause an increase in CPU usage. Optimising your Hypernode with caching tools such as [Varnish](../../ecommerce-applications/magento-2/how-to-configure-varnish-for-magento-2-x.md) and [Redis](../../ecommerce-applications/magento-2/how-to-configure-redis-for-magento-2.md) helps reduce the CPU usage. Consider upgrading to a bigger node if your shops consistently use more than 50% of the available CPU. ### Redis Memory in Use diff --git a/docs/services/service-panel/different-service-panel-scenarios.md b/docs/services/service-panel/different-service-panel-scenarios.md index 1f190133..a2d586fc 100644 --- a/docs/services/service-panel/different-service-panel-scenarios.md +++ b/docs/services/service-panel/different-service-panel-scenarios.md @@ -13,7 +13,7 @@ redirect_from: **Please note that this only applies to Service Panel users who log in via service.byte.nl.** -The Service Panel works with a central login, which enables users to easily manage multiple plans. There are three different roles which you can assign to different accounts. This way you can give your developer technical access to your plan, without them having access to stuff like invoices and billing. You can find an explanation of these roles in [this article](https://support.hypernode.com/en/hypernode/tools/what-are-the-different-roles-in-the-service-panel-and-what-is-the-difference-between-them). +The Service Panel works with a central login, which enables users to easily manage multiple plans. There are three different roles which you can assign to different accounts. This way you can give your developer technical access to your plan, without them having access to stuff like invoices and billing. The three different roles are as follows: diff --git a/docs/services/service-panel/how-to-change-your-customer-details-and-other-questions.md b/docs/services/service-panel/how-to-change-your-customer-details-and-other-questions.md index 41a5bd36..ca1df5de 100644 --- a/docs/services/service-panel/how-to-change-your-customer-details-and-other-questions.md +++ b/docs/services/service-panel/how-to-change-your-customer-details-and-other-questions.md @@ -11,7 +11,7 @@ redirect_from: # How to Change your Customer Details and Other Questions -\*\*Please note that this only applies to Service Panel users who log in via service.byte.nl. Please see [this category](https://support.hypernode.com/en/services/control-panel/) for articles that apply to the Control Panel.\*\*For security reasons, you can only make administrative changes to your account when logged into the Service Panel. In this article we explain how you can edit your customer data. +\*\*Please note that this only applies to Service Panel users who log in via service.byte.nl. Please see [this category](../control-panel.md) for articles that apply to the Control Panel.\*\*For security reasons, you can only make administrative changes to your account when logged into the Service Panel. In this article we explain how you can edit your customer data. ## Why Do I Need to Log Into the Service Panel? @@ -72,7 +72,7 @@ Changes to your plan and the different customer relationships / roles for managi ### Up- and Downgrading -Please see [this article](https://support.hypernode.com/en/about/billing/how-to-up-or-downgrade-your-hypernode-plan)for more information on how to up- or downgrade your plan. +Please see [this article](../../about-hypernode/billing/how-to-up-or-downgrade-your-hypernode-plan.md)for more information on how to up- or downgrade your plan. ## Changing the Account Roles diff --git a/docs/services/service-panel/how-to-log-into-the-service-panel.md b/docs/services/service-panel/how-to-log-into-the-service-panel.md index 3a2a5c7a..12b84800 100644 --- a/docs/services/service-panel/how-to-log-into-the-service-panel.md +++ b/docs/services/service-panel/how-to-log-into-the-service-panel.md @@ -26,7 +26,7 @@ After creating a Hypernode account, you should have received an email containing ### Securing Your Account With Two Factor Authentication -Two factor authentication, also known as two-step verification, is a more secure way of logging in than logging in with just a password, because everyone receives a unique code to log in. In [this article](https://support.hypernode.com/en/services/control-panel/how-to-use-2fa-for-the-control-panel) we explain how to enable two factor authentication on the Service Panel. +Two factor authentication, also known as two-step verification, is a more secure way of logging in than logging in with just a password, because everyone receives a unique code to log in. In [this article](../control-panel/how-to-use-2fa-on-the-control-panel.md) we explain how to enable two factor authentication on the Service Panel. ## Forgotten Account Number diff --git a/docs/troubleshooting/performance/how-to-block-bad-bots-via-the-service-panel.md b/docs/troubleshooting/performance/how-to-block-bad-bots-via-the-service-panel.md index 490f208d..c522223f 100644 --- a/docs/troubleshooting/performance/how-to-block-bad-bots-via-the-service-panel.md +++ b/docs/troubleshooting/performance/how-to-block-bad-bots-via-the-service-panel.md @@ -101,7 +101,7 @@ If you would like to block user agents you have two options. - Block via the Service Panel - Block via Nginx (`server.blacklist`) -More information on option 2 can be found [here](https://support.hypernode.com/en/hypernode/nginx/how-to-block-user-agents-and-referrer-sites). +More information on option 2 can be found [here](../../hypernode-platform/nginx/how-to-block-user-agents-and-referrer-sites.md). The Service Panel blacklist of user agents is completely separated from the list of user agents you may have blocked via `/data/web/nginx/server.blacklist`. @@ -111,6 +111,6 @@ These 2 blacklists function completely separated from each other. If a user agen ‘Good’ bots like those of search engines Google and Yahoo are for obvious reasons not included in the blacklist, but may potentially generate too much traffic. In these cases we recommend you to regulate bot traffic via `robots.txt`. -Instructions on how to create a `robots.txt` file for Magento 1 shops can be found [here](https://support.hypernode.com/en/ecommerce/magento-1/how-to-create-a-robots-txt-for-your-magento-1-shop). +Instructions on how to create a `robots.txt` file for Magento 1 shops can be found [here](../../ecommerce-applications/magento-1/how-to-create-a-robots-txt-for-your-magento-1-shop.md). -For Magento 2 shops, [please check this article](https://support.hypernode.com/en/ecommerce/magento-2/how-to-create-a-robots-txt-for-magento-2-x). +For Magento 2 shops, [please check this article](../../ecommerce-applications/magento-2/how-to-create-a-robots-txt-for-magento-2-x.md). diff --git a/docs/troubleshooting/performance/how-to-check-why-my-site-is-slow.md b/docs/troubleshooting/performance/how-to-check-why-my-site-is-slow.md index 0b86bd9f..3349516b 100644 --- a/docs/troubleshooting/performance/how-to-check-why-my-site-is-slow.md +++ b/docs/troubleshooting/performance/how-to-check-why-my-site-is-slow.md @@ -66,7 +66,7 @@ If `php-fpm: pool www` seems to be causing the high load. Proceed with running ` - Is all the traffic legit? - Check if there are any modules/plugins enabled or installed, this might cause extra load - Do you have a sale or sent out emails about the sale? An upgrade might be the best solution here -- Do you notice non-valid traffic, for example from several countries you don't sell to? [Here's](https://support.hypernode.com/en/hypernode/nginx/how-to-block-your-webshop-for-specific-countries) how to block specific countries. +- Do you notice non-valid traffic, for example from several countries you don't sell to? [Here's](../../hypernode-platform/nginx/how-to-block-your-webshop-for-specific-countries.md) how to block specific countries. If `mysqld` and `livefpm` aren't the cause, check for other processes in `htop`. It could be also be the following: @@ -78,7 +78,7 @@ If `mysqld` and `livefpm` aren't the cause, check for other processes in `htop`. Please note that a slower performance is not always caused by a high load on the Hypernode. There is a number of other reasons which may affect the performance. -Some modules/extensions will connect to external services. These services might not be reachable causing all processes on the Hypernode to hang/or slow down (e.g. Kiyoh reviews). It may be worth checking the `php-slow.log` to spot such issues. Check [this article from our support documentation](https://support.hypernode.com/en/troubleshooting/performance/how-to-spot-slow-extensions-using-the-php-slow-logs#Usage) for more information on this. +Some modules/extensions will connect to external services. These services might not be reachable causing all processes on the Hypernode to hang/or slow down (e.g. Kiyoh reviews). It may be worth checking the `php-slow.log` to spot such issues. Check [this article from our support documentation](../../troubleshooting/performance/how-to-spot-slow-extensions-using-the-php-slow-logs.md#usage) for more information on this. Some will use an extravagant amount of database queries, which slows down the whole website. Unfortunately this isn't easy to spot without analysing the what a `php-fpm process` is actually doing. diff --git a/docs/troubleshooting/performance/how-to-debug-out-of-memory-oom-events.md b/docs/troubleshooting/performance/how-to-debug-out-of-memory-oom-events.md index 8f81e33a..01989998 100644 --- a/docs/troubleshooting/performance/how-to-debug-out-of-memory-oom-events.md +++ b/docs/troubleshooting/performance/how-to-debug-out-of-memory-oom-events.md @@ -75,9 +75,9 @@ If you receive emails about OOM(Out-of-Memory) events regularly, there are vario ### Reducing Memory Usage -By reducing the memory usage of software running on your Hypernode, more memory will be available for visitors and for running [periodic tasks](https://support.hypernode.com/knowledgebase/configure-cronjobs-on-hypernode/). One of the main culprits of memory usage is MySQL. MySQL will allocate more memory when it needs this for running large queries but will not free it afterward. This means MySQL memory will only increase over time and not go down again. A simple way to deal with this is to periodically restart MySQL using the `hypernode-servicectl restart mysql` command. +By reducing the memory usage of software running on your Hypernode, more memory will be available for visitors and for running [periodic tasks](../../hypernode-platform/tools/how-to-use-periodic-tasks-cronjobs-on-hypernode.md). One of the main culprits of memory usage is MySQL. MySQL will allocate more memory when it needs this for running large queries but will not free it afterward. This means MySQL memory will only increase over time and not go down again. A simple way to deal with this is to periodically restart MySQL using the `hypernode-servicectl restart mysql` command. -If you are using a [basic staging environment](https://support.hypernode.com/knowledgebase/using-a-basic-staging-environment-magento2/) on your Hypernode, some memory will always be allocated to your staging environment. As such, it might be beneficial to replace this with a separate [Development Hypernode](https://support.hypernode.com/knowledgebase/development-plans-for-your-magento-shop/). +If you are using a [basic staging environment](../../ecommerce-applications/magento-2/how-to-set-up-a-basic-staging-environment-for-magento-2.md) on your Hypernode, some memory will always be allocated to your staging environment. As such, it might be beneficial to replace this with a separate [Development Hypernode](../../hypernode-platform/tools/how-to-use-hypernode-development-plans.md). ### Reducing Memory Requirements @@ -85,7 +85,7 @@ Some tasks in Magento use up a lot of memory, sometimes more than is available o One way to deal with this is to run smaller tasks, ending the process earlier and freeing up this memory again. By not stacking your cronjobs and by running smaller imports instead of a gigantic bulk import, you can reduce a memory peak to several memory bumps instead, which will have a reduced impact on your system. -Another way to ensure less memory is needed is by reducing file sizes. As Magento often loads images into memory to resize those, [optimizing images](https://support.hypernode.com/knowledgebase/magento-image-optimization-howto/) to take up less disk space means these also use up less memory when Magento works on these files. +Another way to ensure less memory is needed is by reducing file sizes. As Magento often loads images into memory to resize those, [optimizing images](../../best-practices/performance/how-to-optimize-your-images.md) to take up less disk space means these also use up less memory when Magento works on these files. ### Upgrade to a Larger Plan diff --git a/docs/troubleshooting/performance/how-to-implement-pagespeed-booster.md b/docs/troubleshooting/performance/how-to-implement-pagespeed-booster.md index 70ef41cf..e1850e09 100644 --- a/docs/troubleshooting/performance/how-to-implement-pagespeed-booster.md +++ b/docs/troubleshooting/performance/how-to-implement-pagespeed-booster.md @@ -63,12 +63,12 @@ To setup PageSpeed Booster on your development environment you'll need a unique `hypernode-manage-vhosts psb.example.com --https --force-https --varnish` 1. Now point the DNS to the PageSpeed Booster instance with the records you got at the PageSpeed Booster page in your Control Panel. 1. Make sure Varnish is enabled on the server: hypernode-systemctl settings varnish_enabled. -1. Add the user agent **PSB**to the [allowlist for the ratelimiter](https://support.hypernode.com/en/hypernode/nginx/how-to-resolve-rate-limited-requests-429-too-many-requests#Whitelisting-Additional-User-Agents) in\*\*~/nginx/http.ratelimit\*\* file. -1. Disable the [basic-authentication](https://support.hypernode.com/en/hypernode/nginx/basic-authentication-on-hypernode-development-plans#Disable-the-basic-authentication) on the development Hypernode. +1. Add the user agent **PSB**to the [allowlist for the ratelimiter](../../hypernode-platform/nginx/how-to-resolve-rate-limited-requests-429-too-many-requests.md#whitelisting-additional-user-agents) in\*\*~/nginx/http.ratelimit\*\* file. +1. Disable the [basic-authentication](../../hypernode-platform/nginx/basic-authentication-on-hypernode-development-plans.md#disable-the-basic-authentication) on the development Hypernode. ### Configuring Varnish -By now you've a valid SSL for your test domain, and pointed it to the PageSpeed Booster instance which now works as a proxy. Whats left is that you make the required changes to your **.vcl** so that the PageSpeed Booster is able to optimize your pages. +By now you've a valid SSL for your test domain, and pointed it to the PageSpeed Booster instance which now works as a proxy. What's left is that you make the required changes to your **.vcl** so that the PageSpeed Booster is able to optimize your pages. If you're using the default generated .vcl configuration file from the Magento 2 backend you could replace that **.vcl** with **[this template](https://gist.github.com/hn-support/2478eb5ed8328553de813f524ae12f91)** which we already adjusted for the PageSpeed Booster. @@ -76,10 +76,10 @@ If you're using the default generated .vcl configuration file from the Magento 2 The last step will be configuring Varnish on your application. Below you can find our available documentation for configuring Varnish on the application you’re using: -- [How to configure Varnish for Magento 1](https://support.hypernode.com/en/ecommerce/magento-1/how-to-configure-varnish-for-magento-1-x) -- [How to configure Varnish for Magento 2](https://support.hypernode.com/en/ecommerce/magento-2/how-to-configure-varnish-for-magento-2-x) -- [How to configure Varnish for Shopware 5](https://support.hypernode.com/en/support/solutions/articles/48001207016-how-to-configure-varnish-for-shopware-5) -- [How to configure Varnish for Shopware 6](https://support.hypernode.com/en/support/solutions/articles/48001200525-how-to-configure-varnish-for-shopware-6) +- [How to configure Varnish for Magento 1](../../ecommerce-applications/magento-1/how-to-configure-varnish-for-magento-1-x.md) +- [How to configure Varnish for Magento 2](../../ecommerce-applications/magento-2/how-to-configure-varnish-for-magento-2-x.md) +- [How to configure Varnish for Shopware 5](../../ecommerce-applications/shopware-5/how-to-configure-varnish-for-shopware-5.md) +- [How to configure Varnish for Shopware 6](../../ecommerce-applications/shopware-6/how-to-configure-varnish-for-shopware-6.md) ## Modifying your Current Varnish VCL configuration diff --git a/docs/troubleshooting/performance/how-to-optimise-your-magento-disk-performance.md b/docs/troubleshooting/performance/how-to-optimise-your-magento-disk-performance.md index a151c195..e14fb814 100644 --- a/docs/troubleshooting/performance/how-to-optimise-your-magento-disk-performance.md +++ b/docs/troubleshooting/performance/how-to-optimise-your-magento-disk-performance.md @@ -5,6 +5,7 @@ myst: and a better performance of your shop. Read here how to optimise it on Hypernode. redirect_from: - /en/troubleshooting/performance/how-to-optimise-your-magento-disk-performance/ + - /knowledgebase/magento-disk-performance-optimization/ --- diff --git a/docs/troubleshooting/performance/how-to-spot-slow-extensions-using-the-php-slow-logs.md b/docs/troubleshooting/performance/how-to-spot-slow-extensions-using-the-php-slow-logs.md index 69f03ed9..8ba6a105 100644 --- a/docs/troubleshooting/performance/how-to-spot-slow-extensions-using-the-php-slow-logs.md +++ b/docs/troubleshooting/performance/how-to-spot-slow-extensions-using-the-php-slow-logs.md @@ -5,6 +5,7 @@ myst: Magento shop. Read more about it and how to use it in this article. ' redirect_from: - /en/troubleshooting/performance/how-to-spot-slow-extensions-using-the-php-slow-logs/ + - /knowledgebase/spot-slow-extensions-using-phps-slow-log/ --- From c4461d166ee25fb82d7d77a9a606ee863a1a6e28 Mon Sep 17 00:00:00 2001 From: Timon de Groot Date: Wed, 11 Jan 2023 09:16:58 +0100 Subject: [PATCH 11/51] ci: Add scheme to production base url --- .github/workflows/deploy.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/deploy.yaml b/.github/workflows/deploy.yaml index 504b8402..95ecc549 100644 --- a/.github/workflows/deploy.yaml +++ b/.github/workflows/deploy.yaml @@ -25,7 +25,7 @@ jobs: - name: Set env for production build if: github.ref == 'refs/heads/master' run: | - echo "DOCS_BASE_URL=docs.hypernode.io" >> $GITHUB_ENV + echo "DOCS_BASE_URL=https://docs.hypernode.io" >> $GITHUB_ENV - run: hypernode-deploy build -vvv - name: archive production artifacts uses: actions/upload-artifact@v3 From 9fb18cbdb2db66f6a660a06d143241cde040b81b Mon Sep 17 00:00:00 2001 From: Timon de Groot Date: Wed, 11 Jan 2023 10:38:38 +0100 Subject: [PATCH 12/51] Detect renamed files --- .github/workflows/detect_renamed_docs.yaml | 27 +++++++++++ ci/bin/detect_rewrites.py | 53 ++++++++++++++++++++++ 2 files changed, 80 insertions(+) create mode 100644 .github/workflows/detect_renamed_docs.yaml create mode 100644 ci/bin/detect_rewrites.py diff --git a/.github/workflows/detect_renamed_docs.yaml b/.github/workflows/detect_renamed_docs.yaml new file mode 100644 index 00000000..2d5a0fd2 --- /dev/null +++ b/.github/workflows/detect_renamed_docs.yaml @@ -0,0 +1,27 @@ +name: Detect renamed docs + +on: + pull_request: + +jobs: + detect_renamed_docs: + runs-on: ubuntu-latest + name: Detect renamed docs + steps: + - uses: actions/checkout@v3 + with: + fetch-depth: 0 + - name: Get changed files + id: changed_files + run: | + result="$(python3 ci/bin/detect_rewrites.py ${{ github.event.pull_request.base.sha }} ${{github.event.pull_request.head.sha}})" + echo "$result" + echo "CHANGED_FILES<> $GITHUB_OUTPUT + echo "$result" >> $GITHUB_OUTPUT + echo "EOF" >> $GITHUB_OUTPUT + shell: bash + - name: Comment hostname on PR + if: ${{ steps.changed_files.outputs.CHANGED_FILES }} + uses: thollander/actions-comment-pull-request@v1 + with: + message: "${{ steps.changed_files.outputs.CHANGED_FILES }}" diff --git a/ci/bin/detect_rewrites.py b/ci/bin/detect_rewrites.py new file mode 100644 index 00000000..50dbb1c1 --- /dev/null +++ b/ci/bin/detect_rewrites.py @@ -0,0 +1,53 @@ +import argparse +import re +import subprocess +from typing import Tuple + +RENAME_PATTERN = re.compile(r"^R[0-9]+") + + +def parse_args() -> Tuple[str, str]: + parser = argparse.ArgumentParser() + parser.add_argument("start_commit") + parser.add_argument("end_commit") + + args = parser.parse_args() + + return args.start_commit, args.end_commit + + +def main(): + start_commit, end_commit = parse_args() + diff_command = [ + "git", + "diff", + "--name-status", + "-M", + "--stat", + start_commit, + end_commit, + ] + output = subprocess.check_output(diff_command, encoding="utf-8") + renamed_files = filter(RENAME_PATTERN.match, output.splitlines()) + renamed_files = map(lambda x: x.split("\t")[1:], renamed_files) + renamed_markdown_files = filter(lambda x: x[0].endswith(".md"), renamed_files) + renamed_markdown_files = list(renamed_markdown_files) + + if renamed_markdown_files: + print("Detected renamed/moved files:") + print("```") + for file_from, file_to in renamed_markdown_files: + print("{} => {}".format(file_from, file_to)) + print("```") + print("To prevent 404 pages, consider adding the redirects to the new pages:") + print("```markdown") + print("---") + print("redirect_from:") + for file_from, _ in renamed_markdown_files: + print(" - {}".format(file_from)) + print("---") + print("```") + + +if __name__ == "__main__": + main() From 612c89480bd962c35ebc1e18a9e3cce412899920 Mon Sep 17 00:00:00 2001 From: Timon de Groot Date: Wed, 11 Jan 2023 11:32:59 +0100 Subject: [PATCH 13/51] Create /d/w/varnish in magento2 varnish page This is for demo purposes. We forgot to create the `/data/web/varnish` directory in this page. --- .../magento-2/how-to-configure-varnish-for-magento-2-x.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/docs/ecommerce-applications/magento-2/how-to-configure-varnish-for-magento-2-x.md b/docs/ecommerce-applications/magento-2/how-to-configure-varnish-for-magento-2-x.md index 7019d776..36e38af1 100644 --- a/docs/ecommerce-applications/magento-2/how-to-configure-varnish-for-magento-2-x.md +++ b/docs/ecommerce-applications/magento-2/how-to-configure-varnish-for-magento-2-x.md @@ -25,6 +25,12 @@ As Magento 2 supports Varnish out of the box, there is no need for the turpentin $ hypernode-systemctl settings varnish_version 4.0 ``` +Some text above, **in bold**. + +```bash +mkdir /data/web/varnish +``` + **Or if you want to switch to Varnish 6.0** ```console From 854bde9d366f134ac8148b832d45747540e6860c Mon Sep 17 00:00:00 2001 From: Timon de Groot Date: Wed, 11 Jan 2023 11:46:16 +0100 Subject: [PATCH 14/51] Revert "Create /d/w/varnish in magento2 varnish page" --- .../magento-2/how-to-configure-varnish-for-magento-2-x.md | 6 ------ 1 file changed, 6 deletions(-) diff --git a/docs/ecommerce-applications/magento-2/how-to-configure-varnish-for-magento-2-x.md b/docs/ecommerce-applications/magento-2/how-to-configure-varnish-for-magento-2-x.md index 36e38af1..7019d776 100644 --- a/docs/ecommerce-applications/magento-2/how-to-configure-varnish-for-magento-2-x.md +++ b/docs/ecommerce-applications/magento-2/how-to-configure-varnish-for-magento-2-x.md @@ -25,12 +25,6 @@ As Magento 2 supports Varnish out of the box, there is no need for the turpentin $ hypernode-systemctl settings varnish_version 4.0 ``` -Some text above, **in bold**. - -```bash -mkdir /data/web/varnish -``` - **Or if you want to switch to Varnish 6.0** ```console From b0c4d7d08b4e5bc5af63a4a4067677ebf471af2c Mon Sep 17 00:00:00 2001 From: Timon de Groot Date: Wed, 11 Jan 2023 14:42:21 +0100 Subject: [PATCH 15/51] docs: Copy searchtools.js from sphinx basic theme --- docs/_static/searchtools.js | 566 ++++++++++++++++++++++++++++++++++++ 1 file changed, 566 insertions(+) create mode 100644 docs/_static/searchtools.js diff --git a/docs/_static/searchtools.js b/docs/_static/searchtools.js new file mode 100644 index 00000000..e89e34d4 --- /dev/null +++ b/docs/_static/searchtools.js @@ -0,0 +1,566 @@ +/* + * searchtools.js + * ~~~~~~~~~~~~~~~~ + * + * Sphinx JavaScript utilities for the full-text search. + * + * :copyright: Copyright 2007-2022 by the Sphinx team, see AUTHORS. + * :license: BSD, see LICENSE for details. + * + */ +"use strict"; + +/** + * Simple result scoring code. + */ +if (typeof Scorer === "undefined") { + var Scorer = { + // Implement the following function to further tweak the score for each result + // The function takes a result array [docname, title, anchor, descr, score, filename] + // and returns the new score. + /* + score: result => { + const [docname, title, anchor, descr, score, filename] = result + return score + }, + */ + + // query matches the full name of an object + objNameMatch: 11, + // or matches in the last dotted part of the object name + objPartialMatch: 6, + // Additive scores depending on the priority of the object + objPrio: { + 0: 15, // used to be importantResults + 1: 5, // used to be objectResults + 2: -5, // used to be unimportantResults + }, + // Used when the priority is not in the mapping. + objPrioDefault: 0, + + // query found in title + title: 15, + partialTitle: 7, + // query found in terms + term: 5, + partialTerm: 2, + }; +} + +const _removeChildren = (element) => { + while (element && element.lastChild) element.removeChild(element.lastChild); +}; + +/** + * See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions#escaping + */ +const _escapeRegExp = (string) => + string.replace(/[.*+\-?^${}()|[\]\\]/g, "\\$&"); // $& means the whole matched string + +const _displayItem = (item, searchTerms) => { + const docBuilder = DOCUMENTATION_OPTIONS.BUILDER; + const docUrlRoot = DOCUMENTATION_OPTIONS.URL_ROOT; + const docFileSuffix = DOCUMENTATION_OPTIONS.FILE_SUFFIX; + const docLinkSuffix = DOCUMENTATION_OPTIONS.LINK_SUFFIX; + const showSearchSummary = DOCUMENTATION_OPTIONS.SHOW_SEARCH_SUMMARY; + + const [docName, title, anchor, descr, score, _filename] = item; + + let listItem = document.createElement("li"); + let requestUrl; + let linkUrl; + if (docBuilder === "dirhtml") { + // dirhtml builder + let dirname = docName + "/"; + if (dirname.match(/\/index\/$/)) + dirname = dirname.substring(0, dirname.length - 6); + else if (dirname === "index/") dirname = ""; + requestUrl = docUrlRoot + dirname; + linkUrl = requestUrl; + } else { + // normal html builders + requestUrl = docUrlRoot + docName + docFileSuffix; + linkUrl = docName + docLinkSuffix; + } + let linkEl = listItem.appendChild(document.createElement("a")); + linkEl.href = linkUrl + anchor; + linkEl.dataset.score = score; + linkEl.innerHTML = title; + if (descr) + listItem.appendChild(document.createElement("span")).innerHTML = + " (" + descr + ")"; + else if (showSearchSummary) + fetch(requestUrl) + .then((responseData) => responseData.text()) + .then((data) => { + if (data) + listItem.appendChild( + Search.makeSearchSummary(data, searchTerms) + ); + }); + Search.output.appendChild(listItem); +}; +const _finishSearch = (resultCount) => { + Search.stopPulse(); + Search.title.innerText = _("Search Results"); + if (!resultCount) + Search.status.innerText = Documentation.gettext( + "Your search did not match any documents. Please make sure that all words are spelled correctly and that you've selected enough categories." + ); + else + Search.status.innerText = _( + `Search finished, found ${resultCount} page(s) matching the search query.` + ); +}; +const _displayNextItem = ( + results, + resultCount, + searchTerms +) => { + // results left, load the summary and display it + // this is intended to be dynamic (don't sub resultsCount) + if (results.length) { + _displayItem(results.pop(), searchTerms); + setTimeout( + () => _displayNextItem(results, resultCount, searchTerms), + 5 + ); + } + // search finished, update title and status message + else _finishSearch(resultCount); +}; + +/** + * Default splitQuery function. Can be overridden in ``sphinx.search`` with a + * custom function per language. + * + * The regular expression works by splitting the string on consecutive characters + * that are not Unicode letters, numbers, underscores, or emoji characters. + * This is the same as ``\W+`` in Python, preserving the surrogate pair area. + */ +if (typeof splitQuery === "undefined") { + var splitQuery = (query) => query + .split(/[^\p{Letter}\p{Number}_\p{Emoji_Presentation}]+/gu) + .filter(term => term) // remove remaining empty strings +} + +/** + * Search Module + */ +const Search = { + _index: null, + _queued_query: null, + _pulse_status: -1, + + htmlToText: (htmlString) => { + const htmlElement = new DOMParser().parseFromString(htmlString, 'text/html'); + htmlElement.querySelectorAll(".headerlink").forEach((el) => { el.remove() }); + const docContent = htmlElement.querySelector('[role="main"]'); + if (docContent !== undefined) return docContent.textContent; + console.warn( + "Content block not found. Sphinx search tries to obtain it via '[role=main]'. Could you check your theme or template." + ); + return ""; + }, + + init: () => { + const query = new URLSearchParams(window.location.search).get("q"); + document + .querySelectorAll('input[name="q"]') + .forEach((el) => (el.value = query)); + if (query) Search.performSearch(query); + }, + + loadIndex: (url) => + (document.body.appendChild(document.createElement("script")).src = url), + + setIndex: (index) => { + Search._index = index; + if (Search._queued_query !== null) { + const query = Search._queued_query; + Search._queued_query = null; + Search.query(query); + } + }, + + hasIndex: () => Search._index !== null, + + deferQuery: (query) => (Search._queued_query = query), + + stopPulse: () => (Search._pulse_status = -1), + + startPulse: () => { + if (Search._pulse_status >= 0) return; + + const pulse = () => { + Search._pulse_status = (Search._pulse_status + 1) % 4; + Search.dots.innerText = ".".repeat(Search._pulse_status); + if (Search._pulse_status >= 0) window.setTimeout(pulse, 500); + }; + pulse(); + }, + + /** + * perform a search for something (or wait until index is loaded) + */ + performSearch: (query) => { + // create the required interface elements + const searchText = document.createElement("h2"); + searchText.textContent = _("Searching"); + const searchSummary = document.createElement("p"); + searchSummary.classList.add("search-summary"); + searchSummary.innerText = ""; + const searchList = document.createElement("ul"); + searchList.classList.add("search"); + + const out = document.getElementById("search-results"); + Search.title = out.appendChild(searchText); + Search.dots = Search.title.appendChild(document.createElement("span")); + Search.status = out.appendChild(searchSummary); + Search.output = out.appendChild(searchList); + + const searchProgress = document.getElementById("search-progress"); + // Some themes don't use the search progress node + if (searchProgress) { + searchProgress.innerText = _("Preparing search..."); + } + Search.startPulse(); + + // index already loaded, the browser was quick! + if (Search.hasIndex()) Search.query(query); + else Search.deferQuery(query); + }, + + /** + * execute search (requires search index to be loaded) + */ + query: (query) => { + const filenames = Search._index.filenames; + const docNames = Search._index.docnames; + const titles = Search._index.titles; + const allTitles = Search._index.alltitles; + const indexEntries = Search._index.indexentries; + + // stem the search terms and add them to the correct list + const stemmer = new Stemmer(); + const searchTerms = new Set(); + const excludedTerms = new Set(); + const highlightTerms = new Set(); + const objectTerms = new Set(splitQuery(query.toLowerCase().trim())); + splitQuery(query.trim()).forEach((queryTerm) => { + const queryTermLower = queryTerm.toLowerCase(); + + // maybe skip this "word" + // stopwords array is from language_data.js + if ( + stopwords.indexOf(queryTermLower) !== -1 || + queryTerm.match(/^\d+$/) + ) + return; + + // stem the word + let word = stemmer.stemWord(queryTermLower); + // select the correct list + if (word[0] === "-") excludedTerms.add(word.substr(1)); + else { + searchTerms.add(word); + highlightTerms.add(queryTermLower); + } + }); + + if (SPHINX_HIGHLIGHT_ENABLED) { // set in sphinx_highlight.js + localStorage.setItem("sphinx_highlight_terms", [...highlightTerms].join(" ")) + } + + // console.debug("SEARCH: searching for:"); + // console.info("required: ", [...searchTerms]); + // console.info("excluded: ", [...excludedTerms]); + + // array of [docname, title, anchor, descr, score, filename] + let results = []; + _removeChildren(document.getElementById("search-progress")); + + const queryLower = query.toLowerCase(); + for (const [title, foundTitles] of Object.entries(allTitles)) { + if (title.toLowerCase().includes(queryLower) && (queryLower.length >= title.length/2)) { + for (const [file, id] of foundTitles) { + let score = Math.round(100 * queryLower.length / title.length) + results.push([ + docNames[file], + titles[file] !== title ? `${titles[file]} > ${title}` : title, + id !== null ? "#" + id : "", + null, + score, + filenames[file], + ]); + } + } + } + + // search for explicit entries in index directives + for (const [entry, foundEntries] of Object.entries(indexEntries)) { + if (entry.includes(queryLower) && (queryLower.length >= entry.length/2)) { + for (const [file, id] of foundEntries) { + let score = Math.round(100 * queryLower.length / entry.length) + results.push([ + docNames[file], + titles[file], + id ? "#" + id : "", + null, + score, + filenames[file], + ]); + } + } + } + + // lookup as object + objectTerms.forEach((term) => + results.push(...Search.performObjectSearch(term, objectTerms)) + ); + + // lookup as search terms in fulltext + results.push(...Search.performTermsSearch(searchTerms, excludedTerms)); + + // let the scorer override scores with a custom scoring function + if (Scorer.score) results.forEach((item) => (item[4] = Scorer.score(item))); + + // now sort the results by score (in opposite order of appearance, since the + // display function below uses pop() to retrieve items) and then + // alphabetically + results.sort((a, b) => { + const leftScore = a[4]; + const rightScore = b[4]; + if (leftScore === rightScore) { + // same score: sort alphabetically + const leftTitle = a[1].toLowerCase(); + const rightTitle = b[1].toLowerCase(); + if (leftTitle === rightTitle) return 0; + return leftTitle > rightTitle ? -1 : 1; // inverted is intentional + } + return leftScore > rightScore ? 1 : -1; + }); + + // remove duplicate search results + // note the reversing of results, so that in the case of duplicates, the highest-scoring entry is kept + let seen = new Set(); + results = results.reverse().reduce((acc, result) => { + let resultStr = result.slice(0, 4).concat([result[5]]).map(v => String(v)).join(','); + if (!seen.has(resultStr)) { + acc.push(result); + seen.add(resultStr); + } + return acc; + }, []); + + results = results.reverse(); + + // for debugging + //Search.lastresults = results.slice(); // a copy + // console.info("search results:", Search.lastresults); + + // print the results + _displayNextItem(results, results.length, searchTerms); + }, + + /** + * search for object names + */ + performObjectSearch: (object, objectTerms) => { + const filenames = Search._index.filenames; + const docNames = Search._index.docnames; + const objects = Search._index.objects; + const objNames = Search._index.objnames; + const titles = Search._index.titles; + + const results = []; + + const objectSearchCallback = (prefix, match) => { + const name = match[4] + const fullname = (prefix ? prefix + "." : "") + name; + const fullnameLower = fullname.toLowerCase(); + if (fullnameLower.indexOf(object) < 0) return; + + let score = 0; + const parts = fullnameLower.split("."); + + // check for different match types: exact matches of full name or + // "last name" (i.e. last dotted part) + if (fullnameLower === object || parts.slice(-1)[0] === object) + score += Scorer.objNameMatch; + else if (parts.slice(-1)[0].indexOf(object) > -1) + score += Scorer.objPartialMatch; // matches in last name + + const objName = objNames[match[1]][2]; + const title = titles[match[0]]; + + // If more than one term searched for, we require other words to be + // found in the name/title/description + const otherTerms = new Set(objectTerms); + otherTerms.delete(object); + if (otherTerms.size > 0) { + const haystack = `${prefix} ${name} ${objName} ${title}`.toLowerCase(); + if ( + [...otherTerms].some((otherTerm) => haystack.indexOf(otherTerm) < 0) + ) + return; + } + + let anchor = match[3]; + if (anchor === "") anchor = fullname; + else if (anchor === "-") anchor = objNames[match[1]][1] + "-" + fullname; + + const descr = objName + _(", in ") + title; + + // add custom score for some objects according to scorer + if (Scorer.objPrio.hasOwnProperty(match[2])) + score += Scorer.objPrio[match[2]]; + else score += Scorer.objPrioDefault; + + results.push([ + docNames[match[0]], + fullname, + "#" + anchor, + descr, + score, + filenames[match[0]], + ]); + }; + Object.keys(objects).forEach((prefix) => + objects[prefix].forEach((array) => + objectSearchCallback(prefix, array) + ) + ); + return results; + }, + + /** + * search for full-text terms in the index + */ + performTermsSearch: (searchTerms, excludedTerms) => { + // prepare search + const terms = Search._index.terms; + const titleTerms = Search._index.titleterms; + const filenames = Search._index.filenames; + const docNames = Search._index.docnames; + const titles = Search._index.titles; + + const scoreMap = new Map(); + const fileMap = new Map(); + + // perform the search on the required terms + searchTerms.forEach((word) => { + const files = []; + const arr = [ + { files: terms[word], score: Scorer.term }, + { files: titleTerms[word], score: Scorer.title }, + ]; + // add support for partial matches + if (word.length > 2) { + const escapedWord = _escapeRegExp(word); + Object.keys(terms).forEach((term) => { + if (term.match(escapedWord) && !terms[word]) + arr.push({ files: terms[term], score: Scorer.partialTerm }); + }); + Object.keys(titleTerms).forEach((term) => { + if (term.match(escapedWord) && !titleTerms[word]) + arr.push({ files: titleTerms[word], score: Scorer.partialTitle }); + }); + } + + // no match but word was a required one + if (arr.every((record) => record.files === undefined)) return; + + // found search word in contents + arr.forEach((record) => { + if (record.files === undefined) return; + + let recordFiles = record.files; + if (recordFiles.length === undefined) recordFiles = [recordFiles]; + files.push(...recordFiles); + + // set score for the word in each file + recordFiles.forEach((file) => { + if (!scoreMap.has(file)) scoreMap.set(file, {}); + scoreMap.get(file)[word] = record.score; + }); + }); + + // create the mapping + files.forEach((file) => { + if (fileMap.has(file) && fileMap.get(file).indexOf(word) === -1) + fileMap.get(file).push(word); + else fileMap.set(file, [word]); + }); + }); + + // now check if the files don't contain excluded terms + const results = []; + for (const [file, wordList] of fileMap) { + // check if all requirements are matched + + // as search terms with length < 3 are discarded + const filteredTermCount = [...searchTerms].filter( + (term) => term.length > 2 + ).length; + if ( + wordList.length !== searchTerms.size && + wordList.length !== filteredTermCount + ) + continue; + + // ensure that none of the excluded terms is in the search result + if ( + [...excludedTerms].some( + (term) => + terms[term] === file || + titleTerms[term] === file || + (terms[term] || []).includes(file) || + (titleTerms[term] || []).includes(file) + ) + ) + break; + + // select one (max) score for the file. + const score = Math.max(...wordList.map((w) => scoreMap.get(file)[w])); + // add result to the result list + results.push([ + docNames[file], + titles[file], + "", + null, + score, + filenames[file], + ]); + } + return results; + }, + + /** + * helper function to return a node containing the + * search summary for a given text. keywords is a list + * of stemmed words. + */ + makeSearchSummary: (htmlText, keywords) => { + const text = Search.htmlToText(htmlText); + if (text === "") return null; + + const textLower = text.toLowerCase(); + const actualStartPosition = [...keywords] + .map((k) => textLower.indexOf(k.toLowerCase())) + .filter((i) => i > -1) + .slice(-1)[0]; + const startWithContext = Math.max(actualStartPosition - 120, 0); + + const top = startWithContext === 0 ? "" : "..."; + const tail = startWithContext + 240 < text.length ? "..." : ""; + + let summary = document.createElement("p"); + summary.classList.add("context"); + summary.textContent = top + text.substr(startWithContext, 240).trim() + tail; + + return summary; + }, +}; + +_ready(Search.init); From 162f9b17166bbe34a7c049fda6ee1b0fc8ee62a7 Mon Sep 17 00:00:00 2001 From: Timon de Groot Date: Wed, 11 Jan 2023 14:44:29 +0100 Subject: [PATCH 16/51] docs: Improve results for small search queries --- docs/_static/searchtools.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/_static/searchtools.js b/docs/_static/searchtools.js index e89e34d4..fdb742fd 100644 --- a/docs/_static/searchtools.js +++ b/docs/_static/searchtools.js @@ -282,7 +282,7 @@ const Search = { const queryLower = query.toLowerCase(); for (const [title, foundTitles] of Object.entries(allTitles)) { - if (title.toLowerCase().includes(queryLower) && (queryLower.length >= title.length/2)) { + if (title.toLowerCase().includes(queryLower)) { for (const [file, id] of foundTitles) { let score = Math.round(100 * queryLower.length / title.length) results.push([ From e810c80a552bd4debfc301f883739154d554be59 Mon Sep 17 00:00:00 2001 From: Timon de Groot Date: Wed, 11 Jan 2023 16:56:22 +0100 Subject: [PATCH 17/51] ci: Fix production base url missing trailing slash --- .github/workflows/deploy.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/deploy.yaml b/.github/workflows/deploy.yaml index 95ecc549..b6c0a74a 100644 --- a/.github/workflows/deploy.yaml +++ b/.github/workflows/deploy.yaml @@ -25,7 +25,7 @@ jobs: - name: Set env for production build if: github.ref == 'refs/heads/master' run: | - echo "DOCS_BASE_URL=https://docs.hypernode.io" >> $GITHUB_ENV + echo "DOCS_BASE_URL=https://docs.hypernode.io/" >> $GITHUB_ENV - run: hypernode-deploy build -vvv - name: archive production artifacts uses: actions/upload-artifact@v3 From 325ea1047ce3f456ef52b1597621838d2b28b4bc Mon Sep 17 00:00:00 2001 From: Timon de Groot Date: Thu, 12 Jan 2023 09:45:19 +0100 Subject: [PATCH 18/51] docs: Remove duplicate articles --- ...p-in-shopware-6-when-basic-auth-is-used.md | 7 +- ...-shopware-6-admin-on-a-development-plan.md | 30 -------- ...automatic-logfile-rotation-on-hypernode.md | 75 ------------------- ...to-configure-automatic-logfile-rotation.md | 1 + 4 files changed, 7 insertions(+), 106 deletions(-) delete mode 100644 docs/ecommerce-applications/shopware-6/workaround-for-known-issue-accessing-shopware-6-admin-on-a-development-plan.md delete mode 100644 docs/hypernode-platform/tools/how-to-configure-automatic-logfile-rotation-on-hypernode.md diff --git a/docs/ecommerce-applications/shopware-6/admin-loop-in-shopware-6-when-basic-auth-is-used.md b/docs/ecommerce-applications/shopware-6/admin-loop-in-shopware-6-when-basic-auth-is-used.md index edfacb7f..9c3b1f10 100644 --- a/docs/ecommerce-applications/shopware-6/admin-loop-in-shopware-6-when-basic-auth-is-used.md +++ b/docs/ecommerce-applications/shopware-6/admin-loop-in-shopware-6-when-basic-auth-is-used.md @@ -1,3 +1,8 @@ +--- +redirect_from: + - /en/support/solutions/articles/48001207548-workaround-for-known-issue-accessing-shopware-6-admin-on-a-development-plan/ +--- + # Admin loop in Shopware 6 when basic auth is used On a Hypernode dev plan basic auth is enabled out of the box. You can also configure Nginx to put your site or parts of your site behind basic auth on a production plan. When you want to use Shopware 6 on a Hypernode with basic auth you need to take into account that Shopware overwrites the Authorization header. @@ -15,6 +20,6 @@ The solution is to whitelist your IP to skip the basic auth on the Hypernode whe geo $development_exceptions { default "Development restricted area"; # The IP that you want to access the Shopware 6 admin from - 127.0.0.1 "off"; + 1.2.3.4 "off"; } ``` diff --git a/docs/ecommerce-applications/shopware-6/workaround-for-known-issue-accessing-shopware-6-admin-on-a-development-plan.md b/docs/ecommerce-applications/shopware-6/workaround-for-known-issue-accessing-shopware-6-admin-on-a-development-plan.md deleted file mode 100644 index acd43cd1..00000000 --- a/docs/ecommerce-applications/shopware-6/workaround-for-known-issue-accessing-shopware-6-admin-on-a-development-plan.md +++ /dev/null @@ -1,30 +0,0 @@ ---- -redirect_from: - - /en/support/solutions/articles/48001207548-workaround-for-known-issue-accessing-shopware-6-admin-on-a-development-plan/ ---- - - - -# Workaround for Known Issue Accessing Shopware 6 Admin on a Development Plan - -On a Hypernode Development plan the basic authentication is enabled out of the box. When you want to use Shopware 6 on a Hypernode with basic auth you need to take into account that Shopware overwrites the Authorization header. - -Shopware uses OAuth with a bearer token for logging into the admin and using the API. For example if your shop is , that URL will work fine. But logging in to will send you into a basic auth loop. - -The solution is to whitelist your IP from the basic auth on the Hypernode to not use basic auth when you come from your specified IP. You can whitelist your IP in the `/data/web/nginx/whitelist-development-exception.conf` file. - -```nginx -# $ cat /data/web/nginx/whitelist-development-exception.conf -# You can make certain IP addresses exempt here from the development -# basic auth. Beware though, that google and bing bots will always -# remain blocked on development nodes! - -geo $development_exceptions { - default "Development restricted area"; - 1.2.3.4 "off"; # The IP that you want to access the Shopware 6 admin from -} - -If your IP changes too often to whitelist you can always consider whitelisting `0.0.0.0/0` -``` - -If your IP changes too often to whitelist you can always consider whitelisting **0.0.0.0/0**but be careful, this indicates you're whitelisting the whole internet. diff --git a/docs/hypernode-platform/tools/how-to-configure-automatic-logfile-rotation-on-hypernode.md b/docs/hypernode-platform/tools/how-to-configure-automatic-logfile-rotation-on-hypernode.md deleted file mode 100644 index 4dc80586..00000000 --- a/docs/hypernode-platform/tools/how-to-configure-automatic-logfile-rotation-on-hypernode.md +++ /dev/null @@ -1,75 +0,0 @@ ---- -redirect_from: - - /en/support/solutions/articles/48001185227-how-to-configure-automatic-logfile-rotation-on-hypernode/ ---- - - - -# How to configure automatic logfile rotation on Hypernode - -We have a hypernode-auto-logrotate command as part of our hypernode- system utilities. This is a command line tool that automatically rotates log files, which helps avoid disk space issues and decreases time the required to restore back-ups. - -## Log rotation - -A hypernode contains files that applications write their logs to. For example, Magento writes to `/data/web/magento2/var/log/debug.log`. These log files can get quite large (we’ve seen examples of over 30GB), so for example when doing a backup, you end up transferring obscenely large files over the internet. - -You can avoid this problem by rotating the log files. This means that when a log file `/data/web/example.log` gets too big, you compress it, move it to `/data/web/example.log.1.gz`, and give the application an empty log file to write to. The `hypernode-auto-logrotate` command automates this process. - -## Example Usage - -For a log file `~/example.log`, the tool can be used as follows: - -```console -app@levkd4-example-magweb-cmbl:~$ hypernode-auto-logrotate example.log -Adding logrotate cron job -Adding logrotate config entry for "/data/web/example.log" -``` - -This will cause the log file to be rotated on a daily basis, at around midnight. If the file is over 50MB, the next day the old logs will have been moved to `~/example.log.1.gz`. - -```console -app@levkd4-example-magweb-cmbl:~$ ls example.log* -example.log example.log.1.gz -``` - -The tool also has a `--detect` option, with which it will search for log files and rotate them: - -```console -app@levkd4-example-magweb-cmbl:~$ hypernode-auto-logrotate --detect -Searching for logfiles... -Logfile found: /data/web/example.log -Logfile found: /data/web/magento2/var/log/system.log -Logfile found: /data/web/magento2/var/log/connector.log -Logfile found: /data/web/magento2/var/log/debug.log -Logfile found: /data/web/magento2-sample-data/dev/tools/exclude.log -Logfile "/data/web/example.log" is already being rotated -Adding logrotate config entry for "/data/web/magento2/var/log/system.log" -Adding logrotate config entry for "/data/web/magento2/var/log/connector.log" -Adding logrotate config entry for "/data/web/magento2/var/log/debug.log" -Adding logrotate config entry for "/data/web/magento2-sample-data/dev/tools/exclude.log" -``` - -The default threshold of the hypernode-auto-logrote is 500 MB meaning the tool will only detect logs larger than 500 MB. You can also lower the threshold by adding the option `--threshold 200MB` (or any other amount) so it will search for logs bigger than 200 MB for example. - -The tool has a `--dry-run` option which will print what the tool will do without actually doing it. For more detailed output, run it with the `--verbose` option. - -## Configuration - -The `hypernode-auto-logrotate` command comes with a sensible out-of-the-box configuration. Among other things, this means that it will rotate log files daily, only when they exceed 50MB, and that it will keep four files in rotation (meaning you end up with `example.log.1.gz` up to `example.log.4.gz`). These configurations are stored in `/data/web/hypernode_logrotate.conf`, and can be customized per log by editing this file. For example, the entry added for `example.log` reads - -``` -/data/web/example.log { - rotate 4 - daily - compress - # do not raise an error if the logfile does not exist - missingok - # file size at which rotation is triggered - size 50M - # copy the file and truncate the original, in case - # another process cannot be told to close the logfile - copytruncate -} -``` - -The [logrotate main page](https://linux.die.net/man/8/logrotate) contains instructions on how to customize this diff --git a/docs/hypernode-platform/tools/how-to-configure-automatic-logfile-rotation.md b/docs/hypernode-platform/tools/how-to-configure-automatic-logfile-rotation.md index 77d147a2..d6b0b215 100644 --- a/docs/hypernode-platform/tools/how-to-configure-automatic-logfile-rotation.md +++ b/docs/hypernode-platform/tools/how-to-configure-automatic-logfile-rotation.md @@ -5,6 +5,7 @@ myst: that automatically rotates log files, which helps to avoid disk space issues. redirect_from: - /en/hypernode/tools/how-to-configure-automatic-logfile-rotation/ + - /en/support/solutions/articles/48001185227-how-to-configure-automatic-logfile-rotation-on-hypernode/ --- From d4eba8bfa2715a5615a3c550216722975742735b Mon Sep 17 00:00:00 2001 From: Timon de Groot Date: Thu, 12 Jan 2023 10:51:48 +0100 Subject: [PATCH 19/51] Add bin/import_metadata for importing HTML metadata to articles --- bin/import_metadata | 6 +++++ hypernode/common/docs.py | 18 ++++++++++++++- hypernode/metadata/__init__.py | 0 hypernode/metadata/importer.py | 40 ++++++++++++++++++++++++++++++++++ 4 files changed, 63 insertions(+), 1 deletion(-) create mode 100755 bin/import_metadata create mode 100644 hypernode/metadata/__init__.py create mode 100644 hypernode/metadata/importer.py diff --git a/bin/import_metadata b/bin/import_metadata new file mode 100755 index 00000000..a8a26fab --- /dev/null +++ b/bin/import_metadata @@ -0,0 +1,6 @@ +#!/usr/bin/env python3 + +from hypernode.metadata.importer import main + +if __name__ == "__main__": + main() diff --git a/hypernode/common/docs.py b/hypernode/common/docs.py index 3f5f9b29..a55f59bd 100644 --- a/hypernode/common/docs.py +++ b/hypernode/common/docs.py @@ -1,9 +1,10 @@ import os.path from pathlib import Path -from typing import List, Optional +from typing import List, Optional, Tuple import mdformat import yaml +from frontmatter import Frontmatter from hypernode.common.settings import DOCS_DIR @@ -20,6 +21,21 @@ def get_all_docs() -> List[Path]: return result +def read_doc(path: Path) -> Tuple[dict, str, str]: + with open(path, mode="r") as f: + contents = f.read() + fm = Frontmatter.read(contents) + if not fm["attributes"]: + fm["attributes"] = {} + if not fm["body"]: + fm["body"] = contents + return ( + fm["attributes"], + fm["body"], + contents, + ) + + def write_doc(path: Path, contents: str, frontmatter: Optional[dict]) -> None: if frontmatter: fm_yaml = yaml.dump(frontmatter, default_flow_style=False) diff --git a/hypernode/metadata/__init__.py b/hypernode/metadata/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/hypernode/metadata/importer.py b/hypernode/metadata/importer.py new file mode 100644 index 00000000..fe00d719 --- /dev/null +++ b/hypernode/metadata/importer.py @@ -0,0 +1,40 @@ +import argparse +import csv + +from hypernode.common import settings +from hypernode.common.docs import read_doc, write_doc + + +def parse_args() -> str: + parser = argparse.ArgumentParser() + parser.description = "Utility to import metadata from a CSV file into the articles" + parser.add_argument("file", help="Path to CSV file") + + args = parser.parse_args() + return args.file + + +def main(): + file = parse_args() + with open(file, mode="r") as f: + reader = csv.reader(f, delimiter=",", quotechar='"') + i = 0 + for _, path, title, description in reader: + if i == 0 or not any([title, description]): + i += 1 + continue + path = path.lstrip("/").replace(".html", ".md") + path = settings.DOCS_DIR / path + + print("Importing metadata for {}".format(path)) + + fm, body, _ = read_doc(path) + fm["myst"] = fm.get("myst", {"html_meta": {}}) + if title: + fm["myst"]["html_meta"]["title"] = title + if description: + fm["myst"]["html_meta"]["description"] = description + + write_doc(path, body, fm) + + i += 1 From b140f3573365c58395b0c9fad25e2e5699fff339 Mon Sep 17 00:00:00 2001 From: Timon de Groot Date: Thu, 12 Jan 2023 11:04:42 +0100 Subject: [PATCH 20/51] docs: Add meta title and description to articles --- docs/about-hypernode/about-hypernode.md | 5 +++++ .../about-hypernode/hypernode-and-team-blue.md | 6 ++++-- .../hypernode-certification-for-agencies.md | 6 +++--- .../about-hypernode/hypernode-pricing-plans.md | 4 +++- .../upgrade-to-debian-buster-technical-implications.md | 5 +++++ .../what-kind-of-emails-does-hypernode-send.md | 5 +++-- .../about-hypernode/which-cloud-providers-do-we-use.md | 6 +++--- docs/about-hypernode/billing.md | 5 +++++ .../billing/billing-faq-for-the-control-panel.md | 5 +++-- .../billing/billing-faq-for-the-service-panel.md | 5 +++-- .../billing/control-panel-billing-facturen-faq-dutch.md | 6 ++++++ docs/about-hypernode/billing/how-to-cancel-your-plan.md | 5 +++-- .../billing/how-to-choose-and-order-a-hypernode-plan.md | 5 +++-- .../how-to-up-or-downgrade-your-hypernode-plan.md | 6 +++--- .../billing/our-payment-service-provider.md | 5 +++-- .../supported-payment-methods-in-the-control-panel.md | 5 +++-- docs/about-hypernode/security-policies.md | 5 +++++ .../security-policies/hypernode-security-statement.md | 5 +++-- .../one-of-your-magento-extensions-is-vulnerable.md | 6 +++--- .../security-policies/responsible-disclosure-policy.md | 5 +++-- .../security-policies/security-hall-of-fame.md | 6 ++++-- ...you-need-to-know-about-the-geo-blocking-regulation.md | 5 +++-- docs/about-hypernode/support.md | 5 +++++ .../support/24-7-monitoring-and-alerting.md | 7 ++++--- .../support/conflict-between-merchant-and-webdesigner.md | 6 ++++-- .../support/emergency-support-outside-office-hours.md | 6 ++++-- docs/about-hypernode/support/scope-of-support.md | 6 ++++++ .../support/what-to-expect-from-hipex-support.md | 8 ++++++++ docs/best-practices/backups.md | 5 +++++ ...ate-a-backup-and-download-it-to-your-local-machine.md | 5 +++++ docs/best-practices/cdn.md | 5 +++++ .../cdn/how-to-use-cloudflare-with-hypernode.md | 5 +++-- docs/best-practices/database.md | 5 +++++ .../database/how-to-run-rabbitmq-on-hypernode.md | 5 +++-- .../database/how-to-use-heidisql-on-hypernode.md | 6 +++--- docs/best-practices/email.md | 5 +++++ ...autoresponder-out-of-office-for-your-email-address.md | 5 +++-- docs/best-practices/email/how-to-export-your-emails.md | 7 ++++--- .../best-practices/email/how-to-find-the-mail-headers.md | 6 +++--- ...nt-spam-being-sent-from-your-name-or-email-address.md | 5 +++-- .../how-to-prevent-your-email-being-marked-as-spam.md | 5 +++-- .../email/how-to-use-e-mail-on-hypernode.md | 6 +++--- docs/best-practices/performance.md | 5 +++++ .../performance/how-to-enable-pagespeed-booster.md | 5 +++-- ...to-find-your-performance-bottleneck-with-new-relic.md | 6 +++--- ...fix-performance-issues-caused-by-bots-and-crawlers.md | 6 ++++-- .../performance/how-to-improve-your-magento-search.md | 7 ++++--- ...w-to-optimize-the-performance-of-your-magento-shop.md | 6 +++--- .../performance/how-to-optimize-your-images.md | 5 +++-- .../performance/how-to-set-up-smart-404-handling.md | 6 ++++-- ...-blackfire-on-hypernode-to-find-performance-issues.md | 3 ++- docs/best-practices/pwa.md | 5 +++++ docs/best-practices/pwa/hypernode-and-pwa-hosting.md | 6 +++--- docs/best-practices/security.md | 5 +++++ .../security/how-does-hypernode-handle-ddos-attacks.md | 5 +++-- .../security/how-hypernode-protects-your-magento-shop.md | 5 +++++ .../security/how-to-apply-magento-patches.md | 7 ++++--- ...how-to-fix-malicious-javascript-credit-card-hijack.md | 6 +++--- ...abilty-apsb22-12-cve-2022-24086-and-cve-2022-24087.md | 5 +++++ ...install-magento-patch-supee-8788-and-release-1-9-3.md | 7 ++++--- ...how-to-protect-magento-against-brute-force-attacks.md | 5 +++++ .../security/how-to-recover-a-hacked-magento-shop.md | 7 ++++--- .../security/how-to-scan-your-hypernode-for-malware.md | 6 +++--- .../security/how-to-secure-magento-cacheleak.md | 6 +++--- ...w-to-secure-your-data-using-encryption-and-hashing.md | 6 +++--- .../security/how-to-use-a-cloud-firewall-on-hypernode.md | 6 ++++++ .../hypernodes-not-vulnerable-for-cve-2021-4034.md | 5 +++++ .../what-you-need-to-know-about-the-visbot-malware.md | 5 +++-- docs/best-practices/testing.md | 5 +++++ .../testing/how-to-check-if-everything-works.md | 5 +++-- .../testing/how-to-go-live-with-your-hypernode.md | 5 +++-- ...w-to-test-your-website-by-changing-your-hosts-file.md | 5 +++-- docs/best-practices/testing/hypernode-docker.md | 6 +++--- .../testing/zero-downtime-deployment-on-hypernode.md | 5 +++-- docs/best-practices/usage.md | 5 +++++ .../usage/how-to-handle-composer-memory-issues.md | 6 ++++++ ...nstall-wordpress-next-to-your-magento-installation.md | 5 +++-- docs/ecommerce-applications/akeneo.md | 5 +++++ .../akeneo/how-to-install-akeneo-3-on-hypernode.md | 6 +++--- .../akeneo/how-to-install-akeneo-4-on-hypernode.md | 6 +++--- .../akeneo/how-to-install-akeneo-5-on-hypernode.md | 6 +++--- .../akeneo/how-to-install-akeneo-6-on-hypernode.md | 5 +++++ ...w-to-use-a-basic-staging-environment-with-akeneo-3.md | 3 ++- ...se-a-basic-staging-environment-with-akeneo-4-and-5.md | 3 ++- docs/ecommerce-applications/magento-1.md | 5 +++++ .../how-to-change-the-base-url-in-magento-1-x.md | 6 ++++-- .../magento-1/how-to-clean-the-magento-1-x-logs.md | 6 +++--- .../magento-1/how-to-configure-redis-for-magento-1.md | 7 ++++--- .../how-to-configure-varnish-for-magento-1-x.md | 6 ++++-- ...how-to-create-a-robots-txt-for-your-magento-1-shop.md | 6 +++--- .../how-to-create-a-sitemap-xml-for-magento-1-x.md | 5 +++-- .../magento-1/how-to-enable-clean-urls-for-magento.md | 6 +++--- .../how-to-enable-mysql-query-logging-for-magento-1-x.md | 6 +++--- .../magento-1/how-to-enable-the-magento-1-api.md | 5 +++-- .../how-to-enable-the-maintenance-mode-in-magento-1.md | 6 ++++-- ...l-couldnt-load-from-failed-to-load-external-entity.md | 7 ++++--- .../magento-1/how-to-flush-the-magento-1-x-caches.md | 5 +++-- .../magento-1/how-to-flush-the-wsdl-cache.md | 6 ++++-- .../magento-1/how-to-install-magento-1-on-hypernode.md | 5 +++-- .../how-to-remove-your-magento-1-x-installation.md | 6 ++++-- .../how-to-reset-your-magento-1-x-admin-password.md | 7 ++++--- .../how-to-set-magento-1-x-to-the-utc-timezone.md | 7 ++++--- .../how-to-set-the-return-path-for-a-magento-1-shop.md | 7 ++++--- .../how-to-set-up-a-staging-environment-for-magento-1.md | 6 +++--- docs/ecommerce-applications/magento-2.md | 5 +++++ .../magento-2/how-to-change-your-magento-2-base-urls.md | 6 ++++-- .../magento-2/how-to-configure-redis-for-magento-2.md | 6 +++--- .../how-to-configure-varnish-for-magento-2-x.md | 5 +++-- .../how-to-create-a-robots-txt-for-magento-2-x.md | 5 +++-- .../how-to-create-a-sitemap-xml-for-magento-2-x.md | 5 +++-- .../magento-2/how-to-enable-the-magento-2-api.md | 5 +++-- .../how-to-enable-the-magento-2-web-setup-wizard.md | 5 +++-- .../how-to-enable-the-maintenance-mode-in-magento-2.md | 6 ++++-- ...general-error-1030-got-error-1-from-storage-engine.md | 6 ++++-- .../magento-2/how-to-flush-the-magento-2-x-caches.md | 5 +++-- .../magento-2/how-to-install-magento-2-on-hypernode.md | 5 +++-- ...to-optimize-magento-2-queue-consumers-on-hypernode.md | 6 +++--- .../magento-2/how-to-protect-the-magento-2-api.md | 5 +++++ .../how-to-remove-your-magento-2-x-installation.md | 5 +++-- .../how-to-reset-your-magento-2-x-admin-password.md | 6 +++--- .../how-to-set-magento-2-x-to-the-utc-timezone.md | 7 ++++--- .../how-to-set-mysql-variables-globally-on-hypernode.md | 5 +++-- .../how-to-set-the-return-path-for-a-magento-2-shop.md | 7 ++++--- ...o-set-up-a-basic-staging-environment-for-magento-2.md | 6 +++--- .../magento-2/how-to-update-magento-2.md | 1 + docs/ecommerce-applications/shopware-5.md | 8 ++++++++ ...-timezone-for-the-order-timestamps-in-shopware-5-x.md | 5 +++++ .../how-to-change-the-timezone-in-shopware-5-x.md | 6 ++++-- .../shopware-5/how-to-configure-shopware-caching.md | 6 ++++-- .../how-to-configure-varnish-for-shopware-5.md | 4 +++- .../shopware-5/how-to-host-shopware-on-hypernode.md | 6 ++++-- .../how-to-install-shopware-5-on-hypernode-docker.md | 6 ++++-- .../shopware-5/how-to-install-shopware-5-on-hypernode.md | 5 +++-- .../shopware-5/how-to-setup-a-multistore-in-shopware.md | 7 ++++--- ...w-to-use-a-basic-staging-environment-with-shopware.md | 5 +++-- docs/ecommerce-applications/shopware-6.md | 5 +++++ .../admin-loop-in-shopware-6-when-basic-auth-is-used.md | 8 ++++++++ .../shopware-6/how-to-configure-redis-for-shopware-6.md | 5 +++++ .../how-to-configure-varnish-for-shopware-6.md | 6 ++++++ .../how-to-install-shopware-6-on-hypernode-docker.md | 6 ++++-- .../shopware-6/how-to-install-shopware-6-on-hypernode.md | 5 +++-- ...to-use-a-basic-staging-environment-with-shopware-6.md | 6 +++--- docs/ecommerce-applications/woocommerce.md | 5 +++++ .../how-to-install-woocommerce-on-hypernode.md | 5 +++++ docs/getting-started/how-to-order.md | 5 +++++ .../how-to-get-started-with-your-hypernode-trial.md | 5 +++-- docs/hypernode-deploy/getting-started.md | 8 ++++++++ docs/hypernode-deploy/getting-started/configure-ci-cd.md | 9 +++++++++ .../install-and-configure-hypernode-deploy.md | 8 ++++++++ docs/hypernode-platform/backups.md | 5 +++++ .../how-to-restore-your-hypernode-from-a-snapshot.md | 5 +++-- .../backups/hypernode-backup-policy.md | 5 +++-- docs/hypernode-platform/dns.md | 5 +++++ .../dns/dns-for-service-panel-users.md | 6 +++--- .../dns/how-to-manage-your-dns-settings-for-hypernode.md | 5 +++-- .../dns/how-to-set-up-your-spf-records-for-hypernode.md | 6 ++++-- docs/hypernode-platform/dns/your-dns-is-misconfigured.md | 1 + docs/hypernode-platform/email.md | 5 +++++ .../how-to-activate-a-virus-filter-for-your-email-box.md | 6 +++--- .../email/how-to-configure-the-spam-filter.md | 5 +++-- .../email/how-to-manage-your-email-queue.md | 4 ++-- .../email/how-to-set-up-your-dns-for-outgoing-email.md | 4 +++- .../email/how-to-set-up-your-dns-for-using-office365.md | 6 ++++-- docs/hypernode-platform/email/how-to-use-dmarc.md | 5 +++-- .../email/policy-for-sending-email-on-hypernode.md | 6 ++++-- .../email/spam-run-via-your-website.md | 7 ++++--- docs/hypernode-platform/ftp.md | 5 +++++ .../ftp/how-to-configure-ftp-sftp-on-hypernode.md | 1 + docs/hypernode-platform/mysql.md | 5 +++++ .../mysql/how-to-configure-a-large-mysql-thread-stack.md | 6 +++--- .../mysql/how-to-free-disk-space-from-mysql-ibdata1.md | 7 ++++--- .../mysql/how-to-use-mysql-on-hypernode.md | 6 +++--- docs/hypernode-platform/mysql/how-to-use-phpmyadmin.md | 5 +++-- docs/hypernode-platform/nginx.md | 5 +++++ ...asic-authentication-on-hypernode-development-plans.md | 5 +++-- ...w-to-add-custom-http-headers-to-a-file-or-location.md | 5 +++-- .../nginx/how-to-block-allow-ip-addresses-in-nginx.md | 5 +++-- .../nginx/how-to-block-spammers-and-scanners.md | 6 ++++-- .../nginx/how-to-block-user-agents-and-referrer-sites.md | 5 +++-- .../how-to-block-your-webshop-for-specific-countries.md | 6 ++++-- .../nginx/how-to-configure-nginx-for-a-multistore.md | 5 +++-- .../how-to-configure-your-shop-to-only-use-https.md | 7 ++++--- ...te-a-reusable-config-to-include-in-custom-snippets.md | 6 +++--- .../how-to-deny-access-to-locations-and-directories.md | 5 +++-- ...e-top-10-visitors-by-parsing-the-nginx-access-logs.md | 6 ++++-- ...rotect-your-magento-store-with-a-password-in-nginx.md | 5 +++-- .../nginx/how-to-redirect-from-or-to-www.md | 6 +++--- ...esolve-rate-limited-requests-429-too-many-requests.md | 6 ++++-- .../nginx/how-to-restrict-access-to-your-admin-area.md | 6 +++--- .../how-to-rewrite-a-trailing-slash-for-seo-purposes.md | 6 ++++-- .../nginx/how-to-set-the-server-name-in-nginx.md | 5 +++-- ...ed-up-your-magento-shop-by-tuning-gzip-compression.md | 6 +++--- ...equests-to-sql-and-archive-files-on-your-hypernode.md | 5 +++-- docs/hypernode-platform/nginx/how-to-use-nginx.md | 5 +++-- .../hypernode-platform/nginx/hypernode-managed-vhosts.md | 6 +++--- docs/hypernode-platform/php.md | 5 +++++ .../php/how-to-flush-the-php-opcache.md | 6 +++--- .../php/how-to-override-php-settings.md | 6 +++--- .../php/how-to-resolve-502-gateway-errors.md | 6 +++--- ...d-php-versions-and-how-to-change-them-on-hypernode.md | 5 +++-- .../what-limits-apply-to-active-php-requests-per-ip.md | 6 +++--- docs/hypernode-platform/ssh.md | 5 +++++ .../ssh/how-to-log-in-to-the-hypernode-with-ssh.md | 5 +++-- .../ssh/how-to-use-ssh-keys-on-hypernode.md | 1 + docs/hypernode-platform/ssl.md | 5 +++++ .../ssl/how-to-upgrade-your-ssl-settings-to-an-a.md | 6 ++++-- .../ssl/how-to-use-lets-encrypt-on-hypernode.md | 6 +++--- ...s-on-your-hypernode-when-ordered-via-hypernode-com.md | 5 +++-- ...cate-and-more-frequently-asked-questions-about-ssl.md | 6 ++++-- docs/hypernode-platform/tools.md | 5 +++++ .../tools/how-to-configure-automatic-logfile-rotation.md | 5 +++-- .../tools/how-to-configure-lesti-fpc.md | 6 +++--- .../how-to-copy-your-hypernode-to-another-hypernode.md | 5 +++++ ...-deploy-your-application-using-hypernode-deploy-v1.md | 5 +++++ .../tools/how-to-flush-the-redis-cache.md | 6 +++--- .../tools/how-to-flush-the-varnish-cache.md | 6 +++--- .../tools/how-to-free-up-disk-space.md | 5 +++-- .../tools/how-to-migrate-your-shop-to-hypernode.md | 5 +++-- ...oom-command-not-allowed-when-used-memory-maxmemory.md | 5 +++-- .../tools/how-to-use-composer-2-on-your-hypernode.md | 5 +++++ .../tools/how-to-use-elasticsearch-on-hypernode.md | 6 +++--- .../tools/how-to-use-hypernode-development-plans.md | 6 +++--- .../tools/how-to-use-magento-corediff-on-hypernode.md | 7 ++++--- .../tools/how-to-use-mailhog-on-hypernode.md | 6 +++--- .../tools/how-to-use-node-js-and-npm-on-hypernode.md | 5 +++-- .../how-to-use-periodic-tasks-cronjobs-on-hypernode.md | 6 +++--- docs/hypernode-platform/tools/how-to-use-supervisor.md | 4 ++-- .../tools/how-to-use-the-hypernode-systemctl-cli-tool.md | 6 +++--- docs/hypernode-platform/tools/hypernode-brancher.md | 5 +++++ .../tools/hypernode-cli-tools-and-magerun-plugins.md | 5 +++-- .../tools/installation-and-configuration-of-pm2.md | 6 ++++++ .../unblocking-and-accessing-magmi-for-hypernode.md | 6 +++--- .../what-kind-of-request-is-my-hypernode-serving.md | 8 ++++++++ docs/hypernode-platform/varnish.md | 5 +++++ .../varnish/how-to-enable-varnish-on-hypernode.md | 5 +++++ docs/index.md | 5 +++++ docs/services/control-panel.md | 5 +++++ .../control-panel/different-control-panel-scenarios.md | 5 +++-- docs/services/control-panel/edit-personal-settings.md | 5 +++-- .../how-to-add-keys-to-the-ssh-key-manager.md | 5 +++-- .../how-to-change-your-hypernode-settings.md | 6 ++++-- .../control-panel/how-to-change-your-plan-via-the-cli.md | 5 +++++ .../how-to-link-your-domain-to-your-hypernode.md | 5 +++-- ...r-a-hypernode-and-transfer-ownership-to-a-customer.md | 7 ++++--- .../control-panel/how-to-schedule-an-up-or-downgrade.md | 5 +++++ ...sfer-ownership-of-a-hypernode-in-the-control-panel.md | 5 +++-- .../control-panel/how-to-use-2fa-on-the-control-panel.md | 6 ++++++ docs/services/control-panel/how-to-use-teams.md | 5 +++-- docs/services/control-panel/how-to-use-the-dns-check.md | 5 +++-- ...-roles-and-permissions-on-hypernodes-control-panel.md | 7 ++++--- .../control-panel/using-logs-in-the-control-panel.md | 6 ++++-- docs/services/domain-procedures.md | 5 +++++ .../everything-about-presence-plans-and-domains.md | 6 +++--- .../extension-specific-info-per-domain.md | 5 +++++ .../how-to-transfer-your-domain-away-from-hypernode.md | 5 +++++ ...your-domain-name-to-another-provider-service-panel.md | 6 ++++-- .../how-to-undo-the-cancellation-of-a-domain-name.md | 4 +++- .../how-to-use-domains-in-the-control-panel.md | 5 +++++ docs/services/magereport.md | 5 +++++ docs/services/magereport/magereport-premium.md | 7 ++++--- docs/services/service-panel.md | 5 +++++ .../service-panel/different-service-panel-scenarios.md | 5 +++-- ...o-change-your-customer-details-and-other-questions.md | 5 +++-- .../service-panel/how-to-log-into-the-service-panel.md | 5 +++-- .../service-panel/how-to-use-2fa-on-the-service-panel.md | 5 +++-- docs/troubleshooting/performance.md | 5 +++++ .../performance/general-troubleshooting.md | 6 +++--- .../how-to-block-bad-bots-via-the-control-panel.md | 6 +++--- .../how-to-block-bad-bots-via-the-service-panel.md | 5 +++-- .../performance/how-to-check-why-my-site-is-slow.md | 6 +++--- .../performance/how-to-debug-out-of-memory-oom-events.md | 5 +++-- .../performance/how-to-fix-invalid-form-key-error.md | 6 +++--- .../how-to-identify-and-stop-long-running-processes.md | 6 +++--- .../performance/how-to-implement-pagespeed-booster.md | 5 +++-- .../how-to-optimise-your-magento-disk-performance.md | 5 +++-- ...ow-to-resolve-a-413-request-entity-too-large-error.md | 5 +++++ ...ntroller-reached-100-router-match-iterations-error.md | 7 ++++--- ...ow-to-spot-slow-extensions-using-the-php-slow-logs.md | 5 +++-- ...to-use-the-mysql-slow-queries-in-the-control-panel.md | 5 +++-- 279 files changed, 1051 insertions(+), 478 deletions(-) diff --git a/docs/about-hypernode/about-hypernode.md b/docs/about-hypernode/about-hypernode.md index e00092b0..e656e560 100644 --- a/docs/about-hypernode/about-hypernode.md +++ b/docs/about-hypernode/about-hypernode.md @@ -1,4 +1,9 @@ --- +myst: + html_meta: + description: This table of contents gives you a summary of all knowledge base + articles that tell you more about Hypernode, our services and team.blue. + title: About Hypernode | Hypernode redirect_from: - /en/about/ --- diff --git a/docs/about-hypernode/about-hypernode/hypernode-and-team-blue.md b/docs/about-hypernode/about-hypernode/hypernode-and-team-blue.md index 49fe3c67..cdbd482a 100644 --- a/docs/about-hypernode/about-hypernode/hypernode-and-team-blue.md +++ b/docs/about-hypernode/about-hypernode/hypernode-and-team-blue.md @@ -1,8 +1,10 @@ --- myst: html_meta: - description: Hypernode is part of team.blue, a leading digital enabler for companies - and entrepreneurs. + description: 'Hypernode is part of team.blue, a $1 billion valuation tech company + that offers digital tools like hosting and email to over 1.2 million customers + across Europe. ' + title: Hypernode is part of team.blue | Hypernode redirect_from: - /en/about/about-us/hypernode-and-team-blue/ --- diff --git a/docs/about-hypernode/about-hypernode/hypernode-certification-for-agencies.md b/docs/about-hypernode/about-hypernode/hypernode-certification-for-agencies.md index d73895e6..2295a1a1 100644 --- a/docs/about-hypernode/about-hypernode/hypernode-certification-for-agencies.md +++ b/docs/about-hypernode/about-hypernode/hypernode-certification-for-agencies.md @@ -1,9 +1,9 @@ --- myst: html_meta: - description: This article explains the importance of a Hypernode certification - for Magento developers and retailers and how you can become a Hypernode Certified - Agency. + description: Our Certification program assesses Magento agencies on output, security, + processes, and requires thorough knowledge of Magento. Learn more! + title: Hypernode Certification for Magento Agencies | Hypernode redirect_from: - /en/about/about-us/hypernode-certification-for-agencies/ --- diff --git a/docs/about-hypernode/about-hypernode/hypernode-pricing-plans.md b/docs/about-hypernode/about-hypernode/hypernode-pricing-plans.md index 1ef6abd2..960f14eb 100644 --- a/docs/about-hypernode/about-hypernode/hypernode-pricing-plans.md +++ b/docs/about-hypernode/about-hypernode/hypernode-pricing-plans.md @@ -1,7 +1,9 @@ --- myst: html_meta: - description: Which hosting plans and pricing does Hypernode offer. + description: Learn about Hypernode's Managed Cloud Hosting and Managed Dedicated + Hosting and its pricing. Prices start at €109 per month. + title: Hypernode Pricing & Plans | Hypernode redirect_from: - /en/support/solutions/articles/48001228422-hypernode-pricing-plans/ --- diff --git a/docs/about-hypernode/about-hypernode/upgrade-to-debian-buster-technical-implications.md b/docs/about-hypernode/about-hypernode/upgrade-to-debian-buster-technical-implications.md index 6cdce488..74fc9977 100644 --- a/docs/about-hypernode/about-hypernode/upgrade-to-debian-buster-technical-implications.md +++ b/docs/about-hypernode/about-hypernode/upgrade-to-debian-buster-technical-implications.md @@ -1,4 +1,9 @@ --- +myst: + html_meta: + description: Hypernode upgraded all systems from Ubuntu Xenial to Debian Buster + OS. Check the Hypernode changelog for the most up to date information. + title: Debian Buster Upgrade Implications | Hypernode redirect_from: - /en/about/about-us/upgrade-to-debian-buster-technical-implications/ --- diff --git a/docs/about-hypernode/about-hypernode/what-kind-of-emails-does-hypernode-send.md b/docs/about-hypernode/about-hypernode/what-kind-of-emails-does-hypernode-send.md index f8b6a8ad..9dd60ca4 100644 --- a/docs/about-hypernode/about-hypernode/what-kind-of-emails-does-hypernode-send.md +++ b/docs/about-hypernode/about-hypernode/what-kind-of-emails-does-hypernode-send.md @@ -1,8 +1,9 @@ --- myst: html_meta: - description: Hypernode sends out different kinds of emails to spread information. - In this article you can find which ones we send and why. + description: Hypernode sends ServiceMails, ProductMails and NewsMails to customers. + All personal information is kept private according to our Privacy Policy. + title: Types of Emails Sent by Hypernode | Hypernode redirect_from: - /en/about/about-us/what-kind-of-emails-does-hypernode-send/ --- diff --git a/docs/about-hypernode/about-hypernode/which-cloud-providers-do-we-use.md b/docs/about-hypernode/about-hypernode/which-cloud-providers-do-we-use.md index 36c8f5a6..27addcd8 100644 --- a/docs/about-hypernode/about-hypernode/which-cloud-providers-do-we-use.md +++ b/docs/about-hypernode/about-hypernode/which-cloud-providers-do-we-use.md @@ -1,9 +1,9 @@ --- myst: html_meta: - description: The Hypernode platform is developed independently from a specific - cloud provider, which allows us to choose only the best. Read here which providers - we use. + description: Hypernode uses a range of cloud providers to host its advanced hosting + platform, including Combell OpenStack, DigitalOcean, and Amazon Cloud Services. + title: Cloud Providers used by Hypernode | Hypernode redirect_from: - /en/about/about-us/which-cloud-providers-do-we-use/ --- diff --git a/docs/about-hypernode/billing.md b/docs/about-hypernode/billing.md index 44dbf6aa..aa577fc7 100644 --- a/docs/about-hypernode/billing.md +++ b/docs/about-hypernode/billing.md @@ -1,4 +1,9 @@ --- +myst: + html_meta: + description: This table of contents gives you a summary of all knowledge base + articles that tell you more about how Hypernode does its billing. + title: Billing at Hypernode | Hypernode redirect_from: - /en/about/billing/ --- diff --git a/docs/about-hypernode/billing/billing-faq-for-the-control-panel.md b/docs/about-hypernode/billing/billing-faq-for-the-control-panel.md index 6e30111a..64105102 100644 --- a/docs/about-hypernode/billing/billing-faq-for-the-control-panel.md +++ b/docs/about-hypernode/billing/billing-faq-for-the-control-panel.md @@ -1,8 +1,9 @@ --- myst: html_meta: - description: Every first of the month, we send an invoice to our customers. You - can easily find all invoices that have been sent in the Control Panel. + description: Find answers to frequently asked billing questions for the Control + Panel, including payment methods, changing plans, and adding VAT numbers. + title: Billing Control Panel FAQ | Hypernode redirect_from: - /en/about/billing/billing-faq-for-the-control-panel/ --- diff --git a/docs/about-hypernode/billing/billing-faq-for-the-service-panel.md b/docs/about-hypernode/billing/billing-faq-for-the-service-panel.md index 4b21ec41..c5f08ab7 100644 --- a/docs/about-hypernode/billing/billing-faq-for-the-service-panel.md +++ b/docs/about-hypernode/billing/billing-faq-for-the-service-panel.md @@ -1,8 +1,9 @@ --- myst: html_meta: - description: 'Read all frequently asked questions about billing and their answers - within this article. ' + description: Learn about Hypernode's invoicing process and payment options for + customers using the legacy Service Panel. + title: FAQ on Service Panel Billing | Hypernode redirect_from: - /en/about/billing/billing-faq-for-the-service-panel/ --- diff --git a/docs/about-hypernode/billing/control-panel-billing-facturen-faq-dutch.md b/docs/about-hypernode/billing/control-panel-billing-facturen-faq-dutch.md index 9219b7a2..9694aca5 100644 --- a/docs/about-hypernode/billing/control-panel-billing-facturen-faq-dutch.md +++ b/docs/about-hypernode/billing/control-panel-billing-facturen-faq-dutch.md @@ -1,4 +1,10 @@ --- +myst: + html_meta: + description: This FAQ covers billing and invoicing questions for customers who + are migrated from the old Dutch legacy platform (Service Panel) to the new Control + Panel. + title: Billing and Invoicing FAQ for Dutch Customers | Hypernode redirect_from: - /en/about/billing/migration-faq/ --- diff --git a/docs/about-hypernode/billing/how-to-cancel-your-plan.md b/docs/about-hypernode/billing/how-to-cancel-your-plan.md index 91242443..6f0e0647 100644 --- a/docs/about-hypernode/billing/how-to-cancel-your-plan.md +++ b/docs/about-hypernode/billing/how-to-cancel-your-plan.md @@ -1,8 +1,9 @@ --- myst: html_meta: - description: 'You can cancel your Hypernode subscription anytime you want. Read - more about how to do so in this article. ' + description: Learn how to cancel your Hypernode plan or domain in the Control + Panel, including tips for outstanding invoices and undoing cancellations. + title: How to Cancel Your Hypernode Plan | Hypernode redirect_from: - /en/about/billing/how-to-cancel-your-hypernode-plan/ --- diff --git a/docs/about-hypernode/billing/how-to-choose-and-order-a-hypernode-plan.md b/docs/about-hypernode/billing/how-to-choose-and-order-a-hypernode-plan.md index f376b266..ebb3ad51 100644 --- a/docs/about-hypernode/billing/how-to-choose-and-order-a-hypernode-plan.md +++ b/docs/about-hypernode/billing/how-to-choose-and-order-a-hypernode-plan.md @@ -1,8 +1,9 @@ --- myst: html_meta: - description: 'Hypernode is a unique e-commerce platform for your Magento or Shopware - shop. Read all about our different hosting solutions in this article. ' + description: Find the perfect hosting plan for your online store with Hypernode. + Learn how to choose and order a Hypernode plan. + title: Choose and Order a Hypernode Plan | Hypernode redirect_from: - /en/about/billing/how-to-choose-and-order-a-hypernode-plan/ - /knowledgebase/order-a-hypernode-plan/ diff --git a/docs/about-hypernode/billing/how-to-up-or-downgrade-your-hypernode-plan.md b/docs/about-hypernode/billing/how-to-up-or-downgrade-your-hypernode-plan.md index c4bcf2af..e22d10b5 100644 --- a/docs/about-hypernode/billing/how-to-up-or-downgrade-your-hypernode-plan.md +++ b/docs/about-hypernode/billing/how-to-up-or-downgrade-your-hypernode-plan.md @@ -1,9 +1,9 @@ --- myst: html_meta: - description: 'When dealing with visitor peaks, during holidays for example, you - might want to take precautions and upgrade a bigger Hypernode plan. Read here - how to do so. ' + description: Learn how to easily upgrade or downgrade your Hypernode hosting plan + based on your needs and usage. You only pay for what you use. + title: Upgrade or downgrade a Hypernode Plan | Hypernode redirect_from: - /en/about/billing/how-to-up-or-downgrade-your-hypernode-plan/ --- diff --git a/docs/about-hypernode/billing/our-payment-service-provider.md b/docs/about-hypernode/billing/our-payment-service-provider.md index 4a16396c..d5812809 100644 --- a/docs/about-hypernode/billing/our-payment-service-provider.md +++ b/docs/about-hypernode/billing/our-payment-service-provider.md @@ -1,8 +1,9 @@ --- myst: html_meta: - description: In our Control Panel we use Chargebee as our payment service provider - and Stripe as the payment gateway. + description: 'We use Chargebee as our payment service provider to securely process + transactions and accept credit and debit payments as well as SEPA Direct Debit. ' + title: Hypernode's Payment Service Provider | Hypernode redirect_from: - /en/about/billing/our-payment-service-provider/ --- diff --git a/docs/about-hypernode/billing/supported-payment-methods-in-the-control-panel.md b/docs/about-hypernode/billing/supported-payment-methods-in-the-control-panel.md index 225dae41..97784eb6 100644 --- a/docs/about-hypernode/billing/supported-payment-methods-in-the-control-panel.md +++ b/docs/about-hypernode/billing/supported-payment-methods-in-the-control-panel.md @@ -1,8 +1,9 @@ --- myst: html_meta: - description: Read what payment methods are supported for the Hypernode Control - Panel here + description: We support Credit Card, SEPA Direct Debit, and SEPA Direct Debit + through iDeal as payment options. Learn how to add these payment methods + title: Payment Methods in the Control Panel | Hypernode redirect_from: - /en/about/billing/supported-payment-methods-in-the-control-panel/ --- diff --git a/docs/about-hypernode/security-policies.md b/docs/about-hypernode/security-policies.md index 58e8a50c..e0909b4b 100644 --- a/docs/about-hypernode/security-policies.md +++ b/docs/about-hypernode/security-policies.md @@ -1,4 +1,9 @@ --- +myst: + html_meta: + description: This table of contents gives you a summary of all knowledge base + articles that tell you more about Hypernode and its Security Policies. + title: Security Policies | Hypernode redirect_from: - /en/about/security/ --- diff --git a/docs/about-hypernode/security-policies/hypernode-security-statement.md b/docs/about-hypernode/security-policies/hypernode-security-statement.md index e8aa9b68..efccb814 100644 --- a/docs/about-hypernode/security-policies/hypernode-security-statement.md +++ b/docs/about-hypernode/security-policies/hypernode-security-statement.md @@ -1,8 +1,9 @@ --- myst: html_meta: - description: 'An overview of Hypernode security policies and information security - certification can be found in this article. ' + description: At Hypernode, we prioritize the security of our servers and hosting + platform. Our security policies and procedures are based on ISO 27001:2013 certification. + title: Security Statement - Protecting Your Data | Hypernode redirect_from: - /en/about/security/hypernode-security-statement/ --- diff --git a/docs/about-hypernode/security-policies/one-of-your-magento-extensions-is-vulnerable.md b/docs/about-hypernode/security-policies/one-of-your-magento-extensions-is-vulnerable.md index ef004c68..7ca8cd3c 100644 --- a/docs/about-hypernode/security-policies/one-of-your-magento-extensions-is-vulnerable.md +++ b/docs/about-hypernode/security-policies/one-of-your-magento-extensions-is-vulnerable.md @@ -1,9 +1,9 @@ --- myst: html_meta: - description: Find an overview of the consequences and ways to fix things, when - receiving a warning that one of the extensions in your Magento shop is vulnerable - here. + description: One of your Magento extensions is vulnerable, it means there is a + bug that can be exploited by hackers. Learn what steps to take to fix the issue. + title: 'Your Magento Extensions is Vulnerable: What to Do | Hypernode' redirect_from: - /en/about/security/one-of-your-magento-extensions-is-vulnerable/ --- diff --git a/docs/about-hypernode/security-policies/responsible-disclosure-policy.md b/docs/about-hypernode/security-policies/responsible-disclosure-policy.md index 8a3f5b5b..2d50deaa 100644 --- a/docs/about-hypernode/security-policies/responsible-disclosure-policy.md +++ b/docs/about-hypernode/security-policies/responsible-disclosure-policy.md @@ -1,8 +1,9 @@ --- myst: html_meta: - description: We take the security of our servers very serious. This policy offers - a way to safely report possible security issues to us. + description: We ensure the security and privacy of Hypernode's users by responsibly + disclosing any vulnerabilities found in our systems. + title: Responsible Disclosure Policy | Security | Hypernode redirect_from: - /en/about/security/responsible-disclosure-policy/ --- diff --git a/docs/about-hypernode/security-policies/security-hall-of-fame.md b/docs/about-hypernode/security-policies/security-hall-of-fame.md index a54cb4b8..40d43488 100644 --- a/docs/about-hypernode/security-policies/security-hall-of-fame.md +++ b/docs/about-hypernode/security-policies/security-hall-of-fame.md @@ -1,8 +1,10 @@ --- myst: html_meta: - description: A list of security researchers we have worked with, that responsibly - disclosed vulnerabilities to us. + description: Thank you to the individuals and organizations who have responsibly + disclosed vulnerabilities to Hypernode. These people helped keep our systems + secure. + title: Security Hall of Fame | Hypernode redirect_from: - /en/about/security/hall-of-fame/ --- diff --git a/docs/about-hypernode/security-policies/what-you-need-to-know-about-the-geo-blocking-regulation.md b/docs/about-hypernode/security-policies/what-you-need-to-know-about-the-geo-blocking-regulation.md index b312c67c..a1a66000 100644 --- a/docs/about-hypernode/security-policies/what-you-need-to-know-about-the-geo-blocking-regulation.md +++ b/docs/about-hypernode/security-policies/what-you-need-to-know-about-the-geo-blocking-regulation.md @@ -1,8 +1,9 @@ --- myst: html_meta: - description: 'Learn all about GEO-Blocking regulations and its most important - rules in this article. ' + description: The Geo-blocking Regulation is aimed to boost cross-border online + sales in the EU. Learn the rules for merchants and customers here. + title: Geo-Blocking Regulation| Security | Hypernode redirect_from: - /en/about/security/what-you-need-to-know-about-the-geo-blocking-regulation/ --- diff --git a/docs/about-hypernode/support.md b/docs/about-hypernode/support.md index c3c62dbc..2412c69c 100644 --- a/docs/about-hypernode/support.md +++ b/docs/about-hypernode/support.md @@ -1,4 +1,9 @@ --- +myst: + html_meta: + description: This table of contents gives you a summary of all knowledge base + articles that tell you more about Hypernode and its Support. + title: Support at Hypernode | Hypernode redirect_from: - /en/about/support/ --- diff --git a/docs/about-hypernode/support/24-7-monitoring-and-alerting.md b/docs/about-hypernode/support/24-7-monitoring-and-alerting.md index 4571b2fc..760dfeea 100644 --- a/docs/about-hypernode/support/24-7-monitoring-and-alerting.md +++ b/docs/about-hypernode/support/24-7-monitoring-and-alerting.md @@ -1,9 +1,10 @@ --- myst: html_meta: - description: To ensure the highest possible stability, our experts monitor your - Hypernode 24 hours a day, 7 days a week. Read more about our monitoring in this - article. + description: Our experts monitor your Hypernode 24/7 and are ready to intervene + if needed to ensure the highest possible stability. Learn more about our Monitoring + here! + title: 24/7 Monitoring and Alerting | Support | Hypernode redirect_from: - /en/about/support/24-7-monitoring-and-alerting/ --- diff --git a/docs/about-hypernode/support/conflict-between-merchant-and-webdesigner.md b/docs/about-hypernode/support/conflict-between-merchant-and-webdesigner.md index 913f29bc..aa50670f 100644 --- a/docs/about-hypernode/support/conflict-between-merchant-and-webdesigner.md +++ b/docs/about-hypernode/support/conflict-between-merchant-and-webdesigner.md @@ -1,8 +1,10 @@ --- myst: html_meta: - description: What to do when a conflict arises between a Registrant (domain name - holder) and the web designer / developer (Contractor and / or Technical administrator)? + description: If a conflict arises between a merchant and a web designer/developer, + Hypernode is unable to mediate the situation.Please reach out to Hypernode for + advice. + title: Handling Merchant and Web Designer Conflicts | Hypernode redirect_from: - /en/about/support/conflict-between-merchant-and-webdesigner/ --- diff --git a/docs/about-hypernode/support/emergency-support-outside-office-hours.md b/docs/about-hypernode/support/emergency-support-outside-office-hours.md index 8cdc2243..82cf7cb5 100644 --- a/docs/about-hypernode/support/emergency-support-outside-office-hours.md +++ b/docs/about-hypernode/support/emergency-support-outside-office-hours.md @@ -1,8 +1,10 @@ --- myst: html_meta: - description: 'When experiencing a business-critical disruption on your web shop, - you can use our Hypernode Emergency Support service for help. ' + description: If you are experiencing a business-critical disruption on your web + shop outside of office hours, you can access our Hypernode Emergency Support + Service. + title: Emergency Service | Urgent Support | Hypernode redirect_from: - /en/about/support/emergency-support-outside-office-hours-/ --- diff --git a/docs/about-hypernode/support/scope-of-support.md b/docs/about-hypernode/support/scope-of-support.md index 9a7e0db3..12221eaf 100644 --- a/docs/about-hypernode/support/scope-of-support.md +++ b/docs/about-hypernode/support/scope-of-support.md @@ -1,4 +1,10 @@ --- +myst: + html_meta: + description: Our primary focus is providing a fast and stable hosting platform. + In case of application related issues, we may ask you to reach out a third-party + developer. + title: Scope of Support | Hypernode redirect_from: - /en/about/support/scope-of-support/ --- diff --git a/docs/about-hypernode/support/what-to-expect-from-hipex-support.md b/docs/about-hypernode/support/what-to-expect-from-hipex-support.md index a5c7c1a3..f3c47989 100644 --- a/docs/about-hypernode/support/what-to-expect-from-hipex-support.md +++ b/docs/about-hypernode/support/what-to-expect-from-hipex-support.md @@ -1,3 +1,11 @@ +--- +myst: + html_meta: + description: 'Learn how to submit support tickets to Hipex, reach the company + by phone, and report urgent issues outside of business hours. ' + title: Hipex Ticket Portal | Support | Hypernode +--- + # Hipex ticket portal With collaboration between Hypernode and Hipex we will move to one support team. To provide the best service and support we have to say goodbye to some tools like Hipex Zendesk ticket system. With saying goodbye to Zendesk we will say goodbye to [support.hipex.io](https://support.hipex.io). This tool can't be used anymore because we migrate the ticket system from Hipex to Hypernode. From now on we use Hypernodes ticket system to deliver the best support of both worlds. To open up a new customer portal is in the backlog but not on any planning yet. You're more than welcome to send us a feature request via [Hypernode Uservoice](https://hypernode.uservoice.com/). diff --git a/docs/best-practices/backups.md b/docs/best-practices/backups.md index 3f440882..9ec4cb17 100644 --- a/docs/best-practices/backups.md +++ b/docs/best-practices/backups.md @@ -1,4 +1,9 @@ --- +myst: + html_meta: + description: This table of contents gives you a summary of all knowledge base + articles that show best practices of backups. + title: Backups | Best Practices | Hypernode redirect_from: - /en/best-practices/backups/ --- diff --git a/docs/best-practices/backups/how-to-create-a-backup-and-download-it-to-your-local-machine.md b/docs/best-practices/backups/how-to-create-a-backup-and-download-it-to-your-local-machine.md index ee17c98c..5b040114 100644 --- a/docs/best-practices/backups/how-to-create-a-backup-and-download-it-to-your-local-machine.md +++ b/docs/best-practices/backups/how-to-create-a-backup-and-download-it-to-your-local-machine.md @@ -1,4 +1,9 @@ --- +myst: + html_meta: + description: Learn how to create and download a backup of your Hypernode application + and database to your local machine. This can be done with SSH access. + title: Create and Download a Backup to Your Local Machine redirect_from: - /en/support/solutions/articles/48001208755-how-to-create-a-backup-and-download-it-to-your-local-machine/ --- diff --git a/docs/best-practices/cdn.md b/docs/best-practices/cdn.md index e29d27a3..02f21795 100644 --- a/docs/best-practices/cdn.md +++ b/docs/best-practices/cdn.md @@ -1,4 +1,9 @@ --- +myst: + html_meta: + description: This table of contents gives you a summary of all knowledge base + articles that show best practices of cdn. + title: CDN | Best Practices | Hypernode redirect_from: - /en/best-practices/cdn/ --- diff --git a/docs/best-practices/cdn/how-to-use-cloudflare-with-hypernode.md b/docs/best-practices/cdn/how-to-use-cloudflare-with-hypernode.md index 6f23258e..50905103 100644 --- a/docs/best-practices/cdn/how-to-use-cloudflare-with-hypernode.md +++ b/docs/best-practices/cdn/how-to-use-cloudflare-with-hypernode.md @@ -1,8 +1,9 @@ --- myst: html_meta: - description: Hypernodes are fully configured and support Cloudflare out of the - box. Read here how to use them. + description: Learn how to configure Cloudflare on your Hypernode to improve website + performance, reduce network latency, and block threats. + title: How to Use Cloudflare | Hypernode redirect_from: - /en/best-practices/cdn/how-to-use-cloudflare-with-hypernode/ --- diff --git a/docs/best-practices/database.md b/docs/best-practices/database.md index 6c49dbe9..5144deec 100644 --- a/docs/best-practices/database.md +++ b/docs/best-practices/database.md @@ -1,4 +1,9 @@ --- +myst: + html_meta: + description: This table of contents gives you a summary of all knowledge base + articles that show best practices of databases. + title: Database | Best Practices | Hypernode redirect_from: - /en/best-practices/database/ --- diff --git a/docs/best-practices/database/how-to-run-rabbitmq-on-hypernode.md b/docs/best-practices/database/how-to-run-rabbitmq-on-hypernode.md index 4226733d..0da41e19 100644 --- a/docs/best-practices/database/how-to-run-rabbitmq-on-hypernode.md +++ b/docs/best-practices/database/how-to-run-rabbitmq-on-hypernode.md @@ -1,8 +1,9 @@ --- myst: html_meta: - description: RabbitMQ is message-queueing software where queues running in the - background can be defined. Read here how to use it on Hypernode. + description: Use RabbitMQ to run resource-intensive tasks in the background on + Hypernode. Learn how to enable and access RabbitMQ on Hypernode. + title: How to Run RabbitMQ | Hypernode redirect_from: - /en/best-practices/database/how-to-run-rabbitmq-on-hypernode/ --- diff --git a/docs/best-practices/database/how-to-use-heidisql-on-hypernode.md b/docs/best-practices/database/how-to-use-heidisql-on-hypernode.md index 241e8b04..105ef90e 100644 --- a/docs/best-practices/database/how-to-use-heidisql-on-hypernode.md +++ b/docs/best-practices/database/how-to-use-heidisql-on-hypernode.md @@ -1,9 +1,9 @@ --- myst: html_meta: - description: HeidiSQL is a reliable tool designed for web developers using the - MySQL server, Microsoft SQL databases and PostgreSQL. Find here how to use it - on Hypernode. + description: Learn how to use HeidiSQL on Hypernode for efficient database management. + Easily browse, edit, and export data and tables with this reliable tool. + title: How to use HeidiSQL | Hypernode redirect_from: - /en/best-practices/database/how-to-use-heidisql-on-hypernode/ --- diff --git a/docs/best-practices/email.md b/docs/best-practices/email.md index f71ae05a..1a831879 100644 --- a/docs/best-practices/email.md +++ b/docs/best-practices/email.md @@ -1,4 +1,9 @@ --- +myst: + html_meta: + description: This table of contents gives you a summary of all knowledge base + articles that show best practices of emails. + title: Email | Best Practices | Hypernode redirect_from: - /en/best-practices/email/ --- diff --git a/docs/best-practices/email/how-to-enable-an-autoresponder-out-of-office-for-your-email-address.md b/docs/best-practices/email/how-to-enable-an-autoresponder-out-of-office-for-your-email-address.md index f90c6f43..6230bbd2 100644 --- a/docs/best-practices/email/how-to-enable-an-autoresponder-out-of-office-for-your-email-address.md +++ b/docs/best-practices/email/how-to-enable-an-autoresponder-out-of-office-for-your-email-address.md @@ -1,8 +1,9 @@ --- myst: html_meta: - description: Read how you can create an autoresponder for your email address in - this article + description: Learn how to enable an autoresponder for your email address using + Hypernode's Service Panel. Read our step-by-step guide. + title: How to Enable an Autoresponder | Service Panel | Hypernode redirect_from: - /en/best-practices/email/how-to-enable-an-autoresponder-out-of-office-for-your-email-address/ --- diff --git a/docs/best-practices/email/how-to-export-your-emails.md b/docs/best-practices/email/how-to-export-your-emails.md index 00dbc395..3e4c2277 100644 --- a/docs/best-practices/email/how-to-export-your-emails.md +++ b/docs/best-practices/email/how-to-export-your-emails.md @@ -1,9 +1,10 @@ --- myst: html_meta: - description: In this article we explain how you can export your email with a - number of common email clients (such as Outlook and Mac Mail) and our own webmail - application. + description: Learn how to export your emails from various email clients such as + Byte Webmail, Outlook, Mozilla Thunderbird and Mac Mail. Follow our step-by-step + guide. + title: How to Export your Emails? | Hypernode redirect_from: - /en/best-practices/email/how-to-export-your-emails/ --- diff --git a/docs/best-practices/email/how-to-find-the-mail-headers.md b/docs/best-practices/email/how-to-find-the-mail-headers.md index 5eb521ab..7a479a5e 100644 --- a/docs/best-practices/email/how-to-find-the-mail-headers.md +++ b/docs/best-practices/email/how-to-find-the-mail-headers.md @@ -1,9 +1,9 @@ --- myst: html_meta: - description: If you have an issue with sending or receiving email, you can use - the mail header to see where the email went and discover what might be going - wrong. + description: Learn how to find and read email headers in common email clients + such as Outlook, Thunderbird, Mac Mail and Gmail. + title: How to find Mail Headers? | Hypernode redirect_from: - /en/best-practices/email/how-to-find-the-mail-headers/ --- diff --git a/docs/best-practices/email/how-to-prevent-spam-being-sent-from-your-name-or-email-address.md b/docs/best-practices/email/how-to-prevent-spam-being-sent-from-your-name-or-email-address.md index 8a21d254..ed354860 100644 --- a/docs/best-practices/email/how-to-prevent-spam-being-sent-from-your-name-or-email-address.md +++ b/docs/best-practices/email/how-to-prevent-spam-being-sent-from-your-name-or-email-address.md @@ -1,8 +1,9 @@ --- myst: html_meta: - description: 'In this article, we explain how to preven spam from being sent from - your name or email address. Only available in Dutch. ' + description: Minimize the chance of someone sending spam using your name and email + address and learn what Hypernode can and cannot do to help you. + title: Prevent spam being sent from your name or email address redirect_from: - /en/best-practices/email/how-to-prevent-spam-being-sent-from-your-name-or-email-address/ --- diff --git a/docs/best-practices/email/how-to-prevent-your-email-being-marked-as-spam.md b/docs/best-practices/email/how-to-prevent-your-email-being-marked-as-spam.md index a9049241..919ffd5f 100644 --- a/docs/best-practices/email/how-to-prevent-your-email-being-marked-as-spam.md +++ b/docs/best-practices/email/how-to-prevent-your-email-being-marked-as-spam.md @@ -1,8 +1,9 @@ --- myst: html_meta: - description: Sometimes messages sent from a Hypernode are marked as spam by external - spam filters. Follow these steps in this article to fix any misconfigurations. + description: Follow our step-by-step guide on checking SPF records, return-path, + and if your Hypernode is listed on a blacklist. + title: How to prevent your emails being marked as spam | Hypernode redirect_from: - /en/best-practices/email/how-to-prevent-your-email-being-marked-as-spam/ --- diff --git a/docs/best-practices/email/how-to-use-e-mail-on-hypernode.md b/docs/best-practices/email/how-to-use-e-mail-on-hypernode.md index 7f8d6925..047afe7e 100644 --- a/docs/best-practices/email/how-to-use-e-mail-on-hypernode.md +++ b/docs/best-practices/email/how-to-use-e-mail-on-hypernode.md @@ -1,9 +1,9 @@ --- myst: html_meta: - description: For setting up e-mail on your Hypernode we advice our customers to - use Gsuite (Google) or Office365 (Microsoft) as they are more specialized in - e-mail. + description: For setting up e-mail we advice our customers to use Gsuite or Office365. + Unfortunately, we no longer offer email plans on the Control Panel. + title: 'How to use email on Hypernode? ' redirect_from: - /en/hypernode/email/how-to-use-e-mail-on-hypernode/ --- diff --git a/docs/best-practices/performance.md b/docs/best-practices/performance.md index b534c393..77cd6568 100644 --- a/docs/best-practices/performance.md +++ b/docs/best-practices/performance.md @@ -1,4 +1,9 @@ --- +myst: + html_meta: + description: This table of contents gives you a summary of all knowledge base + articles that show best practices of performance. + title: Performance | Best Practices | Hypernode redirect_from: - /en/best-practices/performance/ --- diff --git a/docs/best-practices/performance/how-to-enable-pagespeed-booster.md b/docs/best-practices/performance/how-to-enable-pagespeed-booster.md index 123cd870..e6418594 100644 --- a/docs/best-practices/performance/how-to-enable-pagespeed-booster.md +++ b/docs/best-practices/performance/how-to-enable-pagespeed-booster.md @@ -1,8 +1,9 @@ --- myst: html_meta: - description: PageSpeed Booster is a reverse proxy which uses many static optimisation - techniques to greatly increase the pagespeed score and performance of your website. + description: Learn how to enable PageSpeed Booster, a reverse proxy that increases + page speed and performance on Hypernode. Requirements included. + title: How to enable the PageSpeed Booster? | Hypernode redirect_from: - /en/best-practices/performance/how-to-enable-pagespeed-booster/ --- diff --git a/docs/best-practices/performance/how-to-find-your-performance-bottleneck-with-new-relic.md b/docs/best-practices/performance/how-to-find-your-performance-bottleneck-with-new-relic.md index 001f6185..e2489ec5 100644 --- a/docs/best-practices/performance/how-to-find-your-performance-bottleneck-with-new-relic.md +++ b/docs/best-practices/performance/how-to-find-your-performance-bottleneck-with-new-relic.md @@ -1,9 +1,9 @@ --- myst: html_meta: - description: New Relic is a profiling tool that explains what happens "behind - the scenes". Find here how you can use it to determine the performance bottleneck - of your shop. + description: Get a clear overview of pagespeed, transactions, error rates, slow + queries and more. Easily customizable, and set alerts for performance thresholds. + title: How to find performance bottlenecks with New Relic? redirect_from: - /en/best-practices/performance/how-to-find-your-performance-bottleneck-with-new-relic/ - /knowledgebase/new-relic-performance-management/ diff --git a/docs/best-practices/performance/how-to-fix-performance-issues-caused-by-bots-and-crawlers.md b/docs/best-practices/performance/how-to-fix-performance-issues-caused-by-bots-and-crawlers.md index 09517268..7315b412 100644 --- a/docs/best-practices/performance/how-to-fix-performance-issues-caused-by-bots-and-crawlers.md +++ b/docs/best-practices/performance/how-to-fix-performance-issues-caused-by-bots-and-crawlers.md @@ -1,8 +1,10 @@ --- myst: html_meta: - description: Excessive bot traffic is the number one reason for bad Magento performance. - Read here how to fix such performance issues on Hypernode. + description: Learn by understanding bot traffic and layering navigation, and following + the four recommended measures to resolve the issue for better performance and + SEO. + title: Fix performance issues caused by bots and crawlers | Hypernode redirect_from: - /en/best-practices/performance/how-to-fix-performance-issues-caused-by-bots-and-crawlers/ - /knowledgebase/fixing-bad-performance-caused-by-search-engines/ diff --git a/docs/best-practices/performance/how-to-improve-your-magento-search.md b/docs/best-practices/performance/how-to-improve-your-magento-search.md index 4b374fc5..a4f4febd 100644 --- a/docs/best-practices/performance/how-to-improve-your-magento-search.md +++ b/docs/best-practices/performance/how-to-improve-your-magento-search.md @@ -1,9 +1,10 @@ --- myst: html_meta: - description: To optimize the built-in Magento search option, you can tweak this - or us and external search engine. In this article, we explain the different - possibilities. + description: Improve Magento search speed and relevancy with ElasticSearch or + Sphinx Search. Out-of-box integration on Hypernode Pelican, Falcon and Eagle + plans. + title: How to improve your Magento search? | Hypernode redirect_from: - /en/best-practices/performance/how-to-improve-your-magento-search/ - /knowledgebase/how-to-improve-your-magento-search/ diff --git a/docs/best-practices/performance/how-to-optimize-the-performance-of-your-magento-shop.md b/docs/best-practices/performance/how-to-optimize-the-performance-of-your-magento-shop.md index 9c3c765d..d5136f4e 100644 --- a/docs/best-practices/performance/how-to-optimize-the-performance-of-your-magento-shop.md +++ b/docs/best-practices/performance/how-to-optimize-the-performance-of-your-magento-shop.md @@ -1,9 +1,9 @@ --- myst: html_meta: - description: Hypernode offers several optimizations which improve the load times - and stability of your shop. Find detailed instructions on the different optimizations - here. + description: Learn what additional configurations you can make to optimise your + Magento shop post-migration, ordered by priority and estimated time spend. + title: Optimise the performance of your Magento shop | Hypernode redirect_from: - /en/best-practices/performance/how-to-optimize-the-performance-of-your-magento-shop/ --- diff --git a/docs/best-practices/performance/how-to-optimize-your-images.md b/docs/best-practices/performance/how-to-optimize-your-images.md index 35be3795..e431f0df 100644 --- a/docs/best-practices/performance/how-to-optimize-your-images.md +++ b/docs/best-practices/performance/how-to-optimize-your-images.md @@ -1,8 +1,9 @@ --- myst: html_meta: - description: 'Follow this article to set up automatic image optimization for a - faster shop on Hypernode in only a couple of minutes. ' + description: Optimize your shop's speed with automatic image optimization using + Hypernode. Learn how to quickly reduce image size-on-disk without losing quality. + title: How to optimise your images? | Hypernode redirect_from: - /en/best-practices/performance/how-to-optimize-your-images/ - /knowledgebase/magento-image-optimization-howto/ diff --git a/docs/best-practices/performance/how-to-set-up-smart-404-handling.md b/docs/best-practices/performance/how-to-set-up-smart-404-handling.md index 0f0d5e98..b5f5c323 100644 --- a/docs/best-practices/performance/how-to-set-up-smart-404-handling.md +++ b/docs/best-practices/performance/how-to-set-up-smart-404-handling.md @@ -1,8 +1,10 @@ --- myst: html_meta: - description: In this article, you can read about setting up smart 404 handlings - on Hypernode. + description: Servers are configured so requests for non-existing files are routed + through the Magento index. We explain how to reduce load by discarding expensive + 404s. + title: How to set up smart 404 handling for Magento 2? | Hypernode redirect_from: - /en/best-practices/performance/how-to-set-up-smart-404-handling/ --- diff --git a/docs/best-practices/performance/how-to-use-blackfire-on-hypernode-to-find-performance-issues.md b/docs/best-practices/performance/how-to-use-blackfire-on-hypernode-to-find-performance-issues.md index d5290e87..17805e5d 100644 --- a/docs/best-practices/performance/how-to-use-blackfire-on-hypernode-to-find-performance-issues.md +++ b/docs/best-practices/performance/how-to-use-blackfire-on-hypernode-to-find-performance-issues.md @@ -2,7 +2,8 @@ myst: html_meta: description: All Hypernodes support Blackfire, an amazing tool to find performance - bottlenecks in Magento. Read here how to use it on Hypernode. + bottlenecks in Magento. It is similar to New Relic, but suited for troubleshooting. + title: Use Blackfire on Hypernode to find performance issues redirect_from: - /en/best-practices/performance/how-to-use-blackfire-on-hypernode-to-find-performance-issues/ - /knowledgebase/profiling-magento-blackfire/ diff --git a/docs/best-practices/pwa.md b/docs/best-practices/pwa.md index 2aa1b4fc..1c3b48a7 100644 --- a/docs/best-practices/pwa.md +++ b/docs/best-practices/pwa.md @@ -1,4 +1,9 @@ --- +myst: + html_meta: + description: This table of contents gives you a summary of all knowledge base + articles that show best practices of pwa. + title: PWA | Best Practices | Hypernode redirect_from: - /en/best-practices/pwa/ --- diff --git a/docs/best-practices/pwa/hypernode-and-pwa-hosting.md b/docs/best-practices/pwa/hypernode-and-pwa-hosting.md index 26cbe2df..572dfbca 100644 --- a/docs/best-practices/pwa/hypernode-and-pwa-hosting.md +++ b/docs/best-practices/pwa/hypernode-and-pwa-hosting.md @@ -1,9 +1,9 @@ --- myst: html_meta: - description: Progressive Web Apps (PWA) are a hot item and are considered the - future of web development. Read about its advantages, challenges and hosting - requirements here. + description: Discover the future of web development with Progressive Web Apps + (PWAs) & how Hypernode supports Magento PWAs for enhanced mobile web experience. + title: Hypernode and PWA Hosting redirect_from: - /en/best-practices/pwa/hypernode-and-pwa-hosting/ --- diff --git a/docs/best-practices/security.md b/docs/best-practices/security.md index bca13794..572525d7 100644 --- a/docs/best-practices/security.md +++ b/docs/best-practices/security.md @@ -1,4 +1,9 @@ --- +myst: + html_meta: + description: This table of contents gives you a summary of all knowledge base + articles that show best practices of security. + title: Security | Best Practices | Hypernode redirect_from: - /en/best-practices/security/ --- diff --git a/docs/best-practices/security/how-does-hypernode-handle-ddos-attacks.md b/docs/best-practices/security/how-does-hypernode-handle-ddos-attacks.md index fd16d12c..5eda40ed 100644 --- a/docs/best-practices/security/how-does-hypernode-handle-ddos-attacks.md +++ b/docs/best-practices/security/how-does-hypernode-handle-ddos-attacks.md @@ -1,8 +1,9 @@ --- myst: html_meta: - description: DDoS stands for Distributed Denial of Service. In this article we - explain what a DDoS attack is and what Hypernode does when this occurs. + description: Learn about Hypernode's approach in handling DDoS attacks and the + steps they take to protect your website from Distributed Denial of Service. + title: How Hypernode handles DDoS sttacks | Security redirect_from: - /en/best-practices/security/how-does-hypernode-handle-ddos-attacks-/ --- diff --git a/docs/best-practices/security/how-hypernode-protects-your-magento-shop.md b/docs/best-practices/security/how-hypernode-protects-your-magento-shop.md index 7919104b..6a7cd0a7 100644 --- a/docs/best-practices/security/how-hypernode-protects-your-magento-shop.md +++ b/docs/best-practices/security/how-hypernode-protects-your-magento-shop.md @@ -1,4 +1,9 @@ --- +myst: + html_meta: + description: Get premium protection for your Magento shop with Hypernode. Learn + how they implement changes to block security threats in under 4 hours. + title: How Hypernode protects your Magento Shop | Security redirect_from: - /en/support/solutions/articles/48001158433-how-hypernode-protects-your-magento-shop/ --- diff --git a/docs/best-practices/security/how-to-apply-magento-patches.md b/docs/best-practices/security/how-to-apply-magento-patches.md index df5fe751..4c55cee5 100644 --- a/docs/best-practices/security/how-to-apply-magento-patches.md +++ b/docs/best-practices/security/how-to-apply-magento-patches.md @@ -1,9 +1,10 @@ --- myst: html_meta: - description: Every now and then Magento issues a new patch to increase the security - of their software. In this article we explain how you can install them on your - webshop. + description: Learn how to apply Magento patches for optimal protection. Check + your shop with MageReport and ensure your webshop is not vulnerable to malicious + parties. + title: How to apply Magento patches? | Security | Hypernode redirect_from: - /en/best-practices/security/how-to-deploy-magento-patches/ --- diff --git a/docs/best-practices/security/how-to-fix-malicious-javascript-credit-card-hijack.md b/docs/best-practices/security/how-to-fix-malicious-javascript-credit-card-hijack.md index 77c42f2f..b91a0eb7 100644 --- a/docs/best-practices/security/how-to-fix-malicious-javascript-credit-card-hijack.md +++ b/docs/best-practices/security/how-to-fix-malicious-javascript-credit-card-hijack.md @@ -1,9 +1,9 @@ --- myst: html_meta: - description: The hack Creditcard Hijack is malicious code in Magento that allows - hackers to intercept financial data. This article explains more and tells you - how to fix it. + description: "Learn how to fix the malicious Credit Card Hijack in Magento and\ + \ protect your customers' financial data. " + title: How to fix malicious Javascript Credit Card Hijacks? | Hypernode redirect_from: - /en/best-practices/security/how-to-fix-malicious-javascript-credit-card-hijack/ --- diff --git a/docs/best-practices/security/how-to-install-magento-patch-mdva-49935-for-critical-vulnerabilty-apsb22-12-cve-2022-24086-and-cve-2022-24087.md b/docs/best-practices/security/how-to-install-magento-patch-mdva-49935-for-critical-vulnerabilty-apsb22-12-cve-2022-24086-and-cve-2022-24087.md index 149f4250..3c92699a 100644 --- a/docs/best-practices/security/how-to-install-magento-patch-mdva-49935-for-critical-vulnerabilty-apsb22-12-cve-2022-24086-and-cve-2022-24087.md +++ b/docs/best-practices/security/how-to-install-magento-patch-mdva-49935-for-critical-vulnerabilty-apsb22-12-cve-2022-24086-and-cve-2022-24087.md @@ -1,4 +1,9 @@ --- +myst: + html_meta: + description: Follow this article to know what needs to be done for the critical + Magento vulnerabilities on February 13th & 18th, 2022. + title: How to install Magento patch MDVA-49935? | Hypernode redirect_from: - /en/best-practices/security/how-to-install-magento-patch-mdva-49935-for-critical-vulnerabilty-apsb22-12-cve-2022-24086/ --- diff --git a/docs/best-practices/security/how-to-install-magento-patch-supee-8788-and-release-1-9-3.md b/docs/best-practices/security/how-to-install-magento-patch-supee-8788-and-release-1-9-3.md index 7d72c938..6de8bd62 100644 --- a/docs/best-practices/security/how-to-install-magento-patch-supee-8788-and-release-1-9-3.md +++ b/docs/best-practices/security/how-to-install-magento-patch-supee-8788-and-release-1-9-3.md @@ -1,9 +1,10 @@ --- myst: html_meta: - description: 'The patch SUPEE 8788 and release 1.9.3 fix about 17 issues, of which - some are highly critical. In this article you find guidelines to install the - patch. ' + description: Install Magento patch SUPEE 8788 to fix critical vulnerabilities + that allow remote code execution, preventing hackers from taking control of + your store. + title: How to install Magento patch SUPEE 8788 and release 1.9.3? redirect_from: - /en/best-practices/security/how-to-install-magento-patch-supee-8788-and-release-1-9-3/ --- diff --git a/docs/best-practices/security/how-to-protect-magento-against-brute-force-attacks.md b/docs/best-practices/security/how-to-protect-magento-against-brute-force-attacks.md index 9de80dec..661cff68 100644 --- a/docs/best-practices/security/how-to-protect-magento-against-brute-force-attacks.md +++ b/docs/best-practices/security/how-to-protect-magento-against-brute-force-attacks.md @@ -1,4 +1,9 @@ --- +myst: + html_meta: + description: Some Magento sections are interesting targets for hackers. This article + explains how to protect your shop from malicious attacks. + title: How to protect your Magento shop against brute force attacks? redirect_from: - /en/best-practices/security/how-to-protect-magento-against-brute-force-attacks/ - /knowledgebase/how-to-protect-your-magento-store-against-brute-force/ diff --git a/docs/best-practices/security/how-to-recover-a-hacked-magento-shop.md b/docs/best-practices/security/how-to-recover-a-hacked-magento-shop.md index 44b89e44..733fbca5 100644 --- a/docs/best-practices/security/how-to-recover-a-hacked-magento-shop.md +++ b/docs/best-practices/security/how-to-recover-a-hacked-magento-shop.md @@ -1,9 +1,10 @@ --- myst: html_meta: - description: Unfortunately webshops get hacked, often due to outdated Magento - versions, or plugins. This article explains how to recover a hacked shop on - Hypernode. + description: Our tool Magereport will tell you if there are any known security + issues with your shop. This article explains how to recover a hacked Magento + shop. + title: How to recover a hacked Magento shop? | Security | Hypernode redirect_from: - /en/best-practices/security/how-to-recover-a-hacked-magento-shop/ - /knowledgebase/recover-a-hacked-magento-shop/ diff --git a/docs/best-practices/security/how-to-scan-your-hypernode-for-malware.md b/docs/best-practices/security/how-to-scan-your-hypernode-for-malware.md index c830484c..cc875feb 100644 --- a/docs/best-practices/security/how-to-scan-your-hypernode-for-malware.md +++ b/docs/best-practices/security/how-to-scan-your-hypernode-for-malware.md @@ -1,9 +1,9 @@ --- myst: html_meta: - description: Shop owners wanting to comply to an ISO certification, are required - to check their content. Here we explain how to scan your Hypernode for virusses - and malware. + description: Scanning your web content can be done using Yara. This open source + malware signature checker and file scanner is present on all Hypernodes. + title: How to scan your Hypernode for malware? | Security redirect_from: - /en/best-practices/security/how-to-scan-your-hypernode-for-malware/ --- diff --git a/docs/best-practices/security/how-to-secure-magento-cacheleak.md b/docs/best-practices/security/how-to-secure-magento-cacheleak.md index 2240f717..ebb59213 100644 --- a/docs/best-practices/security/how-to-secure-magento-cacheleak.md +++ b/docs/best-practices/security/how-to-secure-magento-cacheleak.md @@ -1,9 +1,9 @@ --- myst: html_meta: - description: Misconfigured web servers can leak Magento cache files containing - database passwords. To prevent this from happening, read here how to secure - Magento cacheleak. + description: A misconfigured webserver can leak Magento cache files containing + database passwords. This article explains how to prevent this form happening. + title: How to secure a Magento cacheleak? | Security | Hypernode redirect_from: - /en/best-practices/security/how-to-secure-magento-cacheleak/ --- diff --git a/docs/best-practices/security/how-to-secure-your-data-using-encryption-and-hashing.md b/docs/best-practices/security/how-to-secure-your-data-using-encryption-and-hashing.md index dc860427..c471e50d 100644 --- a/docs/best-practices/security/how-to-secure-your-data-using-encryption-and-hashing.md +++ b/docs/best-practices/security/how-to-secure-your-data-using-encryption-and-hashing.md @@ -1,9 +1,9 @@ --- myst: html_meta: - description: Hashing and encryption are cryptographic functions. In this article - we explain both ways of securing information and give examples for how you can - use it. + description: In this article we explain both ways of securing information and + give examples for how you can use it on Hypernode. + title: 'How to secure your data using encryption and hashing? ' redirect_from: - /en/support/solutions/articles/48001153348-how-to-secure-your-data-using-encryption-and-hashing/ --- diff --git a/docs/best-practices/security/how-to-use-a-cloud-firewall-on-hypernode.md b/docs/best-practices/security/how-to-use-a-cloud-firewall-on-hypernode.md index 41c51374..6e92afbc 100644 --- a/docs/best-practices/security/how-to-use-a-cloud-firewall-on-hypernode.md +++ b/docs/best-practices/security/how-to-use-a-cloud-firewall-on-hypernode.md @@ -1,4 +1,10 @@ --- +myst: + html_meta: + description: Our built-in Web Application Firewall is designed specifically to + protect your application against known vulnerabilities and endpoints that often + see abuse. + title: How to use a Cloud firewall on Hypernode? | Security redirect_from: - /en/best-practices/security/how-to-use-a-cloud-firewall-on-hypernode/ --- diff --git a/docs/best-practices/security/hypernodes-not-vulnerable-for-cve-2021-4034.md b/docs/best-practices/security/hypernodes-not-vulnerable-for-cve-2021-4034.md index b2e5016c..0b76e3d9 100644 --- a/docs/best-practices/security/hypernodes-not-vulnerable-for-cve-2021-4034.md +++ b/docs/best-practices/security/hypernodes-not-vulnerable-for-cve-2021-4034.md @@ -1,4 +1,9 @@ --- +myst: + html_meta: + description: On January 25th a new Linux exploit was reported. Please note that + Hypernodes are not vulnerable. + title: Hypernode isn't vulnerable for CVE-2021-4034 | Security redirect_from: - /en/support/solutions/articles/48001207826-hypernodes-not-vulnerable-for-cve-2021-4034/ --- diff --git a/docs/best-practices/security/what-you-need-to-know-about-the-visbot-malware.md b/docs/best-practices/security/what-you-need-to-know-about-the-visbot-malware.md index ddc35a07..40102899 100644 --- a/docs/best-practices/security/what-you-need-to-know-about-the-visbot-malware.md +++ b/docs/best-practices/security/what-you-need-to-know-about-the-visbot-malware.md @@ -1,8 +1,9 @@ --- myst: html_meta: - description: 'Visbot is a particular type of malware that is found on hacked Magento - stores. Learn all about the visbot in this article. ' + description: Visbot is a symptom of a hacked store. Our hosting platform Hypernode + protects against further Visbot abuse. + title: All you need to know about the Visbot Malware | Hypernode redirect_from: - /en/best-practices/security/what-you-need-to-know-about-the-visbot-malware/ --- diff --git a/docs/best-practices/testing.md b/docs/best-practices/testing.md index a13ef0ba..7901e8c7 100644 --- a/docs/best-practices/testing.md +++ b/docs/best-practices/testing.md @@ -1,4 +1,9 @@ --- +myst: + html_meta: + description: This table of contents gives you a summary of all knowledge base + articles that show best practices of testing. + title: Testing | Best Practices | Hypernode redirect_from: - /en/best-practices/testing/ --- diff --git a/docs/best-practices/testing/how-to-check-if-everything-works.md b/docs/best-practices/testing/how-to-check-if-everything-works.md index 7e83909a..5b1233ae 100644 --- a/docs/best-practices/testing/how-to-check-if-everything-works.md +++ b/docs/best-practices/testing/how-to-check-if-everything-works.md @@ -1,8 +1,9 @@ --- myst: html_meta: - description: Find out here how to check if everything in your shop is working - as it should, before changing the DNS settings of your original domain to Hypernode. + description: Before changing the DNS settings of your original domain to Hypernode, + it’s important to first check if everything in your shop is working as it should. + title: How to check if everything works on your Hypernode? | Testing redirect_from: - /en/best-practices/testing/how-to-check-if-everything-works/ --- diff --git a/docs/best-practices/testing/how-to-go-live-with-your-hypernode.md b/docs/best-practices/testing/how-to-go-live-with-your-hypernode.md index dc618f52..f6f5f80f 100644 --- a/docs/best-practices/testing/how-to-go-live-with-your-hypernode.md +++ b/docs/best-practices/testing/how-to-go-live-with-your-hypernode.md @@ -1,8 +1,9 @@ --- myst: html_meta: - description: After you have copied your shop to Hypernode and tested its functionalities, - it's time to go live. Follow these steps for a smooth transition. + description: You have copied your shop to Hypernode and tested its functionality. + Now is the time to go live with your Hypernode. Follow these steps! + title: How to go live with your Hypernode? | Testing redirect_from: - /en/best-practices/testing/how-to-go-live-with-your-hypernode/ - /knowledgebase/go-live-with-your-hypernode/ diff --git a/docs/best-practices/testing/how-to-test-your-website-by-changing-your-hosts-file.md b/docs/best-practices/testing/how-to-test-your-website-by-changing-your-hosts-file.md index beb4cf1e..4406fcbb 100644 --- a/docs/best-practices/testing/how-to-test-your-website-by-changing-your-hosts-file.md +++ b/docs/best-practices/testing/how-to-test-your-website-by-changing-your-hosts-file.md @@ -1,8 +1,9 @@ --- myst: html_meta: - description: 'In this article, we explain how to adjust the hosts file of the - following operating systems: Windows 10, 8 & 7, Linux and Mac OS X.' + description: This is extremely useful if you want to test your shop without changing + the DNS settings for your domain. Learn more. + title: Test your website by changing your Hosts File | Hypernode redirect_from: - /en/best-practices/testing/how-to-test-your-website-by-changing-your-hosts-file/ --- diff --git a/docs/best-practices/testing/hypernode-docker.md b/docs/best-practices/testing/hypernode-docker.md index f77797ef..1b30420a 100644 --- a/docs/best-practices/testing/hypernode-docker.md +++ b/docs/best-practices/testing/hypernode-docker.md @@ -1,9 +1,9 @@ --- myst: html_meta: - description: The official Hypernode Docker image for Magento development can be - used to build a development environment, or as a build machine. Read all about - it here. + description: This image can be used to set up a local development environment, + or as a build machine in a CI environment representative of the production environment. + title: Hypernode Docker | Everything you need to know | Testing redirect_from: - /en/best-practices/testing/hypernode-docker/ - /knowledgebase/hypernode-docker/ diff --git a/docs/best-practices/testing/zero-downtime-deployment-on-hypernode.md b/docs/best-practices/testing/zero-downtime-deployment-on-hypernode.md index d7cced28..7a1ec654 100644 --- a/docs/best-practices/testing/zero-downtime-deployment-on-hypernode.md +++ b/docs/best-practices/testing/zero-downtime-deployment-on-hypernode.md @@ -1,8 +1,9 @@ --- myst: html_meta: - description: In this article, we explain the ideal process of moving new code - from a development environment to production without experiencing downtime. + description: On Hypernode, zero downtime deployment is supported. We offer our + customers full flexibility with their deployment processes. + title: Zero downtime deployment on Hypernode | Testing redirect_from: - /en/best-practices/testing/zero-downtime-deployment-on-hypernode/ --- diff --git a/docs/best-practices/usage.md b/docs/best-practices/usage.md index f4c99daa..df3e6a52 100644 --- a/docs/best-practices/usage.md +++ b/docs/best-practices/usage.md @@ -1,4 +1,9 @@ --- +myst: + html_meta: + description: This table of contents gives you a summary of all knowledge base + articles that show best practices of usage. + title: Usage | Best Practices | Hypernode redirect_from: - /en/best-practices/usage/ --- diff --git a/docs/best-practices/usage/how-to-handle-composer-memory-issues.md b/docs/best-practices/usage/how-to-handle-composer-memory-issues.md index d1f82242..28fde2b3 100644 --- a/docs/best-practices/usage/how-to-handle-composer-memory-issues.md +++ b/docs/best-practices/usage/how-to-handle-composer-memory-issues.md @@ -1,4 +1,10 @@ --- +myst: + html_meta: + description: Since composer is overall a heavy process it requires quite some + resources, specifically memory in this case. Here we discuss the causes and + workarounds. + title: How to handle composer memory issues? | Hypernode redirect_from: - /en/support/solutions/articles/48001186354-how-to-handle-composer-memory-issues/ --- diff --git a/docs/best-practices/usage/how-to-install-wordpress-next-to-your-magento-installation.md b/docs/best-practices/usage/how-to-install-wordpress-next-to-your-magento-installation.md index bf642a89..5a2a5d69 100644 --- a/docs/best-practices/usage/how-to-install-wordpress-next-to-your-magento-installation.md +++ b/docs/best-practices/usage/how-to-install-wordpress-next-to-your-magento-installation.md @@ -1,8 +1,9 @@ --- myst: html_meta: - description: 'Find detailed guidelines on how to install Wordpress on your Hypernode - next to your Magento installation in this article. ' + description: This article explains in detail how to install WordPress next to + your Magento application on Hypernode. Please be aware of the security implications. + title: How to install WordPress next to your Magento installation? redirect_from: - /en/best-practices/usage/how-to-install-wordpress-next-to-your-magento-installation/ --- diff --git a/docs/ecommerce-applications/akeneo.md b/docs/ecommerce-applications/akeneo.md index 6cc9f0ef..0b216dcb 100644 --- a/docs/ecommerce-applications/akeneo.md +++ b/docs/ecommerce-applications/akeneo.md @@ -1,4 +1,9 @@ --- +myst: + html_meta: + description: This table of contents gives you a summary of all knowledge base + articles that tell you more about Akeneo. + title: Akeneo on Hypernode | Everything you need to know redirect_from: - /en/ecommerce/akeneo/ --- diff --git a/docs/ecommerce-applications/akeneo/how-to-install-akeneo-3-on-hypernode.md b/docs/ecommerce-applications/akeneo/how-to-install-akeneo-3-on-hypernode.md index d310ad1a..3963a35f 100644 --- a/docs/ecommerce-applications/akeneo/how-to-install-akeneo-3-on-hypernode.md +++ b/docs/ecommerce-applications/akeneo/how-to-install-akeneo-3-on-hypernode.md @@ -1,9 +1,9 @@ --- myst: html_meta: - description: This article describes how to install Akeneo 3 on your Hypernode. - Installing Akeneo 3 can be done by using our Pre-Install or you can install - Akeneo 3 manually. + description: Install Akeneo 3 on a separate Hypernode instance or on the same + Hypernode as your Magento or Shopware installation. Learn more! + title: How to install Akeneo 3 on Hypernode? redirect_from: - /en/ecommerce/akeneo/how-to-install-akeneo-3-on-hypernode/ --- diff --git a/docs/ecommerce-applications/akeneo/how-to-install-akeneo-4-on-hypernode.md b/docs/ecommerce-applications/akeneo/how-to-install-akeneo-4-on-hypernode.md index 06450630..34fa2ec1 100644 --- a/docs/ecommerce-applications/akeneo/how-to-install-akeneo-4-on-hypernode.md +++ b/docs/ecommerce-applications/akeneo/how-to-install-akeneo-4-on-hypernode.md @@ -1,9 +1,9 @@ --- myst: html_meta: - description: This article describes how to install Akeneo 4 on your Hypernode. - Installing Akeneo 4 can be done by using our Pre-Install or you can install - Akeneo 4 manually. + description: Install Akeneo 4 on a separate Hypernode instance or on the same + Hypernode as your Magento or Shopware installation. Learn more! + title: How to install Akeneo 4 on Hypernode? redirect_from: - /en/ecommerce/akeneo/how-to-install-akeneo-4-on-hypernode/ - /knowledgebase/installing-akeneo-4/ diff --git a/docs/ecommerce-applications/akeneo/how-to-install-akeneo-5-on-hypernode.md b/docs/ecommerce-applications/akeneo/how-to-install-akeneo-5-on-hypernode.md index 7fa86d9d..406578aa 100644 --- a/docs/ecommerce-applications/akeneo/how-to-install-akeneo-5-on-hypernode.md +++ b/docs/ecommerce-applications/akeneo/how-to-install-akeneo-5-on-hypernode.md @@ -1,9 +1,9 @@ --- myst: html_meta: - description: 'Akeneo 5 preferably requires a Hypernode Professional M hosting - plan or larger. You can either choose to install it on a seperate Hypernode - instance or on the same Hypernode as your Magento or Shopware installation. ' + description: Install Akeneo 5 on a separate Hypernode instance or on the same + Hypernode as your Magento or Shopware installation. Learn more! + title: How to install Akeneo 5 on Hypernode? redirect_from: - /en/ecommerce/akeneo/how-to-install-akeneo-5-on-hypernode/ --- diff --git a/docs/ecommerce-applications/akeneo/how-to-install-akeneo-6-on-hypernode.md b/docs/ecommerce-applications/akeneo/how-to-install-akeneo-6-on-hypernode.md index 48a6798b..f8016fc6 100644 --- a/docs/ecommerce-applications/akeneo/how-to-install-akeneo-6-on-hypernode.md +++ b/docs/ecommerce-applications/akeneo/how-to-install-akeneo-6-on-hypernode.md @@ -1,4 +1,9 @@ --- +myst: + html_meta: + description: Install Akeneo 6 on a separate Hypernode instance or on the same + Hypernode as your Magento or Shopware installation. Learn more! + title: How to install Akeneo 6 on Hypernode? redirect_from: - /en/support/solutions/articles/48001220118-how-to-install-akeneo-6-on-hypernode/ --- diff --git a/docs/ecommerce-applications/akeneo/how-to-use-a-basic-staging-environment-with-akeneo-3.md b/docs/ecommerce-applications/akeneo/how-to-use-a-basic-staging-environment-with-akeneo-3.md index 539b33d7..9be69a73 100644 --- a/docs/ecommerce-applications/akeneo/how-to-use-a-basic-staging-environment-with-akeneo-3.md +++ b/docs/ecommerce-applications/akeneo/how-to-use-a-basic-staging-environment-with-akeneo-3.md @@ -2,7 +2,8 @@ myst: html_meta: description: Hypernode offers a staging environment so it can be used as a sandbox - for your Akeneo PIM project. + for your Akeneo 3 PIM project. Learn more in this article! + title: How to use a basic staging environment with Akeneo 3? redirect_from: - /en/ecommerce/akeneo/how-to-use-a-basic-staging-environment-with-akeneo/ --- diff --git a/docs/ecommerce-applications/akeneo/how-to-use-a-basic-staging-environment-with-akeneo-4-and-5.md b/docs/ecommerce-applications/akeneo/how-to-use-a-basic-staging-environment-with-akeneo-4-and-5.md index 5d957bdc..a37f8b2b 100644 --- a/docs/ecommerce-applications/akeneo/how-to-use-a-basic-staging-environment-with-akeneo-4-and-5.md +++ b/docs/ecommerce-applications/akeneo/how-to-use-a-basic-staging-environment-with-akeneo-4-and-5.md @@ -2,7 +2,8 @@ myst: html_meta: description: Hypernode offers a staging environment so it can be used as a sandbox - for your Akeneo PIM project. + for your Akeneo 4 or 5 PIM project. Learn more in this article! + title: How to use a basic staging environment with Akeneo 4 and 5? redirect_from: - /en/support/solutions/articles/48001183489-how-to-use-a-basic-staging-environment-with-akeneo-4-and-5/ --- diff --git a/docs/ecommerce-applications/magento-1.md b/docs/ecommerce-applications/magento-1.md index 1413ac80..ed3d7f9e 100644 --- a/docs/ecommerce-applications/magento-1.md +++ b/docs/ecommerce-applications/magento-1.md @@ -1,4 +1,9 @@ --- +myst: + html_meta: + description: This table of contents gives you a summary of all knowledge base + articles that tell you more about Magento 1. + title: Magento 1 on Hypernode | Everything you need to know redirect_from: - /en/ecommerce/magento-1/ --- diff --git a/docs/ecommerce-applications/magento-1/how-to-change-the-base-url-in-magento-1-x.md b/docs/ecommerce-applications/magento-1/how-to-change-the-base-url-in-magento-1-x.md index 70382138..500bc585 100644 --- a/docs/ecommerce-applications/magento-1/how-to-change-the-base-url-in-magento-1-x.md +++ b/docs/ecommerce-applications/magento-1/how-to-change-the-base-url-in-magento-1-x.md @@ -1,8 +1,10 @@ --- myst: html_meta: - description: 'There are several ways to change the Base URL of your Magento 1.x - storefronts. Find detailed instructions for each in this article. ' + description: There are several ways to change the Base URL of your Magento 1.x + storefronts. In this article we provide you with instructions for each of these + ways. + title: How to change the base url in Magento 1? | Hypernode redirect_from: - /en/ecommerce/magento-1/how-to-change-the-base-url-in-magento-1-x/ - /knowledgebase/change-baseurl-magento1/ diff --git a/docs/ecommerce-applications/magento-1/how-to-clean-the-magento-1-x-logs.md b/docs/ecommerce-applications/magento-1/how-to-clean-the-magento-1-x-logs.md index 5c890d0e..2a229864 100644 --- a/docs/ecommerce-applications/magento-1/how-to-clean-the-magento-1-x-logs.md +++ b/docs/ecommerce-applications/magento-1/how-to-clean-the-magento-1-x-logs.md @@ -1,9 +1,9 @@ --- myst: html_meta: - description: Magento log cleaning helps to keep your Magento shop fast by cleaning - and optimizing your database(s). Find instructions on cleaning your Magento - 1.x logs here. + description: Magento log cleaning helps you keep your Magento shop fast by cleaning + and optimizing your database(s). Learn how to enable Log Cleaning in Magento. + title: How to clean Magento 1 logs? | Hypernode redirect_from: - /en/ecommerce/magento-1/how-to-clean-the-magento-1-x-logs/ - /knowledgebase/magento-log-cleaning/ diff --git a/docs/ecommerce-applications/magento-1/how-to-configure-redis-for-magento-1.md b/docs/ecommerce-applications/magento-1/how-to-configure-redis-for-magento-1.md index e779dce7..dc94fed2 100644 --- a/docs/ecommerce-applications/magento-1/how-to-configure-redis-for-magento-1.md +++ b/docs/ecommerce-applications/magento-1/how-to-configure-redis-for-magento-1.md @@ -1,9 +1,10 @@ --- myst: html_meta: - description: Redis is a caching method which can increase the speed of the back- - and frontend of your shop. Here's how to configure it on Magento 1 and how redis-cli - works. + description: This article will explain how to configure Redis on your Magento + 1 shop on Hypernode and how to work with redis-cli. Learn all you need to know + in this article! + title: How to configure Redis for Magento 1? | Hypernode redirect_from: - /en/ecommerce/magento-1/how-to-configure-redis-for-magento-1/ - /knowledgebase/configure-sessions-redis-magento1/ diff --git a/docs/ecommerce-applications/magento-1/how-to-configure-varnish-for-magento-1-x.md b/docs/ecommerce-applications/magento-1/how-to-configure-varnish-for-magento-1-x.md index cd30c297..74d13df0 100644 --- a/docs/ecommerce-applications/magento-1/how-to-configure-varnish-for-magento-1-x.md +++ b/docs/ecommerce-applications/magento-1/how-to-configure-varnish-for-magento-1-x.md @@ -1,8 +1,10 @@ --- myst: html_meta: - description: This article explains how you can configure Varnish for your Hypernode - in order to boost your Magento shop. + description: Varnish is a complex technique that needs some experience to set + it up. This article explains how you can configure Varnish for your Magento + 1 shop. + title: How to configure Varnish for Magento 1? | Hypernode redirect_from: - /en/ecommerce/magento-1/how-to-configure-varnish-for-magento-1-x/ - /knowledgebase/varnish-on-magento1/ diff --git a/docs/ecommerce-applications/magento-1/how-to-create-a-robots-txt-for-your-magento-1-shop.md b/docs/ecommerce-applications/magento-1/how-to-create-a-robots-txt-for-your-magento-1-shop.md index 0389ba2e..f3b97af5 100644 --- a/docs/ecommerce-applications/magento-1/how-to-create-a-robots-txt-for-your-magento-1-shop.md +++ b/docs/ecommerce-applications/magento-1/how-to-create-a-robots-txt-for-your-magento-1-shop.md @@ -1,9 +1,9 @@ --- myst: html_meta: - description: Using a robots.txt is essential to handle bots and crawlers. In this - article we explain how to configure your Hypernode to serve a robots.txt for - storefront(s). + description: In this article we explain how to configure your Hypernode to serve + a robots.txt for one or multiple storefronts in Magento 1. + title: How to create a robots.txt for Magento 1? | Hypernode redirect_from: - /en/ecommerce/magento-1/how-to-create-a-robots-txt-for-your-magento-1-shop/ - /knowledgebase/create-robots-txt-magento1/ diff --git a/docs/ecommerce-applications/magento-1/how-to-create-a-sitemap-xml-for-magento-1-x.md b/docs/ecommerce-applications/magento-1/how-to-create-a-sitemap-xml-for-magento-1-x.md index a1b4a68d..669295a9 100644 --- a/docs/ecommerce-applications/magento-1/how-to-create-a-sitemap-xml-for-magento-1-x.md +++ b/docs/ecommerce-applications/magento-1/how-to-create-a-sitemap-xml-for-magento-1-x.md @@ -1,8 +1,9 @@ --- myst: html_meta: - description: 'Find detailed guidelines on how to create a sitemap.xml for Magento - 1.x versions here. ' + description: This article explains how to enable a sitemap.xml in Magento 1 and + how to configure NGINX to Use the Same Sitemap for All Storefronts. + title: How to create a sitemap xml for Magento 1? | Hypernode redirect_from: - /en/ecommerce/magento-1/how-to-create-a-sitemap-xml-for-magento-1-x/ --- diff --git a/docs/ecommerce-applications/magento-1/how-to-enable-clean-urls-for-magento.md b/docs/ecommerce-applications/magento-1/how-to-enable-clean-urls-for-magento.md index 1d918203..57adc704 100644 --- a/docs/ecommerce-applications/magento-1/how-to-enable-clean-urls-for-magento.md +++ b/docs/ecommerce-applications/magento-1/how-to-enable-clean-urls-for-magento.md @@ -1,9 +1,9 @@ --- myst: html_meta: - description: "Clean URL's are less intimidating to visitors and have a positive\ - \ effect on search index optimization (SEO) as well. Find out how to enable\ - \ them here. " + description: To make use of clean URLs in Magento 1, all you need to do is adjust + the Search Engines Optimization setting in the backend. Follow these steps! + title: How to enable clean urls for Magento 1? | Hypernode redirect_from: - /en/ecommerce/magento-1/how-to-enable-clean-url-s-for-magento-1/ --- diff --git a/docs/ecommerce-applications/magento-1/how-to-enable-mysql-query-logging-for-magento-1-x.md b/docs/ecommerce-applications/magento-1/how-to-enable-mysql-query-logging-for-magento-1-x.md index c02fbae4..5af2f9c4 100644 --- a/docs/ecommerce-applications/magento-1/how-to-enable-mysql-query-logging-for-magento-1-x.md +++ b/docs/ecommerce-applications/magento-1/how-to-enable-mysql-query-logging-for-magento-1-x.md @@ -1,9 +1,9 @@ --- myst: html_meta: - description: When debugging performance issues, it might be useful to log all - database queries to a log file. Find out here how to enable MySQL Query logging - for Magento 1. + description: Sometimes when debugging complex performance issues, it can be useful + to log all database queries to a log file. Learn how to do this in Magento 1. + title: How to enable MySQL query logging for Magento 1? | Hypernode redirect_from: - /en/ecommerce/magento-1/how-to-enable-mysql-query-logging-for-magento-1-x/ --- diff --git a/docs/ecommerce-applications/magento-1/how-to-enable-the-magento-1-api.md b/docs/ecommerce-applications/magento-1/how-to-enable-the-magento-1-api.md index 9e94f474..ec634a94 100644 --- a/docs/ecommerce-applications/magento-1/how-to-enable-the-magento-1-api.md +++ b/docs/ecommerce-applications/magento-1/how-to-enable-the-magento-1-api.md @@ -1,8 +1,9 @@ --- myst: html_meta: - description: 'In this article you can find how to enable the Magento 1 API on - Hypernode by creating correct users (and code to solve 404 errors). ' + description: Due to clean-url-rewrites, that can result in a 404 error, some additional + configuration is required to make use of the Magento 1 API. + title: How to enable the Magento 1 API? | Hypernode redirect_from: - /en/ecommerce/magento-1/how-to-enable-the-magento-1-api/ --- diff --git a/docs/ecommerce-applications/magento-1/how-to-enable-the-maintenance-mode-in-magento-1.md b/docs/ecommerce-applications/magento-1/how-to-enable-the-maintenance-mode-in-magento-1.md index 3b6f253f..9726b522 100644 --- a/docs/ecommerce-applications/magento-1/how-to-enable-the-maintenance-mode-in-magento-1.md +++ b/docs/ecommerce-applications/magento-1/how-to-enable-the-maintenance-mode-in-magento-1.md @@ -1,8 +1,10 @@ --- myst: html_meta: - description: Maintenance mode is a shortcut to serve a temporary error notification - to all customers. Find here how to enable it in Magento 1. + description: Shop owners want to perform upgrades, install extensions or do the + necessary maintenance on a shop. For this you use Maintenance Mode in Magento + 1. + title: How to enable maintenance mode in Magento 1? | Hypernode redirect_from: - /en/ecommerce/magento-1/how-to-enable-the-maintenance-mode-in-magento-1/ --- diff --git a/docs/ecommerce-applications/magento-1/how-to-fix-soap-error-parsing-wsdl-couldnt-load-from-failed-to-load-external-entity.md b/docs/ecommerce-applications/magento-1/how-to-fix-soap-error-parsing-wsdl-couldnt-load-from-failed-to-load-external-entity.md index caeb3986..741a6181 100644 --- a/docs/ecommerce-applications/magento-1/how-to-fix-soap-error-parsing-wsdl-couldnt-load-from-failed-to-load-external-entity.md +++ b/docs/ecommerce-applications/magento-1/how-to-fix-soap-error-parsing-wsdl-couldnt-load-from-failed-to-load-external-entity.md @@ -1,9 +1,10 @@ --- myst: html_meta: - description: "Get errors like these when trying to perform HTTP requests: \"Parsing\ - \ WSDL: Couldn't load from '': failed to load external entity\"? Here's how\ - \ to Fix SOAP errors." + description: If you get this error, some configuration or error is with withholding + the Magento installation from connecting to its API endpoint. Learn how to revolve + it. + title: How to fix SOAP error in Magento 1? | Hypernode redirect_from: - /en/ecommerce/magento-1/how-to-fix-soap-error-parsing-wsdl-couldn-t-load-from-failed-to-load-external-entity/ - /knowledgebase/soap-error-parsing-wsdl-couldnt-load-failed-load-external-entity/ diff --git a/docs/ecommerce-applications/magento-1/how-to-flush-the-magento-1-x-caches.md b/docs/ecommerce-applications/magento-1/how-to-flush-the-magento-1-x-caches.md index 82d75ec8..71b6fefe 100644 --- a/docs/ecommerce-applications/magento-1/how-to-flush-the-magento-1-x-caches.md +++ b/docs/ecommerce-applications/magento-1/how-to-flush-the-magento-1-x-caches.md @@ -1,8 +1,9 @@ --- myst: html_meta: - description: 'There are different ways to flush your Magento 1.x caches, via the - commandline or the backend for example. Read instructions per way in this article. ' + description: There are multiple ways to flush your caches in Magento 1.x. Learn + how to flush your cache via the Magento backend or the Commandline. + title: How to flush Magento 1 caches? | Hypernode redirect_from: - /en/ecommerce/magento-1/how-to-flush-the-magento-1-x-caches/ --- diff --git a/docs/ecommerce-applications/magento-1/how-to-flush-the-wsdl-cache.md b/docs/ecommerce-applications/magento-1/how-to-flush-the-wsdl-cache.md index 24aefc81..9bb83273 100644 --- a/docs/ecommerce-applications/magento-1/how-to-flush-the-wsdl-cache.md +++ b/docs/ecommerce-applications/magento-1/how-to-flush-the-wsdl-cache.md @@ -1,8 +1,10 @@ --- myst: html_meta: - description: The WSDL cache is used for API soap calls to Magento. Read here how - to flush it in case of corruptions causing errors on all API calls to Magento. + description: The WSDL cache is used for API soap calls to Magento. In some very + rare cases this cache can get corrupted, causing errors on all API calls to + Magento. + title: How to flush the WSDL cache in Magento 1? | Hypernode redirect_from: - /en/ecommerce/magento-1/how-to-flush-the-wsdl-cache/ --- diff --git a/docs/ecommerce-applications/magento-1/how-to-install-magento-1-on-hypernode.md b/docs/ecommerce-applications/magento-1/how-to-install-magento-1-on-hypernode.md index d8794bd1..a6f5486c 100644 --- a/docs/ecommerce-applications/magento-1/how-to-install-magento-1-on-hypernode.md +++ b/docs/ecommerce-applications/magento-1/how-to-install-magento-1-on-hypernode.md @@ -1,8 +1,9 @@ --- myst: html_meta: - description: Starting over and in need of a fresh Magento 1 installation? Follow - the steps in this article to install a Magento 1 installation on Hypernode. + description: Although Magento 1 has been End of Life since June 30 2020, it is + still possible to host your Magento 1 store at Hypernode by using OpenMage. + title: How to install Magento 1 on Hypernode? redirect_from: - /en/ecommerce/magento-1/how-to-install-magento-1-on-hypernode/ --- diff --git a/docs/ecommerce-applications/magento-1/how-to-remove-your-magento-1-x-installation.md b/docs/ecommerce-applications/magento-1/how-to-remove-your-magento-1-x-installation.md index 891b5449..018ffbb6 100644 --- a/docs/ecommerce-applications/magento-1/how-to-remove-your-magento-1-x-installation.md +++ b/docs/ecommerce-applications/magento-1/how-to-remove-your-magento-1-x-installation.md @@ -1,8 +1,10 @@ --- myst: html_meta: - description: 'Within this article you can find snippets, which can be used for - the removal of your Magento 1.x installation. ' + description: Although Magento 1 has been End of Life, it is still possible to + host your Magento 1 store at Hypernode by using OpenMage. Learn how in this + article. + title: How to remove your Magento 1 installation? | Hypernode redirect_from: - /en/ecommerce/magento-1/how-to-remove-your-magento-1-x-installation/ --- diff --git a/docs/ecommerce-applications/magento-1/how-to-reset-your-magento-1-x-admin-password.md b/docs/ecommerce-applications/magento-1/how-to-reset-your-magento-1-x-admin-password.md index bef0e530..ecfd7012 100644 --- a/docs/ecommerce-applications/magento-1/how-to-reset-your-magento-1-x-admin-password.md +++ b/docs/ecommerce-applications/magento-1/how-to-reset-your-magento-1-x-admin-password.md @@ -1,9 +1,10 @@ --- myst: html_meta: - description: If you are unable to login to your Magento shop, you have several - methods to retrieve a new password to log back in. Check out here how to reset - your password. + description: If you are unable to log in to your Magento 1 shop, you have several + methods to retrieve a new password to log back in. All methods can be found + in this article. + title: How to reset your Magento 1 admin password? | Hypernode redirect_from: - /en/support/solutions/articles/48000970831-how-to-reset-your-magento-1-x-admin-password/ --- diff --git a/docs/ecommerce-applications/magento-1/how-to-set-magento-1-x-to-the-utc-timezone.md b/docs/ecommerce-applications/magento-1/how-to-set-magento-1-x-to-the-utc-timezone.md index 888f03ba..ecc1d681 100644 --- a/docs/ecommerce-applications/magento-1/how-to-set-magento-1-x-to-the-utc-timezone.md +++ b/docs/ecommerce-applications/magento-1/how-to-set-magento-1-x-to-the-utc-timezone.md @@ -1,9 +1,10 @@ --- myst: html_meta: - description: If you want to work with a different timezone setting or show a different - timezone setting to your customers, check out how change the timezone on Magento - 1.x. + description: Because Hypernode is hosted in the Cloud, the system timezone is + set to UTC. Magento 1 should operate on the same timezone as the server. Learn + how! + title: How to set Magento 1 to the UTC timezone? | Hypernode redirect_from: - /en/ecommerce/magento-1/how-to-set-magento-1-x-to-the-utc-timezone/ --- diff --git a/docs/ecommerce-applications/magento-1/how-to-set-the-return-path-for-a-magento-1-shop.md b/docs/ecommerce-applications/magento-1/how-to-set-the-return-path-for-a-magento-1-shop.md index 97b5550b..eda5f693 100644 --- a/docs/ecommerce-applications/magento-1/how-to-set-the-return-path-for-a-magento-1-shop.md +++ b/docs/ecommerce-applications/magento-1/how-to-set-the-return-path-for-a-magento-1-shop.md @@ -1,9 +1,10 @@ --- myst: html_meta: - description: To avoid outgoing email being detected as spam, you should change - the email return-path for your outgoing email to a valid address. Check here - how to do so. + description: To avoid outgoing email being detected as spam in Magento 1, you + should change the email return-path for your outgoing email to a valid email + address. + title: How to set the return path for Magento 1? | Hypernode redirect_from: - /en/ecommerce/magento-1/how-to-set-the-return-path-for-a-magento-1-shop/ --- diff --git a/docs/ecommerce-applications/magento-1/how-to-set-up-a-staging-environment-for-magento-1.md b/docs/ecommerce-applications/magento-1/how-to-set-up-a-staging-environment-for-magento-1.md index 3298e71c..f4ffff93 100644 --- a/docs/ecommerce-applications/magento-1/how-to-set-up-a-staging-environment-for-magento-1.md +++ b/docs/ecommerce-applications/magento-1/how-to-set-up-a-staging-environment-for-magento-1.md @@ -1,9 +1,9 @@ --- myst: html_meta: - description: A staging environment is very useful to test your shop. In this article - we explain how to set up a staging environment on Hypernode for a Magento 1 - shop. + description: This article explains how you set up a staging environment on Hypernode + for a Magento 1 shop. Follow the steps mentioned in this article. + title: How to set up a staging environment for Magento 1? | Hypernode redirect_from: - /en/ecommerce/magento-1/how-to-set-up-a-staging-environment-for-magento-1/ --- diff --git a/docs/ecommerce-applications/magento-2.md b/docs/ecommerce-applications/magento-2.md index 905d9fe5..1d0315a7 100644 --- a/docs/ecommerce-applications/magento-2.md +++ b/docs/ecommerce-applications/magento-2.md @@ -1,4 +1,9 @@ --- +myst: + html_meta: + description: This table of contents gives you a summary of all knowledge base + articles that tell you more about Magento 2. + title: Magento 2 on Hypernode | Everything you need to know redirect_from: - /en/ecommerce/magento-2/ --- diff --git a/docs/ecommerce-applications/magento-2/how-to-change-your-magento-2-base-urls.md b/docs/ecommerce-applications/magento-2/how-to-change-your-magento-2-base-urls.md index 914b4c1e..b71607b3 100644 --- a/docs/ecommerce-applications/magento-2/how-to-change-your-magento-2-base-urls.md +++ b/docs/ecommerce-applications/magento-2/how-to-change-your-magento-2-base-urls.md @@ -1,8 +1,10 @@ --- myst: html_meta: - description: There are several ways to configure the base_url settings of your - Magento 2 shop. Find detailed instructions on the different ways here. + description: There are several ways to change the Base URL of your Magento 2.x + storefronts. In this article we provide you with instructions for each of these + ways. + title: How to change the base url in Magento 2? | Hypernode redirect_from: - /en/ecommerce/magento-2/how-to-change-your-magento-2-base-urls/ --- diff --git a/docs/ecommerce-applications/magento-2/how-to-configure-redis-for-magento-2.md b/docs/ecommerce-applications/magento-2/how-to-configure-redis-for-magento-2.md index ad98646f..e2be200f 100644 --- a/docs/ecommerce-applications/magento-2/how-to-configure-redis-for-magento-2.md +++ b/docs/ecommerce-applications/magento-2/how-to-configure-redis-for-magento-2.md @@ -1,9 +1,9 @@ --- myst: html_meta: - description: Redis is a caching method which can increase the speed of the back- - and frontend of your shop. Here's how to configure it on Magento 2 and how redis-cli - works. + description: This article will explain how to configure Redis on your Magento + 2 shop on Hypernode and how to work with redis-cli. + title: How to configure Redis for Magento 2? | Hypernode redirect_from: - /en/ecommerce/magento-2/how-to-configure-redis-for-magento-2/ - /knowledgebase/configure-sessions-redis-magento2/ diff --git a/docs/ecommerce-applications/magento-2/how-to-configure-varnish-for-magento-2-x.md b/docs/ecommerce-applications/magento-2/how-to-configure-varnish-for-magento-2-x.md index 7019d776..aea792ab 100644 --- a/docs/ecommerce-applications/magento-2/how-to-configure-varnish-for-magento-2-x.md +++ b/docs/ecommerce-applications/magento-2/how-to-configure-varnish-for-magento-2-x.md @@ -1,8 +1,9 @@ --- myst: html_meta: - description: This article explains how you can configure Varnish for your Hypernode - in order to boost your Magento 2.x shop. + description: Varnish is a complex technique that needs some experience to set + it up. This article explains how you can configure Varnish 4 or 6 for your Hypernode. + title: How to configure Varnish for Magento 2? | Hypernode redirect_from: - /en/ecommerce/magento-2/how-to-configure-varnish-for-magento-2-x/ --- diff --git a/docs/ecommerce-applications/magento-2/how-to-create-a-robots-txt-for-magento-2-x.md b/docs/ecommerce-applications/magento-2/how-to-create-a-robots-txt-for-magento-2-x.md index e8c5a7bb..9d9977d1 100644 --- a/docs/ecommerce-applications/magento-2/how-to-create-a-robots-txt-for-magento-2-x.md +++ b/docs/ecommerce-applications/magento-2/how-to-create-a-robots-txt-for-magento-2-x.md @@ -1,8 +1,9 @@ --- myst: html_meta: - description: Using a robots.txt is essential to handle bots and crawlers. In this - article we explain how to generate and configure Robot.txt on Magento 2.x. + description: In this article we explain how to configure your Hypernode to serve + a robots.txt for one or multiple storefronts in Magento 2. + title: How to create robots.txt for Magento 2? | Hypernode redirect_from: - /en/ecommerce/magento-2/how-to-create-a-robots-txt-for-magento-2-x/ - /knowledgebase/create-robots-txt-magento-2/ diff --git a/docs/ecommerce-applications/magento-2/how-to-create-a-sitemap-xml-for-magento-2-x.md b/docs/ecommerce-applications/magento-2/how-to-create-a-sitemap-xml-for-magento-2-x.md index d6d947b6..54e600aa 100644 --- a/docs/ecommerce-applications/magento-2/how-to-create-a-sitemap-xml-for-magento-2-x.md +++ b/docs/ecommerce-applications/magento-2/how-to-create-a-sitemap-xml-for-magento-2-x.md @@ -1,8 +1,9 @@ --- myst: html_meta: - description: Find detailed guidelines on how to create a sitemap.xml for Magento - 2.x versions here. + description: This article explains how to enable a sitemap.xml in Magento 2 and + how to configure NGINX to Use the Same Sitemap for All Storefronts. + title: How to create a sitemap xml for Magento 2? | Hypernode redirect_from: - /en/ecommerce/magento-2/how-to-create-a-sitemap-xml-for-magento-2-x/ --- diff --git a/docs/ecommerce-applications/magento-2/how-to-enable-the-magento-2-api.md b/docs/ecommerce-applications/magento-2/how-to-enable-the-magento-2-api.md index 0f0b94ce..16d62b78 100644 --- a/docs/ecommerce-applications/magento-2/how-to-enable-the-magento-2-api.md +++ b/docs/ecommerce-applications/magento-2/how-to-enable-the-magento-2-api.md @@ -1,8 +1,9 @@ --- myst: html_meta: - description: 'In this article you can find how to enable the Magento 2 API on - Hypernode by creating correct users (and code to solve 404 errors). ' + description: Due to clean-url-rewrites, that can result in a 404 error, some additional + configuration is required to make use of the Magento 2 API. + title: How to enable the Magento 2 API? | Hypernode redirect_from: - /en/ecommerce/magento-2/how-to-enable-the-magento-2-api/ - /knowledgebase/enable-magento-api/ diff --git a/docs/ecommerce-applications/magento-2/how-to-enable-the-magento-2-web-setup-wizard.md b/docs/ecommerce-applications/magento-2/how-to-enable-the-magento-2-web-setup-wizard.md index e1503222..8b262213 100644 --- a/docs/ecommerce-applications/magento-2/how-to-enable-the-magento-2-web-setup-wizard.md +++ b/docs/ecommerce-applications/magento-2/how-to-enable-the-magento-2-web-setup-wizard.md @@ -1,8 +1,9 @@ --- myst: html_meta: - description: In this article, we explain how to configure and deconfigure the - Web Setup Wizard for your Magento 2 shop. + description: There are many open issues on the Magento 2 Github repository regarding + the usage of the Magento 2 Web Setup Wizard. More details in this article. + title: How to enable the Magento 2 web setup wizard? | Hypernode redirect_from: - /en/ecommerce/magento-2/how-to-enable-the-magento-2-web-setup-wizard/ - /knowledgebase/using-magento-2-web-setup-wizard/ diff --git a/docs/ecommerce-applications/magento-2/how-to-enable-the-maintenance-mode-in-magento-2.md b/docs/ecommerce-applications/magento-2/how-to-enable-the-maintenance-mode-in-magento-2.md index 36d26f52..8ee6c96d 100644 --- a/docs/ecommerce-applications/magento-2/how-to-enable-the-maintenance-mode-in-magento-2.md +++ b/docs/ecommerce-applications/magento-2/how-to-enable-the-maintenance-mode-in-magento-2.md @@ -1,8 +1,10 @@ --- myst: html_meta: - description: Maintenance mode is a shortcut to serve a temporary error notification - to all customers. Find here how to enable it in Magento 2. + description: Shop owners want to perform upgrades, install extensions or do the + necessary maintenance on a shop. For this you use Maintenance Mode in Magento + 2. + title: How to enable maintenance mode in Magento 2? | Hypernode redirect_from: - /en/ecommerce/magento-2/how-to-enable-the-maintenance-mode-in-magento-2/ --- diff --git a/docs/ecommerce-applications/magento-2/how-to-fix-the-general-error-1030-got-error-1-from-storage-engine.md b/docs/ecommerce-applications/magento-2/how-to-fix-the-general-error-1030-got-error-1-from-storage-engine.md index 16645b1d..93151eb0 100644 --- a/docs/ecommerce-applications/magento-2/how-to-fix-the-general-error-1030-got-error-1-from-storage-engine.md +++ b/docs/ecommerce-applications/magento-2/how-to-fix-the-general-error-1030-got-error-1-from-storage-engine.md @@ -1,8 +1,10 @@ --- myst: html_meta: - description: 'This article describes how to fix the "General error: 1030 Got error - 1 from storage engine" on your Hypernode.' + description: You can simply follow the instructions in this article to make sure + that all the categories and products will be visible again on the frontend of + your webshop. + title: How to fix the general error 1030 in Magento 2? | Hypernode redirect_from: - /en/ecommerce/magento-2/how-to-fix-the-general-error-1030-got-error-1-from-storage-engine/ --- diff --git a/docs/ecommerce-applications/magento-2/how-to-flush-the-magento-2-x-caches.md b/docs/ecommerce-applications/magento-2/how-to-flush-the-magento-2-x-caches.md index c125887f..c743a773 100644 --- a/docs/ecommerce-applications/magento-2/how-to-flush-the-magento-2-x-caches.md +++ b/docs/ecommerce-applications/magento-2/how-to-flush-the-magento-2-x-caches.md @@ -1,8 +1,9 @@ --- myst: html_meta: - description: 'There are different ways to flush your Magento 2.x caches, via the - commandline or the backend for example. Read instructions per way in this article. ' + description: There are multiple ways to flush your caches in Magento 2.x. Learn + how to flush your cache via the Magento backend or the Commandline. + title: How to flush Magento 2 caches? | Hypernode redirect_from: - /en/ecommerce/magento-2/how-to-flush-the-magento-2-x-caches/ - /knowledgebase/magento-cache-management/ diff --git a/docs/ecommerce-applications/magento-2/how-to-install-magento-2-on-hypernode.md b/docs/ecommerce-applications/magento-2/how-to-install-magento-2-on-hypernode.md index 405842be..e0c1b92b 100644 --- a/docs/ecommerce-applications/magento-2/how-to-install-magento-2-on-hypernode.md +++ b/docs/ecommerce-applications/magento-2/how-to-install-magento-2-on-hypernode.md @@ -1,8 +1,9 @@ --- myst: html_meta: - description: Follow the steps in this article to install a Magento 2 installation - on Hypernode. It will only take you 5-10 minutes. + description: Learn how to install Magento 2 on Hypernode. It requires preferably + a Falcon M hosting plan or bigger and will take only 5-10 minutes. + title: How to install Magento 2 on Hypernode? redirect_from: - /en/ecommerce/magento-2/how-to-install-magento-2-on-hypernode/ - /knowledgebase/installing-magento-on-hypernode/ diff --git a/docs/ecommerce-applications/magento-2/how-to-optimize-magento-2-queue-consumers-on-hypernode.md b/docs/ecommerce-applications/magento-2/how-to-optimize-magento-2-queue-consumers-on-hypernode.md index 25be3716..1cd2be4d 100644 --- a/docs/ecommerce-applications/magento-2/how-to-optimize-magento-2-queue-consumers-on-hypernode.md +++ b/docs/ecommerce-applications/magento-2/how-to-optimize-magento-2-queue-consumers-on-hypernode.md @@ -1,9 +1,9 @@ --- myst: html_meta: - description: If your Magento 2 Cron is stuck or long-running this could be because - of a default setting in Magento 2 causing the consumers to never end. Here's - the fix. + description: 'If your Magento 2 Cron is stuck or long-running this could be because + of a default setting in Magento 2 causing the consumers to never end. ' + title: How to optimize Magento 2 queue consumers? | Hypernode redirect_from: - /en/support/solutions/articles/48001186343-how-to-optimize-magento-2-queue-consumers-on-hypernode/ --- diff --git a/docs/ecommerce-applications/magento-2/how-to-protect-the-magento-2-api.md b/docs/ecommerce-applications/magento-2/how-to-protect-the-magento-2-api.md index d37959c1..ad93c6e3 100644 --- a/docs/ecommerce-applications/magento-2/how-to-protect-the-magento-2-api.md +++ b/docs/ecommerce-applications/magento-2/how-to-protect-the-magento-2-api.md @@ -1,4 +1,9 @@ --- +myst: + html_meta: + description: Hypernode has protected unauthorized access for specific API methods + for all our customers. Not hosted on Hypernode? Follow these instructions! + title: How to protect the Magento 2 API? | Hypernode redirect_from: - /en/ecommerce/magento-2/how-to-protect-the-magento-2-api/ --- diff --git a/docs/ecommerce-applications/magento-2/how-to-remove-your-magento-2-x-installation.md b/docs/ecommerce-applications/magento-2/how-to-remove-your-magento-2-x-installation.md index 6e908d81..718acb80 100644 --- a/docs/ecommerce-applications/magento-2/how-to-remove-your-magento-2-x-installation.md +++ b/docs/ecommerce-applications/magento-2/how-to-remove-your-magento-2-x-installation.md @@ -1,8 +1,9 @@ --- myst: html_meta: - description: 'Within this article you can find snippets, which can be used for - the removal of your Magento 2.x installation. ' + description: The snippets in this article can be used to remove your Magento 2.x + installation(s). + title: How to remove your Magento 2 installation? | Hypernode redirect_from: - /en/ecommerce/magento-2/how-to-remove-your-magento-2-x-installation/ - https://support.hypernode.com/knowledgebase/remove-magento-installation/ diff --git a/docs/ecommerce-applications/magento-2/how-to-reset-your-magento-2-x-admin-password.md b/docs/ecommerce-applications/magento-2/how-to-reset-your-magento-2-x-admin-password.md index eef58461..fed80e07 100644 --- a/docs/ecommerce-applications/magento-2/how-to-reset-your-magento-2-x-admin-password.md +++ b/docs/ecommerce-applications/magento-2/how-to-reset-your-magento-2-x-admin-password.md @@ -1,9 +1,9 @@ --- myst: html_meta: - description: If you are unable to login to your Magento 2.x shop, you have several - methods to retrieve a new password to log in. Check out here how to reset your - password. + description: If you are unable to login to your Magento 2 shop, you have several + methods to retrieve a new password to log back in. Find them here! + title: How to reset your Magento 2 admin password? | Hypernode redirect_from: - /en/ecommerce/magento-2/how-to-reset-your-magento-2-x-admin-password/ --- diff --git a/docs/ecommerce-applications/magento-2/how-to-set-magento-2-x-to-the-utc-timezone.md b/docs/ecommerce-applications/magento-2/how-to-set-magento-2-x-to-the-utc-timezone.md index f4edbe27..76f718ea 100644 --- a/docs/ecommerce-applications/magento-2/how-to-set-magento-2-x-to-the-utc-timezone.md +++ b/docs/ecommerce-applications/magento-2/how-to-set-magento-2-x-to-the-utc-timezone.md @@ -1,9 +1,10 @@ --- myst: html_meta: - description: If you want to work with a different timezone setting or show a different - timezone setting to your customers, check out how change the timezone on Magento - 2.x. + description: Because Hypernode is hosted in the Cloud, the system timezone is + set to UTC. Magento 2 should operate on the same timezone as the server. Learn + how! + title: How to set Magento 2 to the UTC timezone? | Hypernode redirect_from: - /en/ecommerce/magento-2/how-to-set-magento-2-x-to-the-utc-timezone/ - /knowledgebase/magento-utc-hypernode/ diff --git a/docs/ecommerce-applications/magento-2/how-to-set-mysql-variables-globally-on-hypernode.md b/docs/ecommerce-applications/magento-2/how-to-set-mysql-variables-globally-on-hypernode.md index deba45af..9f4e0664 100644 --- a/docs/ecommerce-applications/magento-2/how-to-set-mysql-variables-globally-on-hypernode.md +++ b/docs/ecommerce-applications/magento-2/how-to-set-mysql-variables-globally-on-hypernode.md @@ -1,8 +1,9 @@ --- myst: html_meta: - description: This article explains how to set MySQL variables globally on Hypernode - by configuring the initStaments in the env.php file + description: You can set MySQL variables for Magento by editing the initStatements. + This way the variables won’t get lost after a MySQL restart or an upgrade. + title: How to set MySQL variables globally for Magento 2 | Hypernode redirect_from: - /en/support/solutions/articles/48001208261-how-to-set-mysql-variables-globally-on-hypernode/ --- diff --git a/docs/ecommerce-applications/magento-2/how-to-set-the-return-path-for-a-magento-2-shop.md b/docs/ecommerce-applications/magento-2/how-to-set-the-return-path-for-a-magento-2-shop.md index d46820dd..8a326931 100644 --- a/docs/ecommerce-applications/magento-2/how-to-set-the-return-path-for-a-magento-2-shop.md +++ b/docs/ecommerce-applications/magento-2/how-to-set-the-return-path-for-a-magento-2-shop.md @@ -1,9 +1,10 @@ --- myst: html_meta: - description: To avoid outgoing mail being detected as spam, you can change the - mail return-path for your outgoing email to a valid address. Here's how to do - so in Magento 2. + description: To avoid outgoing email being detected as spam in Magento 2, you + should change the email return-path for your outgoing email to a valid email + address. + title: How to set the return path for Magento 2? | Hypernode redirect_from: - /en/ecommerce/magento-2/how-to-set-the-return-path-for-a-magento-2-shop/ - /en/ecommerce/magento-2/workaround-return-path-email-bug-in-magento-2/ diff --git a/docs/ecommerce-applications/magento-2/how-to-set-up-a-basic-staging-environment-for-magento-2.md b/docs/ecommerce-applications/magento-2/how-to-set-up-a-basic-staging-environment-for-magento-2.md index 196b87fc..2a7ca3fa 100644 --- a/docs/ecommerce-applications/magento-2/how-to-set-up-a-basic-staging-environment-for-magento-2.md +++ b/docs/ecommerce-applications/magento-2/how-to-set-up-a-basic-staging-environment-for-magento-2.md @@ -1,9 +1,9 @@ --- myst: html_meta: - description: A staging environment is very useful to test your shop. In this article - we explain how to set up a staging environment on Hypernode for a Magento 2 - shop. + description: This article explains how you set up a staging environment on Hypernode + for a Magento 2 shop. Follow the steps mentioned in this article. + title: How to set up a staging environment for Magento 2? | Hypernode redirect_from: - /en/ecommerce/magento-2/how-to-set-up-a-basic-staging-environment-for-magento-2/ - /knowledgebase/using-a-basic-staging-environment-magento2/ diff --git a/docs/ecommerce-applications/magento-2/how-to-update-magento-2.md b/docs/ecommerce-applications/magento-2/how-to-update-magento-2.md index 249dd1bc..bcea9289 100644 --- a/docs/ecommerce-applications/magento-2/how-to-update-magento-2.md +++ b/docs/ecommerce-applications/magento-2/how-to-update-magento-2.md @@ -3,6 +3,7 @@ myst: html_meta: description: Does your Magento 2 version need an upgrade? This article explains how to upgrade to the latest Magento 2 version. + title: How to update Magento 2? | Hypernode redirect_from: - /en/ecommerce/magento-2/how-to-update-magento-2/ --- diff --git a/docs/ecommerce-applications/shopware-5.md b/docs/ecommerce-applications/shopware-5.md index eeb167fc..67d8d481 100644 --- a/docs/ecommerce-applications/shopware-5.md +++ b/docs/ecommerce-applications/shopware-5.md @@ -1,3 +1,11 @@ +--- +myst: + html_meta: + description: This table of contents gives you a summary of all knowledge base + articles that tell you more about Shopware 5. + title: Shopware 5 on Hypernode | Everything you need to know +--- + # Shopware 5 ```{toctree} diff --git a/docs/ecommerce-applications/shopware-5/how-to-change-the-timezone-for-the-order-timestamps-in-shopware-5-x.md b/docs/ecommerce-applications/shopware-5/how-to-change-the-timezone-for-the-order-timestamps-in-shopware-5-x.md index 016bc1e3..0a36068b 100644 --- a/docs/ecommerce-applications/shopware-5/how-to-change-the-timezone-for-the-order-timestamps-in-shopware-5-x.md +++ b/docs/ecommerce-applications/shopware-5/how-to-change-the-timezone-for-the-order-timestamps-in-shopware-5-x.md @@ -1,4 +1,9 @@ --- +myst: + html_meta: + description: The solution is quite simpel. There is a free plugin for Shopware + 5 which allows you to correct the timestamps of the orders. + title: Change the timezone for order timestamps in Shopware 5 redirect_from: - /en/support/solutions/articles/48001166328-how-to-change-the-timezone-for-the-order-timestamps-in-shopware-5-x/ --- diff --git a/docs/ecommerce-applications/shopware-5/how-to-change-the-timezone-in-shopware-5-x.md b/docs/ecommerce-applications/shopware-5/how-to-change-the-timezone-in-shopware-5-x.md index 4b955ebb..1f682cd9 100644 --- a/docs/ecommerce-applications/shopware-5/how-to-change-the-timezone-in-shopware-5-x.md +++ b/docs/ecommerce-applications/shopware-5/how-to-change-the-timezone-in-shopware-5-x.md @@ -1,8 +1,10 @@ --- myst: html_meta: - description: This article describes how to change the timezone in Shopware 5.x - on a Hypernode. + description: In order to change the timezone for the order and such you will need + to install an additional module. More information about this can be found via + this article. + title: How to change the timezone in Shopware 5? | Hypernode redirect_from: - /en/support/solutions/articles/48001170559-how-to-change-the-timezone-in-shopware-5-x/ --- diff --git a/docs/ecommerce-applications/shopware-5/how-to-configure-shopware-caching.md b/docs/ecommerce-applications/shopware-5/how-to-configure-shopware-caching.md index a3afd454..917eae80 100644 --- a/docs/ecommerce-applications/shopware-5/how-to-configure-shopware-caching.md +++ b/docs/ecommerce-applications/shopware-5/how-to-configure-shopware-caching.md @@ -1,8 +1,10 @@ --- myst: html_meta: - description: Shopware provides a built-in HTTP cache to improve the performance - and user experience of your shop. We explain how to set it up step by step. + description: Shopware 5 provides a built-in HTTP cache which can be enabled in + production environments. In this document we’ll explain how you can set this + up. + title: How to configure caching in Shopware 5? | Hypernode redirect_from: - /en/ecommerce/shopware/how-to-configure-shopware-caching/ --- diff --git a/docs/ecommerce-applications/shopware-5/how-to-configure-varnish-for-shopware-5.md b/docs/ecommerce-applications/shopware-5/how-to-configure-varnish-for-shopware-5.md index 726e901d..c4bad250 100644 --- a/docs/ecommerce-applications/shopware-5/how-to-configure-varnish-for-shopware-5.md +++ b/docs/ecommerce-applications/shopware-5/how-to-configure-varnish-for-shopware-5.md @@ -2,7 +2,9 @@ myst: html_meta: description: Shopware 5 applications can greatly benefit from Varnish caching. - On the client side, pages load faster, while on the server side, the load decreases. + Hypernode supports Varnish as a caching layer and configuration is actually + quite simple. + title: How to configure Varnish for Shopware 5? | Hypernode redirect_from: - /en/support/solutions/articles/48001207016-how-to-configure-varnish-for-shopware-5/ --- diff --git a/docs/ecommerce-applications/shopware-5/how-to-host-shopware-on-hypernode.md b/docs/ecommerce-applications/shopware-5/how-to-host-shopware-on-hypernode.md index 57389932..8b19d089 100644 --- a/docs/ecommerce-applications/shopware-5/how-to-host-shopware-on-hypernode.md +++ b/docs/ecommerce-applications/shopware-5/how-to-host-shopware-on-hypernode.md @@ -1,8 +1,10 @@ --- myst: html_meta: - description: Hosting the popular CMS, Shopware, can (of course) be done on Hypernode. - You only need a specific Nginx configuration. Check out how to use it here. + description: All you need to do is add a Shopware specific NGINX configuration + file to your environment. Shopware requires a Hypernode Falcon S hosting plan + or larger. + title: How to host Shopware 5 on Hypernode? redirect_from: - /en/ecommerce/shopware/how-to-host-shopware-on-hypernode/ - /knowledgebase/how-to-host-shopware-on-hypernode/ diff --git a/docs/ecommerce-applications/shopware-5/how-to-install-shopware-5-on-hypernode-docker.md b/docs/ecommerce-applications/shopware-5/how-to-install-shopware-5-on-hypernode-docker.md index 63ae8279..b6332772 100644 --- a/docs/ecommerce-applications/shopware-5/how-to-install-shopware-5-on-hypernode-docker.md +++ b/docs/ecommerce-applications/shopware-5/how-to-install-shopware-5-on-hypernode-docker.md @@ -1,8 +1,10 @@ --- myst: html_meta: - description: The Hypernode Docker Image can be used to set up a local test environment - for Shopware. This article explains how to install Shopware 5 on a Docker environment. + description: To set an environment for Shopware 5 is the same process as for Magento, + with the exception that you’ll have to add an additional NGINX configuration + file. + title: 'How to install Shopware 5 on Hypernode Docker? ' redirect_from: - /en/ecommerce/shopware/how-to-install-shopware-5-on-hypernode-docker/ --- diff --git a/docs/ecommerce-applications/shopware-5/how-to-install-shopware-5-on-hypernode.md b/docs/ecommerce-applications/shopware-5/how-to-install-shopware-5-on-hypernode.md index e6df836a..aecbf9e4 100644 --- a/docs/ecommerce-applications/shopware-5/how-to-install-shopware-5-on-hypernode.md +++ b/docs/ecommerce-applications/shopware-5/how-to-install-shopware-5-on-hypernode.md @@ -1,8 +1,9 @@ --- myst: html_meta: - description: 'In this article we guide you through the steps of setting up the - latest version of Shopware 5 as easy as possible. ' + description: Shopware 5 requires a Hypernode Professional S hosting plan or larger. + We explain how you can setup the latest version of Shopware 5 on Hypernode. + title: 'How to install Shopware 5 on Hypernode? ' redirect_from: - /en/ecommerce/shopware/how-to-install-shopware-5-on-hypernode/ - /knowledgebase/how-to-install-shopware-5-on-hypernode/ diff --git a/docs/ecommerce-applications/shopware-5/how-to-setup-a-multistore-in-shopware.md b/docs/ecommerce-applications/shopware-5/how-to-setup-a-multistore-in-shopware.md index 8c64cfe3..ae3cb961 100644 --- a/docs/ecommerce-applications/shopware-5/how-to-setup-a-multistore-in-shopware.md +++ b/docs/ecommerce-applications/shopware-5/how-to-setup-a-multistore-in-shopware.md @@ -1,9 +1,10 @@ --- myst: html_meta: - description: Using a multistore in Shopware will allow you to address customers - in different languages and use different currencies. Check out how to set it - up here. + description: You want to use a single Shopware installation for several domains + or shops. This can be realised by adding as much language and/or sub shops as + you need. + title: How to set up a multistore in Shopware 5? | Hypernode redirect_from: - /en/ecommerce/shopware/how-to-setup-a-multistore-in-shopware/ --- diff --git a/docs/ecommerce-applications/shopware-5/how-to-use-a-basic-staging-environment-with-shopware.md b/docs/ecommerce-applications/shopware-5/how-to-use-a-basic-staging-environment-with-shopware.md index 4cc39a56..668bb24e 100644 --- a/docs/ecommerce-applications/shopware-5/how-to-use-a-basic-staging-environment-with-shopware.md +++ b/docs/ecommerce-applications/shopware-5/how-to-use-a-basic-staging-environment-with-shopware.md @@ -1,8 +1,9 @@ --- myst: html_meta: - description: A staging environment is very useful to test your shop. In this article - we explain how to set up a staging environment on Hypernode for a Shopware shop. + description: This article explains how you can set up a staging environment on + Hypernode for a Shopware 5 shop. Learn everything you need to know! + title: How to use a staging environment with Shopware 5? redirect_from: - /en/ecommerce/shopware/how-to-use-a-basic-staging-environment-with-shopware/ --- diff --git a/docs/ecommerce-applications/shopware-6.md b/docs/ecommerce-applications/shopware-6.md index 010a32f7..47b871a9 100644 --- a/docs/ecommerce-applications/shopware-6.md +++ b/docs/ecommerce-applications/shopware-6.md @@ -1,4 +1,9 @@ --- +myst: + html_meta: + description: This table of contents gives you a summary of all knowledge base + articles that tell you more about Shopware 6. + title: Shopware 6 on Hypernode | Everything you need to know redirect_from: - /en/ecommerce/shopware/ --- diff --git a/docs/ecommerce-applications/shopware-6/admin-loop-in-shopware-6-when-basic-auth-is-used.md b/docs/ecommerce-applications/shopware-6/admin-loop-in-shopware-6-when-basic-auth-is-used.md index edfacb7f..d55622e2 100644 --- a/docs/ecommerce-applications/shopware-6/admin-loop-in-shopware-6-when-basic-auth-is-used.md +++ b/docs/ecommerce-applications/shopware-6/admin-loop-in-shopware-6-when-basic-auth-is-used.md @@ -1,3 +1,11 @@ +--- +myst: + html_meta: + description: When you want to use Shopware 6 on a Hypernode with basic auth you + need to take into account that Shopware overwrites the Authorization header. + title: How to prevent an admin loop in Shopware 6 on Hypernode? +--- + # Admin loop in Shopware 6 when basic auth is used On a Hypernode dev plan basic auth is enabled out of the box. You can also configure Nginx to put your site or parts of your site behind basic auth on a production plan. When you want to use Shopware 6 on a Hypernode with basic auth you need to take into account that Shopware overwrites the Authorization header. diff --git a/docs/ecommerce-applications/shopware-6/how-to-configure-redis-for-shopware-6.md b/docs/ecommerce-applications/shopware-6/how-to-configure-redis-for-shopware-6.md index 393c09aa..2a6344dc 100644 --- a/docs/ecommerce-applications/shopware-6/how-to-configure-redis-for-shopware-6.md +++ b/docs/ecommerce-applications/shopware-6/how-to-configure-redis-for-shopware-6.md @@ -1,4 +1,9 @@ --- +myst: + html_meta: + description: This article will explain how to configure Redis on your Shopware + 6 shop on Hypernode and how to work with redis-cli. + title: How to configure Redis for Shopware 6? redirect_from: - /en/support/solutions/articles/48001200521-how-to-configure-redis-for-shopware-6/ --- diff --git a/docs/ecommerce-applications/shopware-6/how-to-configure-varnish-for-shopware-6.md b/docs/ecommerce-applications/shopware-6/how-to-configure-varnish-for-shopware-6.md index e820ceea..a45db281 100644 --- a/docs/ecommerce-applications/shopware-6/how-to-configure-varnish-for-shopware-6.md +++ b/docs/ecommerce-applications/shopware-6/how-to-configure-varnish-for-shopware-6.md @@ -1,4 +1,10 @@ --- +myst: + html_meta: + description: Shopware 6 applications can greatly benefit from Varnish caching. + Hypernode supports Varnish as a caching layer and configuration is actually + quite simple. + title: How to configure Varnish for Shopware 6? redirect_from: - /en/support/solutions/articles/48001200525-how-to-configure-varnish-for-shopware-6/ --- diff --git a/docs/ecommerce-applications/shopware-6/how-to-install-shopware-6-on-hypernode-docker.md b/docs/ecommerce-applications/shopware-6/how-to-install-shopware-6-on-hypernode-docker.md index aed14a2b..92ea9c86 100644 --- a/docs/ecommerce-applications/shopware-6/how-to-install-shopware-6-on-hypernode-docker.md +++ b/docs/ecommerce-applications/shopware-6/how-to-install-shopware-6-on-hypernode-docker.md @@ -1,8 +1,10 @@ --- myst: html_meta: - description: The Hypernode Docker Image can be used to set up a local test environment - for Shopware. This article explains how to install Shopware 6 on a Docker environment. + description: To set an environment for Shopware 6 is the same process as for Magento, + with the exception that you’ll have to add an additional NGINX configuration + file. + title: 'How to install Shopware 6 on Hypernode Docker? ' redirect_from: - /en/ecommerce/shopware/how-to-install-shopware-6-on-hypernode-docker/ --- diff --git a/docs/ecommerce-applications/shopware-6/how-to-install-shopware-6-on-hypernode.md b/docs/ecommerce-applications/shopware-6/how-to-install-shopware-6-on-hypernode.md index 69137130..b29681e0 100644 --- a/docs/ecommerce-applications/shopware-6/how-to-install-shopware-6-on-hypernode.md +++ b/docs/ecommerce-applications/shopware-6/how-to-install-shopware-6-on-hypernode.md @@ -1,8 +1,9 @@ --- myst: html_meta: - description: 'In this article we guide you through the steps of setting up the - latest version of Shopware 6 as easy as possible. ' + description: Shopware 6 requires a Hypernode Professional S hosting plan or larger. + We explain how you can setup the latest version of Shopware 5 on Hypernode. + title: 'How to install Shopware 6 on Hypernode? ' redirect_from: - /en/ecommerce/shopware/how-to-install-shopware-6-on-hypernode/ - /knowledgebase/how-to-install-shopware-6-on-hypernode/ diff --git a/docs/ecommerce-applications/shopware-6/how-to-use-a-basic-staging-environment-with-shopware-6.md b/docs/ecommerce-applications/shopware-6/how-to-use-a-basic-staging-environment-with-shopware-6.md index b07cd827..042cc9a1 100644 --- a/docs/ecommerce-applications/shopware-6/how-to-use-a-basic-staging-environment-with-shopware-6.md +++ b/docs/ecommerce-applications/shopware-6/how-to-use-a-basic-staging-environment-with-shopware-6.md @@ -1,9 +1,9 @@ --- myst: html_meta: - description: A staging environment is very useful to test your shop. In this article - we explain how to set up a staging environment on Hypernode for a Shopware 6 - shop. + description: This article explains how you can set up a staging environment on + Hypernode for a Shopware 6 shop. Learn everything you need to know! + title: How to use a staging environment with Shopware 6? redirect_from: - /en/ecommerce/shopware/how-to-use-a-basic-staging-environment-with-shopware-6/ --- diff --git a/docs/ecommerce-applications/woocommerce.md b/docs/ecommerce-applications/woocommerce.md index 0e743d4b..c4d0d925 100644 --- a/docs/ecommerce-applications/woocommerce.md +++ b/docs/ecommerce-applications/woocommerce.md @@ -1,4 +1,9 @@ --- +myst: + html_meta: + description: This table of contents gives you a summary of all knowledge base + articles that tell you more about WooCommerce. + title: WooCommerce on Hypernode | Everything you need to know redirect_from: - /en/support/solutions/folders/48000684907 --- diff --git a/docs/ecommerce-applications/woocommerce/how-to-install-woocommerce-on-hypernode.md b/docs/ecommerce-applications/woocommerce/how-to-install-woocommerce-on-hypernode.md index 2b931c1f..849a8351 100644 --- a/docs/ecommerce-applications/woocommerce/how-to-install-woocommerce-on-hypernode.md +++ b/docs/ecommerce-applications/woocommerce/how-to-install-woocommerce-on-hypernode.md @@ -1,4 +1,9 @@ --- +myst: + html_meta: + description: This article will explain how you can setup the latest version of + WooCommerce on Hypernode as easy as possible. + title: How to install WooCommerce on Hypernode? redirect_from: - /en/support/solutions/articles/48001213397-how-to-install-woocommerce-on-hypernode/ --- diff --git a/docs/getting-started/how-to-order.md b/docs/getting-started/how-to-order.md index c91b441b..b251cd06 100644 --- a/docs/getting-started/how-to-order.md +++ b/docs/getting-started/how-to-order.md @@ -1,4 +1,9 @@ --- +myst: + html_meta: + description: This table of contents gives you a summary of all Hypernode platform + knowledge base articles that include information about how to order a Hypernode. + title: How to order a Hypernode? redirect_from: - /en/getting-started/ --- diff --git a/docs/getting-started/how-to-order/how-to-get-started-with-your-hypernode-trial.md b/docs/getting-started/how-to-order/how-to-get-started-with-your-hypernode-trial.md index 3444e67c..7b2bf92f 100644 --- a/docs/getting-started/how-to-order/how-to-get-started-with-your-hypernode-trial.md +++ b/docs/getting-started/how-to-order/how-to-get-started-with-your-hypernode-trial.md @@ -1,8 +1,9 @@ --- myst: html_meta: - description: 'Your trial gives you 14 days of free testing on our Hypernode platform. - Find out how to get started and test all features on the platform in this article. ' + description: With your free trial you have 14 days to test your shops’ performance + on Hypernode. After 2 weeks your trial will expire automatically. + title: How to start a Hypernode trial? redirect_from: - /en/getting-started/how-to-order/how-to-get-started-with-your-hypernode-trial/ --- diff --git a/docs/hypernode-deploy/getting-started.md b/docs/hypernode-deploy/getting-started.md index 57bd5e49..a23a978b 100644 --- a/docs/hypernode-deploy/getting-started.md +++ b/docs/hypernode-deploy/getting-started.md @@ -1,3 +1,11 @@ +--- +myst: + html_meta: + description: This table of contents gives you a summary of all Hypernode platform + knowledge base articles that include information about Hypernode Deploy. + title: How to get started with Hypernod deploy? +--- + # Getting started with Hypernode Deploy ```{toctree} diff --git a/docs/hypernode-deploy/getting-started/configure-ci-cd.md b/docs/hypernode-deploy/getting-started/configure-ci-cd.md index 8b73ebde..c36e2b36 100644 --- a/docs/hypernode-deploy/getting-started/configure-ci-cd.md +++ b/docs/hypernode-deploy/getting-started/configure-ci-cd.md @@ -1,3 +1,12 @@ +--- +myst: + html_meta: + description: Configure your CI/CD pipeline with Hypernode Deploy. Get up and running + quickly with easy-to-follow steps and secure credentials to ensure your data + is safe. + title: How to configure CI/CD on Hypernode? +--- + # Configure CI/CD There are many CI/CD pipelines available, but it's probably best to stick with the pipeline system that's tied with your VCS (version control system), like [Github Actions][1] for Github, [Gitlab CI][2] for Gitlab and [Bitbucket Pipelines][3] for Bitbucket. diff --git a/docs/hypernode-deploy/getting-started/install-and-configure-hypernode-deploy.md b/docs/hypernode-deploy/getting-started/install-and-configure-hypernode-deploy.md index c468eb44..7a3c8c7d 100644 --- a/docs/hypernode-deploy/getting-started/install-and-configure-hypernode-deploy.md +++ b/docs/hypernode-deploy/getting-started/install-and-configure-hypernode-deploy.md @@ -1,3 +1,11 @@ +--- +myst: + html_meta: + description: 'With Hypernode Deploy, you can create and configure an optimized + Hypernode environment. Learn how to install and configure Hypernode Deploy. ' + title: How to install and configure Hypernode Deploy? +--- + # Install and Configure Hypernode Deploy The first step is to create and configure a `deploy.php` file which can be used by Hypernode Deploy to determine what tasks need to be executed to prepare the application for deployment and of course to what stages/servers the application needs to be deployed to. diff --git a/docs/hypernode-platform/backups.md b/docs/hypernode-platform/backups.md index 71326386..02ca851a 100644 --- a/docs/hypernode-platform/backups.md +++ b/docs/hypernode-platform/backups.md @@ -1,4 +1,9 @@ --- +myst: + html_meta: + description: This table of contents gives you a summary of all Hypernode platform + knowledge base articles that include information about backups. + title: Backups | Hypernode platform redirect_from: - /en/hypernode/backups/ --- diff --git a/docs/hypernode-platform/backups/how-to-restore-your-hypernode-from-a-snapshot.md b/docs/hypernode-platform/backups/how-to-restore-your-hypernode-from-a-snapshot.md index a4bdd175..c76224a0 100644 --- a/docs/hypernode-platform/backups/how-to-restore-your-hypernode-from-a-snapshot.md +++ b/docs/hypernode-platform/backups/how-to-restore-your-hypernode-from-a-snapshot.md @@ -1,8 +1,9 @@ --- myst: html_meta: - description: 'Find detailed guidelines on how to restore your Hypernode from a - backup here, if needed after a mistake. We restore backups with snapshots. ' + description: To restore your Hypernode from a snapshot, instant or an older backup, + please follow the instructions mentioned in this article. + title: How to restore your Hypernode from a snapshot? | Backups redirect_from: - /en/hypernode/backups/how-to-restore-your-hypernode-from-a-backup/ - /knowledgebase/restore-hypernode-backup/ diff --git a/docs/hypernode-platform/backups/hypernode-backup-policy.md b/docs/hypernode-platform/backups/hypernode-backup-policy.md index b3d11e56..bb487b01 100644 --- a/docs/hypernode-platform/backups/hypernode-backup-policy.md +++ b/docs/hypernode-platform/backups/hypernode-backup-policy.md @@ -1,8 +1,9 @@ --- myst: html_meta: - description: 'When things go wrong, you want to restore the appropriate database - table, files or directories from the backup. We offer this with snapshots. ' + description: Easily restore files, directories, and database tables with Hypernode's + daily snapshots. Depending on your SLA, you get additional backup options. + title: Hypernode Backup Policy | Secure and Automated redirect_from: - /en/hypernode/backups/hypernode-backup-policy/ --- diff --git a/docs/hypernode-platform/dns.md b/docs/hypernode-platform/dns.md index cb6fe7d6..3292d61a 100644 --- a/docs/hypernode-platform/dns.md +++ b/docs/hypernode-platform/dns.md @@ -1,4 +1,9 @@ --- +myst: + html_meta: + description: This table of contents gives you a summary of all Hypernode platform + knowledge base articles that include information about DNS. + title: DNS | Hypernode platform redirect_from: - /en/hypernode/dns/ --- diff --git a/docs/hypernode-platform/dns/dns-for-service-panel-users.md b/docs/hypernode-platform/dns/dns-for-service-panel-users.md index bc45945e..656dc119 100644 --- a/docs/hypernode-platform/dns/dns-for-service-panel-users.md +++ b/docs/hypernode-platform/dns/dns-for-service-panel-users.md @@ -1,9 +1,9 @@ --- myst: html_meta: - description: DNS is a protocol that translates domain names to IP addresses on - the internet. Read here how you can configure the DNS for your domain name at - Hypernode. + description: You can edit the DNS setting for your domain names in the Service + Panel (Instellingen => DNS). It takes 24 hours for a DNS change to be implemented. + title: How to manage your DNS as a Service Panel user? redirect_from: - /en/support/solutions/articles/48001153093-dns-for-service-panel-users/ --- diff --git a/docs/hypernode-platform/dns/how-to-manage-your-dns-settings-for-hypernode.md b/docs/hypernode-platform/dns/how-to-manage-your-dns-settings-for-hypernode.md index 210981ef..2dd67edf 100644 --- a/docs/hypernode-platform/dns/how-to-manage-your-dns-settings-for-hypernode.md +++ b/docs/hypernode-platform/dns/how-to-manage-your-dns-settings-for-hypernode.md @@ -1,8 +1,9 @@ --- myst: html_meta: - description: 'Find out how to manage your DNS settings on Hypernode in order to - avoid downtime when up- or downgrading here. ' + description: This article explains three ways to handle your DNS. Please decide + for yourself the best option for your specific situation. + title: How to manage your DNS settings on a Hypernode? redirect_from: - /en/hypernode/dns/how-to-manage-your-dns-settings-for-hypernode/ - /knowledgebase/dns-settings-hypernode/ diff --git a/docs/hypernode-platform/dns/how-to-set-up-your-spf-records-for-hypernode.md b/docs/hypernode-platform/dns/how-to-set-up-your-spf-records-for-hypernode.md index 266a022c..7a3235a8 100644 --- a/docs/hypernode-platform/dns/how-to-set-up-your-spf-records-for-hypernode.md +++ b/docs/hypernode-platform/dns/how-to-set-up-your-spf-records-for-hypernode.md @@ -1,8 +1,10 @@ --- myst: html_meta: - description: Sender Policy Framework, SPF, is a technique used to fight spam. - Find out here how to set it up for Hypernode. + description: SPF or Sender Policy Framework is a technique used to fight spam. + You can define which mail servers are allowed to send email for that particular + domain. + title: How to set up your SPF records? | Hypernode redirect_from: - /en/hypernode/dns/how-to-set-up-your-spf-records-for-hypernode/ - /knowledgebase/using-spf-hypernode/ diff --git a/docs/hypernode-platform/dns/your-dns-is-misconfigured.md b/docs/hypernode-platform/dns/your-dns-is-misconfigured.md index a9c2e303..d1386f95 100644 --- a/docs/hypernode-platform/dns/your-dns-is-misconfigured.md +++ b/docs/hypernode-platform/dns/your-dns-is-misconfigured.md @@ -3,6 +3,7 @@ myst: html_meta: description: The administrator of this domain has pointed www.domain.com to our DNS service, instead of appointing a CNAME to his/her Hypernode. + title: What to do if your DNS is misconfigured? | Hypernode redirect_from: - /en/hypernode/dns/your-dns-is-misconfigured/ --- diff --git a/docs/hypernode-platform/email.md b/docs/hypernode-platform/email.md index 7f913807..8df9fc61 100644 --- a/docs/hypernode-platform/email.md +++ b/docs/hypernode-platform/email.md @@ -1,4 +1,9 @@ --- +myst: + html_meta: + description: This table of contents gives you a summary of all Hypernode platform + knowledge base articles that include information about email. + title: Email | Hypernode platform redirect_from: - /en/hypernode/email/ --- diff --git a/docs/hypernode-platform/email/how-to-activate-a-virus-filter-for-your-email-box.md b/docs/hypernode-platform/email/how-to-activate-a-virus-filter-for-your-email-box.md index 2285664d..c49a7a53 100644 --- a/docs/hypernode-platform/email/how-to-activate-a-virus-filter-for-your-email-box.md +++ b/docs/hypernode-platform/email/how-to-activate-a-virus-filter-for-your-email-box.md @@ -1,9 +1,9 @@ --- myst: html_meta: - description: A virus filter checks all incoming (and outgoing) email for viruses. - In this article we explain how Hypernodes virus filter works and how to deactive - it. + description: In this article we explain how Hypernodes virus filter works, how + to deactivate it and what type of file extensions are blocked by the virus filter. + title: How to activate a virus filter for your email box? | Hypernode redirect_from: - /en/best-practices/email/how-to-activate-a-virus-filter-for-your-email-box/ --- diff --git a/docs/hypernode-platform/email/how-to-configure-the-spam-filter.md b/docs/hypernode-platform/email/how-to-configure-the-spam-filter.md index a4606548..a0c66392 100644 --- a/docs/hypernode-platform/email/how-to-configure-the-spam-filter.md +++ b/docs/hypernode-platform/email/how-to-configure-the-spam-filter.md @@ -2,8 +2,9 @@ myst: html_meta: description: Spam is unsolicited email, usually with a commercial content. If - you receive a lot of spam, we at Hypernode recommend you to configure a spam - filter. + you receive a lot of spam in your email box, we recommend you to configure a + spam filter. + title: How to configure your email spam filter? | Hypernode redirect_from: - /en/best-practices/email/how-to-configure-the-spam-filter/ --- diff --git a/docs/hypernode-platform/email/how-to-manage-your-email-queue.md b/docs/hypernode-platform/email/how-to-manage-your-email-queue.md index d2de2d4c..fc58b455 100644 --- a/docs/hypernode-platform/email/how-to-manage-your-email-queue.md +++ b/docs/hypernode-platform/email/how-to-manage-your-email-queue.md @@ -2,8 +2,8 @@ myst: html_meta: description: If you are sending email through the Hypernode and your application - you will want to know how you can manage your email queue. Find out how to do - this here. + you will want to know how you can manage your email queue. + title: How to manage your email queue? | Hypernode redirect_from: - /en/hypernode/email/how-to-manage-your-email-queue/ --- diff --git a/docs/hypernode-platform/email/how-to-set-up-your-dns-for-outgoing-email.md b/docs/hypernode-platform/email/how-to-set-up-your-dns-for-outgoing-email.md index 61b4c8ef..e045bb4b 100644 --- a/docs/hypernode-platform/email/how-to-set-up-your-dns-for-outgoing-email.md +++ b/docs/hypernode-platform/email/how-to-set-up-your-dns-for-outgoing-email.md @@ -2,7 +2,9 @@ myst: html_meta: description: If your domain is hosted externally and you want to send email from - your Hypernode there are records that need to be added to the external DNS. + your Hypernode, there are some DNS records that need to be added to the external + DNS. + title: How to set up your DNS for outgoing email? | Hypernode redirect_from: - /en/hypernode/email/how-to-set-up-your-dns-for-outgoing-email/ --- diff --git a/docs/hypernode-platform/email/how-to-set-up-your-dns-for-using-office365.md b/docs/hypernode-platform/email/how-to-set-up-your-dns-for-using-office365.md index 694aef24..6beb398e 100644 --- a/docs/hypernode-platform/email/how-to-set-up-your-dns-for-using-office365.md +++ b/docs/hypernode-platform/email/how-to-set-up-your-dns-for-using-office365.md @@ -1,8 +1,10 @@ --- myst: html_meta: - description: How to set up your DNS when you want to use Office365 on a domain - that is hosted at Hypernode + description: When you want to use Office365 and your domain is registered with + Hypernode or hosted on our name servers, you will need to set up your DNS correctly + to do so. + title: How to set up your DNS for Office 365? | Hypernode redirect_from: - /en/best-practices/email/how-to-set-up-your-dns-for-using-office365/ --- diff --git a/docs/hypernode-platform/email/how-to-use-dmarc.md b/docs/hypernode-platform/email/how-to-use-dmarc.md index 78118bc9..86f7871a 100644 --- a/docs/hypernode-platform/email/how-to-use-dmarc.md +++ b/docs/hypernode-platform/email/how-to-use-dmarc.md @@ -1,8 +1,9 @@ --- myst: html_meta: - description: Hypernode offers DMARC (Domain-based Message Authentication, Reporting - and Conformance) for Service Panel users. Read how to configure it in this article. + description: With SPF and DKIM you indicate which mail is real and which is fake. + With DMARC you then indicate what the recipient of the mail should do. + title: How to use DMARC? | Hypernode redirect_from: - /en/best-practices/email/how-to-use-dmarc/ --- diff --git a/docs/hypernode-platform/email/policy-for-sending-email-on-hypernode.md b/docs/hypernode-platform/email/policy-for-sending-email-on-hypernode.md index c1734584..2705dc7c 100644 --- a/docs/hypernode-platform/email/policy-for-sending-email-on-hypernode.md +++ b/docs/hypernode-platform/email/policy-for-sending-email-on-hypernode.md @@ -1,8 +1,10 @@ --- myst: html_meta: - description: 'All emails send from a Hypernode are routed through a central outgoing - email platform that filters spam and infected emails. Read here about its policies. ' + description: Our mail platform handles rate limiting and enforces a strict limit + on your outgoing email flow. If you exceed the limits, your email will be delivered + at a later time. + title: Policy for sending emails on Hypernodes redirect_from: - /en/hypernode/email/policy-for-sending-email-on-hypernode/ - /knowledgebase/hypernode-email-policy/ diff --git a/docs/hypernode-platform/email/spam-run-via-your-website.md b/docs/hypernode-platform/email/spam-run-via-your-website.md index 1bfdb233..27a882f2 100644 --- a/docs/hypernode-platform/email/spam-run-via-your-website.md +++ b/docs/hypernode-platform/email/spam-run-via-your-website.md @@ -1,9 +1,10 @@ --- myst: html_meta: - description: "It's often difficult to find the exact cause of a spam run. Use\ - \ this article to find out what happened and how to prevent spam runs from your\ - \ website. " + description: 'All plans have the option to send emails from the website. Abusers + use this to advertise products, we call this a spam run. Read tje most common + reasons here. ' + title: Policy for sending emails on Hypernode redirect_from: - /en/hypernode/email/spam-run-via-your-website/ --- diff --git a/docs/hypernode-platform/ftp.md b/docs/hypernode-platform/ftp.md index 12b6e1cd..5f1c035f 100644 --- a/docs/hypernode-platform/ftp.md +++ b/docs/hypernode-platform/ftp.md @@ -1,4 +1,9 @@ --- +myst: + html_meta: + description: This table of contents gives you a summary of all Hypernode platform + knowledge base articles that include information about FTP. + title: FTP | Hypernode platform redirect_from: - /en/hypernode/ftp/ --- diff --git a/docs/hypernode-platform/ftp/how-to-configure-ftp-sftp-on-hypernode.md b/docs/hypernode-platform/ftp/how-to-configure-ftp-sftp-on-hypernode.md index 182fddea..47e9e296 100644 --- a/docs/hypernode-platform/ftp/how-to-configure-ftp-sftp-on-hypernode.md +++ b/docs/hypernode-platform/ftp/how-to-configure-ftp-sftp-on-hypernode.md @@ -3,6 +3,7 @@ myst: html_meta: description: In this article we’ll explain how you can configure FTP/SFTP (create/delete users) and which credentials to use to make a FTP/SFTP connection. + title: How to Configure FTP/SFTP on Hypernode redirect_from: - /en/hypernode/ftp/how-to-configure-ftp-sftp-on-hypernode/ - /knowledgebase/configuring-ftp/ diff --git a/docs/hypernode-platform/mysql.md b/docs/hypernode-platform/mysql.md index 2cfc89ff..9bd77d91 100644 --- a/docs/hypernode-platform/mysql.md +++ b/docs/hypernode-platform/mysql.md @@ -1,4 +1,9 @@ --- +myst: + html_meta: + description: This table of contents gives you a summary of all Hypernode platform + knowledge base articles that include information about MySQL. + title: MySQL | Hypernode platform redirect_from: - /en/hypernode/mysql/ --- diff --git a/docs/hypernode-platform/mysql/how-to-configure-a-large-mysql-thread-stack.md b/docs/hypernode-platform/mysql/how-to-configure-a-large-mysql-thread-stack.md index 7eaab602..e387f179 100644 --- a/docs/hypernode-platform/mysql/how-to-configure-a-large-mysql-thread-stack.md +++ b/docs/hypernode-platform/mysql/how-to-configure-a-large-mysql-thread-stack.md @@ -1,9 +1,9 @@ --- myst: html_meta: - description: For Hypernodes we have a set of MySQL related opt-in settings to - facilitate some flexibility (because it is not possible to change root-owned - MySQL related config files.) + description: 'In this article we will explain how to configure a large MySQL thread_stack + in detail. ' + title: How to configure a large MySQL thread stack? | Hypernode redirect_from: - /en/hypernode/mysql/how-to-configure-a-large-mysql-thread-stack/ --- diff --git a/docs/hypernode-platform/mysql/how-to-free-disk-space-from-mysql-ibdata1.md b/docs/hypernode-platform/mysql/how-to-free-disk-space-from-mysql-ibdata1.md index 5c1b23cf..cc801dcb 100644 --- a/docs/hypernode-platform/mysql/how-to-free-disk-space-from-mysql-ibdata1.md +++ b/docs/hypernode-platform/mysql/how-to-free-disk-space-from-mysql-ibdata1.md @@ -1,9 +1,10 @@ --- myst: html_meta: - description: MySQL uses serveral files for journaling transactions, ibdata1 for - example, which can grow quickly and is hard to remove. Read here how to free - up disk space. + description: 'As a result of how MySQL stores data, a ibdata1 file can grow very + large and removing it can cause data loss/corruption. Learn how to free disk + space. ' + title: How to free disk space from MySQL ibdata1? | Hypernode redirect_from: - /en/hypernode/mysql/how-to-free-disk-space-from-mysql-ibdata1/ - /knowledgebase/free-diskspace-ibdata1/ diff --git a/docs/hypernode-platform/mysql/how-to-use-mysql-on-hypernode.md b/docs/hypernode-platform/mysql/how-to-use-mysql-on-hypernode.md index e7ebad88..79f9814e 100644 --- a/docs/hypernode-platform/mysql/how-to-use-mysql-on-hypernode.md +++ b/docs/hypernode-platform/mysql/how-to-use-mysql-on-hypernode.md @@ -1,9 +1,9 @@ --- myst: html_meta: - description: This article explains how to use MySQL on Hypernode. Factors, such - as finding your credentials, whitelisting your IP address and using PHPMyAdmin - are included. + description: This article explains how to use MySQL on Hypernode, from finding + your credentials, whitelisting your IP address to using PHPMyAdmin. + title: How to use MySQL on Hypernode? redirect_from: - /en/hypernode/mysql/how-to-use-mysql-on-hypernode/ - /knowledgebase/using-mysql-on-hypernode/ diff --git a/docs/hypernode-platform/mysql/how-to-use-phpmyadmin.md b/docs/hypernode-platform/mysql/how-to-use-phpmyadmin.md index 6af161e6..48a47804 100644 --- a/docs/hypernode-platform/mysql/how-to-use-phpmyadmin.md +++ b/docs/hypernode-platform/mysql/how-to-use-phpmyadmin.md @@ -1,8 +1,9 @@ --- myst: html_meta: - description: 'In this article, we provide you with a detailed roadmap about how - you can use PHPMyAdmin and how to create a database dump. ' + description: This article will explain how you can use PHPMyAdmin and how to create + a database dump. + title: How to use PHPMyAdmin? | Hypernode redirect_from: - /en/hypernode/mysql/how-to-use-phpmyadmin/ - /knowledgebase/use-phpmyadmin/ diff --git a/docs/hypernode-platform/nginx.md b/docs/hypernode-platform/nginx.md index f70b49df..a5224333 100644 --- a/docs/hypernode-platform/nginx.md +++ b/docs/hypernode-platform/nginx.md @@ -1,4 +1,9 @@ --- +myst: + html_meta: + description: This table of contents gives you a summary of all Hypernode platform + knowledge base articles that include information about NGINX. + title: NGINX | Hypernode platform redirect_from: - /en/hypernode/nginx/ --- diff --git a/docs/hypernode-platform/nginx/basic-authentication-on-hypernode-development-plans.md b/docs/hypernode-platform/nginx/basic-authentication-on-hypernode-development-plans.md index 001331c3..cec7a82a 100644 --- a/docs/hypernode-platform/nginx/basic-authentication-on-hypernode-development-plans.md +++ b/docs/hypernode-platform/nginx/basic-authentication-on-hypernode-development-plans.md @@ -1,8 +1,9 @@ --- myst: html_meta: - description: 'Development Hypernodes are by default configured to offer a Basic - Authentication challenge to all visitors. Read all about it in this article. ' + description: 'Development Hypernodes are configured to offer a Basic Authentication + challenge to all visitors. Read everything about this basic Authentication. ' + title: Enable basic authentication on Hypernode development plans redirect_from: - /en/hypernode/nginx/basic-authentication-on-hypernode-development-plans/ - /knowledgebase/basic-authentication-on-development-plans/ diff --git a/docs/hypernode-platform/nginx/how-to-add-custom-http-headers-to-a-file-or-location.md b/docs/hypernode-platform/nginx/how-to-add-custom-http-headers-to-a-file-or-location.md index f085b0d2..f6d5a474 100644 --- a/docs/hypernode-platform/nginx/how-to-add-custom-http-headers-to-a-file-or-location.md +++ b/docs/hypernode-platform/nginx/how-to-add-custom-http-headers-to-a-file-or-location.md @@ -1,8 +1,9 @@ --- myst: html_meta: - description: 'By adding HTTP headers to a file or location, you can provide additional - information for several reasons. Find out how to add customer HTTP headers here. ' + description: 'In some cases, you may wish to add additional HTTP headers to a + file or location. Read how to do this, in this article. ' + title: How to add custom http headers to a file or location? Hypernode redirect_from: - /en/hypernode/nginx/how-to-add-custom-http-headers-to-a-file-or-location/ --- diff --git a/docs/hypernode-platform/nginx/how-to-block-allow-ip-addresses-in-nginx.md b/docs/hypernode-platform/nginx/how-to-block-allow-ip-addresses-in-nginx.md index a4724873..22cfab81 100644 --- a/docs/hypernode-platform/nginx/how-to-block-allow-ip-addresses-in-nginx.md +++ b/docs/hypernode-platform/nginx/how-to-block-allow-ip-addresses-in-nginx.md @@ -1,8 +1,9 @@ --- myst: html_meta: - description: 'In Nginx blocking and allowing IP-addresses is done using the access - module. Find thorough guidelines in this article. ' + description: 'Hypernode makes use of Nginx. Blocking and allowing IP-addresses + is easily done in Nginx. Learn how in this article. ' + title: How to block IP addresses in NGINX? | Hypernode redirect_from: - /en/hypernode/nginx/how-to-block-allow-ip-addresses-in-nginx/ - /knowledgebase/blocking-allowing-ip-addresses-in-nginx/ diff --git a/docs/hypernode-platform/nginx/how-to-block-spammers-and-scanners.md b/docs/hypernode-platform/nginx/how-to-block-spammers-and-scanners.md index ae79294d..21eaff75 100644 --- a/docs/hypernode-platform/nginx/how-to-block-spammers-and-scanners.md +++ b/docs/hypernode-platform/nginx/how-to-block-spammers-and-scanners.md @@ -1,8 +1,10 @@ --- myst: html_meta: - description: It is increasingly common for spammers to crawl your site and a slow - site for real visitors. Here are some strategies for finding and blocking them. + description: It is increasingly common for spammers to crawl your site and it + can be hard to trace them down. Here are some strategies for finding and blocking + them. + title: How to block spammers and scanners? | Hypernode redirect_from: - /en/support/solutions/articles/48001165533-how-to-block-spammers-and-scanners/ --- diff --git a/docs/hypernode-platform/nginx/how-to-block-user-agents-and-referrer-sites.md b/docs/hypernode-platform/nginx/how-to-block-user-agents-and-referrer-sites.md index af979cd2..4cc8270f 100644 --- a/docs/hypernode-platform/nginx/how-to-block-user-agents-and-referrer-sites.md +++ b/docs/hypernode-platform/nginx/how-to-block-user-agents-and-referrer-sites.md @@ -1,8 +1,9 @@ --- myst: html_meta: - description: 'Find a thorough step by step guide on blocking user agents and referrer - sites here. ' + description: "Read in this article how you can both block user agents, as referrer\ + \ sites. We've got you. " + title: How to block user agents and referrer sites? | Hypernode redirect_from: - /en/hypernode/nginx/how-to-block-user-agents-and-referrer-sites/ - /knowledgebase/blocking-user-agents-referrers/ diff --git a/docs/hypernode-platform/nginx/how-to-block-your-webshop-for-specific-countries.md b/docs/hypernode-platform/nginx/how-to-block-your-webshop-for-specific-countries.md index f5a39d5f..cbf8ddbe 100644 --- a/docs/hypernode-platform/nginx/how-to-block-your-webshop-for-specific-countries.md +++ b/docs/hypernode-platform/nginx/how-to-block-your-webshop-for-specific-countries.md @@ -1,8 +1,10 @@ --- myst: html_meta: - description: Sometimes spam and abuse comes from specific countries. You could - block these countries, if needed. This article explains how to block them specifically. + description: A lot of spam and abuse comes from specific countries. If you don’t + do business there, you could block these countries. This article explains how + to. + title: How to block your webshop for specific countries? | Hypernode redirect_from: - /en/hypernode/nginx/how-to-block-your-webshop-for-specific-countries/ --- diff --git a/docs/hypernode-platform/nginx/how-to-configure-nginx-for-a-multistore.md b/docs/hypernode-platform/nginx/how-to-configure-nginx-for-a-multistore.md index 75b6df9b..9371e34b 100644 --- a/docs/hypernode-platform/nginx/how-to-configure-nginx-for-a-multistore.md +++ b/docs/hypernode-platform/nginx/how-to-configure-nginx-for-a-multistore.md @@ -1,8 +1,9 @@ --- myst: html_meta: - description: Using domains or subdirectories for storefronts can be done by configuring - your Magento shop. Read about how to configure the store codes in Nginx here. + description: 'Read how to configure Nginx for a multistore in this in depth step-by-step + guide, starting with preparing your Magento shop. ' + title: How to configure NGINX for a multistore? | Hypernode redirect_from: - /en/hypernode/nginx/how-to-configure-nginx-for-a-multistore/ --- diff --git a/docs/hypernode-platform/nginx/how-to-configure-your-shop-to-only-use-https.md b/docs/hypernode-platform/nginx/how-to-configure-your-shop-to-only-use-https.md index a55f5d83..3a239128 100644 --- a/docs/hypernode-platform/nginx/how-to-configure-your-shop-to-only-use-https.md +++ b/docs/hypernode-platform/nginx/how-to-configure-your-shop-to-only-use-https.md @@ -1,9 +1,10 @@ --- myst: html_meta: - description: Hypernode recommends serving your site only over HTTPS traffic for - more safety and a better search index optimization. Read how to do so in this - article. + description: 'We recommend serving your site only over HTTPS traffic. This is + safer and is better for search index optimization. Configure your shop with + these steps. ' + title: How to configure your shop to only use https? | Hypernode redirect_from: - /en/hypernode/nginx/how-to-configure-your-shop-to-only-use-https/ - /knowledgebase/configuring-shop-use-https/ diff --git a/docs/hypernode-platform/nginx/how-to-create-a-reusable-config-to-include-in-custom-snippets.md b/docs/hypernode-platform/nginx/how-to-create-a-reusable-config-to-include-in-custom-snippets.md index 4f6516cf..4793b076 100644 --- a/docs/hypernode-platform/nginx/how-to-create-a-reusable-config-to-include-in-custom-snippets.md +++ b/docs/hypernode-platform/nginx/how-to-create-a-reusable-config-to-include-in-custom-snippets.md @@ -1,9 +1,9 @@ --- myst: html_meta: - description: 'You can use include statement in Nginx to avoid duplicate configurations - for multiple locations. In this article we explain the different options for - you. ' + description: In Nginx you can use the include statement to avoid duplicate configuration + for multiple locations. In this article we describe some options. + title: Create a reusable config to include in custom snippets? redirect_from: - /en/hypernode/nginx/how-to-create-a-reusable-config-to-include-in-custom-snippets/ - /knowledgebase/create-reusable-config-for-custom-snippets/ diff --git a/docs/hypernode-platform/nginx/how-to-deny-access-to-locations-and-directories.md b/docs/hypernode-platform/nginx/how-to-deny-access-to-locations-and-directories.md index bbdf11ba..1457f703 100644 --- a/docs/hypernode-platform/nginx/how-to-deny-access-to-locations-and-directories.md +++ b/docs/hypernode-platform/nginx/how-to-deny-access-to-locations-and-directories.md @@ -1,8 +1,9 @@ --- myst: html_meta: - description: In this article we explain how to protect a directory from being - accessed through the web, create a location and deny access to it. + description: 'If you want to protect a directory from being accessed through the + web, create a location and deny access to it. Use the commandline here. ' + title: How to deny access to locations and directories? | Hypernode redirect_from: - /en/hypernode/nginx/how-to-deny-access-to-locations-and-directories/ - /knowledgebase/deny-access-locations-directories/ diff --git a/docs/hypernode-platform/nginx/how-to-find-the-the-top-10-visitors-by-parsing-the-nginx-access-logs.md b/docs/hypernode-platform/nginx/how-to-find-the-the-top-10-visitors-by-parsing-the-nginx-access-logs.md index 4dc44027..fc0e2ecc 100644 --- a/docs/hypernode-platform/nginx/how-to-find-the-the-top-10-visitors-by-parsing-the-nginx-access-logs.md +++ b/docs/hypernode-platform/nginx/how-to-find-the-the-top-10-visitors-by-parsing-the-nginx-access-logs.md @@ -1,8 +1,10 @@ --- myst: html_meta: - description: 'Having statistics on the top 10 visitors could be very usefull. - Read here how you can easily use the Nginx access logging to find out. ' + description: 'To find the top 10 visitors of your Magento shop, you can easily + use the Nginx access logging tot get these statistics. Read all about it in + this article. ' + title: Find the top 10 visitors by parsing the NGINX access logs redirect_from: - /en/hypernode/nginx/how-to-find-the-the-top-10-visitors-by-parsing-the-nginx-access-logs/ --- diff --git a/docs/hypernode-platform/nginx/how-to-protect-your-magento-store-with-a-password-in-nginx.md b/docs/hypernode-platform/nginx/how-to-protect-your-magento-store-with-a-password-in-nginx.md index d4a9e5d9..f76c3d84 100644 --- a/docs/hypernode-platform/nginx/how-to-protect-your-magento-store-with-a-password-in-nginx.md +++ b/docs/hypernode-platform/nginx/how-to-protect-your-magento-store-with-a-password-in-nginx.md @@ -1,8 +1,9 @@ --- myst: html_meta: - description: 'To protect your Magento shop, you can use a password in Nginx. Read - about restricing access to a directory, specific domain or more in this article. ' + description: 'Keep your shop secure, by learning how to protect your Magento store + with a Password in Nginx. ' + title: Protect a Magento store with a password in NGINX | Hypernode redirect_from: - /en/hypernode/nginx/how-to-protect-your-magento-store-with-a-password-in-nginx/ - /knowledgebase/protect-a-directory-with-a-password-in-nginx/ diff --git a/docs/hypernode-platform/nginx/how-to-redirect-from-or-to-www.md b/docs/hypernode-platform/nginx/how-to-redirect-from-or-to-www.md index 5ec49e2d..36b533cb 100644 --- a/docs/hypernode-platform/nginx/how-to-redirect-from-or-to-www.md +++ b/docs/hypernode-platform/nginx/how-to-redirect-from-or-to-www.md @@ -1,9 +1,9 @@ --- myst: html_meta: - description: Some shop owners prefer a domain name starting with www, others prefer - without. Many constructions are possible. Check out how to redirect from or - to WWW here. + description: 'Some shop owners prefer a domain name starting with www, others + prefer without. Read how to redirect from or to WWW in this article. ' + title: How to redirect from or to www? | Hypernode redirect_from: - /en/hypernode/nginx/how-to-redirect-from-or-to-www/ - /knowledgebase/redirect-from-or-to-www/ diff --git a/docs/hypernode-platform/nginx/how-to-resolve-rate-limited-requests-429-too-many-requests.md b/docs/hypernode-platform/nginx/how-to-resolve-rate-limited-requests-429-too-many-requests.md index 96d23f71..0bf616cc 100644 --- a/docs/hypernode-platform/nginx/how-to-resolve-rate-limited-requests-429-too-many-requests.md +++ b/docs/hypernode-platform/nginx/how-to-resolve-rate-limited-requests-429-too-many-requests.md @@ -1,8 +1,10 @@ --- myst: html_meta: - description: This article explains the differences between rate limiting methods - and show you how to find which one applies and if needed, how to override them. + description: This article will explain the differences between the different rate-limiting + methods, how to find which rate-limiting method applies and how to override + them. + title: How to Resolve 429 Too Many Requests | Rate Limited Requests redirect_from: - /en/hypernode/nginx/how-to-resolve-rate-limited-requests-429-too-many-requests/ - /knowledgebase/resolving-429-many-requests/ diff --git a/docs/hypernode-platform/nginx/how-to-restrict-access-to-your-admin-area.md b/docs/hypernode-platform/nginx/how-to-restrict-access-to-your-admin-area.md index d58cd5ff..22027b9a 100644 --- a/docs/hypernode-platform/nginx/how-to-restrict-access-to-your-admin-area.md +++ b/docs/hypernode-platform/nginx/how-to-restrict-access-to-your-admin-area.md @@ -1,9 +1,9 @@ --- myst: html_meta: - description: It's important to restrict access to your Magento admin panel to - keep hackers from having access to all your data. In this article we explain - how to do so. + description: 'It is very important to restrict access to your Magento admin panel. + Find out how to restrict access to your admin area. ' + title: How to restrict access to your admin area? | Hypernode redirect_from: - /en/hypernode/nginx/how-to-restrict-access-to-your-admin-area/ --- diff --git a/docs/hypernode-platform/nginx/how-to-rewrite-a-trailing-slash-for-seo-purposes.md b/docs/hypernode-platform/nginx/how-to-rewrite-a-trailing-slash-for-seo-purposes.md index 70274390..9a86f8b4 100644 --- a/docs/hypernode-platform/nginx/how-to-rewrite-a-trailing-slash-for-seo-purposes.md +++ b/docs/hypernode-platform/nginx/how-to-rewrite-a-trailing-slash-for-seo-purposes.md @@ -1,8 +1,10 @@ --- myst: html_meta: - description: Rewriting trailing slash for a better result in search engines requires - some Nginx configuration. In this article we explain how to rewrite them. + description: 'Search engines don’t like duplicate content. To rewrite trailing + slashes some additional Nginx configuration is required. Follow these steps + to rewrite them. ' + title: How to rewrite a trailing slash for SEO? | Hypernode redirect_from: - /en/hypernode/nginx/how-to-rewrite-a-trailing-slash-for-seo-purposes/ --- diff --git a/docs/hypernode-platform/nginx/how-to-set-the-server-name-in-nginx.md b/docs/hypernode-platform/nginx/how-to-set-the-server-name-in-nginx.md index 404c3d64..706b6643 100644 --- a/docs/hypernode-platform/nginx/how-to-set-the-server-name-in-nginx.md +++ b/docs/hypernode-platform/nginx/how-to-set-the-server-name-in-nginx.md @@ -1,8 +1,9 @@ --- myst: html_meta: - description: Hypernode makes use of Nginx for better performance and to allow - more visitors. This article explains how to set the server name in Nginx. + description: Hypernode makes use of Nginx. This article explains how to set the + server name in Nginx. + title: How to set a server name in NGINX? | Hypernode redirect_from: - /en/hypernode/nginx/how-to-set-the-server-name-in-nginx/ --- diff --git a/docs/hypernode-platform/nginx/how-to-speed-up-your-magento-shop-by-tuning-gzip-compression.md b/docs/hypernode-platform/nginx/how-to-speed-up-your-magento-shop-by-tuning-gzip-compression.md index 757c4c91..ea19e844 100644 --- a/docs/hypernode-platform/nginx/how-to-speed-up-your-magento-shop-by-tuning-gzip-compression.md +++ b/docs/hypernode-platform/nginx/how-to-speed-up-your-magento-shop-by-tuning-gzip-compression.md @@ -1,9 +1,9 @@ --- myst: html_meta: - description: On Hypernodes, GZIP Compression is already configured to compress - responses larger than 1000 bytes. For experts however, it is possible to make - your own adjustments to tune GZIP Compression. + description: 'You can speed up your Magento shop by Tuning Gzip Compression. Read + how, in this article. ' + title: How to speed up a Magento shop by tuning GZIP compression? redirect_from: - /en/hypernode/nginx/how-to-speed-up-your-magento-shop-by-tuning-gzip-compression/ --- diff --git a/docs/hypernode-platform/nginx/how-to-unblock-requests-to-sql-and-archive-files-on-your-hypernode.md b/docs/hypernode-platform/nginx/how-to-unblock-requests-to-sql-and-archive-files-on-your-hypernode.md index c0342074..4ee9efe3 100644 --- a/docs/hypernode-platform/nginx/how-to-unblock-requests-to-sql-and-archive-files-on-your-hypernode.md +++ b/docs/hypernode-platform/nginx/how-to-unblock-requests-to-sql-and-archive-files-on-your-hypernode.md @@ -1,8 +1,9 @@ --- myst: html_meta: - description: By default .sql files and archive files are blocked on Hypernode. - This article explains how you can unblock those files and make them downloadable + description: 'Read in this article how to ublock requests to sql and archive files + on your Hypernode. ' + title: How to unblock requests to SQL and archive files? | Hypernode redirect_from: - /en/hypernode/nginx/how-to-unblock-requests-to-sql-and-archive-files/ --- diff --git a/docs/hypernode-platform/nginx/how-to-use-nginx.md b/docs/hypernode-platform/nginx/how-to-use-nginx.md index d1c7144a..a75edafb 100644 --- a/docs/hypernode-platform/nginx/how-to-use-nginx.md +++ b/docs/hypernode-platform/nginx/how-to-use-nginx.md @@ -1,8 +1,9 @@ --- myst: html_meta: - description: 'Using Nginx instead of Apache increases performance and allows more - visitors. Read here how to use Nginx on Hypernode. ' + description: 'At Hypernode we’ve taken great care to tweak the Nginx server for + optimal performance and usability. Find out how to use Nginx. ' + title: How to use NGINX? | Hypernode redirect_from: - /en/hypernode/nginx/how-to-use-nginx/ --- diff --git a/docs/hypernode-platform/nginx/hypernode-managed-vhosts.md b/docs/hypernode-platform/nginx/hypernode-managed-vhosts.md index eeab91c2..2c8d1f4c 100644 --- a/docs/hypernode-platform/nginx/hypernode-managed-vhosts.md +++ b/docs/hypernode-platform/nginx/hypernode-managed-vhosts.md @@ -1,9 +1,9 @@ --- myst: html_meta: - description: A Hypernode Managed Vhost system is a configuration allowing you - to setup multiple domainnames with an own independant configuration. Reall all - about it here. + description: Learn all about The Hypernode Managed Vhosts (HMV). The system is + an easy to use, yet powerful, system of configuring Nginx on Hypernode. + title: How to enable and manage Hypernode Vhosts? redirect_from: - /en/hypernode/nginx/hypernode-managed-vhosts/ --- diff --git a/docs/hypernode-platform/php.md b/docs/hypernode-platform/php.md index 47bd57fc..eba083bd 100644 --- a/docs/hypernode-platform/php.md +++ b/docs/hypernode-platform/php.md @@ -1,4 +1,9 @@ --- +myst: + html_meta: + description: This table of contents gives you a summary of all Hypernode platform + knowledge base articles that include information about PHP. + title: PHP | Hypernode platform redirect_from: - /en/hypernode/php/ --- diff --git a/docs/hypernode-platform/php/how-to-flush-the-php-opcache.md b/docs/hypernode-platform/php/how-to-flush-the-php-opcache.md index c341a1be..ea5723dc 100644 --- a/docs/hypernode-platform/php/how-to-flush-the-php-opcache.md +++ b/docs/hypernode-platform/php/how-to-flush-the-php-opcache.md @@ -1,9 +1,9 @@ --- myst: html_meta: - description: 'In order to keep your backend to suffer from inaccessibility, you - need to be able to flush the OPcache from the command line. Read here how to - do so. ' + description: 'You need to be able to flush the OPcache from the command line in + case of errors. Follow these steps to flush the PHP OPcade in the CLI. ' + title: How to flush the PHP OPcache? | Hypernode redirect_from: - /en/hypernode/php/how-to-flush-the-php-opcache/ --- diff --git a/docs/hypernode-platform/php/how-to-override-php-settings.md b/docs/hypernode-platform/php/how-to-override-php-settings.md index 32060f8a..3902b97a 100644 --- a/docs/hypernode-platform/php/how-to-override-php-settings.md +++ b/docs/hypernode-platform/php/how-to-override-php-settings.md @@ -1,9 +1,9 @@ --- myst: html_meta: - description: To use certain software inside your Magento shop, new PHP settings - are required. 'Max_execution_time' for example. Here's how to override default - PHP settings. + description: 'Sometimes you want to use software inside your Magento shop, that + require some other settings for PHP. Find out how to override PHP settings. ' + title: How to override PHP settings? | Hypernode redirect_from: - /en/hypernode/php/how-to-override-php-settings/ --- diff --git a/docs/hypernode-platform/php/how-to-resolve-502-gateway-errors.md b/docs/hypernode-platform/php/how-to-resolve-502-gateway-errors.md index 4a3f5b15..8f1cdb4d 100644 --- a/docs/hypernode-platform/php/how-to-resolve-502-gateway-errors.md +++ b/docs/hypernode-platform/php/how-to-resolve-502-gateway-errors.md @@ -1,9 +1,9 @@ --- myst: html_meta: - description: A 502 Bad Gateway error indicates there has been an internal error - within PHP, which resulted in the site not being rendered. Check out how to - solve it here. + description: 'A 502 Bad Gateway error indicates there has been an internal error + within PHP. Learn how to resolve 502 Gateway errors. ' + title: How to resolve 502 Gateway errors? | Hypernode redirect_from: - /en/hypernode/php/how-to-resolve-502-gateway-errors/ --- diff --git a/docs/hypernode-platform/php/supported-php-versions-and-how-to-change-them-on-hypernode.md b/docs/hypernode-platform/php/supported-php-versions-and-how-to-change-them-on-hypernode.md index b8aceca2..c21f6e97 100644 --- a/docs/hypernode-platform/php/supported-php-versions-and-how-to-change-them-on-hypernode.md +++ b/docs/hypernode-platform/php/supported-php-versions-and-how-to-change-them-on-hypernode.md @@ -1,8 +1,9 @@ --- myst: html_meta: - description: 'On Hypernode you can choose from a range of PHP versions. Check - out which ones and how to change them here. ' + description: On Hypernode you can choose from a range of PHP versions. Check out + which ones and how to change them here. + title: Support PHP versions and how to change them on Hypernode redirect_from: - /en/hypernode/php/supported-php-versions-and-how-to-change-them-on-hypernode/ - /knowledgebase/php-versions-magento-shop-hypernode/ diff --git a/docs/hypernode-platform/php/what-limits-apply-to-active-php-requests-per-ip.md b/docs/hypernode-platform/php/what-limits-apply-to-active-php-requests-per-ip.md index ee72ad8e..7b8bdb54 100644 --- a/docs/hypernode-platform/php/what-limits-apply-to-active-php-requests-per-ip.md +++ b/docs/hypernode-platform/php/what-limits-apply-to-active-php-requests-per-ip.md @@ -1,9 +1,9 @@ --- myst: html_meta: - description: Hypernodes uses Nginx and PHP-FPM for processing and serving PHP - pages causing a few limitations to PHP requests per IP. Read all about the details - here. + description: 'The amount of workers available on a Hypernode depends on how many + available CPU cores the server has. Learn what limits apply to active PHP requests. ' + title: What limits apply to active PHP requests per IP? | Hypernode redirect_from: - /en/support/solutions/articles/48000967652-what-limits-apply-to-active-php-requests-per-ip/ --- diff --git a/docs/hypernode-platform/ssh.md b/docs/hypernode-platform/ssh.md index 77581d95..ee142705 100644 --- a/docs/hypernode-platform/ssh.md +++ b/docs/hypernode-platform/ssh.md @@ -1,4 +1,9 @@ --- +myst: + html_meta: + description: This table of contents gives you a summary of all Hypernode platform + knowledge base articles that include information about SSH. + title: SSH | Hypernode platform redirect_from: - /en/hypernode/ssh/ --- diff --git a/docs/hypernode-platform/ssh/how-to-log-in-to-the-hypernode-with-ssh.md b/docs/hypernode-platform/ssh/how-to-log-in-to-the-hypernode-with-ssh.md index 8f5e8a4a..1aacf74c 100644 --- a/docs/hypernode-platform/ssh/how-to-log-in-to-the-hypernode-with-ssh.md +++ b/docs/hypernode-platform/ssh/how-to-log-in-to-the-hypernode-with-ssh.md @@ -1,8 +1,9 @@ --- myst: html_meta: - description: 'To access a new Hypernode, you need to use an SSH client. This tutorial - shows how to log in to the Hypernode with PuTTY or Terminal using SSH. ' + description: This tutorial shows how to log in to the Hypernode with PuTTY (for + Windows users) or Terminal (Linux and Mac OSX) using SSH. + title: How to log into a Hypernode with SSH? redirect_from: - /en/hypernode/ssh/how-to-log-in-to-the-hypernode-with-ssh/ - /knowledgebase/login-hypernode-ssh/ diff --git a/docs/hypernode-platform/ssh/how-to-use-ssh-keys-on-hypernode.md b/docs/hypernode-platform/ssh/how-to-use-ssh-keys-on-hypernode.md index 149de82b..73c2ac3b 100644 --- a/docs/hypernode-platform/ssh/how-to-use-ssh-keys-on-hypernode.md +++ b/docs/hypernode-platform/ssh/how-to-use-ssh-keys-on-hypernode.md @@ -3,6 +3,7 @@ myst: html_meta: description: This tutorial shows how to create a keypair and use PuTTY (for Windows users) or Terminal (Linux and Mac OSX) to log in to your Hypernode. + title: How to use SSH keys on a Hypernode? redirect_from: - /en/hypernode/ssh/how-to-use-ssh-keys-on-hypernode/ - /knowledgebase/use-ssh-keys-on-hypernode/ diff --git a/docs/hypernode-platform/ssl.md b/docs/hypernode-platform/ssl.md index 09cf4fa2..e925f975 100644 --- a/docs/hypernode-platform/ssl.md +++ b/docs/hypernode-platform/ssl.md @@ -1,4 +1,9 @@ --- +myst: + html_meta: + description: This table of contents gives you a summary of all Hypernode platform + knowledge base articles that include information about SSL. + title: SSL | Hypernode platform redirect_from: - /en/hypernode/ssl/ --- diff --git a/docs/hypernode-platform/ssl/how-to-upgrade-your-ssl-settings-to-an-a.md b/docs/hypernode-platform/ssl/how-to-upgrade-your-ssl-settings-to-an-a.md index 1c7aafe1..6d8e309d 100644 --- a/docs/hypernode-platform/ssl/how-to-upgrade-your-ssl-settings-to-an-a.md +++ b/docs/hypernode-platform/ssl/how-to-upgrade-your-ssl-settings-to-an-a.md @@ -1,8 +1,10 @@ --- myst: html_meta: - description: Many developers validate their SSL setting on Hypernode with Qualys - SSL labs. This article explains how to get an A+ rating for your SSL configuration. + description: Developers use the Qualys SSL labs server test to validate the SSL + settings on their node. Learn how to get an A+ rating for your Hypernode SSL + configuration. + title: How to Upgrade Your SSL Settings to an A+? | Hypernode redirect_from: - /en/hypernode/ssl/how-to-upgrade-your-ssl-settings-to-an-a-plus/ --- diff --git a/docs/hypernode-platform/ssl/how-to-use-lets-encrypt-on-hypernode.md b/docs/hypernode-platform/ssl/how-to-use-lets-encrypt-on-hypernode.md index d5348558..050ae01d 100644 --- a/docs/hypernode-platform/ssl/how-to-use-lets-encrypt-on-hypernode.md +++ b/docs/hypernode-platform/ssl/how-to-use-lets-encrypt-on-hypernode.md @@ -1,9 +1,9 @@ --- myst: html_meta: - description: Let's Encrypt is a CA Authority that provides free SSL certificates - through domain validation and automated retrieval. Find here how to use it on - Hypernode. + description: "Use Let's Encrypt for free SSL certificates. Want to know more about\ + \ how to use let's Encrypt on Hypernode? " + title: How to use Let’s Encrypt on Hypernode? redirect_from: - /en/hypernode/ssl/how-to-use-let-s-encrypt-on-hypernode/ - /knowledgebase/use-lets-encrypt-hypernode/ diff --git a/docs/hypernode-platform/ssl/how-to-use-ssl-certificates-on-your-hypernode-when-ordered-via-hypernode-com.md b/docs/hypernode-platform/ssl/how-to-use-ssl-certificates-on-your-hypernode-when-ordered-via-hypernode-com.md index dba850ce..7078d06f 100644 --- a/docs/hypernode-platform/ssl/how-to-use-ssl-certificates-on-your-hypernode-when-ordered-via-hypernode-com.md +++ b/docs/hypernode-platform/ssl/how-to-use-ssl-certificates-on-your-hypernode-when-ordered-via-hypernode-com.md @@ -1,8 +1,9 @@ --- myst: html_meta: - description: 'This article explains how to install SSL certificates on your Hypernode - when you have order them via hypernode.com. ' + description: 'This article explains how to install SSL certificates on your Hypernode. + An SSL certificate keeps online interactions and transactions private. ' + title: How to use SSL certificates when ordered via Hypernode? redirect_from: - /en/hypernode/ssl/how-to-use-ssl-certificates-on-your-hypernode-when-ordered-via-hypernode-com/ --- diff --git a/docs/hypernode-platform/ssl/how-to-validate-your-ssl-certificate-and-more-frequently-asked-questions-about-ssl.md b/docs/hypernode-platform/ssl/how-to-validate-your-ssl-certificate-and-more-frequently-asked-questions-about-ssl.md index 726f9a1e..9af30fc4 100644 --- a/docs/hypernode-platform/ssl/how-to-validate-your-ssl-certificate-and-more-frequently-asked-questions-about-ssl.md +++ b/docs/hypernode-platform/ssl/how-to-validate-your-ssl-certificate-and-more-frequently-asked-questions-about-ssl.md @@ -1,8 +1,10 @@ --- myst: html_meta: - description: Read here how to validate your SSL certificate and more frequently - asked question about SSL. Only available in Dutch. + description: 'At Hypernode you can request various SSL certificates via the Service + Panel. Learn more about how to validate your certificate and other questions + about SSL. ' + title: How to validate your SSL certificate? | SSL FAQ | Hypernode redirect_from: - /en/hypernode/ssl/how-to-validate-your-ssl-certificate-and-more-frequently-asked-questions-about-ssl/ --- diff --git a/docs/hypernode-platform/tools.md b/docs/hypernode-platform/tools.md index 24d27765..85d66b50 100644 --- a/docs/hypernode-platform/tools.md +++ b/docs/hypernode-platform/tools.md @@ -1,4 +1,9 @@ --- +myst: + html_meta: + description: This table of contents gives you a summary of all Hypernode platform + knowledge base articles that include information about tools. + title: Tools | Hypernode platform redirect_from: - /en/hypernode/tools/ --- diff --git a/docs/hypernode-platform/tools/how-to-configure-automatic-logfile-rotation.md b/docs/hypernode-platform/tools/how-to-configure-automatic-logfile-rotation.md index 77d147a2..8d345296 100644 --- a/docs/hypernode-platform/tools/how-to-configure-automatic-logfile-rotation.md +++ b/docs/hypernode-platform/tools/how-to-configure-automatic-logfile-rotation.md @@ -1,8 +1,9 @@ --- myst: html_meta: - description: This article explains how to use hypernode-auto-logrotate, a tool - that automatically rotates log files, which helps to avoid disk space issues. + description: 'The hypernode-auto-logrotate is a command line tool that automatically + rotates log files. Learn how to configure Automatic Logfile Rotation. ' + title: How to configure automatic logfile rotation? | Hypernode redirect_from: - /en/hypernode/tools/how-to-configure-automatic-logfile-rotation/ --- diff --git a/docs/hypernode-platform/tools/how-to-configure-lesti-fpc.md b/docs/hypernode-platform/tools/how-to-configure-lesti-fpc.md index 37299a49..80d072ff 100644 --- a/docs/hypernode-platform/tools/how-to-configure-lesti-fpc.md +++ b/docs/hypernode-platform/tools/how-to-configure-lesti-fpc.md @@ -1,9 +1,9 @@ --- myst: html_meta: - description: Using Lesti::FPC for Full Page Caching on Hypernode is recommended, - as it is faster than using the default file caching mechanism. Read here how - to do so + description: 'In this article we will explain how to configure Lesti::FPC and + how to use it on Hypernode. ' + title: How to Configure Lesti::FPC? | Hypernode redirect_from: - /en/hypernode/tools/how-to-configure-lesti-fpc/ --- diff --git a/docs/hypernode-platform/tools/how-to-copy-your-hypernode-to-another-hypernode.md b/docs/hypernode-platform/tools/how-to-copy-your-hypernode-to-another-hypernode.md index 877f7f3b..cf406496 100644 --- a/docs/hypernode-platform/tools/how-to-copy-your-hypernode-to-another-hypernode.md +++ b/docs/hypernode-platform/tools/how-to-copy-your-hypernode-to-another-hypernode.md @@ -1,4 +1,9 @@ --- +myst: + html_meta: + description: 'If you want to make a copy of your Hypernode to another Hypernode, + whether it’s a development node or not, here’s a guide on how to do it. ' + title: How to copy your Hypernode to another Hypernode? redirect_from: - /en/hypernode/tools/how-to-copy-your-hypernode-to-another-hypernode/ --- diff --git a/docs/hypernode-platform/tools/how-to-deploy-your-application-using-hypernode-deploy-v1.md b/docs/hypernode-platform/tools/how-to-deploy-your-application-using-hypernode-deploy-v1.md index 14b48476..d134134f 100644 --- a/docs/hypernode-platform/tools/how-to-deploy-your-application-using-hypernode-deploy-v1.md +++ b/docs/hypernode-platform/tools/how-to-deploy-your-application-using-hypernode-deploy-v1.md @@ -1,4 +1,9 @@ --- +myst: + html_meta: + description: 'This guide will walk you through the process of setting up a continues + integration and delivery/deployment pipeline for a Magento 2 shop. ' + title: How to deploy your application using Hypernode Deploy? redirect_from: - /en/support/solutions/articles/48001219280-how-to-deploy-your-application-using-hypernode-deploy-v1/ --- diff --git a/docs/hypernode-platform/tools/how-to-flush-the-redis-cache.md b/docs/hypernode-platform/tools/how-to-flush-the-redis-cache.md index 8ec77e25..74b9bc72 100644 --- a/docs/hypernode-platform/tools/how-to-flush-the-redis-cache.md +++ b/docs/hypernode-platform/tools/how-to-flush-the-redis-cache.md @@ -1,9 +1,9 @@ --- myst: html_meta: - description: 'Using Redis for caching on Hypernode is recommeded, as it is faster - than using the file caching mechanism that is enabled by default. Read here - how to do so. ' + description: 'We recommend all Hypernode users to use Redis for caching. Learn + how Flush the Redis Cache here. ' + title: How to flush the Redic cache? | Hypernode redirect_from: - /en/hypernode/tools/how-to-flush-the-redis-cache/ --- diff --git a/docs/hypernode-platform/tools/how-to-flush-the-varnish-cache.md b/docs/hypernode-platform/tools/how-to-flush-the-varnish-cache.md index 95bacbe4..0ed7a157 100644 --- a/docs/hypernode-platform/tools/how-to-flush-the-varnish-cache.md +++ b/docs/hypernode-platform/tools/how-to-flush-the-varnish-cache.md @@ -1,9 +1,9 @@ --- myst: html_meta: - description: Flushing the Varnish cache can be done using the Magento backend - panel, but if needed, you might want to be able to flush the cache from the - command line. + description: 'You can flush the cache for a single domain, a specific URL or just + the cache as a whole. Use the following steps. ' + title: How to flush the Varnish cache? | Hypernode redirect_from: - /en/support/solutions/articles/48000982378-how-to-flush-the-varnish-cache/ --- diff --git a/docs/hypernode-platform/tools/how-to-free-up-disk-space.md b/docs/hypernode-platform/tools/how-to-free-up-disk-space.md index ce244466..f3052fa2 100644 --- a/docs/hypernode-platform/tools/how-to-free-up-disk-space.md +++ b/docs/hypernode-platform/tools/how-to-free-up-disk-space.md @@ -1,8 +1,9 @@ --- myst: html_meta: - description: 'When your disk is full, you can try to free up disk space on your - Hypernode before having to upgrade. Check out how to do so here. ' + description: Is your disk full? Before upgrading to a bigger plan you can use + these suggestions to free up disk space on your Hypernode. + title: How to free up disk space on your Hypernode? redirect_from: - /en/hypernode/tools/how-to-free-up-disk-space/ --- diff --git a/docs/hypernode-platform/tools/how-to-migrate-your-shop-to-hypernode.md b/docs/hypernode-platform/tools/how-to-migrate-your-shop-to-hypernode.md index a7cb1077..0a675e2f 100644 --- a/docs/hypernode-platform/tools/how-to-migrate-your-shop-to-hypernode.md +++ b/docs/hypernode-platform/tools/how-to-migrate-your-shop-to-hypernode.md @@ -1,8 +1,9 @@ --- myst: html_meta: - description: 'Congratulations on your new Hypernode! Find out how to migrate your - shop to Hypernode for testing on this page. ' + description: 'If you have a brand new Hypernode, the first step is to migrate + your shop to Hypernode. There are several ways to achieve this, read them here. ' + title: How to migrate your shop to Hypernode? redirect_from: - /en/hypernode/tools/how-to-migrate-your-shop-to-hypernode/ - /knowledgebase/migrating-your-magento-to-hypernode/ diff --git a/docs/hypernode-platform/tools/how-to-solve-redis-error-oom-command-not-allowed-when-used-memory-maxmemory.md b/docs/hypernode-platform/tools/how-to-solve-redis-error-oom-command-not-allowed-when-used-memory-maxmemory.md index 4294e3d5..f3e2390d 100644 --- a/docs/hypernode-platform/tools/how-to-solve-redis-error-oom-command-not-allowed-when-used-memory-maxmemory.md +++ b/docs/hypernode-platform/tools/how-to-solve-redis-error-oom-command-not-allowed-when-used-memory-maxmemory.md @@ -1,8 +1,9 @@ --- myst: html_meta: - description: 'When Magento is trying to store more data in the Redis Cache than - possible, this error appears "OOM command not allowed when used memory > ‘maxmemory’". ' + description: Learn how to solve this Redis Error that appears if Magento is trying + to store more data in the Redis cache then possible. + title: How to Solve Redis Out-of-Memory Error? | Hypernode redirect_from: - /en/hypernode/tools/how-to-solve-redis-error-oom-command-not-allowed-when-used-memory-maxmemory-/ --- diff --git a/docs/hypernode-platform/tools/how-to-use-composer-2-on-your-hypernode.md b/docs/hypernode-platform/tools/how-to-use-composer-2-on-your-hypernode.md index 8e30e7c0..edb467fc 100644 --- a/docs/hypernode-platform/tools/how-to-use-composer-2-on-your-hypernode.md +++ b/docs/hypernode-platform/tools/how-to-use-composer-2-on-your-hypernode.md @@ -1,4 +1,9 @@ --- +myst: + html_meta: + description: 'With Composer, you can easily install, update or remove dependencies. + Read here how to use Composer 2 on our Hypernode platform. ' + title: How to use Componsor 2 on Hypernode? redirect_from: - /en/support/solutions/articles/48001184546-how-to-use-composer-2-on-your-hypernode/ --- diff --git a/docs/hypernode-platform/tools/how-to-use-elasticsearch-on-hypernode.md b/docs/hypernode-platform/tools/how-to-use-elasticsearch-on-hypernode.md index cb567252..aa5c67e5 100644 --- a/docs/hypernode-platform/tools/how-to-use-elasticsearch-on-hypernode.md +++ b/docs/hypernode-platform/tools/how-to-use-elasticsearch-on-hypernode.md @@ -1,9 +1,9 @@ --- myst: html_meta: - description: Elasticsearch can be used to search in your Magento shop without - any external service or configuration. This article explains how to enable and - configure it. + description: 'In this article we’ll explain a bit more about Elasticsearch and + how to enable and configure it on Hypernode. ' + title: How to use ElasticSearch on Hypernode? redirect_from: - /en/hypernode/tools/how-to-use-elasticsearch-on-hypernode/ --- diff --git a/docs/hypernode-platform/tools/how-to-use-hypernode-development-plans.md b/docs/hypernode-platform/tools/how-to-use-hypernode-development-plans.md index c3d81326..5bc93d02 100644 --- a/docs/hypernode-platform/tools/how-to-use-hypernode-development-plans.md +++ b/docs/hypernode-platform/tools/how-to-use-hypernode-development-plans.md @@ -1,9 +1,9 @@ --- myst: html_meta: - description: 'Hypernode offers its customers discounted development plans of all - the regular Hypernode plans for development and testing. Read more about these - plans here. ' + description: 'Development Plans can be used for development and testing. Use this + guide on how to use Hypernode Development Plans. ' + title: How to use Hypernode Development Plans? redirect_from: - /en/hypernode/tools/how-to-use-hypernode-development-plans/ - /knowledgebase/development-plans-for-your-magento-shop/ diff --git a/docs/hypernode-platform/tools/how-to-use-magento-corediff-on-hypernode.md b/docs/hypernode-platform/tools/how-to-use-magento-corediff-on-hypernode.md index d1013974..d00904bd 100644 --- a/docs/hypernode-platform/tools/how-to-use-magento-corediff-on-hypernode.md +++ b/docs/hypernode-platform/tools/how-to-use-magento-corediff-on-hypernode.md @@ -1,9 +1,10 @@ --- myst: html_meta: - description: Magento Corediff is a tool to find unauthorized modifications in - a Magento 1 or 2. As it's installed on all Hypernodes this helps protect and - secure your shop + description: 'Magento Corediff is an open source tool to quickly find unauthorized + modifications in a Magento install. Find out how to use Magento Corediff on + Hypernode. ' + title: How to use Magento Corediff on Hypernode? redirect_from: - /en/hypernode/tools/how-to-use-magento-corediff-on-hypernode/ --- diff --git a/docs/hypernode-platform/tools/how-to-use-mailhog-on-hypernode.md b/docs/hypernode-platform/tools/how-to-use-mailhog-on-hypernode.md index f8eb30c9..b762de1a 100644 --- a/docs/hypernode-platform/tools/how-to-use-mailhog-on-hypernode.md +++ b/docs/hypernode-platform/tools/how-to-use-mailhog-on-hypernode.md @@ -1,9 +1,9 @@ --- myst: html_meta: - description: Debugging outgoing mail issues could require you to inspect all outgoing - mails from a webshop. MailHog is an email testing tool for it, which we explain - here. + description: 'MailHog is an email testing tool for developers to catch all these + emails in a single mailbox. Learn how to use MailHog on Hypernode. ' + title: How to use Mailhog on Hypernode? redirect_from: - /en/hypernode/tools/how-to-use-mailhog-on-hypernode/ - /knowledgebase/how-to-use-mailhog-on-hypernode/ diff --git a/docs/hypernode-platform/tools/how-to-use-node-js-and-npm-on-hypernode.md b/docs/hypernode-platform/tools/how-to-use-node-js-and-npm-on-hypernode.md index 28794702..bab65c98 100644 --- a/docs/hypernode-platform/tools/how-to-use-node-js-and-npm-on-hypernode.md +++ b/docs/hypernode-platform/tools/how-to-use-node-js-and-npm-on-hypernode.md @@ -1,8 +1,9 @@ --- myst: html_meta: - description: This article explains how you can install node.js and NPM on a Hypernode - and how to use this. + description: This article explains how to use and install other versions of Node.js + and also how to install NPM packages on Hypernode. + title: How to Use Node.js and NPM on Hypernode? redirect_from: - /en/hypernode/tools/how-to-use-node-js-and-npm-on-hypernode/ --- diff --git a/docs/hypernode-platform/tools/how-to-use-periodic-tasks-cronjobs-on-hypernode.md b/docs/hypernode-platform/tools/how-to-use-periodic-tasks-cronjobs-on-hypernode.md index df951965..6faa73e5 100644 --- a/docs/hypernode-platform/tools/how-to-use-periodic-tasks-cronjobs-on-hypernode.md +++ b/docs/hypernode-platform/tools/how-to-use-periodic-tasks-cronjobs-on-hypernode.md @@ -1,9 +1,9 @@ --- myst: html_meta: - description: Cronjobs are periodic tasks running in the background of your Hypernode - for maintenance, such as cleaning up logs or importing products. Here's how - to use them. + description: "Cronjobs are periodic tasks that run in the background of your Hypernode.\ + \ We'll help you to set up and use these periodic tasks. " + title: How to Use Periodic Tasks or Cronjobs on Hypernode? redirect_from: - /en/hypernode/tools/how-to-use-periodic-tasks-cronjobs-on-hypernode/ - /knowledgebase/configure-cronjobs-on-hypernode/ diff --git a/docs/hypernode-platform/tools/how-to-use-supervisor.md b/docs/hypernode-platform/tools/how-to-use-supervisor.md index d0532223..7a261681 100644 --- a/docs/hypernode-platform/tools/how-to-use-supervisor.md +++ b/docs/hypernode-platform/tools/how-to-use-supervisor.md @@ -2,8 +2,8 @@ myst: html_meta: description: 'Supervisor enables you to use programs that need to run all the - time on your Hypernode. Supervisor watches your programs and restarts them if - they might fail. ' + time on your Hypernode. Discover how to use supervisor step-by-step. ' + title: How to use Supervisor? | Hypernode redirect_from: - /en/hypernode/tools/how-to-use-supervisor/ --- diff --git a/docs/hypernode-platform/tools/how-to-use-the-hypernode-systemctl-cli-tool.md b/docs/hypernode-platform/tools/how-to-use-the-hypernode-systemctl-cli-tool.md index 69e37be2..8f701645 100644 --- a/docs/hypernode-platform/tools/how-to-use-the-hypernode-systemctl-cli-tool.md +++ b/docs/hypernode-platform/tools/how-to-use-the-hypernode-systemctl-cli-tool.md @@ -1,9 +1,9 @@ --- myst: html_meta: - description: The hypernode-systemctl tool allows you to set values for your Hypernode - via the command line interface. It makes Magento development and maintenance - easier. + description: 'The hypernode-systemctl tool allows you to set certain values for + your Hypernode via the CLI. Learn how to use hypernode-systemctl CLI Tool. ' + title: How to use the hypernode-systemctl CLI Tool? redirect_from: - /en/hypernode/tools/how-to-use-the-hypernode-systemctl-cli-tool/ - /knowledgebase/hypernode-systemctl-cli-tool/ diff --git a/docs/hypernode-platform/tools/hypernode-brancher.md b/docs/hypernode-platform/tools/hypernode-brancher.md index 6b935e5d..1be2e959 100644 --- a/docs/hypernode-platform/tools/hypernode-brancher.md +++ b/docs/hypernode-platform/tools/hypernode-brancher.md @@ -1,4 +1,9 @@ --- +myst: + html_meta: + description: 'Hypernode Brancher is a powerful tool that allows users to create + and manage temporary servers based on their production Hypernode. Learn more. ' + title: Hypernode Brancher | Everything you need to know redirect_from: - /en/support/solutions/articles/48001227297-hypernode-brancher/ --- diff --git a/docs/hypernode-platform/tools/hypernode-cli-tools-and-magerun-plugins.md b/docs/hypernode-platform/tools/hypernode-cli-tools-and-magerun-plugins.md index 55023eec..56f69d9f 100644 --- a/docs/hypernode-platform/tools/hypernode-cli-tools-and-magerun-plugins.md +++ b/docs/hypernode-platform/tools/hypernode-cli-tools-and-magerun-plugins.md @@ -1,8 +1,9 @@ --- myst: html_meta: - description: This page offers an overview of all tools available on Hypernodes - and hypernode-vagrant to Hypernode users to make your life as a developer easier. + description: 'Hypernode provides many tools to make your life as a developer easier. + Get a look on all tools available on Hypernode. ' + title: How to Hypernode CLI tools and Magerun plugins? redirect_from: - /en/hypernode/tools/hypernode-cli-tools-and-magerun-plugins/ - /knowledgebase/hypernode-cli-tools-magerun-plugins/ diff --git a/docs/hypernode-platform/tools/installation-and-configuration-of-pm2.md b/docs/hypernode-platform/tools/installation-and-configuration-of-pm2.md index ffa82a9e..eafc5c19 100644 --- a/docs/hypernode-platform/tools/installation-and-configuration-of-pm2.md +++ b/docs/hypernode-platform/tools/installation-and-configuration-of-pm2.md @@ -1,4 +1,10 @@ --- +myst: + html_meta: + description: PM2 is a porcess manager which keeps your application running as + a deamon. In this article we’ll cover the installation and configuration process + of PM2. + title: How to install and configure PM2 on Hypernode? redirect_from: - /en/support/solutions/articles/48001208544-installation-and-configuration-of-pm2/ --- diff --git a/docs/hypernode-platform/tools/unblocking-and-accessing-magmi-for-hypernode.md b/docs/hypernode-platform/tools/unblocking-and-accessing-magmi-for-hypernode.md index 563b8c1f..17115ea4 100644 --- a/docs/hypernode-platform/tools/unblocking-and-accessing-magmi-for-hypernode.md +++ b/docs/hypernode-platform/tools/unblocking-and-accessing-magmi-for-hypernode.md @@ -1,9 +1,9 @@ --- myst: html_meta: - description: Magmi, the Magento mass importer, is an alternative product importer - offering better performance than the default. Here's how to unblock and access - it. + description: 'To unblock Magmi, the Magento mass importer, and offer secure access + to it for your users and/or developers, use our extensive documentation here. ' + title: How to unblock and access Magmi for Hypernode? redirect_from: - /en/hypernode/tools/unblocking-and-accessing-magmi-for-hypernode/ - /knowledgebase/unblocking-and-accessing-magmi-for-hypernode/ diff --git a/docs/hypernode-platform/tools/what-kind-of-request-is-my-hypernode-serving.md b/docs/hypernode-platform/tools/what-kind-of-request-is-my-hypernode-serving.md index d8e57134..b59e66e8 100644 --- a/docs/hypernode-platform/tools/what-kind-of-request-is-my-hypernode-serving.md +++ b/docs/hypernode-platform/tools/what-kind-of-request-is-my-hypernode-serving.md @@ -1,3 +1,11 @@ +--- +myst: + html_meta: + description: Here are a few handy helpers you can use on Hypernode to get a quick + overview of what kind of requests a Hypernode is currently serving. + title: What kind of request is my Hypernode serving? +--- + # What kind of requests is my Hypernode serving There are a few handy helpers you can use on Hypernode to get a quick overview of what kind of requests a Hypernode is currently serving. diff --git a/docs/hypernode-platform/varnish.md b/docs/hypernode-platform/varnish.md index edc264f6..8299dd2f 100644 --- a/docs/hypernode-platform/varnish.md +++ b/docs/hypernode-platform/varnish.md @@ -1,4 +1,9 @@ --- +myst: + html_meta: + description: This table of contents gives you a summary of all Hypernode platform + knowledge base articles that include information about varnish. + title: Varnish | Hypernode platform redirect_from: - /en/hypernode/varnish/ --- diff --git a/docs/hypernode-platform/varnish/how-to-enable-varnish-on-hypernode.md b/docs/hypernode-platform/varnish/how-to-enable-varnish-on-hypernode.md index 633f301b..2f852513 100644 --- a/docs/hypernode-platform/varnish/how-to-enable-varnish-on-hypernode.md +++ b/docs/hypernode-platform/varnish/how-to-enable-varnish-on-hypernode.md @@ -1,4 +1,9 @@ --- +myst: + html_meta: + description: 'After enabling Varnish, you need to configure both Varnish and your + application. Per application we have a guide to walk you through the process. ' + title: How to enable Varnish on Hypernode? redirect_from: - /en/hypernode/varnish/how-to-enable-varnish-on-hypernode/ --- diff --git a/docs/index.md b/docs/index.md index c4f9f119..24e745ed 100644 --- a/docs/index.md +++ b/docs/index.md @@ -1,4 +1,9 @@ --- +myst: + html_meta: + description: Welcome to Hypernode Docs! Here you find the extensive Support Documentation + of Hypernode. All you need to know about Hypernode in one place. + title: 'Hypernode Support Documentation | Hypernode ' redirect_from: - /en/ - /en/support/ diff --git a/docs/services/control-panel.md b/docs/services/control-panel.md index 6d3b6e0f..6b47e078 100644 --- a/docs/services/control-panel.md +++ b/docs/services/control-panel.md @@ -1,4 +1,9 @@ --- +myst: + html_meta: + description: This table of contents gives you a summary of all Hypernode platform + knowledge base articles that include information about the Control Panel. + title: Control Panel | Hypernode Services redirect_from: - /en/services/control-panel/ --- diff --git a/docs/services/control-panel/different-control-panel-scenarios.md b/docs/services/control-panel/different-control-panel-scenarios.md index 1accfa15..44a6afc5 100644 --- a/docs/services/control-panel/different-control-panel-scenarios.md +++ b/docs/services/control-panel/different-control-panel-scenarios.md @@ -1,8 +1,9 @@ --- myst: html_meta: - description: "For security and usability, the Hypernode Control Panel's features\ - \ are available to users based on the role assigned to the individual user. " + description: Get the best performance out of your Hypernode installation with + our comprehensive guide to different Control Panel scenarios. + title: Different Control Panel scenarios | Hypernode redirect_from: - /en/services/control-panel/different-control-panel-scenarios/ --- diff --git a/docs/services/control-panel/edit-personal-settings.md b/docs/services/control-panel/edit-personal-settings.md index 5dc756b1..acc913b5 100644 --- a/docs/services/control-panel/edit-personal-settings.md +++ b/docs/services/control-panel/edit-personal-settings.md @@ -1,8 +1,9 @@ --- myst: html_meta: - description: 'You can modify your personal settings from the Hypernode control - panel. In this article, we explain you how to edit them. ' + description: 'You can modify your personal settings from the Control Panel. Learn + how to edit these personal settings in this step-by-step guide. ' + title: Edit Personal Settings | Control Panel | Hypernode redirect_from: - /en/services/control-panel/edit-personal-settings/ --- diff --git a/docs/services/control-panel/how-to-add-keys-to-the-ssh-key-manager.md b/docs/services/control-panel/how-to-add-keys-to-the-ssh-key-manager.md index f0067b03..5487cdbd 100644 --- a/docs/services/control-panel/how-to-add-keys-to-the-ssh-key-manager.md +++ b/docs/services/control-panel/how-to-add-keys-to-the-ssh-key-manager.md @@ -1,8 +1,9 @@ --- myst: html_meta: - description: 'You can add SSH Keys to your Hypernode via the Control Panel. Find - out the steps to add SSH Keys in this article. ' + description: 'You can add SSH Keys to your Hypernode(s) via the Control Panel. + Following our comprehensive guide to add an SSH key to one Hypernode. ' + title: How to add keys to the SSH key manager? Hypernode redirect_from: - /en/services/control-panel/how-to-add-keys-to-the-ssh-keymanager/ --- diff --git a/docs/services/control-panel/how-to-change-your-hypernode-settings.md b/docs/services/control-panel/how-to-change-your-hypernode-settings.md index 8c3c661d..9c04d671 100644 --- a/docs/services/control-panel/how-to-change-your-hypernode-settings.md +++ b/docs/services/control-panel/how-to-change-your-hypernode-settings.md @@ -1,8 +1,10 @@ --- myst: html_meta: - description: The Control Panel offers an overview of your Hypernode’s statistics - and settings. This article offers an in-depth explanation of these values. + description: 'The Control Panel offers an overview of your Hypernode’s statistics + and settings. Read how these settings can easily be adjusted via the command + line. ' + title: How to change your Hypernode settings | Control Panel redirect_from: - /en/support/solutions/articles/48001155575-how-to-change-your-hypernode-settings/ --- diff --git a/docs/services/control-panel/how-to-change-your-plan-via-the-cli.md b/docs/services/control-panel/how-to-change-your-plan-via-the-cli.md index 0dae286d..e76d525d 100644 --- a/docs/services/control-panel/how-to-change-your-plan-via-the-cli.md +++ b/docs/services/control-panel/how-to-change-your-plan-via-the-cli.md @@ -1,4 +1,9 @@ --- +myst: + html_meta: + description: 'Need to upgrade or downgrade your Hypernode plan? Learn how to use + the Hypernode command line interface (CLI) to easily change your hosting plan. ' + title: How to change your plan via the CLI? | Hypernode redirect_from: - /en/services/control-panel/how-to-change-your-plan-via-the-cli/ --- diff --git a/docs/services/control-panel/how-to-link-your-domain-to-your-hypernode.md b/docs/services/control-panel/how-to-link-your-domain-to-your-hypernode.md index e05a3e50..ff065776 100644 --- a/docs/services/control-panel/how-to-link-your-domain-to-your-hypernode.md +++ b/docs/services/control-panel/how-to-link-your-domain-to-your-hypernode.md @@ -1,8 +1,9 @@ --- myst: html_meta: - description: 'In this article, you find detailed guidelines on how to link your - domain to your Hypernode. ' + description: 'Need help connecting your domain to your Hypernode? Our step-by-step + guide will walk you through the process in the Control Panel. ' + title: How to link your domain to your Hypernode? | Control Panel redirect_from: - /en/best-practices/usage/how-to-link-your-domain-to-your-hypernode/ --- diff --git a/docs/services/control-panel/how-to-order-a-hypernode-and-transfer-ownership-to-a-customer.md b/docs/services/control-panel/how-to-order-a-hypernode-and-transfer-ownership-to-a-customer.md index a0a87657..97984c0e 100644 --- a/docs/services/control-panel/how-to-order-a-hypernode-and-transfer-ownership-to-a-customer.md +++ b/docs/services/control-panel/how-to-order-a-hypernode-and-transfer-ownership-to-a-customer.md @@ -1,9 +1,10 @@ --- myst: html_meta: - description: 'On Hypernode you can order and transfer ownership of a plan to the - customer. This means a different account will be charged for the subscription. - The steps are:' + description: Hypernode lets you order a server with the click of a button. Get + the most out of your hosting and easily transfer ownership with our fast and + secure setup. + title: Order a Hypernode and transfer the ownership | Hypernode redirect_from: - /en/services/control-panel/how-to-order-a-hypernode-and-transfer-ownership-to-a-customer/ --- diff --git a/docs/services/control-panel/how-to-schedule-an-up-or-downgrade.md b/docs/services/control-panel/how-to-schedule-an-up-or-downgrade.md index 572f514a..2a07a9a0 100644 --- a/docs/services/control-panel/how-to-schedule-an-up-or-downgrade.md +++ b/docs/services/control-panel/how-to-schedule-an-up-or-downgrade.md @@ -1,4 +1,9 @@ --- +myst: + html_meta: + description: 'Want to schedule an upgrade or dowgrade? Use this guide to schedule + to a different plan via the Control Panel. ' + title: 'Schedule an up or downgrade? | Control Panel | Hypernode ' redirect_from: - /en/services/control-panel/how-to-schedule-an-up-or-downgrade/ --- diff --git a/docs/services/control-panel/how-to-transfer-ownership-of-a-hypernode-in-the-control-panel.md b/docs/services/control-panel/how-to-transfer-ownership-of-a-hypernode-in-the-control-panel.md index fcff2940..eca4d27c 100644 --- a/docs/services/control-panel/how-to-transfer-ownership-of-a-hypernode-in-the-control-panel.md +++ b/docs/services/control-panel/how-to-transfer-ownership-of-a-hypernode-in-the-control-panel.md @@ -1,8 +1,9 @@ --- myst: html_meta: - description: 'On Hypernode you can transfer ownership. This means a different - account will be charged for the subscription. Read here how to do this. ' + description: Learn how to transfer ownership of a Hypernode in the Control Panel. + This guide provides step-by-step instructions on how to securely transfer ownership. + title: How to transfer ownership of a Hypernode? | Control Panel redirect_from: - /en/services/control-panel/transfer-ownership/ --- diff --git a/docs/services/control-panel/how-to-use-2fa-on-the-control-panel.md b/docs/services/control-panel/how-to-use-2fa-on-the-control-panel.md index 4561e433..c11c0405 100644 --- a/docs/services/control-panel/how-to-use-2fa-on-the-control-panel.md +++ b/docs/services/control-panel/how-to-use-2fa-on-the-control-panel.md @@ -1,4 +1,10 @@ --- +myst: + html_meta: + description: 2FA adds an extra layer of security to your Hypernode account. Follow + our easy guide to get started with two-factor authentication and keep your website + safe. + title: How to use 2FA on the Control Panel? | Hypernode redirect_from: - /en/services/control-panel/how-to-use-2fa-on-the-control-panel/ --- diff --git a/docs/services/control-panel/how-to-use-teams.md b/docs/services/control-panel/how-to-use-teams.md index 6615519e..315b8750 100644 --- a/docs/services/control-panel/how-to-use-teams.md +++ b/docs/services/control-panel/how-to-use-teams.md @@ -1,8 +1,9 @@ --- myst: html_meta: - description: 'In this article, we explain how to manage teams on the Hypernode - control panel. You can invite developers, merchants or an agency. ' + description: Learn how to use Hypernode's Control Panel to create and manage Teams. + Allocate resources and roles, and quickly add new members with ease. + title: How to use teams? | Control Panel | Hypernode redirect_from: - /en/services/control-panel/how-to-use-teams/ --- diff --git a/docs/services/control-panel/how-to-use-the-dns-check.md b/docs/services/control-panel/how-to-use-the-dns-check.md index 3929ade1..9c0b2298 100644 --- a/docs/services/control-panel/how-to-use-the-dns-check.md +++ b/docs/services/control-panel/how-to-use-the-dns-check.md @@ -1,8 +1,9 @@ --- myst: html_meta: - description: 'Use the DNS check in the Control Panel to ensure your externally - hosted domain is properly configured to send email via Hypernode. ' + description: Learn how to check the DNS settings of your Hypernode with our DNS + Check. This guide shows how to use the DNS Check in our Control Panel. + title: How to use the DNS Check? | Control Panel | Hypernode redirect_from: - /en/services/control-panel/how-to-use-the-dns-check/ --- diff --git a/docs/services/control-panel/user-roles-and-permissions-on-hypernodes-control-panel.md b/docs/services/control-panel/user-roles-and-permissions-on-hypernodes-control-panel.md index f91a4566..9df40905 100644 --- a/docs/services/control-panel/user-roles-and-permissions-on-hypernodes-control-panel.md +++ b/docs/services/control-panel/user-roles-and-permissions-on-hypernodes-control-panel.md @@ -1,9 +1,10 @@ --- myst: html_meta: - description: For security and usability, the Hypernode Control Panel's features - are available to users based on the role assigned to the individual user. Read - more here. + description: 'Hypernode offers a comprehensive user control panel that allows + you to easily manage user roles and permissions. Learn all about user roles + and permissions. ' + title: User roles and permissions | Control Panel | Hypernode redirect_from: - /en/services/control-panel/user-roles-and-permissions-on-hypernodes-control-panel/ --- diff --git a/docs/services/control-panel/using-logs-in-the-control-panel.md b/docs/services/control-panel/using-logs-in-the-control-panel.md index f20b294e..e78ca597 100644 --- a/docs/services/control-panel/using-logs-in-the-control-panel.md +++ b/docs/services/control-panel/using-logs-in-the-control-panel.md @@ -1,8 +1,10 @@ --- myst: html_meta: - description: This article explains how to use the logs in the Control Panel to - get a better understanding of actions you or others have performed. + description: Learn how to use logs in the Hypernode control panel. Discover why + they're essential and how to view them, set up automated log downloads, and + more. + title: How to use logs in the Control Panel? | Hypernode redirect_from: - /en/services/control-panel/using-logs-in-the-control-panel/ --- diff --git a/docs/services/domain-procedures.md b/docs/services/domain-procedures.md index d7437be8..1b9d2662 100644 --- a/docs/services/domain-procedures.md +++ b/docs/services/domain-procedures.md @@ -1,4 +1,9 @@ --- +myst: + html_meta: + description: This table of contents gives you a summary of all Hypernode platform + knowledge base articles that include information about the domain procedures. + title: Domain procedures | Hypernode Services redirect_from: - /en/services/domains/ --- diff --git a/docs/services/domain-procedures/everything-about-presence-plans-and-domains.md b/docs/services/domain-procedures/everything-about-presence-plans-and-domains.md index dffccf2b..bc63535f 100644 --- a/docs/services/domain-procedures/everything-about-presence-plans-and-domains.md +++ b/docs/services/domain-procedures/everything-about-presence-plans-and-domains.md @@ -1,9 +1,9 @@ --- myst: html_meta: - description: A Presence plan can be used to register a domain but also to redirect - your domain to a website. Read how you can use a Presence plan at Hypernode - here + description: 'If you want to register a domain name with Hypernode, you can do + this using our Presence plan. Read everything there is to know about it here. ' + title: Presence Plans and Domains | Hypernode redirect_from: - /en/services/domains/everything-about-presence-plans-and-domains/ --- diff --git a/docs/services/domain-procedures/extension-specific-info-per-domain.md b/docs/services/domain-procedures/extension-specific-info-per-domain.md index fc25f268..8815a879 100644 --- a/docs/services/domain-procedures/extension-specific-info-per-domain.md +++ b/docs/services/domain-procedures/extension-specific-info-per-domain.md @@ -1,4 +1,9 @@ --- +myst: + html_meta: + description: 'Get the most out of your domain with Hypernode. Our extension-specific + info provides all up-to-date information. ' + title: Extension Specific Info per Domain | Hypernode redirect_from: - /en/services/domains/extension-specific-info-per-domain/ --- diff --git a/docs/services/domain-procedures/how-to-transfer-your-domain-away-from-hypernode.md b/docs/services/domain-procedures/how-to-transfer-your-domain-away-from-hypernode.md index fab85d15..30872f00 100644 --- a/docs/services/domain-procedures/how-to-transfer-your-domain-away-from-hypernode.md +++ b/docs/services/domain-procedures/how-to-transfer-your-domain-away-from-hypernode.md @@ -1,4 +1,9 @@ --- +myst: + html_meta: + description: Transferring your domain away from Hypernode is easy. Follow our + step-by-step guide to complete the process quickly and securely. + title: How to transfer your domain away from Hypernode? redirect_from: - /en/services/domains/how-to-transfer-your-domain-away-from-hypernode/ --- diff --git a/docs/services/domain-procedures/how-to-transfer-your-domain-name-to-another-provider-service-panel.md b/docs/services/domain-procedures/how-to-transfer-your-domain-name-to-another-provider-service-panel.md index cd4321d4..66132c7e 100644 --- a/docs/services/domain-procedures/how-to-transfer-your-domain-name-to-another-provider-service-panel.md +++ b/docs/services/domain-procedures/how-to-transfer-your-domain-name-to-another-provider-service-panel.md @@ -1,8 +1,10 @@ --- myst: html_meta: - description: This article explains which steps you need to take if you choose - to transfer your domain from Hypernode to another provider. + description: Moving your domain to a different provider doesn't have to be difficult. + With the Service Panel, you can easily transfer your domain in a few simple + steps. + title: How to transfer your domain to another provider? | Service Panel redirect_from: - /en/services/domains/how-to-transfer-your-domain-name-to-another-provider/ --- diff --git a/docs/services/domain-procedures/how-to-undo-the-cancellation-of-a-domain-name.md b/docs/services/domain-procedures/how-to-undo-the-cancellation-of-a-domain-name.md index 68ad3d00..e4be9452 100644 --- a/docs/services/domain-procedures/how-to-undo-the-cancellation-of-a-domain-name.md +++ b/docs/services/domain-procedures/how-to-undo-the-cancellation-of-a-domain-name.md @@ -1,7 +1,9 @@ --- myst: html_meta: - description: This article explains how to undo the cancellation of a domain name. + description: 'Need help to undo the cancellation of a domain name? Hypernode is + here to help. Get step-by-step instructions on how to undo the cancellation. ' + title: How to undo the cancellation of a domain name? | Hypernode redirect_from: - /en/services/domains/undoing-the-cancellation-of-a-domain-name/ --- diff --git a/docs/services/domain-procedures/how-to-use-domains-in-the-control-panel.md b/docs/services/domain-procedures/how-to-use-domains-in-the-control-panel.md index 0561c44a..652b371f 100644 --- a/docs/services/domain-procedures/how-to-use-domains-in-the-control-panel.md +++ b/docs/services/domain-procedures/how-to-use-domains-in-the-control-panel.md @@ -1,4 +1,9 @@ --- +myst: + html_meta: + description: Learn how to use domains in the Hypernode Control Panel. Get detailed + instructions on how to add, delete, and manage domains in your environment. + title: How to use Domains in the Control Panel? | Hypernode redirect_from: - /en/services/domains/how-to-use-domains-in-the-control-panel/ --- diff --git a/docs/services/magereport.md b/docs/services/magereport.md index acf277c7..c7055d89 100644 --- a/docs/services/magereport.md +++ b/docs/services/magereport.md @@ -1,4 +1,9 @@ --- +myst: + html_meta: + description: This table of contents gives you a summary of all Hypernode platform + knowledge base articles that include information about the MageReport. + title: MageReport | Hypernode Services redirect_from: - /en/services/magereport/ --- diff --git a/docs/services/magereport/magereport-premium.md b/docs/services/magereport/magereport-premium.md index cdebf133..5b96efe1 100644 --- a/docs/services/magereport/magereport-premium.md +++ b/docs/services/magereport/magereport-premium.md @@ -1,9 +1,10 @@ --- myst: html_meta: - description: MageReport Premium provides Hypernode customers with extra information - about the performance of their Magento shop. This article explains more about - MR Premium. + description: 'Get the full picture of your Magento store security. Get an in-depth + look into potential vulnerabilities and provides clear advice on how to address + them. ' + title: MageReport Premium | All you need to know | Hypernode redirect_from: - /en/services/magereport/magereport-premium/ --- diff --git a/docs/services/service-panel.md b/docs/services/service-panel.md index bdf6106a..51cb4926 100644 --- a/docs/services/service-panel.md +++ b/docs/services/service-panel.md @@ -1,4 +1,9 @@ --- +myst: + html_meta: + description: This table of contents gives you a summary of all Hypernode platform + knowledge base articles that include information about the Service Panel. + title: Service Panel | Hypernode Services redirect_from: - /en/services/service-panel/ --- diff --git a/docs/services/service-panel/different-service-panel-scenarios.md b/docs/services/service-panel/different-service-panel-scenarios.md index a2d586fc..ff1b153e 100644 --- a/docs/services/service-panel/different-service-panel-scenarios.md +++ b/docs/services/service-panel/different-service-panel-scenarios.md @@ -1,8 +1,9 @@ --- myst: html_meta: - description: The Service Panel works with a central login, which enables users - to easily manage multiple plans. This article explains different scenarios. + description: Get the best performance out of your Hypernode installation with + our comprehensive guide to different service panel scenarios. + title: Different Service Panel scenarios | Hypernode redirect_from: - /en/about/support/different-service-panel-scenarios/ --- diff --git a/docs/services/service-panel/how-to-change-your-customer-details-and-other-questions.md b/docs/services/service-panel/how-to-change-your-customer-details-and-other-questions.md index ca1df5de..55943980 100644 --- a/docs/services/service-panel/how-to-change-your-customer-details-and-other-questions.md +++ b/docs/services/service-panel/how-to-change-your-customer-details-and-other-questions.md @@ -1,8 +1,9 @@ --- myst: html_meta: - description: 'Administrative changes can be done through the Service Panel (or - via a letter) due to security reasons. Read how to change customer details here. ' + description: Manage your Hypernode account information quickly and easily. Change + your email address, password or payment details in the Service Panel. + title: Change your account details? | Service Panel | Hypernode redirect_from: - /en/about/billing/how-to-change-your-customer-details-and-other-questions/ --- diff --git a/docs/services/service-panel/how-to-log-into-the-service-panel.md b/docs/services/service-panel/how-to-log-into-the-service-panel.md index 12b84800..9d8076a4 100644 --- a/docs/services/service-panel/how-to-log-into-the-service-panel.md +++ b/docs/services/service-panel/how-to-log-into-the-service-panel.md @@ -1,8 +1,9 @@ --- myst: html_meta: - description: This guide will explain how you can log in to the Service Panel and - what to do if you don't have access to your data anymore. + description: Logging into the Hypernode Service Panel is simple. Follow our step-by-step + guide to learn how to access your service. + title: How to log into the Service Panel? | Hypernode redirect_from: - /en/about/support/how-to-log-into-the-service-panel/ --- diff --git a/docs/services/service-panel/how-to-use-2fa-on-the-service-panel.md b/docs/services/service-panel/how-to-use-2fa-on-the-service-panel.md index 2fcd94a9..867d8dc9 100644 --- a/docs/services/service-panel/how-to-use-2fa-on-the-service-panel.md +++ b/docs/services/service-panel/how-to-use-2fa-on-the-service-panel.md @@ -1,8 +1,9 @@ --- myst: html_meta: - description: In this article, we explain how to use 2FA for the Control Panel. - Not available yet. + description: Protect your Service Panel with two-factor authentication (2FA). + Learn how to set up 2FA on Hypernode and keep your data secure. + title: How to use 2FA on the Service Panel? | Hypernode redirect_from: - /en/services/service-panel/how-to-use-2fa-for-the-service-panel/ --- diff --git a/docs/troubleshooting/performance.md b/docs/troubleshooting/performance.md index d7ed1baf..3f553212 100644 --- a/docs/troubleshooting/performance.md +++ b/docs/troubleshooting/performance.md @@ -1,4 +1,9 @@ --- +myst: + html_meta: + description: This table of contents gives you a summary of all Hypernode platform + knowledge base articles that include information about performance troubleshooting. + title: Performance | Troubleshooting | Hypernode redirect_from: - /en/troubleshooting/performance/ --- diff --git a/docs/troubleshooting/performance/general-troubleshooting.md b/docs/troubleshooting/performance/general-troubleshooting.md index 2db67888..9db7059a 100644 --- a/docs/troubleshooting/performance/general-troubleshooting.md +++ b/docs/troubleshooting/performance/general-troubleshooting.md @@ -1,9 +1,9 @@ --- myst: html_meta: - description: Need to debug a problem? Hypernode has many possibilities to analyse - a suspicious or unwanted situation. Learn where to look and reach a conclusion - fast. + description: 'Hypernode provides the best performance for your Magento webshop. + Get insights on how to troubleshoot general issues. ' + title: Performance | General Troubleshooting | Hypernode redirect_from: - /en/troubleshooting/performance/general-troubleshooting/ --- diff --git a/docs/troubleshooting/performance/how-to-block-bad-bots-via-the-control-panel.md b/docs/troubleshooting/performance/how-to-block-bad-bots-via-the-control-panel.md index 4a92a1e7..f7995851 100644 --- a/docs/troubleshooting/performance/how-to-block-bad-bots-via-the-control-panel.md +++ b/docs/troubleshooting/performance/how-to-block-bad-bots-via-the-control-panel.md @@ -1,9 +1,9 @@ --- myst: html_meta: - description: A lot of bot traffic has a negative impact on the performance of - your webshop. Hypernode offers you the possibility to block bad bots in your - control panel. + description: "Protect your website from bad bots and malicious requests with Hypernode's\ + \ Control Panel. " + title: How to block bad bots via the Control Panel? | Hypernode redirect_from: - /en/services/control-panel/block-bad-bots-via-the-control-panel/ --- diff --git a/docs/troubleshooting/performance/how-to-block-bad-bots-via-the-service-panel.md b/docs/troubleshooting/performance/how-to-block-bad-bots-via-the-service-panel.md index c522223f..3fccec8d 100644 --- a/docs/troubleshooting/performance/how-to-block-bad-bots-via-the-service-panel.md +++ b/docs/troubleshooting/performance/how-to-block-bad-bots-via-the-service-panel.md @@ -1,8 +1,9 @@ --- myst: html_meta: - description: A lot of bot traffic has a negative impact on the performance of - your webshop. At Hypernode you can block unwanted bots in your Service Panel. + description: Protect your website from bad bots and malicious requests with Hypernode's + Service Panel. + title: How to block bad bots via the Service Panel? | Hypernode redirect_from: - /en/support/solutions/articles/48001163357-how-to-block-bad-bots-via-the-service-panel/ --- diff --git a/docs/troubleshooting/performance/how-to-check-why-my-site-is-slow.md b/docs/troubleshooting/performance/how-to-check-why-my-site-is-slow.md index 3349516b..2f9eea59 100644 --- a/docs/troubleshooting/performance/how-to-check-why-my-site-is-slow.md +++ b/docs/troubleshooting/performance/how-to-check-why-my-site-is-slow.md @@ -1,9 +1,9 @@ --- myst: html_meta: - description: So your webshop seems to be significantly slower than it used to - be and you have no idea what's going on. In this article you will find some - initial checks. + description: Does your website have slow loading times? Hypernode can help you + quickly identify the cause of the problem. + title: How to check why my site is slow? | Hypernode redirect_from: - /en/troubleshooting/performance/how-to-check-why-my-site-is-slow/ --- diff --git a/docs/troubleshooting/performance/how-to-debug-out-of-memory-oom-events.md b/docs/troubleshooting/performance/how-to-debug-out-of-memory-oom-events.md index 01989998..b4b42492 100644 --- a/docs/troubleshooting/performance/how-to-debug-out-of-memory-oom-events.md +++ b/docs/troubleshooting/performance/how-to-debug-out-of-memory-oom-events.md @@ -1,8 +1,9 @@ --- myst: html_meta: - description: When processes on your Hypernode require more memory than is available, - there is a risk of downtime. This article explains more about the Linux oom-killer. + description: Out of memory errors can be difficult to debug. Learn how to troubleshoot + and resolve out of memory events on your Hypernode with our easy-to-follow guide. + title: How to debug out of memory events? | Hypernode redirect_from: - /en/troubleshooting/performance/how-to-debug-out-of-memory-oom-events/ --- diff --git a/docs/troubleshooting/performance/how-to-fix-invalid-form-key-error.md b/docs/troubleshooting/performance/how-to-fix-invalid-form-key-error.md index c5b9888b..1fff7e0e 100644 --- a/docs/troubleshooting/performance/how-to-fix-invalid-form-key-error.md +++ b/docs/troubleshooting/performance/how-to-fix-invalid-form-key-error.md @@ -1,9 +1,9 @@ --- myst: html_meta: - description: If you get the dreaded “Invalid form key” error while logging in - or working in the admin, something is wrong with your setup. Read here how to - fix this. + description: Are you getting an invalid form key error? Learn how to debug and + fix this common issue with the help of Hypernode's step-by-step guide. + title: How to fix invalid form key error? | Hypernode redirect_from: - /en/troubleshooting/performance/how-to-fix-invalid-form-key-error/ --- diff --git a/docs/troubleshooting/performance/how-to-identify-and-stop-long-running-processes.md b/docs/troubleshooting/performance/how-to-identify-and-stop-long-running-processes.md index 6282cb55..b8557197 100644 --- a/docs/troubleshooting/performance/how-to-identify-and-stop-long-running-processes.md +++ b/docs/troubleshooting/performance/how-to-identify-and-stop-long-running-processes.md @@ -1,9 +1,9 @@ --- myst: html_meta: - description: "Long running processes might indicate: the site benefiting from\ - \ an index (SQL), inefficient or erroneous code (PHP), or a deadlock. Here's\ - \ how to identify them." + description: Learn how to quickly identify and stop long-running processes on + Hypernode with our easy-to-follow guide. + title: How to idfentify and stop long running processes? | Hypernode redirect_from: - /en/troubleshooting/performance/how-to-identify-and-stop-long-running-processes/ --- diff --git a/docs/troubleshooting/performance/how-to-implement-pagespeed-booster.md b/docs/troubleshooting/performance/how-to-implement-pagespeed-booster.md index e1850e09..22019f0d 100644 --- a/docs/troubleshooting/performance/how-to-implement-pagespeed-booster.md +++ b/docs/troubleshooting/performance/how-to-implement-pagespeed-booster.md @@ -1,8 +1,9 @@ --- myst: html_meta: - description: PageSpeed Booster is a reverse proxy which uses many static optimisation - techniques to greatly increase the pagespeed score and performance of your website. + description: "Improve your website speed with Hypernode's PageSpeed Booster. Learn\ + \ how to implement it in just a few clicks and get the most out of your website. " + title: How to implement the PageSpeed Booster? | Hypernode redirect_from: - /en/troubleshooting/performance/how-to-implement-pagespeed-booster/ --- diff --git a/docs/troubleshooting/performance/how-to-optimise-your-magento-disk-performance.md b/docs/troubleshooting/performance/how-to-optimise-your-magento-disk-performance.md index e14fb814..4a14f2af 100644 --- a/docs/troubleshooting/performance/how-to-optimise-your-magento-disk-performance.md +++ b/docs/troubleshooting/performance/how-to-optimise-your-magento-disk-performance.md @@ -1,8 +1,9 @@ --- myst: html_meta: - description: Optimising your Magento disk performance could lead to higher speed - and a better performance of your shop. Read here how to optimise it on Hypernode. + description: Improve the performance and speed of your Magento store with Hypernode's + guide on optimising Magento disk performance. + title: How to optimise your Magento disk performance? | Hypernode redirect_from: - /en/troubleshooting/performance/how-to-optimise-your-magento-disk-performance/ - /knowledgebase/magento-disk-performance-optimization/ diff --git a/docs/troubleshooting/performance/how-to-resolve-a-413-request-entity-too-large-error.md b/docs/troubleshooting/performance/how-to-resolve-a-413-request-entity-too-large-error.md index 772b007a..092ed5f6 100644 --- a/docs/troubleshooting/performance/how-to-resolve-a-413-request-entity-too-large-error.md +++ b/docs/troubleshooting/performance/how-to-resolve-a-413-request-entity-too-large-error.md @@ -1,4 +1,9 @@ --- +myst: + html_meta: + description: Learn how to resolve a 413 request error. Hypernode provides easy-to-follow + instructions and tips to help you identify and fix the problem quickly. + title: How to resolve a 413 request? | Hypernode redirect_from: - /en/troubleshooting/performance/how-to-resolve-a-413-request-entity-too-large-error/ --- diff --git a/docs/troubleshooting/performance/how-to-solve-the-front-controller-reached-100-router-match-iterations-error.md b/docs/troubleshooting/performance/how-to-solve-the-front-controller-reached-100-router-match-iterations-error.md index 392e4b62..84296c23 100644 --- a/docs/troubleshooting/performance/how-to-solve-the-front-controller-reached-100-router-match-iterations-error.md +++ b/docs/troubleshooting/performance/how-to-solve-the-front-controller-reached-100-router-match-iterations-error.md @@ -1,9 +1,10 @@ --- myst: html_meta: - description: This error 'Front Controller Reached 100 Router Match Iterations' - appears when corruption in the cache arises, due to a bug in Magento. Here's - how to solve it. + description: 'Struggling with the “Front Controller Reached 100 Router Match Iterations” + error? Our expert guides will help you diagnose, troubleshoot and solve this + issue. ' + title: Solve “Front Controller Reached 100 Router Match Iterations” redirect_from: - /en/troubleshooting/performance/how-to-solve-the-front-controller-reached-100-router-match-iterations-error/ --- diff --git a/docs/troubleshooting/performance/how-to-spot-slow-extensions-using-the-php-slow-logs.md b/docs/troubleshooting/performance/how-to-spot-slow-extensions-using-the-php-slow-logs.md index 8ba6a105..299e8314 100644 --- a/docs/troubleshooting/performance/how-to-spot-slow-extensions-using-the-php-slow-logs.md +++ b/docs/troubleshooting/performance/how-to-spot-slow-extensions-using-the-php-slow-logs.md @@ -1,8 +1,9 @@ --- myst: html_meta: - description: 'PHP-FPM offers its slow logs, which spots slow extensions in your - Magento shop. Read more about it and how to use it in this article. ' + description: "Learn how to quickly spot slow extensions using PHP slow logs in\ + \ Hypernode. We'll show you the best practices for finding and resolving issues. " + title: How to spot slow extensions using PHP slow logs? | Hypernode redirect_from: - /en/troubleshooting/performance/how-to-spot-slow-extensions-using-the-php-slow-logs/ - /knowledgebase/spot-slow-extensions-using-phps-slow-log/ diff --git a/docs/troubleshooting/performance/how-to-use-the-mysql-slow-queries-in-the-control-panel.md b/docs/troubleshooting/performance/how-to-use-the-mysql-slow-queries-in-the-control-panel.md index 0245ce43..aa1c76bc 100644 --- a/docs/troubleshooting/performance/how-to-use-the-mysql-slow-queries-in-the-control-panel.md +++ b/docs/troubleshooting/performance/how-to-use-the-mysql-slow-queries-in-the-control-panel.md @@ -1,8 +1,9 @@ --- myst: html_meta: - description: Use the MySQL Slow Logs in the Control Panel to find out what's causing - the delay in your database queries to prevent performance issues on your Hypernode. + description: Learn how to use the Hypernode Control Panel to quickly and easily + identify slow queries in your MySQL database. + title: Use MySQL slow queries in the Control Panel | Hypernode redirect_from: - /en/support/solutions/articles/48001154919-how-to-use-the-mysql-slow-queries-in-the-control-panel/ --- From e6ba59552a4f7169796ca1cca54c557d78d0652b Mon Sep 17 00:00:00 2001 From: Timon de Groot Date: Thu, 12 Jan 2023 12:38:02 +0100 Subject: [PATCH 21/51] docs: Add created_at and updated_at variables to articles The data is available now, but it needs some UI work to make it look good. --- .github/workflows/deploy.yaml | 7 ++- docs/_templates/layout.html | 10 +++- docs/conf.py | 5 +- hypernode/sphinx/__init__.py | 0 hypernode/sphinx/extensions/__init__.py | 0 hypernode/sphinx/extensions/updated_at.py | 57 +++++++++++++++++++++++ requirements/base.txt | 1 + 7 files changed, 76 insertions(+), 4 deletions(-) create mode 100644 hypernode/sphinx/__init__.py create mode 100644 hypernode/sphinx/extensions/__init__.py create mode 100644 hypernode/sphinx/extensions/updated_at.py diff --git a/.github/workflows/deploy.yaml b/.github/workflows/deploy.yaml index b6c0a74a..ea5ef3a5 100644 --- a/.github/workflows/deploy.yaml +++ b/.github/workflows/deploy.yaml @@ -14,7 +14,12 @@ jobs: runs-on: ubuntu-latest container: quay.io/hypernode/deploy:3-php8.1-node18 steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v3 + with: + fetch-depth: 0 + # Declares the repository safe and not under dubious ownership. + - name: Add repository to git safe directories + run: git config --global --add safe.directory $GITHUB_WORKSPACE - uses: actions/cache@v2 with: path: /tmp/composer-cache diff --git a/docs/_templates/layout.html b/docs/_templates/layout.html index 94fbd374..94ee8c10 100644 --- a/docs/_templates/layout.html +++ b/docs/_templates/layout.html @@ -213,8 +213,14 @@ {%- else %}

{%- endif %} -
+
{%- block document %} + {%- if created_at %} +
{{ created_at }}
+ {%- endif %} + {%- if updated_at %} +
{{ updated_at }}
+ {%- endif %}
{% block body %}{% endblock %}
@@ -222,7 +228,7 @@
{%- block comments %}{% endblock %}
- {%- endif%} + {%- endif %}
{%- endblock %} {% include "footer.html" %} diff --git a/docs/conf.py b/docs/conf.py index e3bc0e1b..fe87d5fc 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -4,6 +4,7 @@ # list see the documentation: # https://www.sphinx-doc.org/en/master/usage/configuration.html import os +import sys # -- Path setup -------------------------------------------------------------- @@ -14,12 +15,13 @@ # import os # import sys # sys.path.insert(0, os.path.abspath('.')) +sys.path.append(os.path.abspath("../")) # -- Project information ----------------------------------------------------- project = "Docs" -copyright = "2022, Hypernode" +copyright = "2023, Hypernode" author = "Hypernode" # The full version, including alpha/beta/rc tags @@ -41,6 +43,7 @@ "myst_parser", "sphinx_copybutton", "notfound.extension", + "hypernode.sphinx.extensions.updated_at", ] # Add any paths that contain templates here, relative to this directory. diff --git a/hypernode/sphinx/__init__.py b/hypernode/sphinx/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/hypernode/sphinx/extensions/__init__.py b/hypernode/sphinx/extensions/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/hypernode/sphinx/extensions/updated_at.py b/hypernode/sphinx/extensions/updated_at.py new file mode 100644 index 00000000..16b9314e --- /dev/null +++ b/hypernode/sphinx/extensions/updated_at.py @@ -0,0 +1,57 @@ +import os.path +from datetime import datetime +from pathlib import Path + +import git +from git.exc import GitCommandError +from sphinx import errors +from sphinx.application import Sphinx + + +class PageContextHandler: + def __init__(self) -> None: + self.git = git.Git(os.path.realpath(os.path.dirname(__file__) + "../../")) + + def execute(self, app: Sphinx, pagename: str, templatename, context, doctree): + page_path = Path(app.confdir) / (pagename + ".md") + if not os.path.exists(page_path): + return + + try: + log = self.git.log( + "--pretty=format:%aI", "--reverse", page_path + ).splitlines() + if not log: + return + + created = log[0] + updated = log[-1] + except GitCommandError as exc: + raise errors.ExtensionError( + "Failed to fetch git history for {}. Exception was: {}".format( + page_path, exc + ) + ) + + if created: + context["created_at"] = datetime.fromisoformat(created).strftime( + app.config.created_at_fmt + ) + + if updated: + context["updated_at"] = datetime.fromisoformat(updated).strftime( + app.config.updated_at_fmt + ) + + +def setup(app: Sphinx): + page_context_handler = PageContextHandler() + app.add_config_value("updated_at_fmt", "%b %d, %Y", "html") + app.add_config_value("created_at_fmt", "%b %d, %Y", "html") + app.connect("html-page-context", page_context_handler.execute) + + return { + "version": "0.1", + "parallel_read_safe": True, + "parallel_write_safe": True, + } diff --git a/requirements/base.txt b/requirements/base.txt index 6314f5de..6e5b5a97 100644 --- a/requirements/base.txt +++ b/requirements/base.txt @@ -9,6 +9,7 @@ mdformat-myst==0.1.5 mdformat-frontmatter==0.4.1 sphinx-notfound-page==0.8.3 sphinx-sitemap==2.4.0 +GitPython==3.1.30 # hypernode/ requirements beautifulsoup4==4.11.1 From 38b35100608de2c88ccb8a88e08040e704708eb4 Mon Sep 17 00:00:00 2001 From: Timon de Groot Date: Fri, 13 Jan 2023 13:13:26 +0100 Subject: [PATCH 22/51] ci: Add deployment environments --- .github/workflows/deploy.yaml | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/.github/workflows/deploy.yaml b/.github/workflows/deploy.yaml index b6c0a74a..be96d10f 100644 --- a/.github/workflows/deploy.yaml +++ b/.github/workflows/deploy.yaml @@ -36,6 +36,9 @@ jobs: deploy_acceptance: needs: build runs-on: ubuntu-latest + environment: + name: acceptance + url: ${{ steps.get_brancher_hostname.outputs.BRANCHER_URL }} if: github.ref != 'refs/heads/master' container: quay.io/hypernode/deploy:3-php8.1-node18 steps: @@ -54,16 +57,20 @@ jobs: env: HYPERNODE_API_TOKEN: ${{ secrets.HYPERNODE_API_TOKEN }} - name: Get brancher hostname - run: echo "BRANCHER_HOSTNAME=$(jq .hostnames[0] deployment-report.json -r)" >> $GITHUB_ENV + id: get_brancher_hostname + run: echo "BRANCHER_URL=https://$(jq .hostnames[0] deployment-report.json -r)" >> $GITHUB_OUTPUT - name: Comment hostname on PR uses: thollander/actions-comment-pull-request@v1 with: message: | - Acceptance server is available at https://${{ env.BRANCHER_HOSTNAME }} + Acceptance server is available at ${{ steps.get_brancher_hostname.outputs.BRANCHER_URL }} deploy_production: needs: build runs-on: ubuntu-latest + environment: + name: production + url: https://docs.hypernode.io if: github.ref == 'refs/heads/master' container: quay.io/hypernode/deploy:3-php8.1-node18 steps: From 17944571340e97fcba209da3e3ed2464d360cc5f Mon Sep 17 00:00:00 2001 From: Rick van de Loo Date: Sat, 14 Jan 2023 12:20:10 +0100 Subject: [PATCH 23/51] fix dead link nodejs install in yarn instructions currently points to https://archive.support.hypernode.com/knowledgebase/use-nodejs-npm-hypernode/#Using_a_newer_version_of_NodeJs which is a dead link --- .../tools/how-to-use-node-js-and-npm-on-hypernode.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/hypernode-platform/tools/how-to-use-node-js-and-npm-on-hypernode.md b/docs/hypernode-platform/tools/how-to-use-node-js-and-npm-on-hypernode.md index bab65c98..4fc7a798 100644 --- a/docs/hypernode-platform/tools/how-to-use-node-js-and-npm-on-hypernode.md +++ b/docs/hypernode-platform/tools/how-to-use-node-js-and-npm-on-hypernode.md @@ -100,7 +100,7 @@ npm install less ### Install Yarn -*To install yarn, a more recent version of nodejs is required, so*[*follow the instructions and download and unpack a newer version of nodejs*](https://archive.support.hypernode.com/knowledgebase/use-nodejs-npm-hypernode/#Using_a_newer_version_of_NodeJs)*first* +*To install yarn, a more recent version of nodejs is required, so [follow the instructions and download and unpack a newer version of nodejs](https://docs.hypernode.io/hypernode-platform/tools/how-to-use-node-js-and-npm-on-hypernode.html#using-an-newer-version-of-node-js) first. ```nginx npm install yarn From 03a334dbd0b7d3c4bfa822ae67ff2e9ff5dfeef8 Mon Sep 17 00:00:00 2001 From: Timon de Groot Date: Tue, 17 Jan 2023 15:56:21 +0100 Subject: [PATCH 24/51] docs: Add GTM container to layout --- docs/_templates/layout.html | 28 ++++++++++++---------------- docs/conf.py | 1 + 2 files changed, 13 insertions(+), 16 deletions(-) diff --git a/docs/_templates/layout.html b/docs/_templates/layout.html index 94fbd374..408277b8 100644 --- a/docs/_templates/layout.html +++ b/docs/_templates/layout.html @@ -64,6 +64,15 @@ + + {%- if theme_analytics_id %} + + {%- endif %} + {%- if not embedded %} {# XXX Sphinx 1.8.0 made this an external js-file, quick fix until we refactor the template to inherert more blocks directly from sphinx #} {%- if sphinx_version_info >= (1, 8) -%} @@ -248,22 +257,9 @@

Need support?

}); - {#- Do not conflict with RTD insertion of analytics script #} - {%- if not READTHEDOCS %} - {%- if theme_analytics_id %} - - - - - {%- endif %} + {%- if theme_analytics_id %} + {%- endif %} {%- block footer %} {% endblock %} diff --git a/docs/conf.py b/docs/conf.py index e3bc0e1b..0b8d5e80 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -62,6 +62,7 @@ "navigation_depth": 4, "collapse_navigation": False, "titles_only": False, + "analytics_id": "GTM-PDL826", } html_context = { "display_github": True, # Integrate GitHub From 45c3971f60ade1080383a1eec249b122184c5793 Mon Sep 17 00:00:00 2001 From: Timon de Groot Date: Thu, 19 Jan 2023 11:13:44 +0100 Subject: [PATCH 25/51] ci: Change production base url --- .github/workflows/deploy.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/deploy.yaml b/.github/workflows/deploy.yaml index be96d10f..378db266 100644 --- a/.github/workflows/deploy.yaml +++ b/.github/workflows/deploy.yaml @@ -25,7 +25,7 @@ jobs: - name: Set env for production build if: github.ref == 'refs/heads/master' run: | - echo "DOCS_BASE_URL=https://docs.hypernode.io/" >> $GITHUB_ENV + echo "DOCS_BASE_URL=https://docs.hypernode.com/" >> $GITHUB_ENV - run: hypernode-deploy build -vvv - name: archive production artifacts uses: actions/upload-artifact@v3 From c83cbdbb558964006a187c9ea56241dd3ff51b6e Mon Sep 17 00:00:00 2001 From: Timon de Groot Date: Thu, 19 Jan 2023 11:14:45 +0100 Subject: [PATCH 26/51] bin/generate_nginx_redirects: Prepend redirect_to path with DOCS_BASE_URL --- hypernode/redirect/generate_nginx_redirects.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/hypernode/redirect/generate_nginx_redirects.py b/hypernode/redirect/generate_nginx_redirects.py index 1dd4d06d..f3ba9bea 100644 --- a/hypernode/redirect/generate_nginx_redirects.py +++ b/hypernode/redirect/generate_nginx_redirects.py @@ -1,4 +1,5 @@ import os.path +import re from pathlib import Path from typing import List @@ -21,6 +22,8 @@ def get_path_for_doc(doc: Path) -> str: ) path = path.replace("/./", "/") path = path.replace("/index.html", "/") + base_url = os.getenv("DOCS_BASE_URL", "/") + path = re.sub(r"^/", base_url, path) return path From 6a5b05cdb4eccebf09d9690c2d4701d650a72005 Mon Sep 17 00:00:00 2001 From: Niutoseq Date: Thu, 19 Jan 2023 13:34:16 +0100 Subject: [PATCH 27/51] adding styling to update_at and create_at --- docs/_static/css/general.css | 23 +++++++++++++++++++++++ docs/_static/css/main.css | 23 +++++++++++++++++++++++ docs/_static/scss/general.scss | 25 +++++++++++++++++++++++++ docs/_templates/layout.html | 8 ++++---- 4 files changed, 75 insertions(+), 4 deletions(-) diff --git a/docs/_static/css/general.css b/docs/_static/css/general.css index 9e23eadc..b7c7fcad 100644 --- a/docs/_static/css/general.css +++ b/docs/_static/css/general.css @@ -1,3 +1,4 @@ +@charset "UTF-8"; h1, h2, h3, @@ -13,6 +14,10 @@ span { } } +span, p, div { + color: #404040; +} + a { text-decoration: none; } @@ -802,6 +807,24 @@ li.wy-breadcrumbs-aside a { } /* header end */ +/* article meta */ +.article-meta { + display: inline-block; + position: relative; + top: 30px; + font-size: 11px; + font-weight: 600; + opacity: 0.35; +} +.article-meta--updated { + opacity: 0.5; +} +.article-meta--updated::after { + content: "•"; + padding-left: 5px; +} + +/* article meta end */ /* footer */ .edit { text-align: center; diff --git a/docs/_static/css/main.css b/docs/_static/css/main.css index 3e38080c..04926293 100644 --- a/docs/_static/css/main.css +++ b/docs/_static/css/main.css @@ -1,3 +1,4 @@ +@charset "UTF-8"; :root { --blue: #005dab; --primary-blue: #063b67; @@ -41,6 +42,10 @@ span { } } +span, p, div { + color: #404040; +} + a { text-decoration: none; } @@ -830,6 +835,24 @@ li.wy-breadcrumbs-aside a { } /* header end */ +/* article meta */ +.article-meta { + display: inline-block; + position: relative; + top: 30px; + font-size: 11px; + font-weight: 600; + opacity: 0.35; +} +.article-meta--updated { + opacity: 0.5; +} +.article-meta--updated::after { + content: "•"; + padding-left: 5px; +} + +/* article meta end */ /* footer */ .edit { text-align: center; diff --git a/docs/_static/scss/general.scss b/docs/_static/scss/general.scss index 9e66c9dd..4574707a 100644 --- a/docs/_static/scss/general.scss +++ b/docs/_static/scss/general.scss @@ -15,6 +15,10 @@ p { } } +span, p, div { + color: #404040; +} + a { text-decoration: none; } @@ -806,6 +810,27 @@ li.wy-breadcrumbs-aside a { /* header end */ +/* article meta */ +.article-meta { + display: inline-block; + position: relative; + top: 30px; + font-size: 11px; + font-weight: 600; + opacity: 0.35; + + &--updated { + opacity: 0.5; + + &::after { + content: "•"; + padding-left: 5px; + } + } +} + +/* article meta end */ + /* footer */ .edit { text-align: center; diff --git a/docs/_templates/layout.html b/docs/_templates/layout.html index 94ee8c10..905d763c 100644 --- a/docs/_templates/layout.html +++ b/docs/_templates/layout.html @@ -215,11 +215,11 @@ {%- endif %}
{%- block document %} - {%- if created_at %} -
{{ created_at }}
+ {%- if updated_at %} + {%- endif %} - {%- if updated_at %} -
{{ updated_at }}
+ {%- if created_at %} + {%- endif %}
{% block body %}{% endblock %} From d1de9dc60ae584c49ff3483f12022ed5e0723ca5 Mon Sep 17 00:00:00 2001 From: Niutoseq Date: Thu, 19 Jan 2023 13:37:36 +0100 Subject: [PATCH 28/51] adding mobile fontsize --- docs/_static/css/general.css | 5 +++++ docs/_static/css/main.css | 5 +++++ docs/_static/scss/general.scss | 4 ++++ 3 files changed, 14 insertions(+) diff --git a/docs/_static/css/general.css b/docs/_static/css/general.css index b7c7fcad..b2ce13db 100644 --- a/docs/_static/css/general.css +++ b/docs/_static/css/general.css @@ -823,6 +823,11 @@ li.wy-breadcrumbs-aside a { content: "•"; padding-left: 5px; } +@media (max-width: 420px) { + .article-meta { + font-size: 12px; + } +} /* article meta end */ /* footer */ diff --git a/docs/_static/css/main.css b/docs/_static/css/main.css index 04926293..0f21ed56 100644 --- a/docs/_static/css/main.css +++ b/docs/_static/css/main.css @@ -851,6 +851,11 @@ li.wy-breadcrumbs-aside a { content: "•"; padding-left: 5px; } +@media (max-width: 420px) { + .article-meta { + font-size: 12px; + } +} /* article meta end */ /* footer */ diff --git a/docs/_static/scss/general.scss b/docs/_static/scss/general.scss index 4574707a..cfcc44f7 100644 --- a/docs/_static/scss/general.scss +++ b/docs/_static/scss/general.scss @@ -827,6 +827,10 @@ li.wy-breadcrumbs-aside a { padding-left: 5px; } } + + @media (max-width: $breakpoint-mobile) { + font-size: 12px; + } } /* article meta end */ From 9c6cc4ec39d260b00cae6f807863f5446e285f56 Mon Sep 17 00:00:00 2001 From: Timon de Groot Date: Thu, 19 Jan 2023 18:59:34 +0100 Subject: [PATCH 29/51] Add bin/build_manpage for building docs as man page --- bin/build_manpage | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100755 bin/build_manpage diff --git a/bin/build_manpage b/bin/build_manpage new file mode 100755 index 00000000..e8a8689c --- /dev/null +++ b/bin/build_manpage @@ -0,0 +1,8 @@ +#!/usr/bin/env bash + +set -e + +pushd docs +make man +echo "manpage located at $(realpath _build/man/docs.1)" +popd From 72c8b2790bd7d80c7ea0eb3623b434b319ddbc22 Mon Sep 17 00:00:00 2001 From: Alexander Grooff Date: Fri, 20 Jan 2023 17:02:15 +0100 Subject: [PATCH 30/51] feat: script to find dead links --- bin/find_dead_links | 54 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100755 bin/find_dead_links diff --git a/bin/find_dead_links b/bin/find_dead_links new file mode 100755 index 00000000..a2ddc2a4 --- /dev/null +++ b/bin/find_dead_links @@ -0,0 +1,54 @@ +#!/usr/bin/env python3 + +import multiprocessing +import os +import re +from glob import glob +from typing import List + +import requests + +PROJECT_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) +DOCS_DIR = os.path.join(PROJECT_DIR, "docs") +FAKE_DOMAINS = [ + "example.com", + "yourdomain.com", + "example.hypernode.io", + "hypernode.local", + "127.0.0.1", +] + + +def get_links(md_file: str) -> List[str]: + with open(md_file) as f: + content = f.read() + return re.findall(r"\[.*\]\((http.+?)\)", content) + + +def is_link_is_dead(link: str) -> bool: + try: + resp = requests.get(link, timeout=5) + except Exception as e: + print(f"Couldn't get {link}: {e}") + return True + dead = resp.status_code in [404, 500, 502, 503, 504] + if dead: + print(f"Dead link: {link}") + return dead + + +def main(): + links = [] + for md_file in glob(f"{DOCS_DIR}/**/*.md", recursive=True): + for link in get_links(md_file): + if not any(fake_domain in link for fake_domain in FAKE_DOMAINS): + links.append(link) + links = list(set(links)) + print(f"Found {len(links)} unique links") + # Loop over links in a multiprocessing pool + with multiprocessing.Pool(4) as p: + p.map(is_link_is_dead, links) + + +if __name__ == "__main__": + main() From 66a8f4733702382eda7b5237150c8dd050e15fb8 Mon Sep 17 00:00:00 2001 From: Rick van de Loo Date: Sat, 21 Jan 2023 17:45:26 +0100 Subject: [PATCH 31/51] package hypernode manpage --- README.md | 45 +++++++++++ debian/changelog | 6 ++ debian/compat | 1 + debian/control | 13 ++++ debian/docs | 1 + debian/hndocsnext.install | 3 + debian/hndocsnext.postinst | 3 + debian/rules | 17 ++++ debian/source/format | 1 + mark-release.sh | 154 +++++++++++++++++++++++++++++++++++++ 10 files changed, 244 insertions(+) create mode 100644 debian/changelog create mode 100644 debian/compat create mode 100644 debian/control create mode 100644 debian/docs create mode 100644 debian/hndocsnext.install create mode 100644 debian/hndocsnext.postinst create mode 100755 debian/rules create mode 100644 debian/source/format create mode 100644 mark-release.sh diff --git a/README.md b/README.md index 0ae5cb55..72103d0c 100644 --- a/README.md +++ b/README.md @@ -66,3 +66,48 @@ Then deploy to your local Hypernode Docker: docker run --rm -it --env SSH_PRIVATE_KEY="$(cat ~/.ssh/yourdeploykey | base64)" -v ${PWD}:/build quay.io/hypernode/deploy:latest hypernode-deploy build -vvv # First build the artifact docker run --rm -it --env SSH_PRIVATE_KEY="$(cat ~/.ssh/yourdeploykey | base64)" -v ${PWD}:/build quay.io/hypernode/deploy:latest hypernode-deploy deploy docker -vvv # Then perform the deploy ``` + +## Building the manpage deb + +The docs are also packaged as a debian package named `hndocsnext` so that on a Hypernode you can run `man hypernode` (or `hypernode-manual`) and page through a `manpage` version of the Hypernode docs. To build that debian package on a Debian machine you can run these commands: +``` +# First create the cow environment +export ARCH=amd64 +export DIST=buster +apt-get install debhelper cowbuilder git-buildpackage +cowbuilder --create --distribution buster --architecture amd64 --basepath /var/cache/pbuilder/base-$DIST-amd64.cow --mirror http://ftp.debian.org/debian/ --components=main + +# We need to make sure our build process can use networking in order to pip install the requirements +echo "USENETWORK=yes" > ~/.pbuilderrc + +# Then clone the repository and build the .deb +git clone https://github.com/ByteInternet/hypernode-docs-next +cd hypernode-docs-next +gbp buildpackage --git-pbuilder --git-dist=$DIST --git-arch=$ARCH --git-ignore-branch -us -uc -sa --git-ignore-new +``` + +Then after building the Deb you could install it with dpkg. For example: +``` +dpkg -i ../hndocsnext_20230121.173551_all.deb +``` + +And test it out with: +``` +man hypernode +``` + +To inspect the contents of the deb archive you can run: +``` +# dpkg -L hndocsnext +/. +/usr +/usr/local +/usr/local/man +/usr/local/man/man3 +/usr/local/man/man3/hypernode.3 +/usr/share +/usr/share/doc +/usr/share/doc/hndocsnext +/usr/share/doc/hndocsnext/README.md +/usr/share/doc/hndocsnext/changelog.gz +``` diff --git a/debian/changelog b/debian/changelog new file mode 100644 index 00000000..7f524424 --- /dev/null +++ b/debian/changelog @@ -0,0 +1,6 @@ +hndocsnext (20230121.173551) UNRELEASED; urgency=medium + + [ Rick van de Loo ] + * Initial packaging + + -- Rick van de Loo Sat, 21 Jan 2023 17:35:51 +0200 diff --git a/debian/compat b/debian/compat new file mode 100644 index 00000000..ec635144 --- /dev/null +++ b/debian/compat @@ -0,0 +1 @@ +9 diff --git a/debian/control b/debian/control new file mode 100644 index 00000000..255ffe1c --- /dev/null +++ b/debian/control @@ -0,0 +1,13 @@ +Source: hndocsnext +Priority: optional +Maintainer: Hypernode Tech Team +Build-Depends: debhelper (>= 9), python3, python3-venv, python3-dev +Standards-Version: 3.9.4 +Homepage: https://github.com/ByteInternet/hypernode-docs-next +Vcs-Git: git@github.com:ByteInternet/hypernode-docs-next.git + +Package: hndocsnext +Section: doc +Architecture: all +Depends: ${misc:Depends} +Description: Hypernode docs in manpage form. Run 'man hypernode'. diff --git a/debian/docs b/debian/docs new file mode 100644 index 00000000..b43bf86b --- /dev/null +++ b/debian/docs @@ -0,0 +1 @@ +README.md diff --git a/debian/hndocsnext.install b/debian/hndocsnext.install new file mode 100644 index 00000000..10af3d38 --- /dev/null +++ b/debian/hndocsnext.install @@ -0,0 +1,3 @@ +# https://www.debian.org/doc/manuals/maint-guide/dother.en.html#install + +docs/_build/man/hypernode.3 /usr/local/man/man3/ diff --git a/debian/hndocsnext.postinst b/debian/hndocsnext.postinst new file mode 100644 index 00000000..7e6f2bb1 --- /dev/null +++ b/debian/hndocsnext.postinst @@ -0,0 +1,3 @@ +#!/bin/sh +set -e +mandb diff --git a/debian/rules b/debian/rules new file mode 100755 index 00000000..8af57186 --- /dev/null +++ b/debian/rules @@ -0,0 +1,17 @@ +#!/usr/bin/make -f +# -*- makefile -*- + +# Uncomment this to turn on verbose mode. +#export DH_VERBOSE=1 +.PHONY: build + +build: + python3 -m venv venv + venv/bin/pip install -r requirements/development.txt + bash -c 'source venv/bin/activate; bin/build_manpage' + mv docs/_build/man/docs.1 docs/_build/man/hypernode.3 + +override_dh_usrlocal: + +%: + dh $@ diff --git a/debian/source/format b/debian/source/format new file mode 100644 index 00000000..89ae9db8 --- /dev/null +++ b/debian/source/format @@ -0,0 +1 @@ +3.0 (native) diff --git a/mark-release.sh b/mark-release.sh new file mode 100644 index 00000000..98917d93 --- /dev/null +++ b/mark-release.sh @@ -0,0 +1,154 @@ +#!/usr/bin/env bash + +read -r -d '' USAGE << EOUSAGE +Mark a release for project, ensure commits in master are in debian changelog. +If there are changes to release, update version and debian changelog, +also can tag and push the release. +If all commits are in changelog, won't change anything. +The last line of output indicates if a release is marked or not. +usage: $0 [options] +options: + -a automated mode (commit, tag, push) + -c commit the changes for marking the release + -h show this help and exit + -p git push HEAD and tags + -t tag the commit + -v verbose output +environment: + AUTHOR commit author (name ) format + DEBFULLNAME changelog writer name + DEBEMAIL changelog writer email + MESSAGE commit message +EOUSAGE + +# ==== opts ==== +COMMIT=false +PUSH=false +TAG=false +VERBOSE=false + +while getopts 'achptv' flag; do +case "$flag" in + a) + COMMIT=true + TAG=true + PUSH=true + ;; + c) + COMMIT=true + ;; + h) + echo "$USAGE" + exit + ;; + p) + PUSH=true + ;; + t) + TAG=true + ;; + v) + VERBOSE=true + ;; +esac +done + + +set -o errexit + +ROOT_DIR=$(realpath $(dirname $0)) +CHANGELOG="$ROOT_DIR/debian/changelog" +VERSION=$(date "+%Y%m%d.%H%M%S") +LOG_USER="${SUDO_USER:-$USER}" + +# === options from env ==== + +# committer info +AUTHOR="${AUTHOR:-}" +MESSAGE="${MESSAGE}" +if [[ -z "$MESSAGE" ]]; then + MESSAGE="[automated] Marking Release $VERSION" +fi + +# changelog writer info +export DEBFULLNAME="${DEBFULLNAME:-Hypernode team}" +export DEBEMAIL="${DEBMAIL:-hypernode@byte.nl}" + + +log() { + logger --tag 'hypernode-docs-next-mark-release' "[$$ @$LOG_USER] $1" + if $VERBOSE; then + echo "$1" + fi +} + +# deb_changelog_updated: returns 0 if there are changes to be released or 1 otherwise +deb_changelog_updated() { + log "checking if debian changelog needs update" + # use gbp dch itself to see if there are any changes detected. + # this way the logic of detecting changes is more consistent with + # the rest of the system. + gbp dch --debian-tag="%(version)s" --debian-branch=master + # find changelog diff to see if there new commits in changelog. + # commits are usually added like this to the changelog: + # [ author ] + # * commit message + # first look for commit messages, if nothing found, then see if there is an empty author section, + # as a fallback. + local changed=$(git diff --text --ignore-all-space --unified=0 --no-color $CHANGELOG | grep --line-regexp --perl-regexp '\+\s{2,}\* .+') + if [[ -z "$changed" ]]; then + changed=$(git diff --text --ignore-all-space --unified=0 --no-color $CHANGELOG | grep --line-regexp --perl-regexp '\+\\s{2,}\[.+\].*') + fi + log "reverting possible changes in debian changelog during update detection" + git checkout -- $CHANGELOG + if [[ -n "$changed" ]]; then + return 0 + fi + return 1 +} + +mark_release() { + log "marking release $VERSION ..." + + log "generating debian changelog" + gbp dch --debian-tag="%(version)s" --new-version=$VERSION --debian-branch=master + git add $CHANGELOG +} + +commit() { + log "comitting the release changes" + if [[ -z "$AUTHOR" ]]; then + git commit --no-edit --message="$MESSAGE" + else + git commit --no-edit --message="$MESSAGE" --author "$AUTHOR" + fi +} + + +if ! deb_changelog_updated; then + log "detected no change, skipping marking release!" + echo 'no change' + exit +fi + +mark_release + +if $COMMIT; then + commit + if $TAG; then + log "creating git tag '$VERSION' ..." + git tag $VERSION + fi + + if $PUSH; then + log "pushing changes to origin ..." + git push origin HEAD + if $TAG; then + git push origin $VERSION + fi + fi +else + log "not committing, skipping tagging and pushing!" +fi + +echo "marked release $VERSION" From 7441c32f85cd0353ac6d878e310558bca3e218d9 Mon Sep 17 00:00:00 2001 From: Rick van de Loo Date: Sun, 22 Jan 2023 14:00:28 +0100 Subject: [PATCH 32/51] use relative path for nodejs install link PR comment by Timon: > Yeah please make it relative, then we can keep track of references and make sure they are valid --- .../tools/how-to-use-node-js-and-npm-on-hypernode.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/hypernode-platform/tools/how-to-use-node-js-and-npm-on-hypernode.md b/docs/hypernode-platform/tools/how-to-use-node-js-and-npm-on-hypernode.md index 4fc7a798..bc4e6254 100644 --- a/docs/hypernode-platform/tools/how-to-use-node-js-and-npm-on-hypernode.md +++ b/docs/hypernode-platform/tools/how-to-use-node-js-and-npm-on-hypernode.md @@ -100,7 +100,7 @@ npm install less ### Install Yarn -*To install yarn, a more recent version of nodejs is required, so [follow the instructions and download and unpack a newer version of nodejs](https://docs.hypernode.io/hypernode-platform/tools/how-to-use-node-js-and-npm-on-hypernode.html#using-an-newer-version-of-node-js) first. +*To install yarn, a more recent version of nodejs is required, so [follow the instructions and download and unpack a newer version of nodejs](../../hypernode-platform/tools/how-to-use-node-js-and-npm-on-hypernode.md#using-an-newer-version-of-node-js) first.* ```nginx npm install yarn From bb385513ae29780d05226a75d435a2e6c6bc07b2 Mon Sep 17 00:00:00 2001 From: Timon de Groot Date: Mon, 23 Jan 2023 09:30:37 +0100 Subject: [PATCH 33/51] Simplify internal link --- .../tools/how-to-use-node-js-and-npm-on-hypernode.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/hypernode-platform/tools/how-to-use-node-js-and-npm-on-hypernode.md b/docs/hypernode-platform/tools/how-to-use-node-js-and-npm-on-hypernode.md index bc4e6254..e37b7e09 100644 --- a/docs/hypernode-platform/tools/how-to-use-node-js-and-npm-on-hypernode.md +++ b/docs/hypernode-platform/tools/how-to-use-node-js-and-npm-on-hypernode.md @@ -100,7 +100,7 @@ npm install less ### Install Yarn -*To install yarn, a more recent version of nodejs is required, so [follow the instructions and download and unpack a newer version of nodejs](../../hypernode-platform/tools/how-to-use-node-js-and-npm-on-hypernode.md#using-an-newer-version-of-node-js) first.* +*To install yarn, a more recent version of nodejs is required, so [follow the instructions and download and unpack a newer version of nodejs](how-to-use-node-js-and-npm-on-hypernode.md#using-an-newer-version-of-node-js) first.* ```nginx npm install yarn From 58ef7886f5ef5a97e54e6d23d350f19e83ac6c20 Mon Sep 17 00:00:00 2001 From: Timon de Groot Date: Mon, 23 Jan 2023 09:43:11 +0100 Subject: [PATCH 34/51] Fix link and formatting of how-to-use-node-js-and-npm-on-hypernode.md --- ...how-to-use-node-js-and-npm-on-hypernode.md | 65 +++++++++---------- 1 file changed, 31 insertions(+), 34 deletions(-) diff --git a/docs/hypernode-platform/tools/how-to-use-node-js-and-npm-on-hypernode.md b/docs/hypernode-platform/tools/how-to-use-node-js-and-npm-on-hypernode.md index e37b7e09..9c1eb03c 100644 --- a/docs/hypernode-platform/tools/how-to-use-node-js-and-npm-on-hypernode.md +++ b/docs/hypernode-platform/tools/how-to-use-node-js-and-npm-on-hypernode.md @@ -22,7 +22,7 @@ If you use the installed version, you can just start using node and npm. By default, the installed NodeJS version on our Hypernode platform is v10. You can check this on your Hypernode by running the command `node -v`. If you need to manually upgrade an app to another Node.js version like 18, you can use the command below: -```nginx +```bash hypernode-systemctl settings nodejs_version 18 ``` @@ -34,15 +34,15 @@ If you want to execute the tools that you installed using `npm`, you should make This PATH variable is used by the Bash shell to locate binaries and scripts. You can adjust it by exporting the PATH variable: -```nginx - export PATH="/data/web/node_modules/.bin:$PATH" +```bash +export PATH="/data/web/node_modules/.bin:$PATH" ``` If you want this setting to be configured every time you log in to your Hypernode, you can add this setting to your `~/.profile`, this file is loaded every time a new shell is spawned. To configure your PATH variable at login time, run the following command: -```nginx +```bash echo 'export PATH="/data/web/node_modules/.bin:$PATH"' >> ~/.profile ``` @@ -52,61 +52,61 @@ Now every time you log in, the Bash shell is configured to look for tools in `/d Let's install some packages. -When your `PATH` is setup correctly, after the installation with `npm install`, you should immediately be able to use the newly installed tool. +When your `PATH` is set up correctly, after the installation with `npm install`, you should immediately be able to use the newly installed tool. To find the latest command line tool installed, run: `ls -ltr /data/web/node_modules/.bin | tail -1` ### Install Gulp -```nginx - npm install gulp gulp-cli +```bash +npm install gulp gulp-cli ``` ### Install Grunt -```nginx +```bash npm install grunt grunt-cli ``` ### Install Sass -```nginx +```bash npm install sass ``` ### Install Compass -```nginx - npm install compass +```bash +npm install compass ``` When your Hypernode is using the OS [Debian Buster](https://changelog.hypernode.com/changelog/release-7351-new-hypernodes-will-be-booted-on-debian-buster/) then the aforementioned method will not be applicable. Instead you can use the following command to install compass -```nginx +```bash gem install --user-install compass ``` Next you need to set the correct path so you don't have to type the absolute path to access compass each time. You can do s with the command: -```nginx +```bash export PATH="/data/web/.gem/ruby/2.5.0/gems/compass-1.0.3/bin:$PATH" ``` ### Install Less -```nginx +```bash npm install less ``` ### Install Yarn -*To install yarn, a more recent version of nodejs is required, so [follow the instructions and download and unpack a newer version of nodejs](how-to-use-node-js-and-npm-on-hypernode.md#using-an-newer-version-of-node-js) first.* +*To install yarn, a more recent version of nodejs is required, so [follow the instructions and download and unpack a newer version of nodejs](#using-a-newer-version-of-nodejs) first.* -```nginx +```bash npm install yarn ``` -## **Using an newer version of Node.js** +## **Using a newer version of Node.js** ### **Install a newer version of Node.js** @@ -118,20 +118,17 @@ All we need to do is download and unpack them to make use of node and npm and in In this example we use version v14.17.6 but the installation process is the same when using older or newer versions. - First, create the directory where we will unpack Node.js: - -```nginx -mkdir /data/web/.node -``` - + ```bash + mkdir /data/web/.node + ``` - Then, get the precompiled package from the Node.js website and unpack it in our directory: + ```bash + wget https://nodejs.org/dist/v14.17.6/node-v14.17.6-linux-x64.tar.xz -O /tmp/node.txz + cd ~/.node && tar xvfJ /tmp/node.txz -C . --strip-components=1 + rm /tmp/node.txz + ``` -```nginx -wget [https://nodejs.org/dist/v14.17.6/node-v14.17.6-linux-x64.tar.xz](https://nodejs.org/dist/v4.4.5/node-v4.4.5-linux-x64.tar.xz) -O /tmp/node.txz -cd ~/.node && tar xvfJ /tmp/node.txz -C . --strip-components=1 -rm /tmp/node.txz -``` - -That’s it, you now have a precompiled node installation in `~/node` +That’s it, you now have a precompiled node installation in `~/node`. ### Configure a Manually Installed Node.js @@ -139,18 +136,18 @@ To run the manually installed executables, you need to change your `PATH` variab To do this, run the following command to add the locations to your PATH: -```nginx - export PATH="/data/web/node_modules/.bin:/data/web/.node/bin:$PATH" +```bash +export PATH="/data/web/node_modules/.bin:/data/web/.node/bin:$PATH" ``` Or to make the settings permanent, add it to your `~/.profile`: -```nginx - echo 'export PATH="/data/web/node_modules/.bin:/data/web/.node/bin:$PATH"' >> ~/.profile +```bash +echo 'export PATH="/data/web/node_modules/.bin:/data/web/.node/bin:$PATH"' >> ~/.profile ``` Both the installations (the already installed or the precompiled self-downloaded version) use `/data/web/node_modules` as their location to install new packages to when using npm. ## Troubleshooting -- When using npm search, so much memory is used that on Hypernode Grow plans, your shell will get killed and you’ll be automagically logged out of your Hypernode due to our out of memory protection. +- When using npm search, so much memory is used that on Hypernode Grow plans, your shell will get killed, and you’ll be automagically logged out of your Hypernode due to our out of memory protection. From d05a7bac7af3ba1eb04e8eba9f8e75937fa9d1c7 Mon Sep 17 00:00:00 2001 From: Timon de Groot Date: Mon, 23 Jan 2023 09:59:10 +0100 Subject: [PATCH 35/51] Add tests for generate_nginx_redirects.py --- .../redirect/generate_nginx_redirects.py | 9 +-- tests/redirect/__init__.py | 0 .../redirect/test_generate_nginx_redirects.py | 81 +++++++++++++++++++ 3 files changed, 84 insertions(+), 6 deletions(-) create mode 100644 tests/redirect/__init__.py create mode 100644 tests/redirect/test_generate_nginx_redirects.py diff --git a/hypernode/redirect/generate_nginx_redirects.py b/hypernode/redirect/generate_nginx_redirects.py index f3ba9bea..fbea4a80 100644 --- a/hypernode/redirect/generate_nginx_redirects.py +++ b/hypernode/redirect/generate_nginx_redirects.py @@ -3,16 +3,13 @@ from pathlib import Path from typing import List -from frontmatter import Frontmatter - -from hypernode.common.docs import get_all_docs +from hypernode.common.docs import get_all_docs, read_doc from hypernode.common.settings import DOCS_DIR def get_redirects_from_doc(doc: Path) -> List[str]: - fm = Frontmatter.read_file(doc) - attributes = fm["attributes"] or {} - return attributes.get("redirect_from", []) + fm, _, _ = read_doc(doc) + return fm.get("redirect_from", []) def get_path_for_doc(doc: Path) -> str: diff --git a/tests/redirect/__init__.py b/tests/redirect/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/tests/redirect/test_generate_nginx_redirects.py b/tests/redirect/test_generate_nginx_redirects.py new file mode 100644 index 00000000..3270b53e --- /dev/null +++ b/tests/redirect/test_generate_nginx_redirects.py @@ -0,0 +1,81 @@ +import os +from pathlib import Path + +from hypernode.common.settings import DOCS_DIR +from hypernode.redirect.generate_nginx_redirects import ( + get_path_for_doc, + get_redirects_from_doc, + main, +) +from tests.testcase import HypernodeTestCase + + +class TestMain(HypernodeTestCase): + def setUp(self) -> None: + module = "hypernode.redirect.generate_nginx_redirects." + self.print = self.set_up_patch("builtins.print") + self.get_all_docs = self.set_up_patch( + module + "get_all_docs", return_value=[DOCS_DIR / "index.html"] + ) + self.get_redirects_from_doc = self.set_up_patch( + module + "get_redirects_from_doc", return_value=["/old-url/"] + ) + + def test_main_prints_rewrites(self): + main() + + expected_output = """ +rewrite ^/old-url/$ / permanent; + """.strip() + self.print.assert_called_once_with(expected_output) + + +class TestGetPathForDoc(HypernodeTestCase): + def test_get_path_for_doc_resolves_relative_to_docs_dir(self): + result = get_path_for_doc(DOCS_DIR / "some/doc.md") + + self.assertEqual("/some/doc.html", result) + + def test_get_path_for_doc_replaces_md_with_html(self): + result = get_path_for_doc(DOCS_DIR / "something.md") + + self.assertEqual("/something.html", result) + + def test_get_path_for_doc_replaces_index_html_with_slash(self): + result = get_path_for_doc(DOCS_DIR / "index.md") + + self.assertEqual("/", result) + + def test_get_path_for_doc_prepends_docs_base_url(self): + try: + os.environ["DOCS_BASE_URL"] = "https://www.example.com/" + + result = get_path_for_doc(DOCS_DIR / "some/doc.html") + + self.assertEqual("https://www.example.com/some/doc.html", result) + finally: + del os.environ["DOCS_BASE_URL"] + + +class TestGetRedirectsFromDoc(HypernodeTestCase): + def setUp(self) -> None: + module = "hypernode.redirect.generate_nginx_redirects." + self.read_doc = self.set_up_patch( + module + "read_doc", + return_value=({"redirect_from": ["/old/path/"]}, "", ""), + ) + self.doc = Path("/some/path.md") + + def test_get_redirects_from_doc(self): + result = get_redirects_from_doc(self.doc) + + self.assertEqual(["/old/path/"], result) + self.read_doc.assert_called_once_with(self.doc) + + def test_get_redirects_from_doc_defaults_to_empty_list(self): + self.read_doc.return_value = ({}, "", "") + + result = get_redirects_from_doc(self.doc) + + self.assertEqual([], result) + self.read_doc.assert_called_once_with(self.doc) From dfc5809306f66b77f72f3135a7b4293d02b8bff7 Mon Sep 17 00:00:00 2001 From: Timon de Groot Date: Mon, 23 Jan 2023 10:02:49 +0100 Subject: [PATCH 36/51] pre-commit: Update repos and run isort with black profile --- .pre-commit-config.yaml | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index cff633a5..11dca3a6 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -2,21 +2,22 @@ # See https://pre-commit.com/hooks.html for more hooks repos: - repo: https://github.com/pre-commit/pre-commit-hooks - rev: 'v4.1.0' + rev: 'v4.4.0' hooks: - id: trailing-whitespace - id: end-of-file-fixer - repo: https://github.com/psf/black - rev: '22.10.0' + rev: '22.12.0' hooks: - id: black - repo: https://github.com/myint/autoflake - rev: 'v1.4' + rev: 'v2.0.0' hooks: - id: autoflake args: ["--in-place", "--remove-unused-variables", "--remove-all-unused-imports"] - repo: https://github.com/pycqa/isort - rev: '5.10.1' + rev: '5.11.4' hooks: - id: isort name: isort (python) + args: ["--profile", "black"] From fc860fee53a18a216bd44ac9bd7bb1f876ec7639 Mon Sep 17 00:00:00 2001 From: Timon de Groot Date: Mon, 23 Jan 2023 10:45:36 +0100 Subject: [PATCH 37/51] Create LICENSE.txt --- LICENSE.txt | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 LICENSE.txt diff --git a/LICENSE.txt b/LICENSE.txt new file mode 100644 index 00000000..4f546692 --- /dev/null +++ b/LICENSE.txt @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2023 Hypernode + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. From 475986939de73552591ccf0dd6b39e8de1c98306 Mon Sep 17 00:00:00 2001 From: Timon de Groot Date: Mon, 23 Jan 2023 11:24:48 +0100 Subject: [PATCH 38/51] redirect: Make the trailing slash optional --- hypernode/redirect/generate_nginx_redirects.py | 3 ++- tests/redirect/test_generate_nginx_redirects.py | 14 +++++++++----- 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/hypernode/redirect/generate_nginx_redirects.py b/hypernode/redirect/generate_nginx_redirects.py index fbea4a80..c0ba7250 100644 --- a/hypernode/redirect/generate_nginx_redirects.py +++ b/hypernode/redirect/generate_nginx_redirects.py @@ -27,5 +27,6 @@ def get_path_for_doc(doc: Path) -> str: def main(): for doc in get_all_docs(): for redirect in get_redirects_from_doc(doc): + redirect = redirect.rstrip("/") doc_path = get_path_for_doc(doc) - print("rewrite ^{}$ {} permanent;".format(redirect, doc_path)) + print("rewrite ^{}/?$ {} permanent;".format(redirect, doc_path)) diff --git a/tests/redirect/test_generate_nginx_redirects.py b/tests/redirect/test_generate_nginx_redirects.py index 3270b53e..cb849c36 100644 --- a/tests/redirect/test_generate_nginx_redirects.py +++ b/tests/redirect/test_generate_nginx_redirects.py @@ -1,5 +1,6 @@ import os from pathlib import Path +from unittest.mock import call from hypernode.common.settings import DOCS_DIR from hypernode.redirect.generate_nginx_redirects import ( @@ -18,16 +19,19 @@ def setUp(self) -> None: module + "get_all_docs", return_value=[DOCS_DIR / "index.html"] ) self.get_redirects_from_doc = self.set_up_patch( - module + "get_redirects_from_doc", return_value=["/old-url/"] + module + "get_redirects_from_doc", + return_value=["/old-url/", "/en/another-url"], ) def test_main_prints_rewrites(self): main() - expected_output = """ -rewrite ^/old-url/$ / permanent; - """.strip() - self.print.assert_called_once_with(expected_output) + self.print.assert_has_calls( + [ + call("rewrite ^/old-url/?$ / permanent;"), + call("rewrite ^/en/another-url/?$ / permanent;"), + ] + ) class TestGetPathForDoc(HypernodeTestCase): From 47abf6ce193ffc5aa399d4e728e3ecc5b023236c Mon Sep 17 00:00:00 2001 From: Timon de Groot Date: Mon, 23 Jan 2023 11:32:47 +0100 Subject: [PATCH 39/51] docs: Add redirect_from url to the m2 api protection page --- .../how-to-protect-the-magento-2-api.md | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/docs/ecommerce-applications/magento-2/how-to-protect-the-magento-2-api.md b/docs/ecommerce-applications/magento-2/how-to-protect-the-magento-2-api.md index ad93c6e3..2cdc12cf 100644 --- a/docs/ecommerce-applications/magento-2/how-to-protect-the-magento-2-api.md +++ b/docs/ecommerce-applications/magento-2/how-to-protect-the-magento-2-api.md @@ -6,13 +6,16 @@ myst: title: How to protect the Magento 2 API? | Hypernode redirect_from: - /en/ecommerce/magento-2/how-to-protect-the-magento-2-api/ + - /knowledgebase/protecting-the-magento-2-api/ --- # How to Protect the Magento 2 API -**The Magento team released security update**[**Magento 2.0.3**](https://magento.com/security/patches/magento-203-security-update)\*\*on March 30th 2017. This release contains a security fix that restricts access to anonymous web APIs.\*\*\*\*[Read more.](https://magento.com/security/best-practices/restricting-access-anonymous-web-apis)\*\***We recommend you to**[**update your Magento**](how-to-update-magento-2.md)**version to Magento 2.0.3 instead of blocking the API.** +```{note} +The Magento team released security update [Magento 2.0.3](https://magento.com/security/patches/magento-203-security-update) on March 30th 2017. This release contains a security fix that restricts access to anonymous web APIs. [Read more.](https://magento.com/security/best-practices/restricting-access-anonymous-web-apis) We recommend you to [update your Magento](how-to-update-magento-2.md) version to Magento 2.0.3 instead of blocking the API. +``` In March 2016, Paul Bosselaar and others discovered that the Magento 2 API by default discloses information that can be considered private: @@ -40,9 +43,9 @@ If you need to allow one or more of these URLs to be accessable, you can easily Modify the lines of the following block: -``` +```nginx location ~ ^/(pub/)?(rest|soap)(/.+)?/V1/(products|store/storeViews|store/storeConfigs)/?$ { - return https://support.hypernode.com/knowledgebase/protecting-the-magento-2-api/; + return https://support.hypernode.com/knowledgebase/protecting-the-magento-2-api/; } ``` @@ -50,11 +53,12 @@ When full access to the API is needed, the easiest way to do this is done with ` If you do not require the API, it is recommended to block it entirely. Edit the file `/data/web/nginx/server.magento2api`, remove all lines and add -``` -location ~ ^/(pub/)?(rest|soap)/ { return 403; +```nginx +location ~ ^/(pub/)?(rest|soap)/ { + return 403; } ``` -## I 'm Not a Hypernode User +## I'm Not a Hypernode User You will need to do some extra work yourself. First, contact your hosting provider and ask them to help you. Otherwise you can block the API using .htaccess in case of Apache. Perhaps the Nginx rules above might work, but we do not provide support on them for non-Hypernode environments. Good luck! From c32aca9d9af92e1cb7f14a9fc2806231efd2228c Mon Sep 17 00:00:00 2001 From: Cipriano Groenendal Date: Mon, 23 Jan 2023 11:47:09 +0100 Subject: [PATCH 40/51] Wrap long line into two --- .../user-roles-and-permissions-on-hypernodes-control-panel.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/docs/services/control-panel/user-roles-and-permissions-on-hypernodes-control-panel.md b/docs/services/control-panel/user-roles-and-permissions-on-hypernodes-control-panel.md index 9df40905..628d757f 100644 --- a/docs/services/control-panel/user-roles-and-permissions-on-hypernodes-control-panel.md +++ b/docs/services/control-panel/user-roles-and-permissions-on-hypernodes-control-panel.md @@ -47,7 +47,8 @@ A user can have different roles between teams. Each role is defined by a set of | Can manage bots | | ✅ | ✅ | ✅ | | Can add and remove team members | | | ✅ | ✅ | | Can change roles within the team | | | ✅ | ✅ | -| Can remove Hypernodes and change the name of the team | | | ✅ | ✅ | +| Can remove Hypernodes | | | ✅ | ✅ | +| Can rename the team | | | ✅ | ✅ | | Can change the plan | | | ✅ | ✅ | | Can delete the team | | | | ✅ | | Can add Hypernodes to a team | | | | ✅ | From 0b351b67ac6288057c2f16854ce8a257dcf6ab3c Mon Sep 17 00:00:00 2001 From: Timon de Groot Date: Mon, 23 Jan 2023 11:53:30 +0100 Subject: [PATCH 41/51] doc: Add redirect_from to your-dns-is-misconfigured.md --- docs/hypernode-platform/dns/your-dns-is-misconfigured.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/hypernode-platform/dns/your-dns-is-misconfigured.md b/docs/hypernode-platform/dns/your-dns-is-misconfigured.md index d1386f95..74402c1d 100644 --- a/docs/hypernode-platform/dns/your-dns-is-misconfigured.md +++ b/docs/hypernode-platform/dns/your-dns-is-misconfigured.md @@ -6,6 +6,7 @@ myst: title: What to do if your DNS is misconfigured? | Hypernode redirect_from: - /en/hypernode/dns/your-dns-is-misconfigured/ + - /knowledgebase/www-domain-misconfigured/ --- From dc04d19a7799f038fbdfd2ddc0aafe4f5092428d Mon Sep 17 00:00:00 2001 From: Timon de Groot Date: Mon, 23 Jan 2023 11:55:52 +0100 Subject: [PATCH 42/51] docs: Fix markdown formatting --- ...permissions-on-hypernodes-control-panel.md | 58 +++++++++---------- 1 file changed, 29 insertions(+), 29 deletions(-) diff --git a/docs/services/control-panel/user-roles-and-permissions-on-hypernodes-control-panel.md b/docs/services/control-panel/user-roles-and-permissions-on-hypernodes-control-panel.md index 628d757f..9a14db7b 100644 --- a/docs/services/control-panel/user-roles-and-permissions-on-hypernodes-control-panel.md +++ b/docs/services/control-panel/user-roles-and-permissions-on-hypernodes-control-panel.md @@ -26,35 +26,35 @@ A user can have different roles between teams. Each role is defined by a set of ## Permissions -| | | | | | -| ----------------------------------------------------- | ------------------------ | ------------- | --------- | --------- | -| **Permissions** | **Merchant (view-only)** | **Developer** | **Admin** | **Owner** | -| See the team | ✅ | ✅ | ✅ | ✅ | -| See the Hypernodes in the team | ✅ | ✅ | ✅ | ✅ | -| See the logs | ✅ | ✅ | ✅ | ✅ | -| See the SSH keys that have been added | ✅ | ✅ | ✅ | ✅ | -| See the linked SSL certificate | ✅ | ✅ | ✅ | ✅ | -| See the allowlist | ✅ | ✅ | ✅ | ✅ | -| Manage the allowlist | | ✅ | ✅ | ✅ | -| Manage SSL certificates | | ✅ | ✅ | ✅ | -| Add SSH keys | | ✅ | ✅ | ✅ | -| Request to restore backups | | ✅ | ✅ | ✅ | -| Attach backups | | ✅ | ✅ | ✅ | -| Create backups | | ✅ | ✅ | ✅ | -| Can enable Varnish | | ✅ | ✅ | ✅ | -| Can change the PHP version | | ✅ | ✅ | ✅ | -| Can manage the monitoring | | ✅ | ✅ | ✅ | -| Can manage bots | | ✅ | ✅ | ✅ | -| Can add and remove team members | | | ✅ | ✅ | -| Can change roles within the team | | | ✅ | ✅ | -| Can remove Hypernodes | | | ✅ | ✅ | -| Can rename the team | | | ✅ | ✅ | -| Can change the plan | | | ✅ | ✅ | -| Can delete the team | | | | ✅ | -| Can add Hypernodes to a team | | | | ✅ | -| Can transfer ownership | | | | ✅ | -| Can change the payment details | | | | ✅ | -| Can view the invoices | | | | ✅ | +| | | | | | +| ------------------------------------- | ------------------------ | ------------- | --------- | --------- | +| **Permissions** | **Merchant (view-only)** | **Developer** | **Admin** | **Owner** | +| See the team | ✅ | ✅ | ✅ | ✅ | +| See the Hypernodes in the team | ✅ | ✅ | ✅ | ✅ | +| See the logs | ✅ | ✅ | ✅ | ✅ | +| See the SSH keys that have been added | ✅ | ✅ | ✅ | ✅ | +| See the linked SSL certificate | ✅ | ✅ | ✅ | ✅ | +| See the allowlist | ✅ | ✅ | ✅ | ✅ | +| Manage the allowlist | | ✅ | ✅ | ✅ | +| Manage SSL certificates | | ✅ | ✅ | ✅ | +| Add SSH keys | | ✅ | ✅ | ✅ | +| Request to restore backups | | ✅ | ✅ | ✅ | +| Attach backups | | ✅ | ✅ | ✅ | +| Create backups | | ✅ | ✅ | ✅ | +| Can enable Varnish | | ✅ | ✅ | ✅ | +| Can change the PHP version | | ✅ | ✅ | ✅ | +| Can manage the monitoring | | ✅ | ✅ | ✅ | +| Can manage bots | | ✅ | ✅ | ✅ | +| Can add and remove team members | | | ✅ | ✅ | +| Can change roles within the team | | | ✅ | ✅ | +| Can remove Hypernodes | | | ✅ | ✅ | +| Can rename the team | | | ✅ | ✅ | +| Can change the plan | | | ✅ | ✅ | +| Can delete the team | | | | ✅ | +| Can add Hypernodes to a team | | | | ✅ | +| Can transfer ownership | | | | ✅ | +| Can change the payment details | | | | ✅ | +| Can view the invoices | | | | ✅ | ## How to Assign Roles From a6e3f351537566082299416aee77652bef132dbb Mon Sep 17 00:00:00 2001 From: Alexander Grooff Date: Mon, 23 Jan 2023 11:56:05 +0100 Subject: [PATCH 43/51] feat: reuse brancher on PR Introduced in https://github.com/ByteInternet/hypernode-deploy/pull/81 --- .github/workflows/deploy.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/deploy.yaml b/.github/workflows/deploy.yaml index f502822f..83f9613b 100644 --- a/.github/workflows/deploy.yaml +++ b/.github/workflows/deploy.yaml @@ -58,7 +58,7 @@ jobs: ssh-private-key: ${{ secrets.SSH_PRIVATE_KEY }} - run: mkdir -p $HOME/.ssh - name: deploy to acceptance - run: hypernode-deploy deploy acceptance -vvv + run: hypernode-deploy deploy acceptance -vvv --reuse-brancher env: HYPERNODE_API_TOKEN: ${{ secrets.HYPERNODE_API_TOKEN }} - name: Get brancher hostname From a08337abc0d2b66abde260ef2d4951985f7e9ffe Mon Sep 17 00:00:00 2001 From: Timon de Groot Date: Mon, 23 Jan 2023 12:06:36 +0100 Subject: [PATCH 44/51] docs: Add redirect_from to magmi doc --- .../tools/unblocking-and-accessing-magmi-for-hypernode.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/hypernode-platform/tools/unblocking-and-accessing-magmi-for-hypernode.md b/docs/hypernode-platform/tools/unblocking-and-accessing-magmi-for-hypernode.md index 17115ea4..4621f946 100644 --- a/docs/hypernode-platform/tools/unblocking-and-accessing-magmi-for-hypernode.md +++ b/docs/hypernode-platform/tools/unblocking-and-accessing-magmi-for-hypernode.md @@ -7,6 +7,7 @@ myst: redirect_from: - /en/hypernode/tools/unblocking-and-accessing-magmi-for-hypernode/ - /knowledgebase/unblocking-and-accessing-magmi-for-hypernode/ + - /knowledgebase/securing-access-to-magmi/ --- From 2050566df4af0dc308d2f22a91b16ff14a107b02 Mon Sep 17 00:00:00 2001 From: Lianne van Looij <121667008+Lietje@users.noreply.github.com> Date: Mon, 23 Jan 2023 12:07:47 +0100 Subject: [PATCH 45/51] Updated mentioned prices to new prices jan 2023 Changed the prices to the new prices due to the price increase Jan 2023 --- .../how-to-change-your-plan-via-the-cli.md | 68 +++++++++---------- 1 file changed, 34 insertions(+), 34 deletions(-) diff --git a/docs/services/control-panel/how-to-change-your-plan-via-the-cli.md b/docs/services/control-panel/how-to-change-your-plan-via-the-cli.md index e76d525d..062518a2 100644 --- a/docs/services/control-panel/how-to-change-your-plan-via-the-cli.md +++ b/docs/services/control-panel/how-to-change-your-plan-via-the-cli.md @@ -48,37 +48,37 @@ All Hypernode plan codes can also be found in the below table. | | | | | | | | | -------------------- | ---------------------- | --------- | -------- | ------- | -------- | ------------------ | | **Product code** | **Name** | **Price** | **CPUs** | **RAM** | **Disk** | **Provider** | -| FALCON_XS_202203 | Falcon XS | €99 | 2 | 4 GB | 44 GB | Combell OpenStack | -| FALCON_XS_202203DEV | Falcon XS Development | €75 | 2 | 4 GB | 44 GB | Combell OpenStack | -| FALCON_S_202203 | Falcon S | €139 | 2 | 8 GB | 44 GB | Combell OpenStack | -| FALCON_S_202203DEV | Faclon S Development | €99 | 2 | 8 GB | 44 GB | Combell OpenStack | -| FALCON_M_202203 | Falcon M | €186 | 3 | 16 GB | 62 GB | Combell OpenStack | -| FALCON_M_202203DEV | Falcon M Development | €119 | 3 | 16 GB | 62 GB | Combell OpenStack | -| FALCON_L_202203 | Falcon L | €305 | 5 | 24 GB | 138 GB | Combell OpenStack | -| FALCON_L_202203DEV | Falcon L Development | €199 | 5 | 24 GB | 138 GB | Combell OpenStack | -| FALCON_XL_202203 | Falcon XL | €549 | 8 | 32 GB | 286 GB | Combell OpenStack | -| FALCON_XL_202203DEV | Falcon XL Development | €385 | 8 | 32 GB | 286 GB | Combell OpenStack | -| FALCON_2XL_202203 | Falcon 2XL | €849 | 12 | 48 GB | 606 GB | Combell OpenStack | -| FALCON_2XL_202203DEV | Falcon 2XL Development | €629 | 12 | 48 GB | 606 GB | Combell OpenStack | -| FALCON_3XL_202203 | Faclon 3XL | €1235 | 16 | 64 GB | 901 GB | Combell OpenStack | -| FALCON_3XL_202203DEV | Falcon 3XL Development | €889 | 16 | 64 GB | 901 GB | Combell OpenStack | -| FALCON_4XL_202203 | Falcon 4XL | €1799 | 18 | 80 GB | 1206 GB | Combell OpenStack | -| FALCON_4XL_202203DEV | Falcon 4XL Development | €1435 | 18 | 80 GB | 1206 GB | Combell OpenStack | -| FALCON_5XL_202203 | Falcon 5XL | €2699 | 20 | 96 GB | 1812 GB | Combell OpenStack | -| FALCON_5XL_202203DEV | Falcon 5XL Development | €2095 | 20 | 96 GB | 1812GB | Combell OpenStack | -| EAGLE_M_202203 | Eagle M | €519 | 4 | 8 GB | 250 GB | Amazon (Frankfurt) | -| EAGLE_M_202203DEV | Eagle M Development | €425 | 4 | 8 GB | 250 GB | Amazon (Frankfurt) | -| EAGLE_L_202203 | Eagle L | €939 | 8 | 16 GB | 500 GB | Amazon (Frankfurt | -| EAGLE_L_202203DEV | Eagle L | €790 | 8 | 16 GB | 500 GB | Amazon (Frankfurt) | -| EAGLE_XL_202203 | Eagle XL | €1659 | 16 | 32 GB | 750 GB | Amazon (Frankfurt) | -| EAGLE_XL_202203DEV | Eagle XL Development | €1360 | 16 | 32 GB | 750 GB | Amazon (Frankfurt) | -| EAGLE_2XL_202203 | Eagle 2XL | €3019 | 36 | 72 GB | 1000 GB | Amazon (Frankfurt) | -| EAGLE_2XL_202203DEV | Eagle 2XL Development | €2575 | 36 | 72 GB | 1000 GB | Amazon (Frankfurt) | -| EAGLE_3XL_202203 | Eagle 3XL | €4579 | 40 | 160 GB | 1000 GB | Amazon (Frankfurt) | -| EAGLE_3XL_202203DEV | Eagle 3XL Development | €3975 | 40 | 160 GB | 1000 GB | Amazon (Frankfurt) | -| EAGLE_4XL_202203 | Eagle 4XL | €7289 | 64 | 256 GB | 1000 GB | Amazon (Frankfurt) | -| EAGLE_4XL_202203DEV | Eagle 4XL Development | €6195 | 64 | 256 GB | 1000 GB | Amazon (Frankfurt) | -| EAGLE_5XL_202203 | Eagle 5XL | €10199 | 96 | 384 GB | 1000 GB | Amazon (Frankfurt) | -| EAGLE_5XL_202203DEV | Eagle 5XL Development | €8849 | 96 | 384 GB | 1000 GB | Amazon (Frankfurt) | -| EAGLE_6XL_202203 | Eagle 6XL | €25999 | 128 | 1952 GB | 1000 GB | Amazon (Frankfurt) | -| EAGLE_6XL_202203DEV | Eagle 6XL Development | €20999 | 128 | 1952 GB | 1000 GB | Amazon (Frankfurt) | +| FALCON_XS_202203 | Falcon XS | €109 | 2 | 4 GB | 44 GB | Combell OpenStack | +| FALCON_XS_202203DEV | Falcon XS Development | €85 | 2 | 4 GB | 44 GB | Combell OpenStack | +| FALCON_S_202203 | Falcon S | €155 | 2 | 8 GB | 44 GB | Combell OpenStack | +| FALCON_S_202203DEV | Faclon S Development | €109 | 2 | 8 GB | 44 GB | Combell OpenStack | +| FALCON_M_202203 | Falcon M | €205 | 3 | 16 GB | 62 GB | Combell OpenStack | +| FALCON_M_202203DEV | Falcon M Development | €129 | 3 | 16 GB | 62 GB | Combell OpenStack | +| FALCON_L_202203 | Falcon L | €335 | 5 | 24 GB | 138 GB | Combell OpenStack | +| FALCON_L_202203DEV | Falcon L Development | €219 | 5 | 24 GB | 138 GB | Combell OpenStack | +| FALCON_XL_202203 | Falcon XL | €605 | 8 | 32 GB | 286 GB | Combell OpenStack | +| FALCON_XL_202203DEV | Falcon XL Development | €425 | 8 | 32 GB | 286 GB | Combell OpenStack | +| FALCON_2XL_202203 | Falcon 2XL | €935 | 12 | 48 GB | 606 GB | Combell OpenStack | +| FALCON_2XL_202203DEV | Falcon 2XL Development | €695 | 12 | 48 GB | 606 GB | Combell OpenStack | +| FALCON_3XL_202203 | Falcon 3XL | €1359 | 16 | 64 GB | 901 GB | Combell OpenStack | +| FALCON_3XL_202203DEV | Falcon 3XL Development | €979 | 16 | 64 GB | 901 GB | Combell OpenStack | +| FALCON_4XL_202203 | Falcon 4XL | €1979 | 18 | 80 GB | 1206 GB | Combell OpenStack | +| FALCON_4XL_202203DEV | Falcon 4XL Development | €1579 | 18 | 80 GB | 1206 GB | Combell OpenStack | +| FALCON_5XL_202203 | Falcon 5XL | €2969 | 20 | 96 GB | 1812 GB | Combell OpenStack | +| FALCON_5XL_202203DEV | Falcon 5XL Development | €2305 | 20 | 96 GB | 1812GB | Combell OpenStack | +| EAGLE_M_202203 | Eagle M | €569 | 4 | 8 GB | 250 GB | Amazon (Frankfurt) | +| EAGLE_M_202203DEV | Eagle M Development | €469 | 4 | 8 GB | 250 GB | Amazon (Frankfurt) | +| EAGLE_L_202203 | Eagle L | €1035 | 8 | 16 GB | 500 GB | Amazon (Frankfurt | +| EAGLE_L_202203DEV | Eagle L | €869 | 8 | 16 GB | 500 GB | Amazon (Frankfurt) | +| EAGLE_XL_202203 | Eagle XL | €1825 | 16 | 32 GB | 750 GB | Amazon (Frankfurt) | +| EAGLE_XL_202203DEV | Eagle XL Development | €1499 | 16 | 32 GB | 750 GB | Amazon (Frankfurt) | +| EAGLE_2XL_202203 | Eagle 2XL | €3319 | 36 | 72 GB | 1000 GB | Amazon (Frankfurt) | +| EAGLE_2XL_202203DEV | Eagle 2XL Development | €2835 | 36 | 72 GB | 1000 GB | Amazon (Frankfurt) | +| EAGLE_3XL_202203 | Eagle 3XL | €5035 | 40 | 160 GB | 1000 GB | Amazon (Frankfurt) | +| EAGLE_3XL_202203DEV | Eagle 3XL Development | €4375 | 40 | 160 GB | 1000 GB | Amazon (Frankfurt) | +| EAGLE_4XL_202203 | Eagle 4XL | €8019 | 64 | 256 GB | 1000 GB | Amazon (Frankfurt) | +| EAGLE_4XL_202203DEV | Eagle 4XL Development | €6815 | 64 | 256 GB | 1000 GB | Amazon (Frankfurt) | +| EAGLE_5XL_202203 | Eagle 5XL | €11219 | 96 | 384 GB | 1000 GB | Amazon (Frankfurt) | +| EAGLE_5XL_202203DEV | Eagle 5XL Development | €9735 | 96 | 384 GB | 1000 GB | Amazon (Frankfurt) | +| EAGLE_6XL_202203 | Eagle 6XL | €28599 | 128 | 1952 GB | 1000 GB | Amazon (Frankfurt) | +| EAGLE_6XL_202203DEV | Eagle 6XL Development | €23099 | 128 | 1952 GB | 1000 GB | Amazon (Frankfurt) | From 294ae486a52d969f15f54d0d327b82a15e1a0112 Mon Sep 17 00:00:00 2001 From: Cipriano Groenendal Date: Mon, 23 Jan 2023 13:09:46 +0100 Subject: [PATCH 46/51] Cleanup permission table --- ...permissions-on-hypernodes-control-panel.md | 56 +++++++++---------- 1 file changed, 28 insertions(+), 28 deletions(-) diff --git a/docs/services/control-panel/user-roles-and-permissions-on-hypernodes-control-panel.md b/docs/services/control-panel/user-roles-and-permissions-on-hypernodes-control-panel.md index 9a14db7b..a4f6969e 100644 --- a/docs/services/control-panel/user-roles-and-permissions-on-hypernodes-control-panel.md +++ b/docs/services/control-panel/user-roles-and-permissions-on-hypernodes-control-panel.md @@ -20,7 +20,7 @@ For security and usability, the Hypernode Control Panel's features are available A user can have different roles between teams. Each role is defined by a set of permissions. The permissions, based on the specific role, apply to all Hypernodes in a team. This also includes the SSL certificates that have been linked to the Hypernodes in the team. - **Owner:** Can access and use every feature. This is the most powerful role and cannot be assigned. The Owner is the only one who can transfer the ownership of the Hypernode you can read more about this [here](how-to-transfer-ownership-of-a-hypernode-in-the-control-panel.md). The user creating the Team is automatically the Owner. The Owner is the person in charge of billing. -- **Admin:** Can use all features and change Hypernode plans. Please see [this article for](../../about-hypernode/billing/how-to-up-or-downgrade-your-hypernode-plan.md#up--and-downgrading-your-hosting-plan-for-control-panel-users) an explanation on how to change your Hypernode plan. They can invite other team members and set or change roles of team members. +- **Admin:** Can use all features and [change Hypernode plans](../../about-hypernode/billing/how-to-up-or-downgrade-your-hypernode-plan.md#up--and-downgrading-your-hosting-plan-for-control-panel-users). They can invite other team members and set or change roles of team members. - **Developer:** Can manage all technical features on a Hypernode level. - **Merchant:** Can access the Control Panel on a view-only basis. @@ -28,33 +28,33 @@ A user can have different roles between teams. Each role is defined by a set of | | | | | | | ------------------------------------- | ------------------------ | ------------- | --------- | --------- | -| **Permissions** | **Merchant (view-only)** | **Developer** | **Admin** | **Owner** | -| See the team | ✅ | ✅ | ✅ | ✅ | -| See the Hypernodes in the team | ✅ | ✅ | ✅ | ✅ | -| See the logs | ✅ | ✅ | ✅ | ✅ | -| See the SSH keys that have been added | ✅ | ✅ | ✅ | ✅ | -| See the linked SSL certificate | ✅ | ✅ | ✅ | ✅ | -| See the allowlist | ✅ | ✅ | ✅ | ✅ | -| Manage the allowlist | | ✅ | ✅ | ✅ | -| Manage SSL certificates | | ✅ | ✅ | ✅ | -| Add SSH keys | | ✅ | ✅ | ✅ | -| Request to restore backups | | ✅ | ✅ | ✅ | -| Attach backups | | ✅ | ✅ | ✅ | -| Create backups | | ✅ | ✅ | ✅ | -| Can enable Varnish | | ✅ | ✅ | ✅ | -| Can change the PHP version | | ✅ | ✅ | ✅ | -| Can manage the monitoring | | ✅ | ✅ | ✅ | -| Can manage bots | | ✅ | ✅ | ✅ | -| Can add and remove team members | | | ✅ | ✅ | -| Can change roles within the team | | | ✅ | ✅ | -| Can remove Hypernodes | | | ✅ | ✅ | -| Can rename the team | | | ✅ | ✅ | -| Can change the plan | | | ✅ | ✅ | -| Can delete the team | | | | ✅ | -| Can add Hypernodes to a team | | | | ✅ | -| Can transfer ownership | | | | ✅ | -| Can change the payment details | | | | ✅ | -| Can view the invoices | | | | ✅ | +| **Permissions** | **Merchant** | **Developer** | **Admin** | **Owner** | +| See the team | ✅ | ✅ | ✅ | ✅ | +| See the Hypernodes in the team | ✅ | ✅ | ✅ | ✅ | +| See the logs | ✅ | ✅ | ✅ | ✅ | +| See the SSH keys that have been added | ✅ | ✅ | ✅ | ✅ | +| See the linked SSL certificate | ✅ | ✅ | ✅ | ✅ | +| See the allowlist | ✅ | ✅ | ✅ | ✅ | +| Manage the allowlist | | ✅ | ✅ | ✅ | +| Manage SSL certificates | | ✅ | ✅ | ✅ | +| Add SSH keys | | ✅ | ✅ | ✅ | +| Request to restore backups | | ✅ | ✅ | ✅ | +| Attach backups | | ✅ | ✅ | ✅ | +| Create backups | | ✅ | ✅ | ✅ | +| Enable Varnish | | ✅ | ✅ | ✅ | +| Change the PHP version | | ✅ | ✅ | ✅ | +| Manage monitoring | | ✅ | ✅ | ✅ | +| Manage bots | | ✅ | ✅ | ✅ | +| Add or remove team members | | | ✅ | ✅ | +| Change roles within the team | | | ✅ | ✅ | +| Rename the team | | | ✅ | ✅ | +| Remove Hypernodes from the team | | | ✅ | ✅ | +| Change plan | | | ✅ | ✅ | +| Add Hypernodes to the team | | | | ✅ | +| Delete the team | | | | ✅ | +| Transfer Hypernode ownership | | | | ✅ | +| Change payment details | | | | ✅ | +| View invoices | | | | ✅ | ## How to Assign Roles From abc1b7c06ade244dddbf24259e2345a6a3b4787b Mon Sep 17 00:00:00 2001 From: Timon de Groot Date: Mon, 23 Jan 2023 15:08:36 +0100 Subject: [PATCH 47/51] docs: Improve PM2 installation doc Syntax highlighting was missing, a specific Hypernode instance was being referred to and there were some typos in the meta description. --- .../installation-and-configuration-of-pm2.md | 58 +++++++++---------- 1 file changed, 29 insertions(+), 29 deletions(-) diff --git a/docs/hypernode-platform/tools/installation-and-configuration-of-pm2.md b/docs/hypernode-platform/tools/installation-and-configuration-of-pm2.md index eafc5c19..c4bcc487 100644 --- a/docs/hypernode-platform/tools/installation-and-configuration-of-pm2.md +++ b/docs/hypernode-platform/tools/installation-and-configuration-of-pm2.md @@ -1,8 +1,8 @@ --- myst: html_meta: - description: PM2 is a porcess manager which keeps your application running as - a deamon. In this article we’ll cover the installation and configuration process + description: PM2 is a process manager which keeps your application running as + a daemon. In this article we’ll cover the installation and configuration process of PM2. title: How to install and configure PM2 on Hypernode? redirect_from: @@ -21,25 +21,25 @@ We will run PM2 in combination with a program called supervisord to make sure th PM2 can be installed in various ways. In this article we'll install the process manager globally for the app user. We'll also create an alias for PM2, so that the program will not spawn the PM2 daemon on the fly. We don't want that to happen, because we want PM2 to run in the foreground so that it can be managed by supervisord. -``` -app@abbt5w-tdgroot-magweb-cmbl:~$ # Set NPM prefix to ~/.npm -app@abbt5w-tdgroot-magweb-cmbl:~$ npm config set prefix ~/.npm -app@abbt5w-tdgroot-magweb-cmbl:~$ # Install PM2 in NPM prefix -app@abbt5w-tdgroot-magweb-cmbl:~$ npm install --quiet -g pm2 +```console +app@abbt5w-example-magweb-cmbl:~$ # Set NPM prefix to ~/.npm +app@abbt5w-example-magweb-cmbl:~$ npm config set prefix ~/.npm +app@abbt5w-example-magweb-cmbl:~$ # Install PM2 in NPM prefix +app@abbt5w-example-magweb-cmbl:~$ npm install --quiet -g pm2 /data/web/.npm/bin/pm2-dev -> /data/web/.npm/lib/node_modules/pm2/bin/pm2-dev /data/web/.npm/bin/pm2 -> /data/web/.npm/lib/node_modules/pm2/bin/pm2 /data/web/.npm/bin/pm2-docker -> /data/web/.npm/lib/node_modules/pm2/bin/pm2-docker /data/web/.npm/bin/pm2-runtime -> /data/web/.npm/lib/node_modules/pm2/bin/pm2-runtime + pm2@5.1.2 added 181 packages from 200 contributors in 7.411s -app@abbt5w-tdgroot-magweb-cmbl:~$ # Add user NPM prefix bin directory to PATH -app@abbt5w-tdgroot-magweb-cmbl:~$ echo 'export PATH="$PATH:$HOME/.npm/bin"' >> ~/.bashrc -app@abbt5w-tdgroot-magweb-cmbl:~$ # Create pm2 alias to skip creation of PM2 daemon on the fly -app@abbt5w-tdgroot-magweb-cmbl:~$ echo 'alias pm2="pm2 --no-daemon"' >> ~/.bashrc -app@abbt5w-tdgroot-magweb-cmbl:~$ # Reload bash config -app@abbt5w-tdgroot-magweb-cmbl:~$ source ~/.bashrc -app@abbt5w-tdgroot-magweb-cmbl:~$ # Check if pm2 program can be found -app@abbt5w-tdgroot-magweb-cmbl:~$ which pm2 +app@abbt5w-example-magweb-cmbl:~$ # Add user NPM prefix bin directory to PATH +app@abbt5w-example-magweb-cmbl:~$ echo 'export PATH="$PATH:$HOME/.npm/bin"' >> ~/.bashrc +app@abbt5w-example-magweb-cmbl:~$ # Create pm2 alias to skip creation of PM2 daemon on the fly +app@abbt5w-example-magweb-cmbl:~$ echo 'alias pm2="pm2 --no-daemon"' >> ~/.bashrc +app@abbt5w-example-magweb-cmbl:~$ # Reload bash config +app@abbt5w-example-magweb-cmbl:~$ source ~/.bashrc +app@abbt5w-example-magweb-cmbl:~$ # Check if pm2 program can be found +app@abbt5w-example-magweb-cmbl:~$ which pm2 /data/web/.npm/bin/pm2 ``` @@ -51,7 +51,7 @@ To make use of supervisord, we first have to make sure it is enabled and running For this article we'll use a simple web server application written in Python. Feel free to use your own application! -``` +```python #!/usr/bin/env python3 from http.server import BaseHTTPRequestHandler, HTTPServer @@ -87,7 +87,7 @@ The application only handles `GET` requests and responds with the text "Hello, V Now that we have PM2 installed, supervisor available and an application to run, we can combine all the things together. Create a file at /data/web/supervisor/my_application.conf with the following contents. -``` +```ini [program:pm2_my_application] command=/data/web/.npm/bin/pm2 --no-daemon --interpreter=python3 start /data/web/my_application/main.py autostart=true @@ -101,27 +101,27 @@ For more information about options and configuration of PM2 and supervisor, plea Now we're almost done, we only need to execute a few commands to load the supervisord configuration and start the PM2 process manager. -``` -app@abbt5w-tdgroot-magweb-cmbl:~$ # Make sure no pm2 background daemon is running -app@abbt5w-tdgroot-magweb-cmbl:~$ pm2 kill +```console +app@abbt5w-example-magweb-cmbl:~$ # Make sure no pm2 background daemon is running +app@abbt5w-example-magweb-cmbl:~$ pm2 kill pm2 launched in no-daemon mode (you can add DEBUG="*" env variable to get more messages) 2022-02-04T11:58:30: PM2 log: Launching in no daemon mode 2022-02-04T11:58:30: PM2 error: [PM2][WARN] No process found 2022-02-04T11:58:30: PM2 log: [PM2] [v] All Applications Stopped 2022-02-04T11:58:30: PM2 log: PM2 successfully stopped 2022-02-04T11:58:30: PM2 log: [PM2] [v] PM2 Daemon Stopped -app@abbt5w-tdgroot-magweb-cmbl:~$ # Reload supervisor config files -app@abbt5w-tdgroot-magweb-cmbl:~$ supervisorctl reread +app@abbt5w-example-magweb-cmbl:~$ # Reload supervisor config files +app@abbt5w-example-magweb-cmbl:~$ supervisorctl reread pm2_my_application: available -app@abbt5w-tdgroot-magweb-cmbl:~$ # Check which processes are available -app@abbt5w-tdgroot-magweb-cmbl:~$ supervisorctl avail +app@abbt5w-example-magweb-cmbl:~$ # Check which processes are available +app@abbt5w-example-magweb-cmbl:~$ supervisorctl avail pm2_my_application avail auto 999:999 -app@abbt5w-tdgroot-magweb-cmbl:~$ # Add our process to be managed by supervisor -app@abbt5w-tdgroot-magweb-cmbl:~$ supervisorctl add pm2_my_application +app@abbt5w-example-magweb-cmbl:~$ # Add our process to be managed by supervisor +app@abbt5w-example-magweb-cmbl:~$ supervisorctl add pm2_my_application pm2_my_application: added process group -app@abbt5w-tdgroot-magweb-cmbl:~$ # Check status of running processes -app@abbt5w-tdgroot-magweb-cmbl:~$ supervisorctl status +app@abbt5w-example-magweb-cmbl:~$ # Check status of running processes +app@abbt5w-example-magweb-cmbl:~$ supervisorctl status pm2_my_application RUNNING pid 25139, uptime 0:00:04 -app@abbt5w-tdgroot-magweb-cmbl:~$ curl http://localhost:8000/ +app@abbt5w-example-magweb-cmbl:~$ curl http://localhost:8000/ Hello, Visitor! ``` From 13f35503630a1a0b9048aa0e7ce84adb167d9fbc Mon Sep 17 00:00:00 2001 From: Alexander Grooff Date: Mon, 23 Jan 2023 15:26:07 +0100 Subject: [PATCH 48/51] fix: use existing settings --- bin/find_dead_links | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/bin/find_dead_links b/bin/find_dead_links index a2ddc2a4..16a9906c 100755 --- a/bin/find_dead_links +++ b/bin/find_dead_links @@ -1,15 +1,14 @@ #!/usr/bin/env python3 import multiprocessing -import os import re from glob import glob from typing import List import requests -PROJECT_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) -DOCS_DIR = os.path.join(PROJECT_DIR, "docs") +from hypernode.common.settings import DOCS_DIR + FAKE_DOMAINS = [ "example.com", "yourdomain.com", From 4f35b564c12c628566ad601fb95b60c8470261ec Mon Sep 17 00:00:00 2001 From: Timon de Groot Date: Mon, 23 Jan 2023 15:29:22 +0100 Subject: [PATCH 49/51] Set theme-color to Hypernode primary color On mobile devices, the [theme-color meta tag](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/meta/name/theme-color) makes the browser take on the specified theme color for certain elements (like the url bar etc). Primary color was sourced from `docs/_static/scss/colors.scss`. --- docs/_templates/layout.html | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/_templates/layout.html b/docs/_templates/layout.html index d93601b5..5af82a26 100644 --- a/docs/_templates/layout.html +++ b/docs/_templates/layout.html @@ -19,6 +19,7 @@ {{- metatags }} + {%- block htmltitle %} {{ title|striptags|e }}{{ titlesuffix }} {%- endblock -%} From abe4813919a9828f372686ed6822d0aba7ff910b Mon Sep 17 00:00:00 2001 From: Timon de Groot Date: Mon, 23 Jan 2023 15:33:06 +0100 Subject: [PATCH 50/51] docs: Fix markdown formatting --- ...permissions-on-hypernodes-control-panel.md | 56 +++++++++---------- 1 file changed, 28 insertions(+), 28 deletions(-) diff --git a/docs/services/control-panel/user-roles-and-permissions-on-hypernodes-control-panel.md b/docs/services/control-panel/user-roles-and-permissions-on-hypernodes-control-panel.md index a4f6969e..a2bda085 100644 --- a/docs/services/control-panel/user-roles-and-permissions-on-hypernodes-control-panel.md +++ b/docs/services/control-panel/user-roles-and-permissions-on-hypernodes-control-panel.md @@ -26,35 +26,35 @@ A user can have different roles between teams. Each role is defined by a set of ## Permissions -| | | | | | -| ------------------------------------- | ------------------------ | ------------- | --------- | --------- | +| | | | | | +| ------------------------------------- | ------------ | ------------- | --------- | --------- | | **Permissions** | **Merchant** | **Developer** | **Admin** | **Owner** | -| See the team | ✅ | ✅ | ✅ | ✅ | -| See the Hypernodes in the team | ✅ | ✅ | ✅ | ✅ | -| See the logs | ✅ | ✅ | ✅ | ✅ | -| See the SSH keys that have been added | ✅ | ✅ | ✅ | ✅ | -| See the linked SSL certificate | ✅ | ✅ | ✅ | ✅ | -| See the allowlist | ✅ | ✅ | ✅ | ✅ | -| Manage the allowlist | | ✅ | ✅ | ✅ | -| Manage SSL certificates | | ✅ | ✅ | ✅ | -| Add SSH keys | | ✅ | ✅ | ✅ | -| Request to restore backups | | ✅ | ✅ | ✅ | -| Attach backups | | ✅ | ✅ | ✅ | -| Create backups | | ✅ | ✅ | ✅ | -| Enable Varnish | | ✅ | ✅ | ✅ | -| Change the PHP version | | ✅ | ✅ | ✅ | -| Manage monitoring | | ✅ | ✅ | ✅ | -| Manage bots | | ✅ | ✅ | ✅ | -| Add or remove team members | | | ✅ | ✅ | -| Change roles within the team | | | ✅ | ✅ | -| Rename the team | | | ✅ | ✅ | -| Remove Hypernodes from the team | | | ✅ | ✅ | -| Change plan | | | ✅ | ✅ | -| Add Hypernodes to the team | | | | ✅ | -| Delete the team | | | | ✅ | -| Transfer Hypernode ownership | | | | ✅ | -| Change payment details | | | | ✅ | -| View invoices | | | | ✅ | +| See the team | ✅ | ✅ | ✅ | ✅ | +| See the Hypernodes in the team | ✅ | ✅ | ✅ | ✅ | +| See the logs | ✅ | ✅ | ✅ | ✅ | +| See the SSH keys that have been added | ✅ | ✅ | ✅ | ✅ | +| See the linked SSL certificate | ✅ | ✅ | ✅ | ✅ | +| See the allowlist | ✅ | ✅ | ✅ | ✅ | +| Manage the allowlist | | ✅ | ✅ | ✅ | +| Manage SSL certificates | | ✅ | ✅ | ✅ | +| Add SSH keys | | ✅ | ✅ | ✅ | +| Request to restore backups | | ✅ | ✅ | ✅ | +| Attach backups | | ✅ | ✅ | ✅ | +| Create backups | | ✅ | ✅ | ✅ | +| Enable Varnish | | ✅ | ✅ | ✅ | +| Change the PHP version | | ✅ | ✅ | ✅ | +| Manage monitoring | | ✅ | ✅ | ✅ | +| Manage bots | | ✅ | ✅ | ✅ | +| Add or remove team members | | | ✅ | ✅ | +| Change roles within the team | | | ✅ | ✅ | +| Rename the team | | | ✅ | ✅ | +| Remove Hypernodes from the team | | | ✅ | ✅ | +| Change plan | | | ✅ | ✅ | +| Add Hypernodes to the team | | | | ✅ | +| Delete the team | | | | ✅ | +| Transfer Hypernode ownership | | | | ✅ | +| Change payment details | | | | ✅ | +| View invoices | | | | ✅ | ## How to Assign Roles From 14c5ec7357b1b264b9de129a6f4187fb0711a281 Mon Sep 17 00:00:00 2001 From: Timon de Groot Date: Mon, 23 Jan 2023 15:41:43 +0100 Subject: [PATCH 51/51] extensions: Add sphinxcontrib-mermaid To write mermaid diagrams, see: https://github.com/mgaitan/sphinxcontrib-mermaid. For example: ```{mermaid} sequenceDiagram participant Alice participant Bob Alice->John: Hello John, how are you? loop Healthcheck John->John: Fight against hypochondria end Note right of John: Rational thoughts
prevail... John-->Alice: Great! John->Bob: How about you? Bob-->John: Jolly good! ``` --- docs/conf.py | 1 + requirements/base.txt | 1 + 2 files changed, 2 insertions(+) diff --git a/docs/conf.py b/docs/conf.py index 812f3c3f..6b8c0729 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -44,6 +44,7 @@ "sphinx_copybutton", "notfound.extension", "hypernode.sphinx.extensions.updated_at", + "sphinxcontrib.mermaid", ] # Add any paths that contain templates here, relative to this directory. diff --git a/requirements/base.txt b/requirements/base.txt index 6e5b5a97..e961ec16 100644 --- a/requirements/base.txt +++ b/requirements/base.txt @@ -10,6 +10,7 @@ mdformat-frontmatter==0.4.1 sphinx-notfound-page==0.8.3 sphinx-sitemap==2.4.0 GitPython==3.1.30 +sphinxcontrib-mermaid==0.7.1 # hypernode/ requirements beautifulsoup4==4.11.1