This commit is contained in:
Reem H 2023-04-19 20:04:16 +10:00 коммит произвёл GitHub
Родитель ff877ef1a7
Коммит 49b5d12528
Не найден ключ, соответствующий данной подписи
Идентификатор ключа GPG: 4AEE18F83AFDEB23
22 изменённых файлов: 608 добавлений и 143 удалений

Просмотреть файл

@ -4,7 +4,7 @@
file, You can obtain one at https://mozilla.org/MPL/2.0/.
#}
{% from "macros-protocol.html" import picto with context %}
{% from "macros-protocol.html" import picto, split, with context %}
{% extends "products/vpn/base.html" %}
@ -15,6 +15,8 @@
{% block page_css %}
{{ css_bundle('protocol-picto') }}
{{ css_bundle('protocol-split') }}
{{ css_bundle('protocol-emphasis-box') }}
{{ css_bundle('mozilla-vpn-download') }}
{% endblock %}
@ -37,121 +39,209 @@
{% block content %}
<main>
<div class="mzp-l-content">
<header class="vpn-download-header">
<h1>{{ self.page_title_full() }}</h1>
{% if block_download %}
<p>{{ ftl('vpn-download-not-available-in-country') }}</p>
{% else %}
<section class="vpn-downloads">
<header class="vpn-download-header">
{% if block_download %}
<div class="mzp-l-content vpn-download-blocked">
<h1>{{ self.page_title_full() }}</h1>
<p>{{ ftl('vpn-download-not-available-in-country') }}</p>
</div>
{% else %}
{% call split(
block_class='mzp-l-split-body-wide mzp-l-split-center-on-sm-md',
body_class='mzp-l-split-h-start',
media_class='mzp-l-split-center-on-sm-md mzp-l-split-h-center',
media_after=True,
image=resp_img(
url='img/products/vpn/landing/vpn-cntwell-04.png',
optional_attributes={
'class': 'mzp-c-split-media-asset'
}
)
) %}
<div class="vpn-logo">
<img src="{{ static('img/products/vpn/download/vpn-dark-logo.svg') }}" alt="">
</div>
<h1>{{ self.page_title_full() }}</h1>
<p>{{ ftl('vpn-download-sub-heading', devices=connect_devices) }}</p>
{% endif %}
</header>
{% if not block_download %}
<ul class="vpn-download-list">
{% call picto(
base_el='li',
title=ftl('vpn-download-for-windows'),
image=resp_img(
url='img/products/vpn/download/platform-windows-black.svg',
optional_attributes={
'class': 'mzp-c-picto-image',
'width': '100',
'loading': 'lazy'
}
),
body=True,
) %}
<p>{{ ftl('vpn-download-for-windows-requirements') }}</p>
<a class="mzp-c-button mzp-t-secondary" href="{{ windows_download_url }}" data-cta-type="button" data-cta-text="VPN Download (Windows)">
{{ ftl('vpn-download-button-copy') }}
</a>
<p>{{ ftl('vpn-download-mozilla-vpn-offers') }}</p>
{% endcall %}
{% endif %}
</header>
{% call picto(
base_el='li',
title=ftl('vpn-download-for-mac'),
image=resp_img(
url='img/products/vpn/download/platform-mac-black.svg',
optional_attributes={
'class': 'mzp-c-picto-image',
'width': '100',
'loading': 'lazy'
}
),
body=True,
) %}
<p>{{ ftl('vpn-download-version-requirements', version='10.14') }}</p>
<a class="mzp-c-button mzp-t-secondary" href="{{ mac_download_url }}" data-cta-type="button" data-cta-text="VPN Download (macOS)">
{{ ftl('vpn-download-button-copy') }}
</a>
{% endcall %}
{% if not block_download %}
{% call picto(
base_el='li',
title=ftl('vpn-download-for-linux'),
image=resp_img(
url='img/products/vpn/download/platform-linux-black.svg',
optional_attributes={
'class': 'mzp-c-picto-image',
'width': '100',
'loading': 'lazy'
}
),
body=True,
) %}
<p>{{ ftl('vpn-download-for-linux-requirements', version='18.04') }}</p>
<a class="mzp-c-button mzp-t-secondary" href="{{ linux_download_url }}" data-cta-type="button" data-cta-text="VPN Download (Linux)">
{{ ftl('vpn-download-button-copy') }}
</a>
{% endcall %}
<section class="vpn-download-options mzp-l-content">
{% call picto(
base_el='li',
title=ftl('vpn-download-for-android'),
image=resp_img(
url='img/products/vpn/download/platform-android-black.svg',
optional_attributes={
'class': 'mzp-c-picto-image',
'width': '100',
'loading': 'lazy'
}
),
body=True,
) %}
<p>{{ ftl('vpn-download-version-requirements', version='8.0') }}</p>
<a class="mzp-c-button mzp-t-secondary" href="{{ android_download_url }}" data-cta-type="button" data-cta-text="VPN Download (Android)">
{{ ftl('vpn-download-get-on-google-play') }}
</a>
{% endcall %}
<!-- Primary list -->
<div class="vpn-download-primary-platform">
<!-- Windows -->
<div class="primary-platform windows">
<div class="platform-image">
<img src="{{ static('img/products/vpn/download/platform-windows.svg') }}" alt="">
</div>
<div class="platform-body">
<h2>{{ ftl('vpn-download-for-windows-long', fallback='vpn-download-for-windows') }}</h2>
<p class="current-platform-lede">{{ ftl('vpn-download-based-on-your') }}</p>
<p>{{ ftl('vpn-download-for-windows-requirements') }}</p>
<a class="mzp-c-button" href="{{ windows_download_url }}" data-cta-type="button" data-cta-text="VPN Download (Windows)">
{{ ftl('vpn-download-get-mozilla-vpn', fallback='vpn-shared-subscribe-link') }}
</a>
</div>
</div>
<!-- Mac OS -->
<div class="primary-platform macos">
<div class="platform-image">
<img src="{{ static('img/products/vpn/download/platform-mac.svg') }}" alt="">
</div>
<div class="platform-body">
<h2>{{ ftl('vpn-download-for-mac-long', fallback='vpn-download-for-mac') }}</h2>
<p class="current-platform-lede">{{ ftl('vpn-download-based-on-your') }}</p>
<p>{{ ftl('vpn-download-version-requirements', version='10.14') }}</p>
<a class="mzp-c-button" href="{{ mac_download_url }}" data-cta-type="button" data-cta-text="VPN Download (macOS)" class="platform-download-link">
{{ ftl('vpn-download-get-mozilla-vpn', fallback='vpn-shared-subscribe-link') }}
</a>
</div>
</div>
<!-- Linux -->
<div class="primary-platform linux">
<div class="platform-image">
<img src="{{ static('img/products/vpn/download/platform-linux.svg') }}" alt="">
</div>
<div class="platform-body">
<h2>{{ ftl('vpn-download-for-linux-long', fallback='vpn-download-for-linux') }}</h2>
<p class="current-platform-lede">{{ ftl('vpn-download-based-on-your') }}</p>
<p>{{ ftl('vpn-download-for-linux-requirements', version='18.04') }}</p>
<a class="mzp-c-button" href="{{ linux_download_url }}" data-cta-type="button" data-cta-text="VPN Download (Linux)" class="platform-download-link">
{{ ftl('vpn-download-get-mozilla-vpn', fallback='vpn-shared-subscribe-link') }}
</a>
</div>
</div>
<!-- iOS -->
<div class="primary-platform ios">
<div class="platform-image">
<img src="{{ static('img/products/vpn/download/platform-ios.svg') }}" alt="">
</div>
<div class="platform-body">
<h2>{{ ftl('vpn-download-for-ios-long', fallback='vpn-download-for-ios') }}</h2>
<p class="current-platform-lede">{{ ftl('vpn-download-based-on-your') }}</p>
<p>{{ ftl('vpn-download-version-requirements', version='13.0') }}</p>
<a href="{{ ios_download_url }}" data-cta-type="button" data-cta-text="VPN Download (iOS)" class="platform-download-link">
<img src="{{ static('img/products/vpn/download/apple-app-store-badge.svg') }}" alt=" {{ ftl('vpn-download-get-mozilla-vpn', fallback='vpn-shared-subscribe-link') }}">
</a>
</div>
</div>
<!-- Android -->
<div class="primary-platform android">
<div class="platform-image">
<img src="{{ static('img/products/vpn/download/platform-android.svg') }}" alt="">
</div>
<div class="platform-body">
<h2>{{ ftl('vpn-download-for-android-long', fallback='vpn-download-for-android') }}</h2>
<p class="current-platform-lede">{{ ftl('vpn-download-based-on-your') }}</p>
<p>{{ ftl('vpn-download-version-requirements', version='8.0') }}</p>
<a class="platform-download-link" href="{{ android_download_url }}" data-cta-type="button" data-cta-text="VPN Download (Android)" target="_blank" rel="noopener noreferrer">
<img src="{{ static('img/products/vpn/download/google-play-badge.png') }}" alt=" {{ ftl('vpn-download-get-mozilla-vpn', fallback='vpn-shared-subscribe-link') }}">
</a>
</div>
</div>
<h3>{{ ftl('vpn-download-also-available') }}</h3>
</div>
{% call picto(
base_el='li',
title=ftl('vpn-download-for-ios'),
image=resp_img(
url='img/products/vpn/download/platform-ios-black.svg',
optional_attributes={
'class': 'mzp-c-picto-image',
'width': '100',
'loading': 'lazy'
}
),
body=True,
) %}
<p>{{ ftl('vpn-download-version-requirements', version='13.0') }}</p>
<a class="mzp-c-button mzp-t-secondary" href="{{ ios_download_url }}" data-cta-type="button" data-cta-text="VPN Download (iOS)">
{{ ftl('vpn-download-get-on-app-store') }}
<!-- Secondary list -->
<ul class="vpn-download-secondary-list">
<!-- Windows -->
<li class="secondary-platform windows">
<div class="platform-image">
<img src="{{ static('img/products/vpn/download/platform-windows.svg') }}" alt="">
</div>
<div class="platform-body">
<h2>{{ ftl('vpn-download-for-windows-v2', fallback='vpn-download-for-windows') }}</h2>
<p>{{ ftl('vpn-download-for-windows-requirements') }}</p>
</div>
<a href="{{ windows_download_url }}" data-cta-type="button" data-cta-text="VPN Download (Windows)" class="platform-download-link">
<span class="">{{ ftl('vpn-download-for-windows-long') }}</span>
</a>
{% endcall %}
</li>
<!-- Mac OS -->
<li class="secondary-platform macos">
<div class="platform-image">
<img src="{{ static('img/products/vpn/download/platform-mac.svg') }}" alt="">
</div>
<div class="platform-body">
<h2>{{ ftl('vpn-download-for-mac') }}</h2>
<p>{{ ftl('vpn-download-version-requirements', version='10.14') }}</p>
</div>
<a href="{{ mac_download_url }}" data-cta-type="button" data-cta-text="VPN Download (macOS)" class="platform-download-link">
<span class="visually-hidden">{{ ftl('vpn-download-for-mac-long') }}</span>
</a>
</li>
<!-- Linux -->
<li class="secondary-platform linux">
<div class="platform-image">
<img src="{{ static('img/products/vpn/download/platform-linux.svg') }}" alt="">
</div>
<div class="platform-body">
<h2>{{ ftl('vpn-download-for-linux') }}</h2>
<p>{{ ftl('vpn-download-for-linux-requirements', version='18.04') }}</p>
</div>
<a href="{{ linux_download_url }}" data-cta-type="button" data-cta-text="VPN Download (Linux)" class="platform-download-link">
<span class="visually-hidden">{{ ftl('vpn-download-for-linux-long') }}</span>
</a>
</li>
<!-- iOS -->
<li class="secondary-platform ios">
<div class="platform-image">
<img src="{{ static('img/products/vpn/download/platform-ios.svg') }}" alt="">
</div>
<div class="platform-body">
<h2>{{ ftl('vpn-download-for-ios') }}</h2>
<p>{{ ftl('vpn-download-version-requirements', version='13.0') }}</p>
</div>
<a href="{{ ios_download_url }}" data-cta-type="button" data-cta-text="VPN Download (iOS)" class="platform-download-link">
<span class="visually-hidden">{{ ftl('vpn-download-for-ios-long') }}</span>
</a>
</li>
<!-- Android -->
<li class="secondary-platform android">
<div class="platform-image">
<img src="{{ static('img/products/vpn/download/platform-android.svg') }}" alt="">
</div>
<div class="platform-body">
<h2>{{ ftl('vpn-download-for-android') }}</h2>
<p>{{ ftl('vpn-download-version-requirements', version='8.0') }}</p>
</div>
<a href="{{ android_download_url }}" data-cta-type="button" data-cta-text="VPN Download (Android)" class="platform-download-link">
<span class="visually-hidden">{{ ftl('vpn-download-for-android-long') }}</span>
</a>
</li>
</ul>
{% endif %}
<footer class="vpn-footer">
{% include 'products/vpn/includes/footer-legal.html' %}
</footer>
</div>
</section>
{% endif %}
</section>
{% if ftl_has_messages('vpn-download-privacy-you-can') %}
<section class="vpn-privacy">
{% call split(
block_class=' mzp-l-split-reversed mzp-l-split-center-on-sm-md',
media_class='mzp-l-split-h-center mzp-l-split-center-on-sm-md',
media_after=True,
image=resp_img(
url='img/products/vpn/download/vpn-download-shield.png',
optional_attributes={
'class': 'mzp-c-split-media-asset'
}),
) %}
<h2>{{ ftl('vpn-download-privacy-you-can') }}</h2>
<p>{{ ftl('vpn-download-from-the-maker', url='https://mullvad.net/help/why-wireguard/', attrs='target="_blank" rel="external noopener noreferrer"') }}</p>
<p>{{ ftl('vpn-download-we-never-log') }}</p>
{% endcall %}
</section>
{% endif %}
<footer class="vpn-footer">
{% include 'products/vpn/includes/footer-legal.html' %}
</footer>
</main>
{% endblock %}
{% block js %}{% endblock %}

