Add current files to repository

This commit is contained in:
Kirchik
2025-08-11 19:29:49 +02:00
parent d5ce15c3b6
commit 484cdde442
853 changed files with 9 additions and 4017 deletions
+9 -2
View File
@@ -36,5 +36,12 @@ Thumbs.db
*_key*
*password*
*apikey*
*token*gitea
gitea.pub
*token*gitea
gitea.pub
# Local development folders
scripts/
telegram/
migration-s3/
INFO/
forms/
-109
View File
@@ -1,109 +0,0 @@
# Настройка форм обратной связи
## Копирование PHP файлов на сервер
```bash
# Скопировать обработчики форм в корень веб-сервера
sudo cp static/send_plan.php /var/www/html/
sudo cp static/send_ask.php /var/www/html/
# Установить права
sudo chown www-data:www-data /var/www/html/send_*.php
sudo chmod 644 /var/www/html/send_*.php
```
## Настройка email
Отредактируйте файлы и замените email получателя:
```bash
# В файле send_plan.php
sudo nano /var/www/html/send_plan.php
# Найти строку: $to = "info@sleeptrip.ru";
# Заменить на ваш email
# В файле send_ask.php
sudo nano /var/www/html/send_ask.php
# Найти строку: $to = "info@sleeptrip.ru";
# Заменить на ваш email
```
## Настройка SMTP (через msmtp)
```bash
# Установить msmtp
sudo apt update && sudo apt install msmtp msmtp-mta
# Создать конфигурацию
sudo tee /etc/msmtprc > /dev/null <<'EOF'
defaults
auth on
tls on
tls_trust_file /etc/ssl/certs/ca-certificates.crt
logfile /var/log/msmtp.log
# Gmail настройки (замените на ваши)
account gmail
host smtp.gmail.com
port 587
from your-email@gmail.com
user your-email@gmail.com
password your-app-password
# Установить Gmail как аккаунт по умолчанию
account default : gmail
EOF
# Установить права
sudo chmod 644 /etc/msmtprc
sudo chown root:mail /etc/msmtprc
# Создать лог файл
sudo touch /var/log/msmtp.log
sudo chown www-data:adm /var/log/msmtp.log
sudo chmod 664 /var/log/msmtp.log
# Настроить PHP для использования msmtp
echo "sendmail_path = /usr/bin/msmtp -t" | sudo tee -a /etc/php/*/apache2/php.ini
echo "sendmail_path = /usr/bin/msmtp -t" | sudo tee -a /etc/php/*/cli/php.ini
# Перезапустить Apache
sudo systemctl restart apache2
```
## Тестирование форм
1. Откройте страницы `/plan/` и `/ask/`
2. Заполните и отправьте формы
3. Проверьте логи: `sudo tail -f /var/log/msmtp.log`
4. Проверьте почту
## Альтернатива: использование существующего qform.io
Если предпочитаете оставить текущие формы qform.io, можно:
1. Оставить существующие формы как есть
2. PHP обработчики использовать как резервный вариант
3. Настроить webhook'и в qform.io для интеграции с внутренними системами
## Безопасность
- PHP файлы включают базовую валидацию
- Email headers защищены от инъекций
- Логируется IP и timestamp
- Рекомендуется добавить CAPTCHA для защиты от спама
## Интеграция с внутренними системами
Для интеграции с базой данных или CRM добавьте в PHP файлы:
```php
// Пример записи в базу данных
try {
$pdo = new PDO('mysql:host=localhost;dbname=travel', $db_user, $db_pass);
$stmt = $pdo->prepare("INSERT INTO requests (name, email, type, destination, created_at) VALUES (?, ?, ?, ?, NOW())");
$stmt->execute([$name, $email, $trip_type, $destination]);
} catch (PDOException $e) {
error_log("Database error: " . $e->getMessage());
}
```
-1
View File
@@ -1 +0,0 @@
# ptp
-65
View File
@@ -1,65 +0,0 @@
+++
title = 'Название поста'
slug = 'slug-posta'
image = 'images/post-main-photo.jpg'
date = "2025-01-01T00:00:00"
description = 'Краткое описание поста'
disqus_identifier = '999'
+++
<!-- УНИВЕРСАЛЬНЫЙ ШАБЛОН ПОСТА -->
<!-- Выберите нужные элементы и удалите ненужные -->
Введение к посту...
<!-- ОСНОВНОЕ ИЗОБРАЖЕНИЕ -->
![Описание главного фото](/images/post-main-photo.jpg)
## Основной контент
Основной текст поста...
<!-- ДОПОЛНИТЕЛЬНЫЕ ФОТОГРАФИИ -->
![Описание фото](/images/additional-photo.jpg)
<!-- ВИДЕО (YouTube) -->
{{< youtube id="VIDEO_ID" >}}
<!-- КАРТА ЯНДЕКС -->
<!-- 📍 ЛОКАЦИЯ (ОБЯЗАТЕЛЬНОЕ ПОЛЕ) -->
---
📍 Локация
{{< rawhtml >}}
<div class="yandex-map-container">
<script type="text/javascript" charset="utf-8" async src="https://api-maps.yandex.ru/services/constructor/1.0/js/?um=constructor%3AВАША_КАРТА_ID&amp;width=800&amp;height=400&amp;lang=ru_RU&amp;scroll=true"></script>
</div>
{{< /rawhtml >}}
{{< rawhtml >}}
{{< back-to-top >}}
{{< /rawhtml >}}
<!-- ГАЛЕРЕЯ ФОТОГРАФИЙ -->
{{< load-photoswipe >}}
{{< gallery caption-effect="fade" >}}
{{< figure src="images/gallery-1.jpg" >}}
{{< figure src="images/gallery-2.jpg" >}}
{{< figure src="images/gallery-3.jpg" >}}
{{< /gallery >}}
Заключение...
<!--
ИНСТРУКЦИЯ:
Используйте нужные элементы и удалите ненужные для вашего поста:
- Фотографии: обычные ![...] или галерея {{< gallery >}}
- Видео: {{< youtube id="..." >}}
- 📍 Локация: ОБЯЗАТЕЛЬНОЕ ПОЛЕ - всегда добавляйте карту с местоположением
- Карты: {{< yandex-map id="..." >}}
Примечание:
- Всегда добавляйте дивайдер (---) перед 📍 Локация
- Используйте {{< back-to-top >}} вместо ручной ссылки
- Размер карты: 800x400 для лучшего отображения
-->
-35
View File
@@ -1,35 +0,0 @@
#!/bin/bash
# Configuration - ИЗМЕНИТЕ ЭТИ ЗНАЧЕНИЯ на ваши
BUCKET_NAME="test-ptp"
# Удаление .git файлов и директорий из бакета
echo "Удаление .git файлов из S3 бакета..."
s3cmd del s3://$BUCKET_NAME/.git/ --recursive
s3cmd del s3://$BUCKET_NAME/.github/ --recursive
s3cmd del "s3://$BUCKET_NAME/.gitignore"
# Удаление всех файлов, содержащих .git в названии
echo "Поиск и удаление всех файлов с .git в названии..."
for file in $(s3cmd ls s3://$BUCKET_NAME/ --recursive | grep -i ".git" | awk '{print $4}'); do
echo "Удаление: $file"
s3cmd del "$file"
done
# Удаление .env* файлов
echo "Удаление .env файлов из S3 бакета..."
s3cmd del s3://$BUCKET_NAME/.env* --recursive
for file in $(s3cmd ls s3://$BUCKET_NAME/ --recursive | grep -i "\.env" | awk '{print $4}'); do
echo "Удаление: $file"
s3cmd del "$file"
done
# Проверка config*.toml файлов на наличие чувствительных данных
echo "Проверка config*.toml файлов на наличие чувствительных данных..."
for file in $(s3cmd ls s3://$BUCKET_NAME/ --recursive | grep -i "config.*\.toml" | awk '{print $4}'); do
echo "Файл конфигурации найден: $file"
# Здесь мы предупреждаем о наличии файла, но не удаляем его автоматически
echo "ВНИМАНИЕ: Убедитесь, что $file не содержит секретные данные!"
done
echo "Очистка завершена! Проверьте бакет, чтобы убедиться, что все критичные файлы удалены."
-43
View File
@@ -1,43 +0,0 @@
#!/bin/bash
# Configuration
BUCKET_NAME="your-r2-bucket-name"
DISTRIBUTION_DOMAIN="cyberiya.site"
R2_ENDPOINT="https://<account-id>.r2.cloudflarestorage.com"
REGION="auto"
# Build the site
echo "Building site with Hugo..."
hugo --config config-prod.toml
# Sync to Cloudflare R2
echo "Deploying to Cloudflare R2..."
# AWS CLI версия
# aws s3 sync ./public/ s3://$BUCKET_NAME/ \
# --endpoint-url=$R2_ENDPOINT \
# --region=$REGION \
# --acl public-read \
# --exclude ".git/*" \
# --exclude ".github/*" \
# --exclude ".gitignore" \
# --exclude "*.git*" \
# --delete
# S3CMD версия
s3cmd sync ./public/ s3://$BUCKET_NAME/ \
--acl-public \
--delete-removed \
--exclude ".git/*" \
--exclude ".github/*" \
--exclude ".gitignore" \
--exclude "*.git*" \
--exclude ".env*" \
--exclude "*.env" \
--exclude "*.env.*"
# Invalidate Cloudflare cache if needed
echo "Invalidating Cloudflare cache..."
# If you have the Cloudflare API token set up:
# cloudflare-cli purge $DISTRIBUTION_DOMAIN
echo "Deployment complete! Site available at: https://$DISTRIBUTION_DOMAIN"
-51
View File
@@ -1,51 +0,0 @@
<?php
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
$name = trim($_POST['name'] ?? '');
$email = trim($_POST['email'] ?? '');
$subject = trim($_POST['subject'] ?? '');
$message = trim($_POST['message'] ?? '');
// Валидация
if (empty($name) || empty($email) || empty($subject) || empty($message)) {
$error = "Все поля обязательны для заполнения.";
} elseif (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
$error = "Некорректный email адрес.";
} else {
// Подготовка email
$to = "info@sleeptrip.ru"; // ЗАМЕНИТЕ на ваш email!
$email_subject = "Вопрос с сайта: " . $subject;
$email_body = "Новый вопрос с сайта:\n\n";
$email_body .= "Имя: " . $name . "\n";
$email_body .= "Email: " . $email . "\n";
$email_body .= "Тема: " . $subject . "\n\n";
$email_body .= "Сообщение:\n" . $message . "\n\n";
$email_body .= "---\n";
$email_body .= "Отправлено с: " . $_SERVER['HTTP_HOST'] . "\n";
$email_body .= "Дата: " . date('Y-m-d H:i:s') . "\n";
$email_body .= "IP: " . $_SERVER['REMOTE_ADDR'] . "\n";
$headers = "From: noreply@sleeptrip.ru\r\n";
$headers .= "Reply-To: " . $email . "\r\n";
$headers .= "X-Mailer: PHP/" . phpversion();
$headers .= "Content-Type: text/plain; charset=UTF-8\r\n";
// Отправка email
if (mail($to, $email_subject, $email_body, $headers)) {
$success = "Сообщение отправлено! Мы ответим вам в ближайшее время.";
// Очистить форму
$name = $email = $subject = $message = '';
} else {
$error = "Ошибка отправки. Попробуйте еще раз или свяжитесь через Telegram.";
}
}
}
// Перенаправление обратно на страницу с результатом
if (isset($success)) {
header("Location: /ask/?success=" . urlencode($success));
exit;
} elseif (isset($error)) {
header("Location: /ask/?error=" . urlencode($error));
exit;
}
?>
-61
View File
@@ -1,61 +0,0 @@
<?php
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
$name = trim($_POST['name'] ?? '');
$email = trim($_POST['email'] ?? '');
$phone = trim($_POST['phone'] ?? '');
$bvs_number = trim($_POST['bvs_number'] ?? '');
$trip_period = trim($_POST['trip_period'] ?? '');
$consent = isset($_POST['consent']) ? trim($_POST['consent']) : '';
$age_confirm = isset($_POST['age_confirm']) ? trim($_POST['age_confirm']) : '';
// Валидация
if (empty($name) || empty($email) || empty($consent) || empty($age_confirm)) {
$error = "Обязательные поля: Имя, Email, Согласие на обработку данных, Подтверждение возраста.";
} elseif (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
$error = "Некорректный email адрес.";
} elseif ($consent !== 'agree') {
$error = "Для отправки заявки необходимо согласие на обработку персональных данных.";
} elseif ($age_confirm !== '18+') {
$error = "Для отправки заявки необходимо подтверждение возраста 18+.";
} else {
// Подготовка email
$to = "info@sleeptrip.ru"; // ЗАМЕНИТЕ на ваш email!
$email_subject = "Новая заявка на поездку от " . $name;
$email_body = "Новая заявка на планирование поездки:\n\n";
$email_body .= "Имя: " . $name . "\n";
$email_body .= "Email: " . $email . "\n";
$email_body .= "Телефон: " . ($phone ?: 'не указан') . "\n";
$email_body .= "Учётный номер БВС/Вариант поездки: " . ($bvs_number ?: 'не указано') . "\n";
$email_body .= "Период поездки: " . ($trip_period ?: 'не выбран') . "\n";
$email_body .= "Возраст 18+: " . ($age_confirm === '18+' ? 'Подтверждено' : 'Не подтверждено') . "\n";
$email_body .= "Согласие на обработку данных: " . ($consent === 'agree' ? 'Да' : 'Нет') . "\n\n";
$email_body .= "---\n";
$email_body .= "Отправлено с: " . $_SERVER['HTTP_HOST'] . "\n";
$email_body .= "Дата: " . date('Y-m-d H:i:s') . "\n";
$email_body .= "IP: " . $_SERVER['REMOTE_ADDR'] . "\n";
$headers = "From: noreply@sleeptrip.ru\r\n";
$headers .= "Reply-To: " . $email . "\r\n";
$headers .= "X-Mailer: PHP/" . phpversion();
$headers .= "Content-Type: text/plain; charset=UTF-8\r\n";
// Отправка email
if (mail($to, $email_subject, $email_body, $headers)) {
$success = "Заявка отправлена! Мы свяжемся с вами в ближайшее время.";
// Очистить форму
$name = $email = $phone = $bvs_number = $trip_period = $consent = $age_confirm = '';
} else {
$error = "Ошибка отправки. Попробуйте еще раз или свяжитесь через Telegram.";
}
}
}
// Перенаправление обратно на страницу с результатом
if (isset($success)) {
header("Location: /plan/?success=" . urlencode($success));
exit;
} elseif (isset($error)) {
header("Location: /plan/?error=" . urlencode($error));
exit;
}
?>
Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.6 KiB

File diff suppressed because one or more lines are too long
Binary file not shown.
Binary file not shown.
File diff suppressed because it is too large Load Diff

Before

Width:  |  Height:  |  Size: 434 KiB

Binary file not shown.
Binary file not shown.
Binary file not shown.
-159
View File
@@ -1,159 +0,0 @@
/*
Put this file in /static/css/hugo-easy-gallery.css
Documentation and licence at https://github.com/liwenyip/hugo-easy-gallery/
*/
/*
Grid Layout Styles
*/
.gallery {
overflow: hidden;
margin: 10px;
max-width: 768px;
}
.gallery .box {
float: left;
position: relative;
/* Default: 1 tile wide */
width: 100%;
padding-bottom: 100%;
}
@media only screen and (min-width : 365px) {
/* Tablet view: 2 tiles */
.gallery .box {
width: 50%;
padding-bottom: 50%;
}
}
@media only screen and (min-width : 480px) {
/* Small desktop / ipad view: 3 tiles */
.gallery .box {
width: 33.3%;
padding-bottom: 33.3%; /* */
}
}
@media only screen and (min-width : 9999px) {
/* Medium desktop: 4 tiles */
.box {
width: 25%;
padding-bottom: 25%;
}
}
/*
Transition styles
*/
.gallery.hover-transition figure,
.gallery.hover-effect-zoom .img,
.gallery:not(.caption-effect-appear) figcaption,
.fancy-figure:not(.caption-effect-appear) figcaption {
-webkit-transition: all 0.3s ease-in-out;
-moz-transition: all 0.3s ease-in-out;
-o-transition: all 0.3s ease-in-out;
transition: all 0.3s ease-in-out;
}
/*
figure styles
*/
figure {
position:relative; /* purely to allow absolution positioning of figcaption */
overflow: hidden;
}
.gallery figure {
position: absolute;
left: 5px;
right: 5px;
top: 5px;
bottom: 5px;
}
.gallery.hover-effect-grow figure:hover {
transform: scale(1.05);
}
.gallery.hover-effect-shrink figure:hover {
transform: scale(0.95);
}
.gallery.hover-effect-slidedown figure:hover {
transform: translateY(5px);
}
.gallery.hover-effect-slideup figure:hover {
transform: translateY(-5px);
}
/*
img / a styles
*/
.gallery .img {
position: absolute;
left: 0;
right: 0;
top: 0;
bottom: 0;
background-size: cover;
background-position: 50% 50%;
background-repeat: no-repeat;
}
.gallery.hover-effect-zoom figure:hover .img {
transform: scale(1.05);
}
.gallery img {
display: none; /* only show the img if not inside a gallery */
}
figure a {
position: absolute;
left: 0;
right: 0;
top: 0;
bottom: 0;
}
/*
figcaption styles
*/
.gallery figcaption,
.fancy-figure figcaption {
position: absolute;
bottom: 0;
left: 0;
right: 0;
background: #000;
color: #FFF;
text-align: center;
font-size: 75%; /* change this if you want bigger text */
background: rgba(0, 0, 0, 0.5);
opacity: 1;
cursor: pointer;
}
.gallery.caption-position-none figcaption,
.fancy-figure.caption-position-none figcaption {
display: none;
}
.gallery.caption-position-center figcaption,
.fancy-figure.caption-position-center figcaption {
top: 0;
padding: 40% 5px;
}
.gallery.caption-position-bottom figcaption,
.fancy-figure.caption-position-bottom figcaption {
padding: 5px;
}
.gallery.caption-effect-fade figure:not(:hover) figcaption,
.gallery.caption-effect-appear figure:not(:hover) figcaption,
.fancy-figure.caption-effect-fade figure:not(:hover) figcaption,
.fancy-figure.caption-effect-appear figure:not(:hover) figcaption {
background: rgba(0, 0, 0, 0);
opacity: 0;
}
.gallery.caption-effect-slide.caption-position-bottom figure:not(:hover) figcaption,
.fancy-figure.caption-effect-slide.caption-position-bottom figure:not(:hover) figcaption {
margin-bottom: -100%;
}
.gallery.caption-effect-slide.caption-position-center figure:not(:hover) figcaption,
.fancy-figure.caption-effect-slide.caption-position-center figure:not(:hover) figcaption {
top: 100%;
}
figcaption p {
margin: auto; /* override style in theme */
}
-86
View File
@@ -1,86 +0,0 @@
lite-youtube {
background-color: #000;
position: relative;
display: block;
contain: content;
background-position: center center;
background-size: cover;
cursor: pointer;
max-width: 720px;
}
/* gradient */
lite-youtube::before {
content: '';
display: block;
position: absolute;
top: 0;
background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAADGCAYAAAAT+OqFAAAAdklEQVQoz42QQQ7AIAgEF/T/D+kbq/RWAlnQyyazA4aoAB4FsBSA/bFjuF1EOL7VbrIrBuusmrt4ZZORfb6ehbWdnRHEIiITaEUKa5EJqUakRSaEYBJSCY2dEstQY7AuxahwXFrvZmWl2rh4JZ07z9dLtesfNj5q0FU3A5ObbwAAAABJRU5ErkJggg==);
background-position: top;
background-repeat: repeat-x;
height: 60px;
padding-bottom: 50px;
width: 100%;
transition: all 0.2s cubic-bezier(0, 0, 0.2, 1);
}
/* responsive iframe with a 16:9 aspect ratio
thanks https://css-tricks.com/responsive-iframes/
*/
lite-youtube::after {
content: "";
display: block;
padding-bottom: calc(100% / (16 / 9));
}
lite-youtube > iframe {
width: 100%;
height: 100%;
position: absolute;
top: 0;
left: 0;
border: 0;
}
/* play button */
lite-youtube > .lty-playbtn {
display: block;
width: 68px;
height: 48px;
position: absolute;
cursor: pointer;
transform: translate3d(-50%, -50%, 0);
top: 50%;
left: 50%;
z-index: 1;
background-color: transparent;
/* YT's actual play button svg */
background-image: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 68 48"><path d="M66.52 7.74c-.78-2.93-2.49-5.41-5.42-6.19C55.79.13 34 0 34 0S12.21.13 6.9 1.55c-2.93.78-4.63 3.26-5.42 6.19C.06 13.05 0 24 0 24s.06 10.95 1.48 16.26c.78 2.93 2.49 5.41 5.42 6.19C12.21 47.87 34 48 34 48s21.79-.13 27.1-1.55c2.93-.78 4.64-3.26 5.42-6.19C67.94 34.95 68 24 68 24s-.06-10.95-1.48-16.26z" fill="red"/><path d="M45 24 27 14v20" fill="white"/></svg>');
filter: grayscale(100%);
transition: filter .1s cubic-bezier(0, 0, 0.2, 1);
border: none;
}
lite-youtube:hover > .lty-playbtn,
lite-youtube .lty-playbtn:focus {
filter: none;
}
/* Post-click styles */
lite-youtube.lyt-activated {
cursor: unset;
}
lite-youtube.lyt-activated::before,
lite-youtube.lyt-activated > .lty-playbtn {
opacity: 0;
pointer-events: none;
}
.lyt-visually-hidden {
clip: rect(0 0 0 0);
clip-path: inset(50%);
height: 1px;
overflow: hidden;
position: absolute;
white-space: nowrap;
width: 1px;
}
Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 939 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 916 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 973 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 941 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 503 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 402 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 420 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 415 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 906 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 581 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 498 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 509 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 813 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 492 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 549 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 919 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 891 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 973 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 410 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 486 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 478 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 435 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 546 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 482 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 601 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 390 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 514 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 446 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 391 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 361 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 480 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 536 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 275 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 479 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 278 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 613 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 373 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 660 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 454 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 428 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 578 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 589 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 452 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 428 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 603 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 642 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 688 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 727 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 782 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 656 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 898 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 980 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 380 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 666 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 246 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 314 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 612 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 624 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 559 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 371 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 260 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 616 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 551 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 556 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 842 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 696 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 766 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 439 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 750 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 760 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 678 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 746 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 638 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 640 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 654 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 835 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 782 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 742 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 762 KiB

Some files were not shown because too many files have changed in this diff Show More