Просмотреть файл

@ -10,24 +10,45 @@ vpn-download-page-description = Download { -brand-name-mozilla-vpn } for { -bran
# Variables:
# $devices (number) - maximum number of connected devices
vpn-download-sub-heading = You can download { -brand-name-mozilla-vpn } on up to { $devices } devices with one subscription.
vpn-download-mozilla-vpn-offers = { -brand-name-mozilla-vpn } offers safe and secure protection for all major operating systems.
vpn-download-not-available-in-country = Sorry, { -brand-name-mozilla-vpn } is not available for download in your country.
vpn-download-button-copy = Download
# Obsolete string
vpn-download-for-windows = VPN for { -brand-name-windows } 10/11
vpn-download-for-windows-v2 = VPN for { -brand-name-windows }
vpn-download-for-windows-requirements = { -brand-name-windows } 10/11 (64-bit only)
vpn-download-for-windows-long = Download { -brand-name-mozilla-vpn } for { -brand-name-windows }
vpn-download-for-mac = VPN for { -brand-name-mac-short }
vpn-download-for-mac-long = Download { -brand-name-mozilla-vpn } for { -brand-name-mac-short }
# Variables:
# $version (number) - operating system version
vpn-download-version-requirements = Version { $version } and up
vpn-download-for-linux = VPN for { -brand-name-linux }
vpn-download-for-linux-long = Download { -brand-name-mozilla-vpn } for { -brand-name-linux }
# Variables:
# $version (number) - operating system version
vpn-download-for-linux-requirements = Ubuntu { $version } and up
vpn-download-for-android = VPN for { -brand-name-android }
vpn-download-for-android-long = Download { -brand-name-mozilla-vpn } for { -brand-name-android }
vpn-download-for-ios = VPN for { -brand-name-ios }
vpn-download-for-ios-long = Download VPN { -brand-name-mozilla-vpn } for { -brand-name-ios }
vpn-download-get-on-google-play = Get on { -brand-name-google-play } Store
vpn-download-get-on-app-store = Get on { -brand-name-app-store }
vpn-download-based-on-your = Based on your current device
vpn-download-get-mozilla-vpn = Get { -brand-name-mozilla-vpn }
vpn-download-privacy-you-can = Privacy you can trust
vpn-download-also-available = Also available for:
# Variables:
# $url (url) - link to https://mullvad.net/help/why-wireguard/
# $attrs (string) - specific attributes added to external links
vpn-download-from-the-maker = From the maker of { -brand-name-firefox }, { -brand-name-mozilla-vpn } uses the advanced <a href="{ $url }" { $attrs }>{ -brand-name-wireguard }</a>® protocol to encrypt your online activity and hide your location.
vpn-download-we-never-log = We never log, track, or share your network data.

Просмотреть файл

@ -25,6 +25,7 @@ ATTRS_ALLOWED_IN_FLUENT_STRINGS = [
"id",
"rel",
"title",
"target",
]

Просмотреть файл

@ -4,30 +4,303 @@
$font-path: '/media/protocol/fonts';
$image-path: '/media/protocol/img';
$vpn-download-mq-2xl: '(min-width: 1450px)';
@import '~@mozilla-protocol/core/protocol/css/includes/lib';
@import 'includes/lib';
.vpn-download-header {
.vpn-downloads {
background-color: $color-marketing-gray-10;
}
.vpn-download-blocked {
text-align: center;
}
.vpn-download-list {
text-align: center;
margin-top: $layout-lg;
.vpn-downloads,
.vpn-privacy {
.mzp-c-split {
.mzp-c-split-container {
min-width: unset;
}
.mzp-c-picto {
background: $color-marketing-gray-20;
border-radius: $border-radius-sm;
display: block;
margin: $spacing-lg;
padding: $spacing-2xl $spacing-md;
}
.vpn-logo {
img {
height: 60px;
width: 60px;
}
}
@media #{$mq-sm} {
.mzp-c-picto {
display: inline-block;
width: 345px;
@media #{$mq-md} {
padding: $spacing-lg 0;
@include text-body-xl;
}
// Media query to change to mobile layout sooner to avoid languages with longer words from touching the image
@media (max-width: 810px) {
.mzp-c-split-container {
display: flex;
flex-direction: column;
.mzp-c-split-body {
text-align: center;
}
}
}
}
}
.vpn-download-primary-platform,
.vpn-download-secondary-list {
.platform-body {
h2 {
@include font-base;
@include text-body-xl;
}
p {
color: $color-marketing-gray-60;
}
}
}
.vpn-download-options {
display: grid;
grid-template-columns: 1fr;
grid-row-gap: $spacing-xs;
grid-column-gap: $spacing-xl;
@media #{$vpn-download-mq-2xl} {
grid-template-columns: repeat(2, 1fr);
grid-template-rows: repeat(2, auto);
align-items: center;
}
}
// Primary platform styles
.vpn-download-primary-platform {
justify-self: center;
.primary-platform {
flex-direction: column;
align-items: center;
text-align: center;
border-radius: 6px;
box-shadow: $box-shadow-sm;
padding: $spacing-xl;
height: 315px;
display: none;
.platform-image {
margin-bottom: $spacing-xl;
}
.current-platform-lede {
color: $color-violet-70;
}
&.android {
height: 325px;
.platform-download-link {
img {
width: 220px;
}
}
}
&.ios {
.platform-download-link {
img {
width: 170px;
}
}
}
}
h3 {
text-align: center;
margin-top: $spacing-2xl;
}
@media #{$mq-sm} {
h3 {
display: block;
}
}
@media #{$mq-md} {
.primary-platform {
width: 380px;
}
}
@media #{$vpn-download-mq-2xl} {
width: 100%;
h3 {
display: none;
}
}
}
// Secondary platform styles
.vpn-download-secondary-list {
display: grid;
grid-template-rows: repeat(4, 1fr);
grid-row-gap: $spacing-lg;
margin-bottom: 0;
justify-self: center;
.secondary-platform {
border-radius: 6px;
box-shadow: $box-shadow-sm;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
padding: $spacing-lg;
img {
display: block;
}
.platform-body {
margin-left: $spacing-xl;
margin-right: $spacing-2xl;
p {
margin-bottom: 0;
}
}
.platform-download-link {
background-image: url('/media/img/products/vpn/download/vpn-download-icon.svg');
background-repeat: no-repeat;
background-size: contain;
border-radius: 50%;
height: 45px;
width: 45px;
span {
@include visually-hidden;
}
&:hover,
&:focus,
&:active {
background-color: $color-light-gray-30;
}
}
}
@media #{$mq-xs} {
.secondary-platform {
display: flex;
flex-direction: column;
align-items: center;
flex-shrink: 0;
padding: $spacing-lg;
text-align: center;
.platform-body {
margin: $spacing-md 0;
}
.platform-download-link {
margin-left: unset;
}
}
}
@media #{$mq-sm} {
.secondary-platform {
flex-direction: row;
height: 165px;
width: 350px;
padding: 0 $spacing-lg;
text-align: left;
.platform-body {
margin: $spacing-md;
}
.platform-download-link {
margin-left: auto;
}
}
}
@media #{$mq-lg} {
grid-template-columns: repeat(2, 1fr);
grid-template-rows: repeat(2, 1fr);
grid-column-gap: $spacing-xl;
grid-row-gap: $spacing-xl;
}
@media #{$vpn-download-mq-2xl} {
grid-template-columns: repeat(2, 1fr);
grid-template-rows: repeat(2, auto);
grid-column-gap: $spacing-xl;
grid-row-gap: $spacing-xl;
justify-self: end;
}
}
// Style rules for dynamically rendering content based on platforms
/* stylelint-disable-next-line */
.vpn-downloads {
.js.windows & {
.primary-platform.windows {
display: block;
}
.secondary-platform.windows {
display: none;
}
}
.js.osx & {
.primary-platform.macos {
display: block;
}
.secondary-platform.macos {
display: none;
}
}
.js.linux & {
.primary-platform.linux {
display: block;
}
.secondary-platform.linux {
display: none;
}
}
.js.ios & {
.primary-platform.ios {
display: block;
}
.secondary-platform.ios {
display: none;
}
}
.js.android & {
.primary-platform.android {
display: block;
}
.secondary-platform.android {
display: none;
}
}
}
.vpn-privacy {
margin: $layout-lg 0 $layout-xl;
}

Просмотреть файл

@ -0,0 +1,46 @@
<svg id="livetype" xmlns="http://www.w3.org/2000/svg" width="119.66407" height="40" viewBox="0 0 119.66407 40">
<title>Download_on_the_App_Store_Badge_US-UK_RGB_blk_4SVG_092917</title>
<g>
<g>
<g>
<path d="M110.13477,0H9.53468c-.3667,0-.729,0-1.09473.002-.30615.002-.60986.00781-.91895.0127A13.21476,13.21476,0,0,0,5.5171.19141a6.66509,6.66509,0,0,0-1.90088.627A6.43779,6.43779,0,0,0,1.99757,1.99707,6.25844,6.25844,0,0,0,.81935,3.61816a6.60119,6.60119,0,0,0-.625,1.90332,12.993,12.993,0,0,0-.1792,2.002C.00587,7.83008.00489,8.1377,0,8.44434V31.5586c.00489.3105.00587.6113.01515.9219a12.99232,12.99232,0,0,0,.1792,2.0019,6.58756,6.58756,0,0,0,.625,1.9043A6.20778,6.20778,0,0,0,1.99757,38.001a6.27445,6.27445,0,0,0,1.61865,1.1787,6.70082,6.70082,0,0,0,1.90088.6308,13.45514,13.45514,0,0,0,2.0039.1768c.30909.0068.6128.0107.91895.0107C8.80567,40,9.168,40,9.53468,40H110.13477c.3594,0,.7246,0,1.084-.002.3047,0,.6172-.0039.9219-.0107a13.279,13.279,0,0,0,2-.1768,6.80432,6.80432,0,0,0,1.9082-.6308,6.27742,6.27742,0,0,0,1.6172-1.1787,6.39482,6.39482,0,0,0,1.1816-1.6143,6.60413,6.60413,0,0,0,.6191-1.9043,13.50643,13.50643,0,0,0,.1856-2.0019c.0039-.3106.0039-.6114.0039-.9219.0078-.3633.0078-.7246.0078-1.0938V9.53613c0-.36621,0-.72949-.0078-1.09179,0-.30664,0-.61426-.0039-.9209a13.5071,13.5071,0,0,0-.1856-2.002,6.6177,6.6177,0,0,0-.6191-1.90332,6.46619,6.46619,0,0,0-2.7988-2.7998,6.76754,6.76754,0,0,0-1.9082-.627,13.04394,13.04394,0,0,0-2-.17676c-.3047-.00488-.6172-.01074-.9219-.01269-.3594-.002-.7246-.002-1.084-.002Z" style="fill: #a6a6a6"/>
<path d="M8.44483,39.125c-.30468,0-.602-.0039-.90429-.0107a12.68714,12.68714,0,0,1-1.86914-.1631,5.88381,5.88381,0,0,1-1.65674-.5479,5.40573,5.40573,0,0,1-1.397-1.0166,5.32082,5.32082,0,0,1-1.02051-1.3965,5.72186,5.72186,0,0,1-.543-1.6572,12.41351,12.41351,0,0,1-.1665-1.875c-.00634-.2109-.01464-.9131-.01464-.9131V8.44434S.88185,7.75293.8877,7.5498a12.37039,12.37039,0,0,1,.16553-1.87207,5.7555,5.7555,0,0,1,.54346-1.6621A5.37349,5.37349,0,0,1,2.61183,2.61768,5.56543,5.56543,0,0,1,4.01417,1.59521a5.82309,5.82309,0,0,1,1.65332-.54394A12.58589,12.58589,0,0,1,7.543.88721L8.44532.875H111.21387l.9131.0127a12.38493,12.38493,0,0,1,1.8584.16259,5.93833,5.93833,0,0,1,1.6709.54785,5.59374,5.59374,0,0,1,2.415,2.41993,5.76267,5.76267,0,0,1,.5352,1.64892,12.995,12.995,0,0,1,.1738,1.88721c.0029.2832.0029.5874.0029.89014.0079.375.0079.73193.0079,1.09179V30.4648c0,.3633,0,.7178-.0079,1.0752,0,.3252,0,.6231-.0039.9297a12.73126,12.73126,0,0,1-.1709,1.8535,5.739,5.739,0,0,1-.54,1.67,5.48029,5.48029,0,0,1-1.0156,1.3857,5.4129,5.4129,0,0,1-1.3994,1.0225,5.86168,5.86168,0,0,1-1.668.5498,12.54218,12.54218,0,0,1-1.8692.1631c-.2929.0068-.5996.0107-.8974.0107l-1.084.002Z"/>
</g>
<g id="_Group_" data-name="&lt;Group&gt;">
<g id="_Group_2" data-name="&lt;Group&gt;">
<g id="_Group_3" data-name="&lt;Group&gt;">
<path id="_Path_" data-name="&lt;Path&gt;" d="M24.76888,20.30068a4.94881,4.94881,0,0,1,2.35656-4.15206,5.06566,5.06566,0,0,0-3.99116-2.15768c-1.67924-.17626-3.30719,1.00483-4.1629,1.00483-.87227,0-2.18977-.98733-3.6085-.95814a5.31529,5.31529,0,0,0-4.47292,2.72787c-1.934,3.34842-.49141,8.26947,1.3612,10.97608.9269,1.32535,2.01018,2.8058,3.42763,2.7533,1.38706-.05753,1.9051-.88448,3.5794-.88448,1.65876,0,2.14479.88448,3.591.8511,1.48838-.02416,2.42613-1.33124,3.32051-2.66914a10.962,10.962,0,0,0,1.51842-3.09251A4.78205,4.78205,0,0,1,24.76888,20.30068Z" style="fill: #fff"/>
<path id="_Path_2" data-name="&lt;Path&gt;" d="M22.03725,12.21089a4.87248,4.87248,0,0,0,1.11452-3.49062,4.95746,4.95746,0,0,0-3.20758,1.65961,4.63634,4.63634,0,0,0-1.14371,3.36139A4.09905,4.09905,0,0,0,22.03725,12.21089Z" style="fill: #fff"/>
</g>
</g>
<g>
<path d="M42.30227,27.13965h-4.7334l-1.13672,3.35645H34.42727l4.4834-12.418h2.083l4.4834,12.418H43.438ZM38.0591,25.59082h3.752l-1.84961-5.44727h-.05176Z" style="fill: #fff"/>
<path d="M55.15969,25.96973c0,2.81348-1.50586,4.62109-3.77832,4.62109a3.0693,3.0693,0,0,1-2.84863-1.584h-.043v4.48438h-1.8584V21.44238H48.4302v1.50586h.03418a3.21162,3.21162,0,0,1,2.88281-1.60059C53.645,21.34766,55.15969,23.16406,55.15969,25.96973Zm-1.91016,0c0-1.833-.94727-3.03809-2.39258-3.03809-1.41992,0-2.375,1.23047-2.375,3.03809,0,1.82422.95508,3.0459,2.375,3.0459C52.30227,29.01563,53.24953,27.81934,53.24953,25.96973Z" style="fill: #fff"/>
<path d="M65.12453,25.96973c0,2.81348-1.50586,4.62109-3.77832,4.62109a3.0693,3.0693,0,0,1-2.84863-1.584h-.043v4.48438h-1.8584V21.44238H58.395v1.50586h.03418A3.21162,3.21162,0,0,1,61.312,21.34766C63.60988,21.34766,65.12453,23.16406,65.12453,25.96973Zm-1.91016,0c0-1.833-.94727-3.03809-2.39258-3.03809-1.41992,0-2.375,1.23047-2.375,3.03809,0,1.82422.95508,3.0459,2.375,3.0459C62.26711,29.01563,63.21438,27.81934,63.21438,25.96973Z" style="fill: #fff"/>
<path d="M71.71047,27.03613c.1377,1.23145,1.334,2.04,2.96875,2.04,1.56641,0,2.69336-.80859,2.69336-1.91895,0-.96387-.67969-1.541-2.28906-1.93652l-1.60937-.3877c-2.28027-.55078-3.33887-1.61719-3.33887-3.34766,0-2.14258,1.86719-3.61426,4.51855-3.61426,2.624,0,4.42285,1.47168,4.4834,3.61426h-1.876c-.1123-1.23926-1.13672-1.9873-2.63379-1.9873s-2.52148.75684-2.52148,1.8584c0,.87793.6543,1.39453,2.25488,1.79l1.36816.33594c2.54785.60254,3.60645,1.626,3.60645,3.44238,0,2.32324-1.85059,3.77832-4.79395,3.77832-2.75391,0-4.61328-1.4209-4.7334-3.667Z" style="fill: #fff"/>
<path d="M83.34621,19.2998v2.14258h1.72168v1.47168H83.34621v4.99121c0,.77539.34473,1.13672,1.10156,1.13672a5.80752,5.80752,0,0,0,.61133-.043v1.46289a5.10351,5.10351,0,0,1-1.03223.08594c-1.833,0-2.54785-.68848-2.54785-2.44434V22.91406H80.16262V21.44238H81.479V19.2998Z" style="fill: #fff"/>
<path d="M86.065,25.96973c0-2.84863,1.67773-4.63867,4.29395-4.63867,2.625,0,4.29492,1.79,4.29492,4.63867,0,2.85645-1.66113,4.63867-4.29492,4.63867C87.72609,30.6084,86.065,28.82617,86.065,25.96973Zm6.69531,0c0-1.9541-.89551-3.10742-2.40137-3.10742s-2.40039,1.16211-2.40039,3.10742c0,1.96191.89453,3.10645,2.40039,3.10645S92.76027,27.93164,92.76027,25.96973Z" style="fill: #fff"/>
<path d="M96.18606,21.44238h1.77246v1.541h.043a2.1594,2.1594,0,0,1,2.17773-1.63574,2.86616,2.86616,0,0,1,.63672.06934v1.73828a2.59794,2.59794,0,0,0-.835-.1123,1.87264,1.87264,0,0,0-1.93652,2.083v5.37012h-1.8584Z" style="fill: #fff"/>
<path d="M109.3843,27.83691c-.25,1.64355-1.85059,2.77148-3.89844,2.77148-2.63379,0-4.26855-1.76465-4.26855-4.5957,0-2.83984,1.64355-4.68164,4.19043-4.68164,2.50488,0,4.08008,1.7207,4.08008,4.46582v.63672h-6.39453v.1123a2.358,2.358,0,0,0,2.43555,2.56445,2.04834,2.04834,0,0,0,2.09082-1.27344Zm-6.28223-2.70215h4.52637a2.1773,2.1773,0,0,0-2.2207-2.29785A2.292,2.292,0,0,0,103.10207,25.13477Z" style="fill: #fff"/>
</g>
</g>
</g>
<g id="_Group_4" data-name="&lt;Group&gt;">
<g>
<path d="M37.82619,8.731a2.63964,2.63964,0,0,1,2.80762,2.96484c0,1.90625-1.03027,3.002-2.80762,3.002H35.67092V8.731Zm-1.22852,5.123h1.125a1.87588,1.87588,0,0,0,1.96777-2.146,1.881,1.881,0,0,0-1.96777-2.13379h-1.125Z" style="fill: #fff"/>
<path d="M41.68068,12.44434a2.13323,2.13323,0,1,1,4.24707,0,2.13358,2.13358,0,1,1-4.24707,0Zm3.333,0c0-.97607-.43848-1.54687-1.208-1.54687-.77246,0-1.207.5708-1.207,1.54688,0,.98389.43457,1.55029,1.207,1.55029C44.57522,13.99463,45.01369,13.42432,45.01369,12.44434Z" style="fill: #fff"/>
<path d="M51.57326,14.69775h-.92187l-.93066-3.31641h-.07031l-.92676,3.31641h-.91309l-1.24121-4.50293h.90137l.80664,3.436h.06641l.92578-3.436h.85254l.92578,3.436h.07031l.80273-3.436h.88867Z" style="fill: #fff"/>
<path d="M53.85354,10.19482H54.709v.71533h.06641a1.348,1.348,0,0,1,1.34375-.80225,1.46456,1.46456,0,0,1,1.55859,1.6748v2.915h-.88867V12.00586c0-.72363-.31445-1.0835-.97168-1.0835a1.03294,1.03294,0,0,0-1.0752,1.14111v2.63428h-.88867Z" style="fill: #fff"/>
<path d="M59.09377,8.437h.88867v6.26074h-.88867Z" style="fill: #fff"/>
<path d="M61.21779,12.44434a2.13346,2.13346,0,1,1,4.24756,0,2.1338,2.1338,0,1,1-4.24756,0Zm3.333,0c0-.97607-.43848-1.54687-1.208-1.54687-.77246,0-1.207.5708-1.207,1.54688,0,.98389.43457,1.55029,1.207,1.55029C64.11232,13.99463,64.5508,13.42432,64.5508,12.44434Z" style="fill: #fff"/>
<path d="M66.4009,13.42432c0-.81055.60352-1.27783,1.6748-1.34424l1.21973-.07031v-.38867c0-.47559-.31445-.74414-.92187-.74414-.49609,0-.83984.18213-.93848.50049h-.86035c.09082-.77344.81836-1.26953,1.83984-1.26953,1.12891,0,1.76563.562,1.76563,1.51318v3.07666h-.85547v-.63281h-.07031a1.515,1.515,0,0,1-1.35254.707A1.36026,1.36026,0,0,1,66.4009,13.42432Zm2.89453-.38477v-.37646l-1.09961.07031c-.62012.0415-.90137.25244-.90137.64941,0,.40527.35156.64111.835.64111A1.0615,1.0615,0,0,0,69.29543,13.03955Z" style="fill: #fff"/>
<path d="M71.34816,12.44434c0-1.42285.73145-2.32422,1.86914-2.32422a1.484,1.484,0,0,1,1.38086.79h.06641V8.437h.88867v6.26074h-.85156v-.71143h-.07031a1.56284,1.56284,0,0,1-1.41406.78564C72.0718,14.772,71.34816,13.87061,71.34816,12.44434Zm.918,0c0,.95508.4502,1.52979,1.20313,1.52979.749,0,1.21191-.583,1.21191-1.52588,0-.93848-.46777-1.52979-1.21191-1.52979C72.72121,10.91846,72.26613,11.49707,72.26613,12.44434Z" style="fill: #fff"/>
<path d="M79.23,12.44434a2.13323,2.13323,0,1,1,4.24707,0,2.13358,2.13358,0,1,1-4.24707,0Zm3.333,0c0-.97607-.43848-1.54687-1.208-1.54687-.77246,0-1.207.5708-1.207,1.54688,0,.98389.43457,1.55029,1.207,1.55029C82.12453,13.99463,82.563,13.42432,82.563,12.44434Z" style="fill: #fff"/>
<path d="M84.66945,10.19482h.85547v.71533h.06641a1.348,1.348,0,0,1,1.34375-.80225,1.46456,1.46456,0,0,1,1.55859,1.6748v2.915H87.605V12.00586c0-.72363-.31445-1.0835-.97168-1.0835a1.03294,1.03294,0,0,0-1.0752,1.14111v2.63428h-.88867Z" style="fill: #fff"/>
<path d="M93.51516,9.07373v1.1416h.97559v.74854h-.97559V13.2793c0,.47168.19434.67822.63672.67822a2.96657,2.96657,0,0,0,.33887-.02051v.74023a2.9155,2.9155,0,0,1-.4834.04541c-.98828,0-1.38184-.34766-1.38184-1.21582v-2.543h-.71484v-.74854h.71484V9.07373Z" style="fill: #fff"/>
<path d="M95.70461,8.437h.88086v2.48145h.07031a1.3856,1.3856,0,0,1,1.373-.80664,1.48339,1.48339,0,0,1,1.55078,1.67871v2.90723H98.69v-2.688c0-.71924-.335-1.0835-.96289-1.0835a1.05194,1.05194,0,0,0-1.13379,1.1416v2.62988h-.88867Z" style="fill: #fff"/>
<path d="M104.76125,13.48193a1.828,1.828,0,0,1-1.95117,1.30273A2.04531,2.04531,0,0,1,100.73,12.46045a2.07685,2.07685,0,0,1,2.07617-2.35254c1.25293,0,2.00879.856,2.00879,2.27V12.688h-3.17969v.0498a1.1902,1.1902,0,0,0,1.19922,1.29,1.07934,1.07934,0,0,0,1.07129-.5459Zm-3.126-1.45117h2.27441a1.08647,1.08647,0,0,0-1.1084-1.1665A1.15162,1.15162,0,0,0,101.63527,12.03076Z" style="fill: #fff"/>
</g>
</g>
</g>
</svg>

После

Ширина:  |  Высота:  |  Размер: 11 KiB

Двоичные данные
media/img/products/vpn/download/google-play-badge.png Normal file

Двоичный файл не отображается.

После

Ширина:  |  Высота:  |  Размер: 14 KiB

Просмотреть файл

@ -1 +0,0 @@
<svg width="65" height="64" viewBox="0 0 65 64" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M20.395 44c0 1.1.9 2 2 2h2v7c0 1.66 1.34 3 3 3s3-1.34 3-3v-7h4v7c0 1.66 1.34 3 3 3s3-1.34 3-3v-7h2c1.1 0 2-.9 2-2V24h-24v20zm-5-20c-1.66 0-3 1.34-3 3v14c0 1.66 1.34 3 3 3s3-1.34 3-3V27c0-1.66-1.34-3-3-3zm34 0c-1.66 0-3 1.34-3 3v14c0 1.66 1.34 3 3 3s3-1.34 3-3V27c0-1.66-1.34-3-3-3zm-9.94-11.68l2.6-2.6c.4-.4.4-1.02 0-1.42a.99.99 0 00-1.42 0l-2.96 2.96c-1.58-.8-3.38-1.26-5.28-1.26-1.92 0-3.72.46-5.32 1.26l-2.98-2.96a.99.99 0 00-1.42 0 .99.99 0 000 1.42l2.62 2.62c-2.96 2.18-4.9 5.68-4.9 9.66h24c0-3.98-1.94-7.5-4.94-9.68zM28.395 18h-2v-2h2v2zm10 0h-2v-2h2v2z" fill="#0c0c0d"/></svg>

До

Ширина:  |  Высота:  |  Размер: 688 B

Просмотреть файл

@ -0,0 +1 @@
<svg width="65" height="64" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M20.395 44c0 1.1.9 2 2 2h2v7c0 1.66 1.34 3 3 3s3-1.34 3-3v-7h4v7c0 1.66 1.34 3 3 3s3-1.34 3-3v-7h2c1.1 0 2-.9 2-2V24h-24v20zm-5-20c-1.66 0-3 1.34-3 3v14c0 1.66 1.34 3 3 3s3-1.34 3-3V27c0-1.66-1.34-3-3-3zm34 0c-1.66 0-3 1.34-3 3v14c0 1.66 1.34 3 3 3s3-1.34 3-3V27c0-1.66-1.34-3-3-3zm-9.94-11.68 2.6-2.6c.4-.4.4-1.02 0-1.42a.99.99 0 0 0-1.42 0l-2.96 2.96c-1.58-.8-3.38-1.26-5.28-1.26-1.92 0-3.72.46-5.32 1.26l-2.98-2.96a.99.99 0 0 0-1.42 0 .99.99 0 0 0 0 1.42l2.62 2.62c-2.96 2.18-4.9 5.68-4.9 9.66h24c0-3.98-1.94-7.5-4.94-9.68zM28.395 18h-2v-2h2v2zm10 0h-2v-2h2v2z" fill="#6D6D6E"/></svg>

После

Ширина:  |  Высота:  |  Размер: 672 B

Просмотреть файл

@ -1 +0,0 @@
<svg width="32" height="32" viewBox="0 0 32 32" fill="none" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" clip-rule="evenodd" d="M10.901 4H22.3c1.554 0 2.798 1.318 2.694 2.84v18.759c0 1.521-1.244 2.738-2.798 2.738H10.798C9.243 28.337 8 27.019 8 25.497V6.738C8 5.218 9.347 4 10.901 4zm3.316 23.019h4.56c.31 0 .621-.304.621-.507 0-.406-.207-.609-.518-.609h-4.56c-.414 0-.62.203-.62.507 0 .406.206.609.517.609zm7.98-2.333c.31 0 .517-.202.517-.507V6.941c0-.304-.207-.507-.518-.507H11.11c-.311 0-.518.202-.518.507v17.238c0 .305.207.507.518.507h11.087zm-3.7-4.15c1.09-.02 2.15-1.822 2.503-2.84-1.807-.837-2.07-3.115-.386-4.205-.635-.92-1.623-1.046-1.975-1.06-.514-.052-1.013.143-1.42.303-.26.1-.482.188-.648.188-.184 0-.412-.09-.668-.19-.335-.133-.718-.284-1.114-.276-1.3.019-2.789 1.069-2.789 3.187 0 2.306 1.787 4.95 2.944 4.905.317-.012.543-.107.777-.206.27-.114.55-.232.992-.232.423 0 .69.115.948.225.246.105.482.207.836.2zM18.65 9.84c-1.272.05-2.31 1.374-2.164 2.468 1.175.09 2.303-1.216 2.164-2.468z" fill="#000"/></svg>

До

Ширина:  |  Высота:  |  Размер: 1.0 KiB

Просмотреть файл

@ -0,0 +1 @@
<svg width="60" height="60" fill="none" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" clip-rule="evenodd" d="M19.128 7.5h21.126c2.881 0 5.186 2.438 4.994 5.25v34.688c0 2.812-2.305 5.062-5.186 5.062H18.936c-2.881 0-5.186-2.438-5.186-5.25V12.562c0-2.812 2.497-5.062 5.378-5.062Zm6.146 42.563h8.45c.577 0 1.153-.563 1.153-.938 0-.75-.384-1.125-.96-1.125h-8.451c-.768 0-1.153.375-1.153.938 0 .75.385 1.124.96 1.124Zm14.788-4.313c.577 0 .96-.375.96-.938V12.939c0-.563-.383-.938-.96-.938h-20.55c-.576 0-.96.375-.96.938v31.874c0 .563.384.938.96.938h20.55Zm-6.857-7.676c2.022-.036 3.985-3.367 4.64-5.248-3.35-1.549-3.836-5.762-.715-7.777-1.176-1.7-3.009-1.933-3.661-1.96-.953-.096-1.878.265-2.633.56-.48.187-.893.348-1.2.348-.342 0-.764-.166-1.238-.353-.622-.244-1.331-.523-2.064-.51-2.411.036-5.17 1.977-5.17 5.894 0 4.263 3.311 9.153 5.456 9.07.589-.022 1.008-.199 1.44-.381.5-.21 1.019-.43 1.84-.43.784 0 1.28.213 1.756.417.456.195.894.383 1.55.37ZM33.49 18.3c-2.357.094-4.28 2.54-4.012 4.563 2.178.168 4.269-2.248 4.012-4.563Z" fill="#6D6D6E"/></svg>

После

Ширина:  |  Высота:  |  Размер: 1.0 KiB

Просмотреть файл

@ -1 +0,0 @@
<svg width="64" height="64" viewBox="0 0 64 64" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M49.162 48.098c-1.1-.892-.672-2.862-1.814-3.834 1.106-6.73-1.994-12.662-5.69-16.464-3.102-3.19-2.102-6.294-2.102-8.98 0-4.292-1.762-8.82-7.1-8.82-5.706 0-7.27 4.76-7.326 7.476-.136 6.524 1.318 8.22-2.5 12.968-4.492 5.586-5.154 11.158-4.14 14.114-.474.552-1.114 1.164-2.31 1.67-3.304 1.44-.882 3.85-1.796 5.56a3.14 3.14 0 00-.384 1.48c0 1.5 1.192 2.798 3.358 2.604 2.922-.26 5.618 1.81 7.362 1.81 1.54 0 2.804-.876 3.392-2.082 2.754-.678 6.154-.592 8.906.118C37.512 57.1 38.852 58 40.342 58c3.262 0 3.89-3.698 7.632-4.95C49.322 52.6 50 51.292 50 50.074c0-.78-.278-1.522-.838-1.976zm-18.294-20.93c-.638 0-1.166-.516-2-1.136-1.056-.784-2.13-1.236-2.118-2.06 0-.566.758-.74 1.738-1.362 1.052-.666 1.462-1.342 2.498-1.342 1.06 0 1.38.536 2.82 1.158 1.416.614 2.402.854 2.402 1.546 0 .71-1.482 1.218-2.316 1.736-1.226.756-1.856 1.46-3.024 1.46zm3.33-10.43c1.764.282 1.962 3.382 1.118 4.908l-.71-.29c.368-1.086.362-2.874-.87-2.988-.782-.072-1.286.96-1.394 1.844a3.373 3.373 0 00-1.046-.254c.124-1.846 1.316-3.474 2.902-3.22zm-6.806.662c1.352-.336 2.15 1.236 2.156 2.87l-.62.38c-.084-.686-.39-1.794-1.158-1.558-.822.256-.688 2.166-.23 2.558l-.612.34c-.84-1.414-.838-4.266.464-4.59zm-4.23 38.486c-3.926-1.786-5.26-1.38-6.01-1.38-1.554 0-2.062-1.158-1.478-2.254.496-.93.342-1.904.22-2.686-.188-1.198-.222-1.588.956-2.104 1.63-.692 2.354-1.582 2.894-2.248 1.516-1.874 3.046 1.074 4.3 3.7.814 1.702 2.416 2.564 2.91 4.45.454 1.742-1.42 3.602-3.792 2.522zm13.974-3.748c-2.768 1.346-6.294 1.964-8.932.598-.39-1.126-1.014-1.854-1.686-2.586 1.078-.284 1.878-1.628.92-2.978-1.022-1.442-3.11-2.448-5.22-4.08-1.974-1.526-2.598-5.288.09-9.492-1.31 3.724-.544 7.156.114 8.138.136-1.976.292-5.276 2.992-9.23 1.362-1.996 1.382-4.632 1.412-6.28l1.24.848c.912.674 1.676 1.416 2.772 1.416 1.62 0 2.516-.932 3.764-1.706.488-.3 1.226-.604 1.846-1.026 1.04 4.952 5.348 10.908 5.59 14.3 1.002-2.064-.284-7.028-.284-7.028 1.684 2.57 1.818 4.712 1.892 7.34 1.178.482 2.442 1.738 2.558 3.392l-.49-.056c-.252-1.838-5.214-4.538-5.66-1.078-2.38.362-1.514 4.132-1.994 6.576-.22 1.118-.628 2.002-.924 2.932zm9.692-.082c-1.97.76-3.3 2.374-4.214 3.376-1.76 1.932-4.088 1.006-4.336-.802-.262-1.932.72-2.986 1.144-5.148.386-1.974-.046-5.012.862-5.336.59 3.506 4.132 2.032 4.94 1.076 1.314 0 1.424.444 1.718 1.674.184.77.438 1.418 1.156 2.18.836.894.58 2.266-1.27 2.98zm-16-26.012c-1.302 0-2.276-.866-3.068-1.538-.406-.342.1-.974.506-.63.774.656 1.554 1.35 2.562 1.35 1.214 0 2.284-1.038 3.734-1.61.494-.194.776.57.286.764-1.408.554-2.538 1.664-4.02 1.664z" fill="#000" /></svg>

До

Ширина:  |  Высота:  |  Размер: 2.6 KiB

Просмотреть файл

@ -0,0 +1 @@
<svg width="64" height="64" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M49.162 48.098c-1.1-.892-.672-2.862-1.814-3.834 1.106-6.73-1.994-12.662-5.69-16.464-3.102-3.19-2.102-6.294-2.102-8.98 0-4.292-1.762-8.82-7.1-8.82-5.706 0-7.27 4.76-7.326 7.476-.136 6.524 1.318 8.22-2.5 12.968-4.492 5.586-5.154 11.158-4.14 14.114-.474.552-1.114 1.164-2.31 1.67-3.304 1.44-.882 3.85-1.796 5.56a3.14 3.14 0 0 0-.384 1.48c0 1.5 1.192 2.798 3.358 2.604 2.922-.26 5.618 1.81 7.362 1.81 1.54 0 2.804-.876 3.392-2.082 2.754-.678 6.154-.592 8.906.118C37.512 57.1 38.852 58 40.342 58c3.262 0 3.89-3.698 7.632-4.95C49.322 52.6 50 51.292 50 50.074c0-.78-.278-1.522-.838-1.976zm-18.294-20.93c-.638 0-1.166-.516-2-1.136-1.056-.784-2.13-1.236-2.118-2.06 0-.566.758-.74 1.738-1.362 1.052-.666 1.462-1.342 2.498-1.342 1.06 0 1.38.536 2.82 1.158 1.416.614 2.402.854 2.402 1.546 0 .71-1.482 1.218-2.316 1.736-1.226.756-1.856 1.46-3.024 1.46zm3.33-10.43c1.764.282 1.962 3.382 1.118 4.908l-.71-.29c.368-1.086.362-2.874-.87-2.988-.782-.072-1.286.96-1.394 1.844a3.373 3.373 0 0 0-1.046-.254c.124-1.846 1.316-3.474 2.902-3.22zm-6.806.662c1.352-.336 2.15 1.236 2.156 2.87l-.62.38c-.084-.686-.39-1.794-1.158-1.558-.822.256-.688 2.166-.23 2.558l-.612.34c-.84-1.414-.838-4.266.464-4.59zm-4.23 38.486c-3.926-1.786-5.26-1.38-6.01-1.38-1.554 0-2.062-1.158-1.478-2.254.496-.93.342-1.904.22-2.686-.188-1.198-.222-1.588.956-2.104 1.63-.692 2.354-1.582 2.894-2.248 1.516-1.874 3.046 1.074 4.3 3.7.814 1.702 2.416 2.564 2.91 4.45.454 1.742-1.42 3.602-3.792 2.522zm13.974-3.748c-2.768 1.346-6.294 1.964-8.932.598-.39-1.126-1.014-1.854-1.686-2.586 1.078-.284 1.878-1.628.92-2.978-1.022-1.442-3.11-2.448-5.22-4.08-1.974-1.526-2.598-5.288.09-9.492-1.31 3.724-.544 7.156.114 8.138.136-1.976.292-5.276 2.992-9.23 1.362-1.996 1.382-4.632 1.412-6.28l1.24.848c.912.674 1.676 1.416 2.772 1.416 1.62 0 2.516-.932 3.764-1.706.488-.3 1.226-.604 1.846-1.026 1.04 4.952 5.348 10.908 5.59 14.3 1.002-2.064-.284-7.028-.284-7.028 1.684 2.57 1.818 4.712 1.892 7.34 1.178.482 2.442 1.738 2.558 3.392l-.49-.056c-.252-1.838-5.214-4.538-5.66-1.078-2.38.362-1.514 4.132-1.994 6.576-.22 1.118-.628 2.002-.924 2.932zm9.692-.082c-1.97.76-3.3 2.374-4.214 3.376-1.76 1.932-4.088 1.006-4.336-.802-.262-1.932.72-2.986 1.144-5.148.386-1.974-.046-5.012.862-5.336.59 3.506 4.132 2.032 4.94 1.076 1.314 0 1.424.444 1.718 1.674.184.77.438 1.418 1.156 2.18.836.894.58 2.266-1.27 2.98zm-16-26.012c-1.302 0-2.276-.866-3.068-1.538-.406-.342.1-.974.506-.63.774.656 1.554 1.35 2.562 1.35 1.214 0 2.284-1.038 3.734-1.61.494-.194.776.57.286.764-1.408.554-2.538 1.664-4.02 1.664z" fill="#6D6D6E"/></svg>

После

Ширина:  |  Высота:  |  Размер: 2.6 KiB

Просмотреть файл

@ -1 +0,0 @@
<svg width="64" height="64" viewBox="0 0 64 64" fill="none" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" clip-rule="evenodd" d="M42 56H22v-2c3.066-.732 4.772-3.144 4.994-6h10.012c.222 2.854 1.928 5.268 4.994 6v2zm12-10c.53 0 1.04-.21 1.414-.586C55.79 45.04 56 44.53 56 44V10c0-.53-.21-1.04-.586-1.414A1.995 1.995 0 0054 8H10c-.53 0-1.04.21-1.414.586A1.995 1.995 0 008 10v34c0 .53.21 1.04.586 1.414C8.96 45.79 9.47 46 10 46h44zm-22-6.838a2 2 0 11-.001 4.001A2 2 0 0132 39.162zM52 12H12v24h40V12z" fill="#000"/><path d="M38 27.738c-.51 1.52-2.04 4.212-3.616 4.241-1.045.02-1.381-.635-2.576-.635-1.194 0-1.568.615-2.556.655-1.671.066-4.252-3.885-4.252-7.33 0-3.165 2.15-4.733 4.029-4.762 1.007-.019 1.959.697 2.573.697.617 0 1.773-.86 2.987-.735.509.023 1.937.21 2.853 1.585-2.431 1.628-2.052 5.033.558 6.284zM34.606 16c-1.837.076-3.336 2.053-3.127 3.688 1.698.135 3.327-1.817 3.127-3.688z" fill="#000" /></svg>

До

Ширина:  |  Высота:  |  Размер: 925 B

Просмотреть файл

@ -0,0 +1 @@
<svg width="64" height="64" fill="none" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" clip-rule="evenodd" d="M42 56H22v-2c3.066-.732 4.772-3.144 4.994-6h10.012c.222 2.854 1.928 5.268 4.994 6v2zm12-10c.53 0 1.04-.21 1.414-.586C55.79 45.04 56 44.53 56 44V10c0-.53-.21-1.04-.586-1.414A1.995 1.995 0 0 0 54 8H10c-.53 0-1.04.21-1.414.586A1.995 1.995 0 0 0 8 10v34c0 .53.21 1.04.586 1.414C8.96 45.79 9.47 46 10 46h44zm-22-6.838a2 2 0 1 1-.001 4.001A2 2 0 0 1 32 39.162zM52 12H12v24h40V12z" fill="#6D6D6E"/><path d="M38 27.738c-.51 1.52-2.04 4.212-3.616 4.241-1.045.02-1.381-.635-2.576-.635-1.194 0-1.568.615-2.556.655-1.671.066-4.252-3.885-4.252-7.33 0-3.165 2.15-4.733 4.029-4.762 1.007-.019 1.959.697 2.573.697.617 0 1.773-.86 2.987-.735.509.023 1.937.21 2.853 1.585-2.431 1.628-2.052 5.033.558 6.284zM34.606 16c-1.837.076-3.336 2.053-3.127 3.688 1.698.135 3.327-1.817 3.127-3.688z" fill="#6D6D6E"/></svg>

После

Ширина:  |  Высота:  |  Размер: 917 B

Просмотреть файл

@ -1 +0,0 @@
<svg width="65" height="64" viewBox="0 0 65 65" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M32.395 11.336l24-3.336v24h-24V11.336zm-4 .66l-20 2.712V32h20V11.996zm0 24.004h-20v13.292l20 2.712V36zm4 0v16.664l24 3.336V36h-24z" fill="#0c0c0d"/></svg>

До

Ширина:  |  Высота:  |  Размер: 259 B

Просмотреть файл

@ -0,0 +1 @@
<svg width="65" height="64" viewBox="0 0 65 65" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="m32.395 11.336 24-3.336v24h-24V11.336zm-4 .66-20 2.712V32h20V11.996zm0 24.004h-20v13.292l20 2.712V36zm4 0v16.664l24 3.336V36h-24z" fill="#6D6D6E"/></svg>

После

Ширина:  |  Высота:  |  Размер: 258 B

Просмотреть файл

@ -0,0 +1 @@
<svg width="48" height="50" fill="none" xmlns="http://www.w3.org/2000/svg"><rect width="48" height="49.457" rx="6.4" fill="#000"/><path fill-rule="evenodd" clip-rule="evenodd" d="M24.332 14.159c-1.132 0-2.05.945-2.05 2.112 0 1.166.918 2.112 2.05 2.112 1.132 0 2.05-.946 2.05-2.112 0-1.167-.918-2.112-2.05-2.112ZM19.55 16.27c0-2.722 2.141-4.929 4.783-4.929 2.642 0 4.784 2.207 4.784 4.929 0 2.722-2.142 4.928-4.784 4.928a4.652 4.652 0 0 1-2.276-.592L20 22.727c.155.295.282.609.377.937h7.912c.589-2.036 2.419-3.52 4.586-3.52 2.642 0 4.783 2.206 4.783 4.928S35.516 30 32.874 30a4.652 4.652 0 0 1-2.276-.592l-2.057 2.12c.366.697.575 1.496.575 2.345 0 2.721-2.142 4.928-4.784 4.928s-4.783-2.207-4.783-4.928c0-2.722 2.141-4.929 4.783-4.929.824 0 1.6.215 2.276.592l2.057-2.12a4.985 4.985 0 0 1-.376-.936h-7.913C19.788 28.516 17.957 30 15.79 30c-2.641 0-4.783-2.206-4.783-4.928s2.142-4.929 4.783-4.929c.824 0 1.6.215 2.276.593l2.058-2.12a5.024 5.024 0 0 1-.575-2.345Zm2.733 17.602c0-1.167.918-2.113 2.05-2.113 1.132 0 2.05.946 2.05 2.113 0 1.166-.918 2.112-2.05 2.112-1.132 0-2.05-.946-2.05-2.112ZM15.79 22.96c-1.132 0-2.05.945-2.05 2.112 0 1.166.918 2.112 2.05 2.112 1.133 0 2.05-.946 2.05-2.112 0-1.167-.917-2.113-2.05-2.113Zm15.034 2.112c0-1.167.918-2.113 2.05-2.113 1.132 0 2.05.946 2.05 2.113 0 1.166-.918 2.112-2.05 2.112-1.132 0-2.05-.946-2.05-2.112Z" fill="#fff"/></svg>

После

Ширина:  |  Высота:  |  Размер: 1.3 KiB

Просмотреть файл

@ -0,0 +1 @@
<svg width="42" height="42" fill="none" xmlns="http://www.w3.org/2000/svg"><circle cx="21" cy="21" r="20" stroke="#000" stroke-width="2"/><path d="M20.293 25.707a1 1 0 0 0 1.414 0l5-5a1 1 0 0 0-1.414-1.414L22 22.586V14a1 1 0 0 0-2 0v8.586l-3.293-3.293a1 1 0 0 0-1.414 1.414l5 5ZM26 27H16a1 1 0 0 0 0 2h10a1 1 0 0 0 0-2Z" fill="#0C0C0D"/></svg>

После

Ширина:  |  Высота:  |  Размер: 344 B

Просмотреть файл

@ -0,0 +1 @@
<svg width="42" height="42" fill="none" xmlns="http://www.w3.org/2000/svg"><circle cx="21" cy="21" r="20" stroke="#0C0C0D" stroke-width="2"/><path d="M18 14h-1a3 3 0 0 0-3 3v8a3 3 0 0 0 3 3h8a3 3 0 0 0 3-3v-1a1 1 0 1 0-2 0v1a1 1 0 0 1-1 1h-8a1 1 0 0 1-1-1v-8a1 1 0 0 1 1-1h1a1 1 0 1 0 0-2Z" fill="#0C0C0D"/><path d="M27.935 14.618a1 1 0 0 0-.923-.618h-5a1 1 0 1 0 0 2h2.586l-3.293 3.293a1 1 0 1 0 1.415 1.414l3.293-3.293V20a1 1 0 1 0 2 0v-5c0-.131-.027-.26-.077-.382h-.001Z" fill="#0C0C0D"/></svg>

После

Ширина:  |  Высота:  |  Размер: 498 B

Двоичные данные
media/img/products/vpn/download/vpn-download-shield.png Normal file

Двоичный файл не отображается.

После

Ширина:  |  Высота:  |  Размер: 13 KiB

Просмотреть файл

@ -24,8 +24,4 @@ def test_vpn_download_buttons_displayed(base_url, selenium):
)
def test_vpn_download_blocked_in_country(country, base_url, selenium):
page = VPNDownloadPage(selenium, base_url, params=f"?geo={country}").open()
assert not page.is_windows_download_button_displayed
assert not page.is_mac_download_button_displayed
assert not page.is_linux_download_button_displayed
assert not page.is_android_download_button_displayed
assert not page.is_ios_download_button_displayed
assert not page.is_download_container_displayed

Просмотреть файл

@ -10,28 +10,63 @@ from pages.base import BasePage
class VPNDownloadPage(BasePage):
_URL_TEMPLATE = "/{locale}/products/vpn/download/{params}"
_windows_download_button_locator = (By.CSS_SELECTOR, ".mzp-c-button[data-cta-text='VPN Download (Windows)']")
_mac_download_button_locator = (By.CSS_SELECTOR, ".mzp-c-button[data-cta-text='VPN Download (macOS)']")
_linux_download_button_locator = (By.CSS_SELECTOR, ".mzp-c-button[data-cta-text='VPN Download (Linux)']")
_android_download_button_locator = (By.CSS_SELECTOR, ".mzp-c-button[data-cta-text='VPN Download (Android)']")
_ios_download_button_locator = (By.CSS_SELECTOR, ".mzp-c-button[data-cta-text='VPN Download (iOS)']")
_download_container_locator = (By.CSS_SELECTOR, ".vpn-download-options")
_windows_download_button_locator = (By.CSS_SELECTOR, "a[data-cta-text='VPN Download (Windows)']")
_mac_download_button_locator = (By.CSS_SELECTOR, "a[data-cta-text='VPN Download (macOS)']")
_linux_download_button_locator = (By.CSS_SELECTOR, "a[data-cta-text='VPN Download (Linux)']")
_android_download_button_locator = (By.CSS_SELECTOR, "a[data-cta-text='VPN Download (Android)']")
_ios_download_button_locator = (By.CSS_SELECTOR, "a[data-cta-text='VPN Download (iOS)']")
@property
def windows_download_button(self):
els = [el for el in self.find_elements(*self._windows_download_button_locator) if el.is_displayed()]
assert len(els) == 1, "Expected one Windows download link to be displayed"
return els[0]
@property
def mac_download_button(self):
els = [el for el in self.find_elements(*self._mac_download_button_locator) if el.is_displayed()]
assert len(els) == 1, "Expected one macOS download link to be displayed"
return els[0]
@property
def linux_download_button(self):
els = [el for el in self.find_elements(*self._linux_download_button_locator) if el.is_displayed()]
assert len(els) == 1, "Expected one Linux download link to be displayed"
return els[0]
@property
def android_download_button(self):
els = [el for el in self.find_elements(*self._android_download_button_locator) if el.is_displayed()]
assert len(els) == 1, "Expected one Android download link to be displayed"
return els[0]
@property
def ios_download_button(self):
els = [el for el in self.find_elements(*self._ios_download_button_locator) if el.is_displayed()]
assert len(els) == 1, "Expected one iOS download link to be displayed"
return els[0]
@property
def is_windows_download_button_displayed(self):
return self.is_element_displayed(*self._windows_download_button_locator)
return self.windows_download_button.is_displayed()
@property
def is_mac_download_button_displayed(self):
return self.is_element_displayed(*self._mac_download_button_locator)
return self.mac_download_button.is_displayed()
@property
def is_linux_download_button_displayed(self):
return self.is_element_displayed(*self._linux_download_button_locator)
return self.linux_download_button.is_displayed()
@property
def is_android_download_button_displayed(self):
return self.is_element_displayed(*self._android_download_button_locator)
return self.android_download_button.is_displayed()
@property
def is_ios_download_button_displayed(self):
return self.is_element_displayed(*self._ios_download_button_locator)
return self.ios_download_button.is_displayed()
@property
def is_download_container_displayed(self):
return self.is_element_displayed(*self._download_container_locator)