Compare commits
8 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
304da43eb8 | ||
| 48b0b7a283 | |||
| 40c3e1d471 | |||
| c1ecf1289d | |||
| 0741834b31 | |||
| 7a2debb3d7 | |||
| 6ef9d029eb | |||
|
|
96edc0c694 |
@@ -1,60 +0,0 @@
|
|||||||
============
|
|
||||||
Cetmix Tower
|
|
||||||
============
|
|
||||||
|
|
||||||
..
|
|
||||||
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
|
||||||
!! This file is generated by oca-gen-addon-readme !!
|
|
||||||
!! changes will be overwritten. !!
|
|
||||||
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
|
||||||
!! source digest: sha256:ec1914ccdcdfd8bfa539b1c131e8b2c41946b9bf978d2a32d13ee89ab655cd65
|
|
||||||
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
|
||||||
|
|
||||||
.. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png
|
|
||||||
:target: https://odoo-community.org/page/development-status
|
|
||||||
:alt: Beta
|
|
||||||
.. |badge2| image:: https://img.shields.io/badge/license-AGPL--3-blue.png
|
|
||||||
:target: http://www.gnu.org/licenses/agpl-3.0-standalone.html
|
|
||||||
:alt: License: AGPL-3
|
|
||||||
.. |badge3| image:: https://img.shields.io/badge/github-cetmix%2Fcetmix--tower-lightgray.png?logo=github
|
|
||||||
:target: https://github.com/cetmix/cetmix-tower/tree/16.0/cetmix_tower
|
|
||||||
:alt: cetmix/cetmix-tower
|
|
||||||
|
|
||||||
|badge1| |badge2| |badge3|
|
|
||||||
|
|
||||||
This is a technical module that allows to get `Cetmix
|
|
||||||
Tower <https://cetmix.com/tower>`__ modules from the `Odoo App
|
|
||||||
Store <https://apps.odoo.com>`__.
|
|
||||||
|
|
||||||
It's designed to install all the `Cetmix
|
|
||||||
Tower <https://cetmix.com/tower>`__ modules at once.
|
|
||||||
|
|
||||||
**Table of contents**
|
|
||||||
|
|
||||||
.. contents::
|
|
||||||
:local:
|
|
||||||
|
|
||||||
Bug Tracker
|
|
||||||
===========
|
|
||||||
|
|
||||||
Bugs are tracked on `GitHub Issues <https://github.com/cetmix/cetmix-tower/issues>`_.
|
|
||||||
In case of trouble, please check there if your issue has already been reported.
|
|
||||||
If you spotted it first, help us to smash it by providing a detailed and welcomed
|
|
||||||
`feedback <https://github.com/cetmix/cetmix-tower/issues/new?body=module:%20cetmix_tower%0Aversion:%2016.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**>`_.
|
|
||||||
|
|
||||||
Do not contact contributors directly about support or help with technical issues.
|
|
||||||
|
|
||||||
Credits
|
|
||||||
=======
|
|
||||||
|
|
||||||
Authors
|
|
||||||
-------
|
|
||||||
|
|
||||||
* Cetmix
|
|
||||||
|
|
||||||
Maintainers
|
|
||||||
-----------
|
|
||||||
|
|
||||||
This module is part of the `cetmix/cetmix-tower <https://github.com/cetmix/cetmix-tower/tree/16.0/cetmix_tower>`_ project on GitHub.
|
|
||||||
|
|
||||||
You are welcome to contribute.
|
|
||||||
@@ -1,22 +0,0 @@
|
|||||||
# Copyright Cetmix OU
|
|
||||||
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
|
|
||||||
{
|
|
||||||
"name": "Cetmix Tower",
|
|
||||||
"summary": "Odoo SAAS Server Application Management",
|
|
||||||
"version": "16.0.2.1.0",
|
|
||||||
"development_status": "Beta",
|
|
||||||
"category": "Productivity",
|
|
||||||
"website": "https://tower.cetmix.com",
|
|
||||||
"live_test_url": "https://tower.cetmix.com/download",
|
|
||||||
"images": ["static/description/banner.png"],
|
|
||||||
"author": "Cetmix",
|
|
||||||
"license": "AGPL-3",
|
|
||||||
"application": True,
|
|
||||||
"installable": True,
|
|
||||||
"depends": [
|
|
||||||
"cetmix_tower_server",
|
|
||||||
"cetmix_tower_server_queue",
|
|
||||||
"cetmix_tower_git",
|
|
||||||
"cetmix_tower_webhook",
|
|
||||||
],
|
|
||||||
}
|
|
||||||
@@ -1,13 +0,0 @@
|
|||||||
# Translation of Odoo Server.
|
|
||||||
# This file contains the translation of the following modules:
|
|
||||||
#
|
|
||||||
msgid ""
|
|
||||||
msgstr ""
|
|
||||||
"Project-Id-Version: Odoo Server 16.0\n"
|
|
||||||
"Report-Msgid-Bugs-To: \n"
|
|
||||||
"Last-Translator: \n"
|
|
||||||
"Language-Team: \n"
|
|
||||||
"MIME-Version: 1.0\n"
|
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
|
||||||
"Content-Transfer-Encoding: \n"
|
|
||||||
"Plural-Forms: \n"
|
|
||||||
@@ -1,3 +0,0 @@
|
|||||||
[build-system]
|
|
||||||
requires = ["whool"]
|
|
||||||
build-backend = "whool.buildapi"
|
|
||||||
@@ -1,3 +0,0 @@
|
|||||||
This is a technical module that allows to get [Cetmix Tower](https://cetmix.com/tower) modules from the [Odoo App Store](https://apps.odoo.com).
|
|
||||||
|
|
||||||
It's designed to install all the [Cetmix Tower](https://cetmix.com/tower) modules at once.
|
|
||||||
|
Before Width: | Height: | Size: 96 KiB |
@@ -1,435 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<!-- Generator: Adobe Illustrator 24.1.2, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
|
||||||
<svg version="1.1" id="Слой_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
|
||||||
viewBox="0 0 756 322.5" style="enable-background:new 0 0 756 322.5;" xml:space="preserve">
|
|
||||||
<style type="text/css">
|
|
||||||
.st0{fill:#FFFFFF;}
|
|
||||||
.st1{fill:#FFFFFF;stroke:#FFFFFF;stroke-width:0.75;stroke-miterlimit:10;}
|
|
||||||
</style>
|
|
||||||
<g>
|
|
||||||
<g>
|
|
||||||
<g>
|
|
||||||
<path class="st0" d="M447.2,121.7c-2,1.6-4.7,2.9-8.3,3.9c-3.6,1-6.8,1.6-9.6,1.6c-10.9,0-19.5-2.8-25.8-8.3s-9.4-13.3-9.4-23.5
|
|
||||||
V53.7h-11.8V35.6H394V14.7l23.5-4.2v25.1h16l0.2,18l-16.2,0.1v37.4c0,4.6,1.1,8.4,3.3,11.3c2.2,3,5.4,4.5,9.7,4.5
|
|
||||||
c1.6,0,3.2-0.2,4.8-0.5c1.6-0.4,3.2-1,4.9-1.8L447.2,121.7z"/>
|
|
||||||
</g>
|
|
||||||
<g>
|
|
||||||
<path class="st0" d="M536.3,49.4c3.8-4.3,8.8-7.6,15-10.1c6.3-2.5,11.8-3.7,16.8-3.7c12,0,20.6,3.5,25.6,10.5
|
|
||||||
c5.1,7.1,7.6,15.6,7.6,25.8v55.2h-23.9v-54c0-5.6-1.3-9.9-4-12.8s-6.6-4.5-11.6-4.5c-3.4,0-7,0.9-10.7,2.7s-7.2,3.9-10.3,6.2
|
|
||||||
c0.1,1.2,0.2,2.4,0.4,3.7c0.1,1.2,0.2,2.4,0.2,3.7v55.2h-23.9V73.1c0-5.6-1.3-9.9-4-12.8s-6.5-4.5-11.4-4.5
|
|
||||||
c-3.1,0-6.1,0.6-9.2,1.9c-3.1,1.3-6.1,2.9-8.9,4.8v64.7h-23.7V39l23.3-3v7c3-2,5-3,9.4-4.5c5.7-1.9,10.7-3,15.2-3
|
|
||||||
c7,0,12.7,1.2,17.3,3.7C530.1,41.8,533.7,45.2,536.3,49.4z"/>
|
|
||||||
</g>
|
|
||||||
<g>
|
|
||||||
<path class="st0" d="M634.8,0c3.8,0,7,1.3,9.6,3.8c2.6,2.6,3.9,5.7,3.9,9.5s-1.3,6.9-3.9,9.5c-2.6,2.6-5.8,3.8-9.6,3.8
|
|
||||||
c-3.7,0-6.8-1.3-9.3-3.8c-2.6-2.6-3.8-5.7-3.8-9.5s1.3-6.9,3.8-9.5C628.1,1.3,631.2,0,634.8,0z M646.9,36l-0.2,91.1H623L622.9,36
|
|
||||||
H646.9z"/>
|
|
||||||
</g>
|
|
||||||
<g>
|
|
||||||
<path class="st0" d="M659.4,127.2l34.1-45.3l-32.8-45.8h25.8l21,29.9l21.9-29.9H756l-34.5,45.8l31.6,45.3H727l-20.5-28.4
|
|
||||||
l-20.9,28.4H659.4z"/>
|
|
||||||
</g>
|
|
||||||
<g>
|
|
||||||
<path class="st0" d="M198.4,81.5c0-26.6,19.5-45.5,46.7-45.5c18,0,29,7.8,34.8,15.6l-15.1,14c-4.2-6.1-10.5-9.4-18.6-9.4
|
|
||||||
c-14,0-23.9,10.1-23.9,25.2s9.9,25.4,23.9,25.4c8.1,0,14.4-3.6,18.6-9.4l15.1,13.8c-5.9,8.1-16.7,15.8-34.8,15.8
|
|
||||||
C217.9,127.2,198.4,108.3,198.4,81.5z"/>
|
|
||||||
</g>
|
|
||||||
<g>
|
|
||||||
<path class="st0" d="M289.4,81.5c0-25.2,18.8-45.5,45.6-45.5c26.3,0,44.1,19.4,44.1,47.8v5.1h-65.5c1.5,10.9,10.4,20.1,25.3,20.1
|
|
||||||
c7.5,0,17.8-3.2,23.5-8.7l10.3,14.7c-8.8,7.9-22.6,12-36.2,12C309.6,127.2,289.4,109.4,289.4,81.5z M334.8,54.2
|
|
||||||
c-14.4,0-20.6,10.6-21.7,19.2h43.4C356,65.2,350.2,54.2,334.8,54.2z"/>
|
|
||||||
</g>
|
|
||||||
</g>
|
|
||||||
<g>
|
|
||||||
<g>
|
|
||||||
<path class="st0" d="M92.3,91.5c0.6,0.3,0.7,1,0.2,1.5c-3.1,2.8-6.6,5.2-10.3,7.1c-6.6,3.2-13.7,4.8-20.9,4.7
|
|
||||||
c-7.2-0.3-14.2-2.2-20.3-5.7s-11.2-8.5-14.9-14.3s-5.8-12.5-6.4-19.3c-0.4-6.8,0.8-13.6,3.5-19.7c1.4-3,3.1-5.9,5.2-8.5
|
|
||||||
s4.5-4.9,7.1-7c5.2-4,11.3-6.7,17.7-7.8C46.9,24,41,27.1,36.4,31.4c-2.4,2.1-4.5,4.5-6.2,7.1c-1.8,2.6-3.1,5.5-4.3,8.4
|
|
||||||
c-2.1,5.8-2.7,12-1.9,18.1c0.9,6.1,3.3,11.7,6.8,16.6c3.6,4.8,8.3,8.7,13.6,11.2s11.1,3.6,16.9,3.4c5.8-0.3,11.3-2,16.2-4.9
|
|
||||||
c1.9-1.2,3.7-2.5,5.4-4c0.3-0.2,0.7-0.3,1-0.1L92.3,91.5z"/>
|
|
||||||
</g>
|
|
||||||
<g>
|
|
||||||
<path class="st0" d="M110.3,107.7c0.4,0.4,0.3,1.1-0.1,1.5c-0.2,0.2-0.4,0.4-0.6,0.6c-2.6,2.3-5.4,4.5-8.3,6.4s-6,3.6-9.2,5
|
|
||||||
s-6.5,2.6-9.8,3.5c-13.3,3.7-27.7,2.9-40.4-1.9s-23.8-13.5-31.3-24.7C3.2,86.8-0.4,73.5,0,60.3c0.5-13.1,5.2-26,13.1-36.1
|
|
||||||
C21.2,14,32.3,6.5,44.5,3C56.8-0.6,70-0.2,81.8,4c5.9,2.1,11.4,5.1,16.3,8.9c5,3.7,9.3,8.3,12.7,13.2c-3.8-4.8-8.3-9.1-13.3-12.4
|
|
||||||
S87,7.7,81.1,6c-11.5-3.4-24-2.9-35.3,1S24.9,18.4,18.3,28c-6.7,9.6-10.2,21.1-9.9,32.4c0.2,11.3,4.1,22.5,10.8,31.5
|
|
||||||
c6.7,8.9,16.2,15.5,26.7,18.8s21.9,3.1,32-0.3c8.2-2.7,15.4-7.5,21.2-13.5c0.4-0.4,1.1-0.5,1.5-0.1c0.6,0.6,1.3,1.3,1.8,2
|
|
||||||
C102.6,98.6,108.3,105.4,110.3,107.7z"/>
|
|
||||||
</g>
|
|
||||||
<g>
|
|
||||||
<path class="st0" d="M149.8,41l-35.6,43.5l2,4.1l4.1,8.6c0.7,1.5,0.4,3.3-0.8,4.5l-2.9,2.7c-0.2,0.2-0.4,0.2-0.7,0.2
|
|
||||||
c-0.1,0-0.2-0.1-0.3-0.2c0,0-0.1,0-0.1-0.1l-7.9-9.4c-0.8-0.9-1.6-1.8-2.5-2.6c-0.7-0.6-1.3-1.2-2.1-1.8c-1.4-1.1-3-2.2-4.6-3
|
|
||||||
c-0.2-0.2-0.5-0.3-0.8-0.4l-9.1-4.8l-1.7-0.9c-0.4-0.2-0.5-0.6-0.3-1l2-3.4c0.9-1.5,2.6-2.2,4.2-1.8l13.7,3.1l13.9-18L91.8,47.8
|
|
||||||
c-0.4-0.2-0.5-0.7-0.3-1l4.5-5.6c1.8-2.3,4.8-3.4,7.7-3l30.2,5.1l7.5-9.6c1.7-2.2,3.9-3.9,6.4-5l3.5-1.5c0.5-0.2,1-0.2,1.4-0.1
|
|
||||||
c0.3,0.1,0.5,0.2,0.7,0.3l0,0c0.5,0.4,0.9,1.2,0.7,2l-0.6,3.7C152.9,36,151.7,38.7,149.8,41z"/>
|
|
||||||
</g>
|
|
||||||
<g>
|
|
||||||
<g>
|
|
||||||
<path class="st0" d="M155.2,85.4l-4.5,5.6c-0.2,0.2-0.5,0.3-0.7,0.2c-0.1,0-0.3-0.1-0.4-0.2l-17.2-23.3l13.3-16.1l10.5,25.7
|
|
||||||
C157.5,79.9,157,83,155.2,85.4z"/>
|
|
||||||
</g>
|
|
||||||
</g>
|
|
||||||
</g>
|
|
||||||
</g>
|
|
||||||
<g>
|
|
||||||
<path class="st0" d="M397.4,241.7c-15.1,0-27.3-12.3-27.3-27.3s12.3-27.3,27.3-27.3c15.1,0,27.3,12.3,27.3,27.3l0,0
|
|
||||||
C424.7,229.5,412.4,241.7,397.4,241.7z M397.4,230.4c8.9,0,16-7.2,16-16c0-8.8-7.2-16-16-16c-8.9,0-16,7.2-16,16
|
|
||||||
C381.4,223.2,388.5,230.4,397.4,230.4z M340.2,241.7c-15.1,0-27.3-12.3-27.3-27.3s12.3-27.3,27.3-27.3c15.1,0,27.3,12.3,27.3,27.3
|
|
||||||
l0,0C367.5,229.5,355.3,241.7,340.2,241.7z M340.2,230.4c8.9,0,16-7.2,16-16c0-8.8-7.2-16-16-16c-8.9,0-16,7.2-16,16
|
|
||||||
C324.2,223.2,331.3,230.4,340.2,230.4z M310.3,214.1c0,15.3-12.3,27.7-27.3,27.7s-27.3-12.4-27.3-27.7s11.1-27,27.3-27
|
|
||||||
c6,0,11.5,1.2,16,4.6v-15.8c0-3,2.7-5.5,5.7-5.5s5.7,2.5,5.7,5.5V214.1z M282.9,230.4c8.9,0,16-7.2,16-16c0-8.8-7.2-16-16-16
|
|
||||||
c-8.9,0-16,7.2-16,16C266.9,223.2,274.1,230.4,282.9,230.4z"/>
|
|
||||||
</g>
|
|
||||||
<g>
|
|
||||||
<path class="st0" d="M225.7,241.7c-15.1,0-27.3-12.3-27.3-27.3s12.3-27.3,27.3-27.3s27.3,12.3,27.3,27.3l0,0
|
|
||||||
C253.1,229.5,240.9,241.7,225.7,241.7z M225.7,230.4c8.9,0,16-7.2,16-16c0-8.8-7.2-16-16-16c-8.9,0-16,7.2-16,16
|
|
||||||
C209.7,223.2,216.9,230.4,225.7,230.4z"/>
|
|
||||||
</g>
|
|
||||||
<g>
|
|
||||||
<g>
|
|
||||||
<path class="st0" d="M547.4,229.9c0.1,0,0.2,0,0.4,0c0.1,0,0.2,0.1,0.1,0.1v0.1c0,3.8,0,7.6,0,11.4c0,0.1,0,0.1,0,0.1
|
|
||||||
c-0.9,0-1.8,0-2.7,0c0-0.1,0-0.2,0-0.2c0-3.7,0-7.4,0-11.1c0-0.3-0.1-0.2,0.2-0.2c0.1,0,0.2,0,0.4,0
|
|
||||||
C546.4,229.9,546.9,229.9,547.4,229.9z"/>
|
|
||||||
</g>
|
|
||||||
<g>
|
|
||||||
<path class="st0" d="M520.6,200.7c-0.1,0.2-0.1,0.5-0.1,0.8c0,0.1-0.1,0.2-0.2,0.2c-0.4-0.1-0.9-0.1-1.3-0.2
|
|
||||||
c-1.5-0.2-3.2-0.4-4.7-0.6c-1.4-0.2-2.7-0.4-4.1-0.5c-0.4-0.1-0.8-0.1-1.2-0.2c-0.1-0.1-0.1-0.1-0.1-0.2c0.2-1.2,0.3-2.4,0.4-3.6
|
|
||||||
c0-0.1,0.1-0.2,0.2-0.2c1.1,0.1,2.1,0.2,3.2,0.4c1.2,0.2,2.6,0.4,3.7,0.5c1.4,0.2,2.7,0.4,4.1,0.5c0.4,0.1,0.4,0.1,0.3,0.4
|
|
||||||
c-0.1,0.3-0.1,0.6-0.1,1c-0.1,0-0.1,0.1-0.1,0.1c-0.1,0.4-0.1,0.9-0.2,1.4C520.6,200.7,520.6,200.7,520.6,200.7z"/>
|
|
||||||
</g>
|
|
||||||
<g>
|
|
||||||
<path class="st0" d="M572.9,206.4c0.1-0.2,0.1-0.6,0.1-0.8c0-0.1,0.1-0.1,0.2-0.1c1,0.1,2,0.2,3,0.4c1.1,0.1,2.1,0.2,3.2,0.4
|
|
||||||
c1.2,0.1,2.3,0.3,3.5,0.5c0.5,0.1,1.1,0.1,1.5,0.2c0.1,0,0.2,0.1,0.2,0.2c0.1,0.6-0.1,1.2-0.2,1.8c-0.1,0.6-0.2,1.2-0.2,1.7
|
|
||||||
c0,0.1-0.1,0.2-0.2,0.1c-1.4-0.2-2.8-0.4-4.2-0.6c-1.4-0.2-2.7-0.4-4-0.5c-1.1-0.1-2.1-0.2-3.1-0.4c-0.1,0-0.1-0.1-0.1-0.2
|
|
||||||
c0.1-0.4,0.1-0.7,0.1-1.1c0.1,0,0.1-0.1,0.1-0.1c0.1-0.4,0.1-0.9,0.2-1.3C573,206.6,573,206.5,572.9,206.4z"/>
|
|
||||||
</g>
|
|
||||||
<g>
|
|
||||||
<path class="st0" d="M571.1,213.7c0.1-0.2,0.2-0.4,0.3-0.7c0.1-0.1,0.1-0.1,0.2-0.1c2.2,1,4.4,2,6.6,3c1.2,0.6,2.4,1.1,3.7,1.7
|
|
||||||
c0.2,0.1,0.2,0.1,0.1,0.3c-0.5,1-0.9,2-1.4,3c-0.1,0.1-0.1,0.1-0.2,0.1c-2.3-1.1-4.6-2.1-7-3.2c-1.1-0.5-2.2-1-3.3-1.5
|
|
||||||
c-0.2-0.1-0.2-0.1-0.1-0.3c0.2-0.3,0.2-0.6,0.4-0.9c0.2-0.3,0.3-0.6,0.4-0.9C571,214.1,571.1,213.9,571.1,213.7z"/>
|
|
||||||
</g>
|
|
||||||
<g>
|
|
||||||
<path class="st0" d="M522.6,193.4c-0.1,0.2-0.2,0.5-0.4,0.7c-0.1,0.1-0.1,0.1-0.2,0.1c-1.2-0.6-2.6-1.1-3.8-1.7
|
|
||||||
c-1.5-0.7-3.2-1.4-4.8-2.2c-0.6-0.2-1.1-0.5-1.7-0.8c-0.1-0.1-0.1-0.1-0.1-0.2c0.5-1,1-2.1,1.4-3c0.1-0.1,0.1-0.1,0.2-0.1
|
|
||||||
c1,0.5,2.1,0.9,3,1.4c2.4,1.1,4.8,2.2,7.2,3.3c0.1,0.1,0.2,0.1,0.1,0.3c-0.1,0.2-0.2,0.5-0.4,0.8c-0.1,0.2-0.2,0.4-0.2,0.6
|
|
||||||
C522.8,192.7,522.6,193,522.6,193.4z"/>
|
|
||||||
</g>
|
|
||||||
<g>
|
|
||||||
<path class="st0" d="M567.2,220.1c0.1-0.2,0.2-0.3,0.4-0.5c0.1-0.1,0.1-0.1,0.2,0c2.1,1.9,4.3,3.7,6.5,5.6
|
|
||||||
c0.7,0.6,1.4,1.2,2.1,1.8c0.1,0.1,0.1,0.2,0.1,0.3c-0.7,0.8-1.4,1.5-2,2.4c-0.1,0.1-0.1,0.1-0.2,0c-1.9-1.7-3.9-3.3-5.8-5
|
|
||||||
c-0.9-0.8-1.8-1.6-2.8-2.4c-0.1-0.1-0.1-0.1,0-0.2c0.2-0.2,0.4-0.4,0.6-0.7"/>
|
|
||||||
</g>
|
|
||||||
<g>
|
|
||||||
<path class="st0" d="M526.4,186.9c-0.2,0.2-0.4,0.4-0.5,0.6c-0.1,0.1-0.1,0.1-0.2,0c-1.2-1-2.4-2-3.5-3c-1.4-1.2-2.7-2.4-4.1-3.6
|
|
||||||
c-0.3-0.2-0.6-0.5-1-0.8c-0.1-0.1-0.1-0.1-0.1-0.2c0.7-0.8,1.4-1.5,2-2.3c0.1-0.1,0.2-0.1,0.2-0.1c1.4,1.2,2.7,2.4,4.1,3.6
|
|
||||||
c1.5,1.2,3,2.6,4.5,3.9c0.1,0.1,0.1,0.1,0.1,0.2c-0.2,0.2-0.3,0.4-0.4,0.5c-0.1,0-0.1,0-0.1,0.1
|
|
||||||
C527.1,186.1,526.8,186.5,526.4,186.9C526.4,186.8,526.4,186.9,526.4,186.9z"/>
|
|
||||||
</g>
|
|
||||||
<g>
|
|
||||||
<path class="st0" d="M531.8,181.9c-0.1,0.1-0.2,0.2-0.4,0.2c-0.1,0.1-0.2,0.1-0.3-0.1c-0.7-1.1-1.4-2.1-2-3.2
|
|
||||||
c-1.4-2.1-2.7-4.2-4-6.3c-0.1-0.1-0.1-0.2,0.1-0.2c0.8-0.5,1.6-1,2.4-1.5c0.1-0.1,0.2-0.1,0.2,0.1c1,1.5,2,3.1,3,4.7
|
|
||||||
c1,1.6,2.1,3.2,3,4.8c0.2,0.2,0.2,0.2-0.1,0.4c-0.1,0.1-0.2,0.1-0.3,0.2c-0.1,0-0.1,0.1-0.2,0.1c-0.4,0.2-0.8,0.5-1.1,0.7
|
|
||||||
C532,181.8,531.9,181.8,531.8,181.9z"/>
|
|
||||||
</g>
|
|
||||||
<g>
|
|
||||||
<path class="st0" d="M561.7,225.3c0.2-0.1,0.4-0.2,0.5-0.4c0.1-0.1,0.2-0.1,0.2,0.1c0.8,1.2,1.5,2.4,2.3,3.6
|
|
||||||
c1.1,1.7,2.2,3.4,3.3,5.1c0.2,0.2,0.4,0.5,0.5,0.8c0.1,0.1,0.1,0.2-0.1,0.2c-0.8,0.5-1.6,1.1-2.4,1.5c-0.1,0.1-0.2,0.1-0.2-0.1
|
|
||||||
c-1.7-2.7-3.4-5.3-5.1-8c-0.4-0.5-0.7-1.1-1-1.5c-0.1-0.1-0.1-0.1,0.1-0.2c0.2-0.1,0.4-0.2,0.6-0.4"/>
|
|
||||||
</g>
|
|
||||||
<g>
|
|
||||||
<path class="st0" d="M554.9,228.6c0.2-0.1,0.4-0.1,0.5-0.1c0.1-0.1,0.2-0.1,0.2,0.1c0.4,1.4,0.8,2.9,1.2,4.3
|
|
||||||
c0.6,2.1,1.2,4.3,1.9,6.5c0.1,0.2,0.1,0.2-0.2,0.3c-0.8,0.2-1.6,0.5-2.4,0.7c-0.2,0.1-0.2,0-0.3-0.2c-0.4-1.2-0.7-2.4-1.1-3.6
|
|
||||||
c-0.7-2.4-1.4-4.8-2.1-7.1c-0.1-0.2-0.1-0.2,0.2-0.2c0.2-0.1,0.3-0.1,0.4-0.1C553.9,228.9,554.4,228.8,554.9,228.6z"/>
|
|
||||||
</g>
|
|
||||||
<g>
|
|
||||||
<path class="st0" d="M538.7,178.5c-0.2,0.1-0.4,0.1-0.5,0.1c-0.1,0.1-0.2,0-0.2-0.1c-0.2-0.8-0.5-1.6-0.7-2.4
|
|
||||||
c-0.8-2.6-1.5-5.2-2.3-7.9c-0.1-0.2-0.1-0.3-0.1-0.5c-0.1-0.1-0.1-0.2,0.1-0.2c0.7-0.2,1.5-0.4,2.2-0.7c0.5-0.1,0.4-0.1,0.6,0.3
|
|
||||||
c0.6,2,1.2,4,1.7,6c0.4,1.5,0.9,3,1.4,4.5c0.1,0.1,0,0.2-0.1,0.2c-0.2,0.1-0.3,0.1-0.4,0.1c-0.1-0.1-0.1,0-0.1,0
|
|
||||||
c-0.4,0.1-0.7,0.2-1.1,0.4C538.9,178.5,538.8,178.5,538.7,178.5z"/>
|
|
||||||
</g>
|
|
||||||
<g>
|
|
||||||
<path class="st0" d="M546.1,177.3c-0.5,0-0.5,0-0.5-0.5c0-3.6,0-7.3,0-11c0-0.2,0.1-0.2,0.2-0.2c0.8,0,1.5,0,2.4,0
|
|
||||||
c0.1,0,0.2,0.1,0.2,0.2c0,3.7,0,7.6,0,11.3c0,0.1-0.1,0.2-0.2,0.2c-0.1,0-0.3,0-0.4,0C547.2,177.2,546.7,177.2,546.1,177.3z"/>
|
|
||||||
</g>
|
|
||||||
<g>
|
|
||||||
<path class="st0" d="M540.1,229.1c0.4,0.1,0.4,0.1,0.2,0.4c-1,3.6-2.1,7.1-3,10.7c-0.1,0.2-0.1,0.2-0.2,0.1
|
|
||||||
c-0.7-0.2-1.4-0.4-2.1-0.6c-0.2-0.1-0.2-0.1-0.1-0.2c0.5-1.8,1.1-3.6,1.5-5.4c0.5-1.8,1.1-3.6,1.5-5.5c0.1-0.2,0.1-0.2,0.2-0.1
|
|
||||||
c0.1,0.1,0.2,0.1,0.4,0.1C539,228.8,539.6,228.9,540.1,229.1z"/>
|
|
||||||
</g>
|
|
||||||
<g>
|
|
||||||
<path class="st0" d="M553.6,178.2c-0.4-0.1-0.4-0.1-0.3-0.5c0.8-2.9,1.7-5.9,2.5-8.9c0.2-0.6,0.4-1.2,0.5-1.8
|
|
||||||
c0.1-0.1,0.1-0.2,0.2-0.1c0.7,0.2,1.4,0.4,2.2,0.6c0.2,0.1,0.1,0.1,0.1,0.2c-0.4,1.6-0.9,3.2-1.4,4.9c-0.6,2-1.1,4-1.7,6
|
|
||||||
c-0.1,0.2-0.1,0.2-0.3,0.2c-0.1-0.1-0.1-0.1-0.2-0.1c-0.3-0.1-0.7-0.2-1-0.3C554,178.2,553.8,178.2,553.6,178.2z"/>
|
|
||||||
</g>
|
|
||||||
<g>
|
|
||||||
<path class="st0" d="M560.3,181.2c-0.3-0.2-0.2-0.2-0.1-0.5c1.7-2.6,3.3-5.2,4.9-7.8c0.4-0.5,0.7-1.1,1-1.6
|
|
||||||
c0.1-0.1,0.1-0.1,0.2-0.1c0.6,0.4,1.1,0.7,1.7,1.1c0.1,0.1,0.1,0.1,0.1,0.2c-1,1.5-2,3-2.9,4.6c-1.1,1.6-2.1,3.2-3.1,4.9
|
|
||||||
c-0.1,0.2-0.2,0.2-0.4,0.1"/>
|
|
||||||
</g>
|
|
||||||
<g>
|
|
||||||
<path class="st0" d="M533.1,226.1c0.2,0.2,0.2,0.2,0.1,0.5c-1.2,1.9-2.4,3.7-3.6,5.6c-0.8,1.2-1.6,2.5-2.4,3.7
|
|
||||||
c-0.1,0.1-0.2,0.2-0.3,0.1c-0.5-0.4-1.1-0.7-1.6-1.1c-0.1-0.1-0.1-0.1-0.1-0.2c1.4-2.1,2.7-4.3,4.1-6.4c0.7-1,1.2-2,1.9-3
|
|
||||||
c0.1-0.2,0.1-0.2,0.4-0.1c0,0,0.1,0,0.1,0.1C532.3,225.5,532.7,225.8,533.1,226.1z"/>
|
|
||||||
</g>
|
|
||||||
<g>
|
|
||||||
<path class="st0" d="M527.4,221.4c0.1,0.1,0.1,0.2-0.1,0.3c-2.7,2.4-5.4,4.7-8.2,7c-0.1,0.1-0.2,0.2-0.4,0.4
|
|
||||||
c-0.1,0.1-0.1,0.1-0.2,0c-0.4-0.5-0.8-0.9-1.2-1.4c-0.1-0.1-0.1-0.1,0.1-0.2c0.7-0.6,1.4-1.2,2.1-1.8c1.4-1.2,2.7-2.4,4.1-3.6
|
|
||||||
c0.8-0.7,1.6-1.4,2.4-2.1c0.2-0.1,0.2-0.1,0.3,0.1C526.7,220.6,527.1,221,527.4,221.4z"/>
|
|
||||||
</g>
|
|
||||||
<g>
|
|
||||||
<path class="st0" d="M566.2,185.8c-0.1-0.1-0.1-0.2,0.1-0.4c2.1-1.8,4.2-3.7,6.4-5.5c0.7-0.6,1.4-1.2,2.1-1.8
|
|
||||||
c0.1-0.1,0.2-0.1,0.2,0c0.4,0.4,0.7,0.9,1.1,1.3c0.1,0.1,0.1,0.2-0.1,0.2c-2.1,1.8-4.2,3.6-6.2,5.4c-0.7,0.7-1.5,1.2-2.2,1.9
|
|
||||||
c-0.1,0.1-0.2,0.1-0.4,0C566.9,186.6,566.6,186.2,566.2,185.8z"/>
|
|
||||||
</g>
|
|
||||||
<g>
|
|
||||||
<path class="st0" d="M570.3,191.9c-0.1-0.1,0.1-0.1,0.1-0.2c0.9-0.4,1.8-0.8,2.7-1.2c1.2-0.5,2.3-1.1,3.5-1.6
|
|
||||||
c1.4-0.6,2.7-1.2,4-1.9c0.1-0.1,0.2-0.1,0.3,0.1c0.2,0.4,0.4,0.9,0.6,1.3c0.1,0.1,0.1,0.2-0.1,0.2c-1.8,0.8-3.6,1.7-5.5,2.5
|
|
||||||
c-1.6,0.7-3.2,1.5-4.9,2.2c-0.1,0.1-0.2,0.1-0.2-0.1C570.8,192.9,570.6,192.4,570.3,191.9z"/>
|
|
||||||
</g>
|
|
||||||
<g>
|
|
||||||
<path class="st0" d="M523.2,215.2c0.1,0.1-0.1,0.1-0.1,0.2c-1,0.4-1.9,0.9-2.9,1.4c-1.2,0.6-2.4,1.1-3.6,1.7
|
|
||||||
c-1.3,0.6-2.6,1.2-3.9,1.8c-0.1,0.1-0.1,0.1-0.2-0.1c-0.2-0.5-0.4-1-0.7-1.4c-0.1-0.1-0.1-0.2,0.1-0.2c2.7-1.2,5.4-2.4,8-3.7
|
|
||||||
c0.7-0.4,1.5-0.7,2.3-1.1c0.1-0.1,0.2-0.1,0.2,0C522.7,214.2,523,214.8,523.2,215.2z"/>
|
|
||||||
</g>
|
|
||||||
<g>
|
|
||||||
<path class="st0" d="M531.8,181.9c0.1-0.1,0.1-0.1,0.2-0.2c0.4-0.2,0.7-0.5,1.1-0.7c0.1-0.1,0.1-0.1,0.2-0.1
|
|
||||||
c0.4,0.7,0.8,1.4,1.2,2c1,1.7,2,3.3,3,4.9c0.5,0.9,1.1,1.7,1.5,2.6c0.1,0.1,0.1,0.2-0.1,0.2c-0.4,0.2-0.9,0.5-1.2,0.8
|
|
||||||
c-0.1,0.1-0.1,0.1-0.2-0.1c-1-1.6-1.9-3.2-2.9-4.8c-0.7-1.1-1.4-2.2-2.1-3.4c-0.2-0.4-0.5-0.8-0.7-1.2
|
|
||||||
C532,182,531.9,182,531.8,181.9z"/>
|
|
||||||
</g>
|
|
||||||
<g>
|
|
||||||
<path class="st0" d="M514.2,209c-1.6,0.2-3.2,0.4-4.8,0.7c-0.1,0-0.2,0-0.2-0.1c-0.1-0.4-0.1-0.9-0.2-1.3c0-0.1,0.1-0.2,0.1-0.2
|
|
||||||
c1.3-0.2,2.6-0.4,3.9-0.5c1.5-0.2,3-0.4,4.5-0.6c1-0.1,2-0.2,3-0.4c0.1,0.6,0.2,1.1,0.2,1.6"/>
|
|
||||||
</g>
|
|
||||||
<g>
|
|
||||||
<path class="st0" d="M572.8,199c1.4-0.2,2.9-0.4,4.4-0.6c1.3-0.2,2.7-0.4,4-0.5c1-0.1,2-0.2,3-0.4c0.2-0.1,0.2,0,0.2,0.2
|
|
||||||
c0.1,0.4,0.1,0.8,0.2,1.2c0,0.1,0,0.2-0.1,0.2c-1,0.1-1.9,0.2-2.9,0.4c-1.6,0.2-3.2,0.4-4.9,0.7c-1.2,0.2-2.4,0.3-3.6,0.5
|
|
||||||
c-0.1,0-0.1,0-0.1,0C572.9,200.1,572.8,199.5,572.8,199z"/>
|
|
||||||
</g>
|
|
||||||
<g>
|
|
||||||
<path class="st0" d="M546.1,177.3c0.5-0.1,1.1-0.1,1.6,0c0,3.7,0,7.4,0,11.1c0,0.2,0,0.2-0.2,0.2c-0.4,0-0.7,0-1.1,0
|
|
||||||
c-0.2,0-0.2-0.1-0.2-0.2c0-3.6,0-7.2,0-10.8C546.1,177.5,546.1,177.3,546.1,177.3z"/>
|
|
||||||
</g>
|
|
||||||
<g>
|
|
||||||
<path class="st0" d="M547.4,229.9c-0.5,0-1.1,0-1.6,0c0-3.7,0-7.4,0-11.1c0-0.2,0.1-0.2,0.2-0.2c0.4,0,0.8,0,1.2,0
|
|
||||||
c0.1,0,0.2,0.1,0.2,0.2c0,0.8,0,1.6,0,2.4C547.4,224.1,547.4,227,547.4,229.9z"/>
|
|
||||||
</g>
|
|
||||||
<g>
|
|
||||||
<path class="st0" d="M553.6,178.2c0.2,0,0.4,0.1,0.6,0.1c0.4,0.1,0.7,0.2,1,0.3c-0.1,0.2-0.2,0.5-0.2,0.8c-0.5,1.6-1,3.3-1.4,4.9
|
|
||||||
c-0.5,1.7-1,3.3-1.5,5c-0.1,0.1-0.1,0.2-0.2,0.1c-0.4-0.1-0.8-0.2-1.2-0.4c-0.1-0.1-0.1-0.1-0.1-0.2c0.4-1.2,0.7-2.4,1.1-3.7
|
|
||||||
c0.5-1.7,1-3.4,1.5-5.1C553.1,179.5,553.4,178.8,553.6,178.2z"/>
|
|
||||||
</g>
|
|
||||||
<g>
|
|
||||||
<path class="st0" d="M526.4,186.9c0-0.1,0-0.1,0.1-0.1c0.3-0.4,0.6-0.7,1-1.1c0.1-0.1,0.1-0.1,0.1-0.1c0.4,0.3,0.7,0.6,1,0.9
|
|
||||||
c0.5,0.5,1.1,1,1.5,1.4c1,0.9,2,1.8,3,2.7c0.6,0.6,1.2,1.1,1.8,1.7c0.2,0.2,0.5,0.5,0.8,0.7c0.1,0.1,0.1,0.1,0,0.2
|
|
||||||
c-0.3,0.3-0.6,0.7-0.8,1c-0.1,0.1-0.1,0.1-0.2,0.1c-0.3-0.3-0.6-0.6-1-0.8c-1.2-1.1-2.4-2.1-3.6-3.2c-1-0.9-1.9-1.7-2.9-2.6
|
|
||||||
C527.1,187.5,526.8,187.2,526.4,186.9z"/>
|
|
||||||
</g>
|
|
||||||
<g>
|
|
||||||
<path class="st0" d="M540.1,229.1c-0.5-0.1-1.1-0.2-1.5-0.4c0.4-1.1,0.7-2.3,1-3.4c0.4-1.4,0.8-2.7,1.2-4.1
|
|
||||||
c0.3-1.1,0.6-2.1,0.9-3.2c0.1-0.2,0.1-0.2,0.2-0.2c0.4,0.1,0.8,0.2,1.2,0.4c0.1,0.1,0.2,0.1,0.1,0.2c-0.5,1.7-1,3.4-1.5,5.1
|
|
||||||
c-0.5,1.7-1,3.5-1.5,5.2C540.1,228.8,540.1,228.9,540.1,229.1z"/>
|
|
||||||
</g>
|
|
||||||
<g>
|
|
||||||
<path class="st0" d="M522.6,193.4c0.1-0.3,0.2-0.6,0.4-0.9c0.1-0.2,0.1-0.4,0.2-0.6c0.7,0.3,1.3,0.6,2,0.9c1.5,0.7,3,1.4,4.5,2.1
|
|
||||||
c0.9,0.4,1.7,0.8,2.6,1.2c0.3,0.2,0.7,0.3,1,0.4c0.1,0.1,0.1,0.1,0.1,0.2c-0.2,0.4-0.4,0.8-0.5,1.2c-0.1,0.1-0.1,0.2-0.2,0.1
|
|
||||||
c-0.7-0.4-1.4-0.7-2.1-1c-1.9-0.9-3.9-1.8-5.8-2.7C524,194.1,523.3,193.7,522.6,193.4z"/>
|
|
||||||
</g>
|
|
||||||
<g>
|
|
||||||
<path class="st0" d="M571.1,213.7c-0.1,0.2-0.1,0.4-0.2,0.6c-0.1,0.3-0.2,0.6-0.4,0.9c-0.7-0.3-1.4-0.6-2.1-1
|
|
||||||
c-1.6-0.7-3.2-1.5-4.8-2.2c-0.8-0.4-1.6-0.7-2.4-1.1c-0.2-0.1-0.6-0.2-0.8-0.4c-0.1-0.1-0.1-0.1-0.1-0.2c0.2-0.4,0.4-0.8,0.6-1.2
|
|
||||||
c0.1-0.1,0.1-0.1,0.2-0.1c1.4,0.7,2.7,1.2,4.2,1.9C567.2,211.8,569.2,212.7,571.1,213.7C571.1,213.7,571.1,213.7,571.1,213.7z"/>
|
|
||||||
</g>
|
|
||||||
<g>
|
|
||||||
<path class="st0" d="M538.7,178.5c0.1-0.1,0.2-0.1,0.2-0.1c0.4-0.1,0.7-0.2,1.1-0.4c0.1,0,0.1-0.1,0.1,0c0.5,1.6,1,3.2,1.4,4.8
|
|
||||||
c0.4,1.2,0.7,2.4,1.1,3.6c0.2,0.7,0.4,1.5,0.7,2.2c0.1,0.1,0,0.2-0.1,0.2c-0.4,0.1-0.8,0.2-1.2,0.4c-0.2,0.1-0.2,0-0.2-0.2
|
|
||||||
c-0.3-1-0.6-2-0.9-3c-0.4-1.2-0.7-2.5-1.1-3.7C539.5,181.1,539.1,179.8,538.7,178.5z"/>
|
|
||||||
</g>
|
|
||||||
<g>
|
|
||||||
<path class="st0" d="M520.6,200.7c-0.1,0-0.1-0.1-0.1-0.1c0.1-0.4,0.1-0.9,0.2-1.4c0-0.1,0.1-0.1,0.1-0.1c0.9,0.1,1.7,0.2,2.6,0.4
|
|
||||||
c1,0.1,2.1,0.2,3,0.4c1,0.2,2,0.2,3,0.4c0.7,0.1,1.4,0.2,2.2,0.2c0.2,0,0.2,0.1,0.2,0.2c-0.1,0.4-0.1,0.8-0.2,1.2
|
|
||||||
c0,0.1-0.1,0.1-0.2,0.1c-0.9-0.1-1.8-0.2-2.7-0.4c-1-0.1-1.9-0.2-2.9-0.4c-0.9-0.1-1.8-0.2-2.7-0.4
|
|
||||||
C522.4,200.9,521.6,200.8,520.6,200.7C520.8,200.8,520.8,200.8,520.6,200.7z"/>
|
|
||||||
</g>
|
|
||||||
<g>
|
|
||||||
<path class="st0" d="M533.1,226.1c-0.4-0.3-0.9-0.6-1.4-0.9c0.3-0.4,0.5-0.8,0.8-1.2c0.7-1.1,1.4-2.1,2.1-3.2
|
|
||||||
c1.1-1.7,2.1-3.3,3.2-5c0.1-0.1,0.1-0.1,0.2-0.1c0.4,0.2,0.7,0.5,1.1,0.7c0.1,0.1,0.1,0.1,0.1,0.2c-0.5,0.7-0.9,1.4-1.4,2.2
|
|
||||||
c-1.5,2.4-3,4.7-4.5,7.1C533.2,226,533.2,226.1,533.1,226.1z"/>
|
|
||||||
</g>
|
|
||||||
<g>
|
|
||||||
<path class="st0" d="M560.4,181.1c0.5,0.2,0.9,0.6,1.4,0.9c-0.5,0.7-0.9,1.4-1.4,2.2c-1.5,2.4-3,4.8-4.6,7.2
|
|
||||||
c-0.1,0.1-0.1,0.1-0.2,0.1c-0.4-0.2-0.7-0.4-1.1-0.7c-0.1-0.1-0.2-0.1-0.1-0.2c0.8-1.2,1.5-2.4,2.3-3.6c1.2-1.9,2.4-3.8,3.6-5.7
|
|
||||||
C560.4,181.1,560.4,181.1,560.4,181.1z"/>
|
|
||||||
</g>
|
|
||||||
<g>
|
|
||||||
<path class="st0" d="M527.4,221.4c-0.4-0.4-0.7-0.8-1.1-1.2c1-0.9,2-1.7,3-2.6c1-0.9,2-1.7,3-2.6c0.8-0.7,1.7-1.4,2.5-2.1
|
|
||||||
c0.1-0.1,0.2-0.1,0.2,0.1c0.2,0.3,0.5,0.7,0.8,1c0.1,0.1,0.1,0.2,0,0.2c-0.6,0.5-1.2,1.1-1.8,1.6c-0.6,0.5-1.2,1.1-1.9,1.6
|
|
||||||
c-0.9,0.8-1.8,1.5-2.7,2.4C528.7,220.3,528,220.8,527.4,221.4z"/>
|
|
||||||
</g>
|
|
||||||
<g>
|
|
||||||
<path class="st0" d="M572.8,199c0.1,0.5,0.1,1.1,0.2,1.5c-0.4,0.1-0.7,0.1-1.1,0.2c-0.7,0.1-1.5,0.2-2.2,0.3
|
|
||||||
c-0.8,0.1-1.7,0.2-2.5,0.4c-0.8,0.1-1.7,0.2-2.5,0.4c-0.7,0.1-1.4,0.2-2.2,0.3c-0.2,0.1-0.4,0.1-0.7,0.1c-0.1,0.1-0.2-0.1-0.2-0.1
|
|
||||||
c-0.1-0.3-0.1-0.6-0.1-0.9c0-0.2-0.1-0.4,0-0.5c0.1-0.1,0.3-0.1,0.4-0.1c1.4-0.2,2.8-0.4,4.2-0.6c1.4-0.2,2.7-0.4,4-0.6
|
|
||||||
C571.2,199.2,571.9,199.2,572.8,199z"/>
|
|
||||||
</g>
|
|
||||||
<g>
|
|
||||||
<path class="st0" d="M554.9,228.8c-0.5,0.2-1,0.4-1.5,0.5c-0.2-1-0.6-2.2-0.9-3.2c-0.4-1.4-0.8-2.9-1.2-4.3
|
|
||||||
c-0.3-1.1-0.6-2.3-0.9-3.4c-0.1-0.1-0.1-0.2,0.1-0.2c0.4-0.1,0.8-0.2,1.2-0.4c0.1-0.1,0.2,0,0.2,0.1c0.4,1.5,0.8,3,1.2,4.5
|
|
||||||
c0.6,2,1.1,4,1.7,6.1C554.9,228.6,554.9,228.8,554.9,228.8z"/>
|
|
||||||
</g>
|
|
||||||
<g>
|
|
||||||
<path class="st0" d="M520.8,208.1c-0.1-0.5-0.1-1.1-0.2-1.5c1.2-0.2,2.4-0.4,3.6-0.5c1.1-0.1,2.2-0.3,3.3-0.5
|
|
||||||
c1.2-0.2,2.4-0.3,3.7-0.5c0.1,0,0.3-0.1,0.4-0.1c0.1,0,0.2,0,0.2,0.1c0.1,0.4,0.1,0.9,0.2,1.2c0,0.1-0.1,0.2-0.1,0.2
|
|
||||||
c-0.4,0.1-0.9,0.1-1.2,0.2c-0.7,0.1-1.4,0.2-2.2,0.3c-0.7,0.1-1.5,0.2-2.2,0.3c-0.7,0.1-1.4,0.2-2.1,0.3"/>
|
|
||||||
</g>
|
|
||||||
<g>
|
|
||||||
<path class="st0" d="M566.3,221.4c-1.4-1.2-2.9-2.5-4.3-3.7c-1.1-1-2.2-1.9-3.4-2.9c-0.2-0.2-0.5-0.5-0.8-0.7
|
|
||||||
c-0.1-0.1-0.1-0.1,0-0.2c0.2-0.3,0.5-0.6,0.8-0.9c0.1-0.1,0.2-0.1,0.3,0c0.4,0.4,0.9,0.8,1.4,1.2c0.9,0.7,1.7,1.5,2.6,2.3
|
|
||||||
c0.7,0.6,1.4,1.2,2,1.7c0.8,0.8,1.5,1.4,2.3,2.1c0,0.1-0.1,0.2-0.2,0.2"/>
|
|
||||||
</g>
|
|
||||||
<g>
|
|
||||||
<path class="st0" d="M572.9,206.4c0.1,0.1,0.1,0.1,0.1,0.2c-0.1,0.4-0.1,0.9-0.2,1.3c0,0.1,0,0.1-0.1,0.1
|
|
||||||
c-0.4-0.1-0.9-0.1-1.4-0.2c-0.8-0.1-1.7-0.2-2.6-0.4c-0.7-0.1-1.4-0.2-2.2-0.3c-0.7-0.1-1.4-0.2-2.2-0.3c-0.7-0.1-1.2-0.2-1.9-0.2
|
|
||||||
c-0.2-0.1-0.6-0.1-0.8-0.1c-0.1,0-0.1-0.1-0.1-0.2c0.1-0.4,0.1-0.9,0.2-1.3c0-0.1,0.1-0.1,0.2-0.1c0.4,0.1,0.7,0.1,1.1,0.1
|
|
||||||
c0.8,0.1,1.6,0.2,2.4,0.4c0.7,0.1,1.5,0.2,2.3,0.3c0.8,0.1,1.7,0.2,2.5,0.4c0.8,0.1,1.6,0.2,2.4,0.4
|
|
||||||
C572.7,206.4,572.8,206.4,572.9,206.4z"/>
|
|
||||||
</g>
|
|
||||||
<g>
|
|
||||||
<path class="st0" d="M566.2,185.8c0.4,0.4,0.7,0.8,1.1,1.2c-0.4,0.3-0.7,0.6-1.1,0.9c-0.9,0.8-1.8,1.5-2.8,2.4
|
|
||||||
c-0.8,0.7-1.7,1.4-2.4,2.1c-0.7,0.6-1.4,1.2-2.1,1.8c-0.1,0.1-0.2,0.1-0.4-0.1c-0.2-0.3-0.5-0.6-0.8-0.9c-0.1-0.1-0.1-0.2,0-0.2
|
|
||||||
c0.5-0.4,1-0.9,1.5-1.3c0.6-0.5,1.2-1.1,1.8-1.5c0.9-0.8,1.9-1.6,2.8-2.4C564.7,187.1,565.5,186.4,566.2,185.8z"/>
|
|
||||||
</g>
|
|
||||||
<g>
|
|
||||||
<path class="st0" d="M561.7,225.3c-0.1,0.2-0.4,0.2-0.6,0.4c-0.2,0.1-0.4,0.2-0.6,0.4c-0.1,0.1-0.1,0.1-0.2,0.1
|
|
||||||
c-0.2-0.5-0.6-1-0.9-1.5c-1.1-1.7-2.1-3.5-3.2-5.2c-0.6-0.9-1.1-1.8-1.7-2.7c-0.1-0.1-0.1-0.2,0.1-0.2c0.4-0.2,0.7-0.4,1.1-0.7
|
|
||||||
c0.1-0.1,0.2-0.1,0.2,0.1c1.5,2.4,3,4.9,4.5,7.4C560.8,223.9,561.2,224.6,561.7,225.3z"/>
|
|
||||||
</g>
|
|
||||||
<g>
|
|
||||||
<path class="st0" d="M523.2,215.2c-0.2-0.5-0.5-1-0.7-1.4c0.7-0.4,1.4-0.7,2.2-1c2-0.9,4-1.8,6-2.7c0.6-0.3,1.2-0.6,1.9-0.9
|
|
||||||
c0.1-0.1,0.2-0.1,0.2,0.1c0.2,0.4,0.4,0.8,0.5,1.2c0.1,0.1,0.1,0.1-0.1,0.2c-2.1,0.9-4,1.9-6.1,2.8c-1.1,0.5-2.3,1.1-3.4,1.5
|
|
||||||
C523.6,215.1,523.4,215.2,523.2,215.2z"/>
|
|
||||||
</g>
|
|
||||||
<g>
|
|
||||||
<path class="st0" d="M570.3,191.9c0.2,0.5,0.5,1,0.7,1.4c-0.4,0.2-0.7,0.4-1.1,0.5c-1,0.5-2,0.9-3,1.4c-1.5,0.7-3,1.4-4.6,2.1
|
|
||||||
c-0.5,0.2-1,0.4-1.5,0.7c-0.1,0.1-0.2,0.1-0.2-0.1c-0.2-0.4-0.4-0.8-0.6-1.2c-0.1-0.1,0-0.1,0.1-0.2c1.6-0.7,3.2-1.5,4.9-2.2
|
|
||||||
c1.2-0.5,2.3-1.1,3.5-1.6c0.6-0.2,1.1-0.5,1.7-0.7C570.3,192,570.3,192,570.3,191.9z"/>
|
|
||||||
</g>
|
|
||||||
</g>
|
|
||||||
<g>
|
|
||||||
<g>
|
|
||||||
<g>
|
|
||||||
<path class="st0" d="M599.3,214.7c0-8.1,2.2-14.5,6.5-19c4.3-4.6,9.9-6.8,16.8-6.8c4.5,0,8.6,1.1,12.2,3.2c3.6,2.1,6.4,5.2,8.3,9
|
|
||||||
c1.9,3.9,2.9,8.2,2.9,13.1c0,4.9-1,9.3-3,13.3c-2,3.9-4.8,6.8-8.5,8.9c-3.6,2-7.6,3-11.8,3c-4.6,0-8.7-1.1-12.3-3.3
|
|
||||||
c-3.6-2.2-6.4-5.2-8.2-9.1C600.2,223,599.3,219,599.3,214.7z M605.9,214.8c0,5.9,1.6,10.5,4.8,13.9c3.2,3.4,7.1,5.1,11.9,5.1
|
|
||||||
c4.9,0,8.9-1.7,12-5.1c3.2-3.4,4.7-8.3,4.7-14.5c0-4-0.7-7.4-2-10.4s-3.3-5.2-5.9-6.9c-2.6-1.6-5.5-2.4-8.7-2.4
|
|
||||||
c-4.6,0-8.5,1.5-11.8,4.7C607.6,202.2,605.9,207.4,605.9,214.8z"/>
|
|
||||||
</g>
|
|
||||||
<g>
|
|
||||||
<path class="st0" d="M622.7,241.4c-4.9,0-9.4-1.2-13.4-3.6s-7-5.8-9-10c-2-4-3-8.3-3-13.1c0-8.6,2.4-15.5,7.1-20.4
|
|
||||||
c4.7-4.9,10.9-7.5,18.3-7.5c4.9,0,9.3,1.2,13.3,3.5c3.9,2.3,7,5.6,9.1,9.8c2,4.2,3.1,8.9,3.1,14s-1.1,9.9-3.2,14.2
|
|
||||||
c-2.3,4.3-5.3,7.6-9.3,9.8C631.6,240.3,627.3,241.4,622.7,241.4z M622.7,191c-6.4,0-11.4,2-15.4,6.2c-4,4.1-6,10.1-6,17.6
|
|
||||||
c0,4.1,0.8,7.8,2.6,11.2c1.7,3.5,4.2,6.3,7.4,8.3c3.3,2,7.1,3,11.2,3c3.9,0,7.6-1,10.8-2.8c3.3-1.8,5.8-4.5,7.7-8
|
|
||||||
c1.8-3.6,2.7-7.8,2.7-12.3c0-4.6-0.9-8.6-2.6-12.2c-1.7-3.5-4.3-6.2-7.4-8.1C630.5,191.9,626.9,191,622.7,191z M622.6,235.8
|
|
||||||
c-5.4,0-9.9-1.9-13.5-5.7c-3.5-3.7-5.3-8.9-5.3-15.3c0-7.9,1.9-13.7,5.7-17.3c3.6-3.5,8.1-5.3,13.2-5.3c3.6,0,6.9,1,9.8,2.7
|
|
||||||
c2.9,1.9,5.2,4.5,6.7,7.8c1.5,3.2,2.2,6.9,2.2,11.3c0,6.8-1.8,12.2-5.2,16C632.6,233.8,628,235.8,622.6,235.8z M622.7,196.4
|
|
||||||
c-4.1,0-7.4,1.4-10.4,4.1c-2.9,2.8-4.3,7.6-4.3,14.3c0,5.3,1.4,9.5,4.2,12.4c2.7,3,6.1,4.4,10.4,4.4s7.7-1.4,10.5-4.5
|
|
||||||
c2.7-3,4.2-7.4,4.2-13.1c0-3.7-0.6-6.8-1.8-9.5c-1.2-2.6-2.9-4.5-5.1-6C628.1,197.1,625.5,196.4,622.7,196.4z"/>
|
|
||||||
</g>
|
|
||||||
</g>
|
|
||||||
<g>
|
|
||||||
<g>
|
|
||||||
<path class="st0" d="M693.7,221.3l6.4,1.6c-1.4,5.3-3.8,9.3-7.3,12.1s-7.8,4.2-12.9,4.2c-5.2,0-9.5-1.1-12.8-3.2
|
|
||||||
c-3.3-2.1-5.8-5.2-7.5-9.3c-1.7-4-2.6-8.4-2.6-13.1c0-5.1,1-9.5,2.9-13.3c2-3.8,4.7-6.7,8.3-8.6s7.5-2.9,11.8-2.9
|
|
||||||
c4.9,0,9,1.2,12.3,3.7c3.3,2.5,5.7,6,7,10.5l-6.4,1.5c-1.1-3.6-2.8-6.1-4.9-7.7c-2.1-1.6-4.9-2.4-8.1-2.4c-3.7,0-6.9,0.9-9.4,2.7
|
|
||||||
c-2.5,1.8-4.3,4.2-5.3,7.3c-1,3-1.5,6.1-1.5,9.3c0,4.2,0.6,7.8,1.8,10.9c1.2,3.1,3.1,5.4,5.7,7c2.6,1.5,5.3,2.3,8.3,2.3
|
|
||||||
c3.6,0,6.7-1.1,9.2-3.2C691,228.5,692.8,225.4,693.7,221.3z"/>
|
|
||||||
</g>
|
|
||||||
<g>
|
|
||||||
<path class="st0" d="M679.9,241.3c-5.7,0-10.4-1.2-13.9-3.6c-3.6-2.4-6.4-5.8-8.3-10.2c-1.8-4.2-2.7-8.9-2.7-13.9
|
|
||||||
c0-5.5,1.1-10.2,3.2-14.2c2.1-4.2,5.2-7.3,9.1-9.5c3.8-2.1,8.2-3.2,12.9-3.2c5.3,0,9.9,1.4,13.6,4.2c3.7,2.8,6.3,6.7,7.7,11.5
|
|
||||||
l0.6,2.1l-10.4,2.4l-0.6-1.8c-1-3.1-2.4-5.4-4.2-6.7c-1.8-1.4-4.1-2-6.8-2c-3.3,0-6.1,0.8-8.2,2.3c-2.1,1.5-3.7,3.6-4.5,6.2
|
|
||||||
c-1,2.9-1.4,5.8-1.4,8.7c0,3.9,0.5,7.3,1.7,10.1c1,2.6,2.6,4.6,4.8,6c2.3,1.4,4.6,2,7.2,2c3.1,0,5.7-0.9,7.9-2.7
|
|
||||||
c2.1-1.8,3.6-4.6,4.4-8.2l0.5-2.1l10.5,2.6l-0.5,2c-1.5,5.7-4.2,10.2-8,13.3C690.2,239.8,685.4,241.3,679.9,241.3z M680,190.9
|
|
||||||
c-4,0-7.6,0.9-10.8,2.7c-3.2,1.8-5.7,4.3-7.4,7.7c-1.8,3.4-2.7,7.6-2.7,12.3c0,4.5,0.8,8.5,2.4,12.3c1.5,3.6,3.8,6.4,6.7,8.3
|
|
||||||
s6.8,2.9,11.7,2.9c4.7,0,8.5-1.2,11.6-3.7c2.7-2.1,4.7-5.2,6-9l-2.3-0.6c-1.1,3.5-2.9,6.3-5.2,8.4c-2.9,2.4-6.4,3.6-10.5,3.6
|
|
||||||
c-3.3,0-6.5-0.9-9.3-2.6c-3-1.8-5.2-4.5-6.5-8c-1.2-3.3-1.9-7.3-1.9-11.7c0-3.4,0.5-6.7,1.7-10c1.1-3.5,3.2-6.2,6.1-8.3
|
|
||||||
c2.9-2,6.4-3.1,10.6-3.1c3.7,0,6.8,1,9.3,2.9c2.1,1.6,3.8,3.9,5,7l2.3-0.5c-1.2-3-3-5.5-5.5-7.3C688.1,192,684.4,190.9,680,190.9
|
|
||||||
z"/>
|
|
||||||
</g>
|
|
||||||
</g>
|
|
||||||
<g>
|
|
||||||
<g>
|
|
||||||
<path class="st0" d="M707.2,238.5l18.7-48.8h7l19.9,48.8h-7.4l-5.7-14.8h-20.4l-5.4,14.8H707.2z M721.3,218.4h16.5l-5.1-13.5
|
|
||||||
c-1.5-4.1-2.7-7.5-3.5-10.1c-0.6,3.2-1.5,6.2-2.6,9.3L721.3,218.4z"/>
|
|
||||||
</g>
|
|
||||||
<g>
|
|
||||||
<path class="st0" d="M729.4,187.6h5l21.7,53h-11.9l-5.7-14.8h-17.5l-5.4,14.8h-11.2l20.2-53h4 M746.9,236.4h2.9l-18.2-44.6h-1
|
|
||||||
l0.7,2.4c0.8,2.9,2,6.3,3.4,10l6.2,16.3h-22.6l6.4-17.1c1.1-3.2,2-6.1,2.5-9l0.5-2.7h-0.4l-17.1,44.6h2.3l5.4-14.8h23.3
|
|
||||||
L746.9,236.4z M724.4,216.3h10.5l-4-10.7c-0.4-1.2-0.8-2.3-1.2-3.5c-0.3,0.9-0.6,1.7-0.9,2.6L724.4,216.3z"/>
|
|
||||||
</g>
|
|
||||||
</g>
|
|
||||||
</g>
|
|
||||||
<g>
|
|
||||||
<path class="st1" d="M327.3,257c1.3-0.2,3-0.4,5.3-0.4c2.7,0,4.7,0.7,6,1.8c1.2,1,1.8,2.6,1.8,4.5c0,1.9-0.6,3.5-1.7,4.5
|
|
||||||
c-1.4,1.5-3.8,2.3-6.5,2.3c-0.8,0-1.5-0.1-2.2-0.2v8.5h-2.7V257z M330,267.3c0.6,0.2,1.4,0.2,2.3,0.2c3.3,0,5.4-1.6,5.4-4.5
|
|
||||||
c0-2.8-2-4.2-5-4.2c-1.2,0-2.1,0.1-2.6,0.2L330,267.3L330,267.3z"/>
|
|
||||||
<path class="st1" d="M352,278l-0.2-1.9h-0.1c-0.8,1.2-2.5,2.3-4.6,2.3c-3.1,0-4.6-2.2-4.6-4.4c0-3.7,3.3-5.7,9.2-5.7V268
|
|
||||||
c0-1.2-0.4-3.5-3.5-3.5c-1.4,0-2.9,0.4-4,1.1l-0.7-1.8c1.2-0.8,3.1-1.4,5-1.4c4.6,0,5.8,3.2,5.8,6.2v5.7c0,1.3,0.1,2.6,0.2,3.6H352
|
|
||||||
L352,278z M351.6,270.2c-3-0.1-6.5,0.5-6.5,3.5c0,1.8,1.2,2.7,2.6,2.7c2,0,3.3-1.2,3.7-2.6c0.1-0.3,0.2-0.6,0.2-0.9V270.2z"/>
|
|
||||||
<path class="st1" d="M359.2,267.6c0-1.8-0.1-3.3-0.1-4.8h2.4l0.1,3h0.1c0.7-2,2.4-3.3,4.2-3.3c0.3,0,0.5,0.1,0.8,0.1v2.6
|
|
||||||
c-0.3-0.1-0.6-0.1-1-0.1c-2,0-3.3,1.5-3.7,3.6c-0.1,0.4-0.1,0.8-0.1,1.3v8.1h-2.7V267.6z"/>
|
|
||||||
<path class="st1" d="M374.1,258.4v4.4h4v2.1h-4v8.2c0,1.9,0.5,3,2.1,3c0.7,0,1.2-0.1,1.6-0.2l0.1,2.1c-0.5,0.2-1.4,0.4-2.4,0.4
|
|
||||||
c-1.3,0-2.3-0.4-3-1.2c-0.8-0.8-1.1-2.2-1.1-4v-8.3H369v-2.1h2.4v-3.6L374.1,258.4z"/>
|
|
||||||
<path class="st1" d="M381.6,266.9c0-1.5-0.1-2.9-0.1-4.1h2.4l0.2,2.5h0.1c0.8-1.4,2.5-2.9,5.1-2.9c2.1,0,5.4,1.2,5.4,6.5v9.1h-2.8
|
|
||||||
v-8.8c0-2.4-0.9-4.5-3.5-4.5c-1.8,0-3.3,1.3-3.7,2.9c-0.1,0.4-0.2,0.8-0.2,1.3v9.2h-2.8L381.6,266.9L381.6,266.9z"/>
|
|
||||||
<path class="st1" d="M401.1,270.9c0.1,3.7,2.4,5.3,5.2,5.3c2,0,3.2-0.4,4.2-0.8l0.5,2c-1,0.4-2.7,1-5.1,1c-4.7,0-7.5-3.1-7.5-7.7
|
|
||||||
c0-4.6,2.7-8.2,7.1-8.2c5,0,6.3,4.4,6.3,7.2c0,0.6-0.1,1-0.1,1.3L401.1,270.9L401.1,270.9L401.1,270.9z M409.2,268.9
|
|
||||||
c0.1-1.8-0.7-4.5-3.9-4.5c-2.8,0-4,2.6-4.3,4.5H409.2z"/>
|
|
||||||
<path class="st1" d="M415.8,267.6c0-1.8-0.1-3.3-0.1-4.8h2.4l0.1,3h0.1c0.7-2,2.4-3.3,4.2-3.3c0.3,0,0.5,0.1,0.8,0.1v2.6
|
|
||||||
c-0.3-0.1-0.6-0.1-1-0.1c-2,0-3.3,1.5-3.7,3.6c-0.1,0.4-0.1,0.8-0.1,1.3v8.1h-2.7V267.6z"/>
|
|
||||||
</g>
|
|
||||||
<g>
|
|
||||||
<path class="st1" d="M614.7,277.4c-1,0.5-3,1-5.6,1c-6,0-10.5-3.8-10.5-10.8c0-6.7,4.5-11.2,11.1-11.2c2.7,0,4.3,0.6,5.1,1
|
|
||||||
l-0.7,2.3c-1-0.5-2.5-0.9-4.3-0.9c-5,0-8.3,3.2-8.3,8.7c0,5.2,3,8.6,8.2,8.6c1.7,0,3.4-0.4,4.5-0.9L614.7,277.4z"/>
|
|
||||||
<path class="st1" d="M631.9,270.3c0,5.7-3.9,8.1-7.6,8.1c-4.1,0-7.3-3-7.3-7.9c0-5.1,3.3-8.1,7.6-8.1
|
|
||||||
C629,262.4,631.9,265.6,631.9,270.3z M619.9,270.5c0,3.3,1.9,5.9,4.6,5.9c2.7,0,4.6-2.5,4.6-6c0-2.6-1.3-5.9-4.6-5.9
|
|
||||||
C621.2,264.5,619.9,267.6,619.9,270.5z"/>
|
|
||||||
<path class="st1" d="M635.9,266.9c0-1.5-0.1-2.9-0.1-4.1h2.4l0.2,2.5h0.1c0.8-1.4,2.5-2.9,5.1-2.9c2.1,0,5.4,1.2,5.4,6.5v9.1h-2.8
|
|
||||||
v-8.8c0-2.4-0.9-4.5-3.5-4.5c-1.8,0-3.3,1.3-3.7,2.9c-0.1,0.4-0.2,0.8-0.2,1.3v9.2h-2.8V266.9z"/>
|
|
||||||
<path class="st1" d="M657.1,258.4v4.4h4v2.1h-4v8.2c0,1.9,0.5,3,2.1,3c0.7,0,1.2-0.1,1.6-0.2l0.1,2.1c-0.5,0.2-1.4,0.4-2.4,0.4
|
|
||||||
c-1.3,0-2.3-0.4-3-1.2c-0.8-0.8-1.1-2.2-1.1-4v-8.3H652v-2.1h2.4v-3.6L657.1,258.4z"/>
|
|
||||||
<path class="st1" d="M664.6,267.6c0-1.8-0.1-3.3-0.1-4.8h2.4l0.1,3h0.1c0.7-2,2.4-3.3,4.2-3.3c0.3,0,0.5,0.1,0.8,0.1v2.6
|
|
||||||
c-0.3-0.1-0.6-0.1-1-0.1c-2,0-3.3,1.5-3.7,3.6c-0.1,0.4-0.1,0.8-0.1,1.3v8.1h-2.7V267.6z"/>
|
|
||||||
<path class="st1" d="M678.5,258.5c0.1,1-0.7,1.7-1.8,1.7c-1,0-1.7-0.8-1.7-1.7s0.7-1.7,1.7-1.7
|
|
||||||
C677.9,256.8,678.5,257.5,678.5,258.5z M675.4,278v-15.2h2.8V278H675.4z"/>
|
|
||||||
<path class="st1" d="M683.2,278c0.1-1,0.1-2.6,0.1-3.9v-18.4h2.7v9.6h0.1c1-1.7,2.7-2.8,5.2-2.8c3.8,0,6.5,3.2,6.4,7.8
|
|
||||||
c0,5.5-3.5,8.2-6.8,8.2c-2.2,0-4-0.8-5.1-2.9h-0.1l-0.1,2.5H683.2z M686,271.9c0,0.4,0.1,0.7,0.1,1c0.5,1.9,2.1,3.3,4.2,3.3
|
|
||||||
c2.9,0,4.6-2.4,4.6-5.9c0-3-1.6-5.7-4.5-5.7c-1.9,0-3.6,1.3-4.2,3.4c-0.1,0.3-0.2,0.7-0.2,1.1L686,271.9L686,271.9z"/>
|
|
||||||
<path class="st1" d="M714.4,273.9c0,1.5,0.1,3,0.1,4.2h-2.4l-0.2-2.5h-0.1c-0.7,1.2-2.3,2.9-5.1,2.9c-2.4,0-5.2-1.3-5.2-6.7v-8.9
|
|
||||||
h2.8v8.5c0,2.9,0.9,4.9,3.4,4.9c1.8,0,3.2-1.3,3.6-2.5c0.2-0.4,0.2-0.9,0.2-1.4v-9.3h2.8L714.4,273.9L714.4,273.9z"/>
|
|
||||||
<path class="st1" d="M722.8,258.4v4.4h4v2.1h-4v8.2c0,1.9,0.5,3,2.1,3c0.7,0,1.2-0.1,1.6-0.2l0.1,2.1c-0.5,0.2-1.4,0.4-2.4,0.4
|
|
||||||
c-1.3,0-2.3-0.4-3-1.2c-0.8-0.8-1.1-2.2-1.1-4v-8.3h-2.4v-2.1h2.4v-3.6L722.8,258.4z"/>
|
|
||||||
<path class="st1" d="M744,270.3c0,5.7-3.9,8.1-7.6,8.1c-4.1,0-7.3-3-7.3-7.9c0-5.1,3.3-8.1,7.6-8.1C741,262.4,744,265.6,744,270.3z
|
|
||||||
M731.9,270.5c0,3.3,1.9,5.9,4.6,5.9c2.7,0,4.6-2.5,4.6-6c0-2.6-1.3-5.9-4.6-5.9C733.3,264.5,731.9,267.6,731.9,270.5z"/>
|
|
||||||
<path class="st1" d="M747.9,267.6c0-1.8-0.1-3.3-0.1-4.8h2.4l0.1,3h0.1c0.7-2,2.4-3.3,4.2-3.3c0.3,0,0.5,0.1,0.8,0.1v2.6
|
|
||||||
c-0.3-0.1-0.6-0.1-1-0.1c-2,0-3.3,1.5-3.7,3.6c-0.1,0.4-0.1,0.8-0.1,1.3v8.1h-2.7V267.6L747.9,267.6z"/>
|
|
||||||
<path class="st1" d="M646.9,312.6c1.2,0.8,3,1.4,4.9,1.4c2.8,0,4.5-1.5,4.5-3.6c0-2-1.1-3.1-4-4.2c-3.5-1.2-5.6-3-5.6-6
|
|
||||||
c0-3.3,2.7-5.8,6.9-5.8c2.2,0,3.7,0.5,4.7,1l-0.8,2.3c-0.7-0.4-2.1-1-4-1c-2.9,0-4,1.7-4,3.2c0,2,1.3,3,4.2,4.1
|
|
||||||
c3.6,1.4,5.4,3.1,5.4,6.2c0,3.3-2.4,6.1-7.4,6.1c-2,0-4.3-0.6-5.4-1.4L646.9,312.6z"/>
|
|
||||||
<path class="st1" d="M663.2,305.6c0-2-0.1-3.5-0.1-5h2.5l0.1,2.6h0.1c1.1-1.8,2.9-3,5.4-3c3.7,0,6.5,3.1,6.5,7.7
|
|
||||||
c0,5.5-3.3,8.2-7,8.2c-2,0-3.8-0.9-4.7-2.4h-0.1v8.3h-2.7V305.6z M665.9,309.7c0,0.4,0.1,0.8,0.1,1.1c0.5,1.9,2.2,3.3,4.2,3.3
|
|
||||||
c2.9,0,4.6-2.4,4.6-5.9c0-3-1.6-5.7-4.5-5.7c-1.9,0-3.6,1.4-4.2,3.5c-0.1,0.4-0.2,0.8-0.2,1.1L665.9,309.7L665.9,309.7z"/>
|
|
||||||
<path class="st1" d="M695.4,308.1c0,5.7-3.9,8.1-7.6,8.1c-4.1,0-7.3-3-7.3-7.9c0-5.1,3.3-8.1,7.6-8.1
|
|
||||||
C692.4,300.3,695.4,303.4,695.4,308.1z M683.2,308.3c0,3.3,1.9,5.9,4.6,5.9c2.7,0,4.6-2.5,4.6-6c0-2.6-1.3-5.9-4.6-5.9
|
|
||||||
C684.7,302.4,683.2,305.4,683.2,308.3z"/>
|
|
||||||
<path class="st1" d="M699.3,304.8c0-1.5-0.1-2.9-0.1-4.1h2.4l0.2,2.5h0.1c0.8-1.4,2.5-2.9,5.1-2.9c2.1,0,5.4,1.2,5.4,6.5v9.1h-2.8
|
|
||||||
v-8.8c0-2.4-0.9-4.5-3.5-4.5c-1.8,0-3.3,1.3-3.7,2.9c-0.1,0.4-0.2,0.8-0.2,1.3v9.2h-2.8L699.3,304.8L699.3,304.8z"/>
|
|
||||||
<path class="st1" d="M716.9,313.1c0.8,0.5,2.3,1.1,3.6,1.1c2,0,3-1,3-2.3c0-1.3-0.8-2-2.9-2.8c-2.7-1-4-2.5-4-4.3
|
|
||||||
c0-2.4,2-4.5,5.2-4.5c1.5,0,2.9,0.4,3.7,1l-0.7,2c-0.6-0.4-1.7-0.9-3.1-0.9c-1.7,0-2.6,1-2.6,2.1c0,1.2,0.9,1.8,2.9,2.6
|
|
||||||
c2.7,1,4,2.3,4,4.6c0,2.7-2.1,4.6-5.7,4.6c-1.7,0-3.2-0.4-4.3-1L716.9,313.1z"/>
|
|
||||||
<path class="st1" d="M744,308.1c0,5.7-3.9,8.1-7.6,8.1c-4.1,0-7.3-3-7.3-7.9c0-5.1,3.3-8.1,7.6-8.1C741,300.3,744,303.4,744,308.1z
|
|
||||||
M731.9,308.3c0,3.3,1.9,5.9,4.6,5.9c2.7,0,4.6-2.5,4.6-6c0-2.6-1.3-5.9-4.6-5.9C733.3,302.4,731.9,305.4,731.9,308.3z"/>
|
|
||||||
<path class="st1" d="M747.9,305.4c0-1.8-0.1-3.3-0.1-4.8h2.4l0.1,3h0.1c0.7-2,2.4-3.3,4.2-3.3c0.3,0,0.5,0.1,0.8,0.1v2.6
|
|
||||||
c-0.3-0.1-0.6-0.1-1-0.1c-2,0-3.3,1.5-3.7,3.6c-0.1,0.4-0.1,0.8-0.1,1.3v8.2h-2.7V305.4L747.9,305.4z"/>
|
|
||||||
</g>
|
|
||||||
</svg>
|
|
||||||
|
Before Width: | Height: | Size: 30 KiB |
|
Before Width: | Height: | Size: 108 KiB |
|
Before Width: | Height: | Size: 285 KiB |
|
Before Width: | Height: | Size: 342 KiB |
@@ -1,62 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<!-- Generator: Adobe Illustrator 24.1.2, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
|
||||||
<svg version="1.1" id="Server" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
|
||||||
viewBox="0 0 24 24" style="enable-background:new 0 0 24 24;" xml:space="preserve">
|
|
||||||
<style type="text/css">
|
|
||||||
.st0{fill:#039BE5;}
|
|
||||||
.st1{opacity:0.1;fill:#FFFFFF;enable-background:new ;}
|
|
||||||
.st2{opacity:5.000000e-02;enable-background:new ;}
|
|
||||||
.st3{fill:#303C42;}
|
|
||||||
.st4{opacity:0.1;enable-background:new ;}
|
|
||||||
.st5{opacity:0.2;enable-background:new ;}
|
|
||||||
.st6{fill:#69B342;}
|
|
||||||
.st7{fill:#C6CDD1;}
|
|
||||||
.st8{fill:url(#SVGID_1_);}
|
|
||||||
.st9{fill:url(#SVGID_2_);}
|
|
||||||
.st10{fill:url(#SVGID_3_);}
|
|
||||||
</style>
|
|
||||||
<circle class="st0" cx="11.1" cy="11.1" r="9.2"/>
|
|
||||||
<path class="st1" d="M11.1,2c-3.8,0-7,2.3-8.4,5.5h16.8C18.1,4.2,14.9,2,11.1,2z"/>
|
|
||||||
<path class="st2" d="M2.7,14.8c1.4,3.2,4.6,5.5,8.4,5.5s7-2.3,8.4-5.5H2.7z"/>
|
|
||||||
<path class="st1" d="M7.5,11.1C7.5,6.1,8.6,2,11.1,2C6.1,2,2,6.1,2,11.1s4.1,9.2,9.2,9.2C8.6,20.3,7.5,16.2,7.5,11.1z"/>
|
|
||||||
<path class="st2" d="M11.1,2c2.5,0,3.7,4.1,3.7,9.2s-1.1,9.2-3.7,9.2c5.1,0,9.2-4.1,9.2-9.2S16.2,2,11.1,2z"/>
|
|
||||||
<path class="st3" d="M6.5,16.2h14.7V18H6.5V16.2z"/>
|
|
||||||
<path class="st4" d="M6.5,16.2h14.7V18H6.5V16.2z"/>
|
|
||||||
<path class="st3" d="M21.2,16.6H6.5c-0.5,0-0.9-0.4-0.9-0.9V13c0-0.5,0.4-0.9,0.9-0.9h14.7c0.5,0,0.9,0.4,0.9,0.9v2.7
|
|
||||||
C22.1,16.2,21.7,16.6,21.2,16.6z"/>
|
|
||||||
<path class="st1" d="M21.2,12.1H6.5c-0.5,0-0.9,0.4-0.9,0.9v0.2c0-0.5,0.4-0.9,0.9-0.9h14.7c0.5,0,0.9,0.4,0.9,0.9V13
|
|
||||||
C22.1,12.5,21.7,12.1,21.2,12.1z"/>
|
|
||||||
<path class="st5" d="M21.2,16.4H6.5c-0.5,0-0.9-0.4-0.9-0.9v0.2c0,0.5,0.4,0.9,0.9,0.9h14.7c0.5,0,0.9-0.4,0.9-0.9v-0.2
|
|
||||||
C22.1,16,21.7,16.4,21.2,16.4z"/>
|
|
||||||
<path class="st3" d="M21.2,22.1H6.5c-0.5,0-0.9-0.4-0.9-0.9v-2.7c0-0.5,0.4-0.9,0.9-0.9h14.7c0.5,0,0.9,0.4,0.9,0.9v2.7
|
|
||||||
C22.1,21.7,21.7,22.1,21.2,22.1z"/>
|
|
||||||
<circle class="st6" cx="19.8" cy="19.8" r="0.5"/>
|
|
||||||
<circle class="st6" cx="18" cy="19.8" r="0.5"/>
|
|
||||||
<circle class="st6" cx="16.2" cy="19.8" r="0.5"/>
|
|
||||||
<circle class="st7" cx="7.9" cy="19.8" r="0.9"/>
|
|
||||||
<linearGradient id="SVGID_1_" gradientUnits="userSpaceOnUse" x1="7.336" y1="6.7378" x2="8.3616" y2="5.7121" gradientTransform="matrix(1 0 0 -1 0 26)">
|
|
||||||
<stop offset="0" style="stop-color:#000000;stop-opacity:0.1"/>
|
|
||||||
<stop offset="1" style="stop-color:#000000;stop-opacity:0"/>
|
|
||||||
</linearGradient>
|
|
||||||
<circle class="st8" cx="7.9" cy="19.8" r="0.9"/>
|
|
||||||
<circle class="st6" cx="19.8" cy="14.3" r="0.5"/>
|
|
||||||
<circle class="st6" cx="18" cy="14.3" r="0.5"/>
|
|
||||||
<circle class="st6" cx="16.2" cy="14.3" r="0.5"/>
|
|
||||||
<path class="st1" d="M21.2,17.6H6.5c-0.5,0-0.9,0.4-0.9,0.9v0.2c0-0.5,0.4-0.9,0.9-0.9h14.7c0.5,0,0.9,0.4,0.9,0.9v-0.2
|
|
||||||
C22.1,18,21.7,17.6,21.2,17.6z"/>
|
|
||||||
<path class="st5" d="M21.2,21.9H6.5c-0.5,0-0.9-0.4-0.9-0.9v0.2c0,0.5,0.4,0.9,0.9,0.9h14.7c0.5,0,0.9-0.4,0.9-0.9V21
|
|
||||||
C22.1,21.5,21.7,21.9,21.2,21.9z"/>
|
|
||||||
<circle class="st7" cx="7.9" cy="14.3" r="0.9"/>
|
|
||||||
<linearGradient id="SVGID_2_" gradientUnits="userSpaceOnUse" x1="7.336" y1="12.2373" x2="8.3616" y2="11.2116" gradientTransform="matrix(1 0 0 -1 0 26)">
|
|
||||||
<stop offset="0" style="stop-color:#000000;stop-opacity:0.1"/>
|
|
||||||
<stop offset="1" style="stop-color:#000000;stop-opacity:0"/>
|
|
||||||
</linearGradient>
|
|
||||||
<circle class="st9" cx="7.9" cy="14.3" r="0.9"/>
|
|
||||||
<linearGradient id="SVGID_3_" gradientUnits="userSpaceOnUse" x1="2.2175" y1="17.461" x2="23.5011" y2="7.5369" gradientTransform="matrix(1 0 0 -1 0 26)">
|
|
||||||
<stop offset="0" style="stop-color:#FFFFFF;stop-opacity:0.2"/>
|
|
||||||
<stop offset="1" style="stop-color:#FFFFFF;stop-opacity:0"/>
|
|
||||||
</linearGradient>
|
|
||||||
<path class="st10" d="M22.1,15.7V13c0-0.5-0.4-0.9-0.9-0.9h-1c0-0.3,0-0.6,0-0.9c0-5.1-4.1-9.2-9.2-9.2S2,6.1,2,11.1
|
|
||||||
c0,3,1.4,5.6,3.7,7.3l0,0v2.7c0,0.5,0.4,0.9,0.9,0.9h14.7c0.5,0,0.9-0.4,0.9-0.9v-2.7c0-0.5-0.4-0.9-0.9-0.9v-0.9
|
|
||||||
C21.7,16.6,22.1,16.2,22.1,15.7z"/>
|
|
||||||
</svg>
|
|
||||||
|
Before Width: | Height: | Size: 3.8 KiB |
@@ -1,30 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<!-- Generator: Adobe Illustrator 24.1.2, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
|
||||||
<svg version="1.1" id="Слой_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
|
||||||
viewBox="0 0 200 200" style="enable-background:new 0 0 200 200;" xml:space="preserve">
|
|
||||||
<style type="text/css">
|
|
||||||
.st0{fill:#29A1DC;}
|
|
||||||
.st1{fill:#FFFFFF;}
|
|
||||||
</style>
|
|
||||||
<circle class="st0" cx="100.5" cy="99.8" r="92.2"/>
|
|
||||||
<path class="st1" d="M113.4,127.1c0.6,0.3,0.7,1,0.2,1.5c-3.1,2.8-6.6,5.2-10.3,7.1c-6.6,3.2-13.8,4.8-21,4.7
|
|
||||||
c-7.2-0.3-14.3-2.2-20.4-5.7s-11.3-8.5-15.1-14.4c-3.7-5.9-5.8-12.6-6.4-19.4c-0.4-6.8,0.8-13.7,3.5-19.8c1.5-3,3.1-5.9,5.2-8.5
|
|
||||||
c2.1-2.6,4.5-5,7.1-7c5.2-4,11.4-6.7,17.8-7.8c-6.3,1.5-12.2,4.6-16.9,8.9c-2.4,2.1-4.5,4.5-6.2,7.1c-1.8,2.6-3.1,5.5-4.3,8.4
|
|
||||||
c-2.1,5.9-2.7,12.2-1.9,18.3c0.9,6.1,3.3,11.8,6.8,16.7c3.6,4.8,8.4,8.7,13.7,11.3c5.3,2.5,11.3,3.7,17,3.4c5.8-0.3,11.4-2,16.3-4.9
|
|
||||||
c1.9-1.2,3.8-2.5,5.4-4c0.3-0.3,0.7-0.3,1-0.1L113.4,127.1z"/>
|
|
||||||
<path class="st1" d="M131.5,143.1c0.4,0.4,0.3,1.1-0.1,1.4c-0.2,0.2-0.4,0.4-0.6,0.6c-2.6,2.3-5.4,4.4-8.3,6.3c-2.9,1.9-6,3.5-9.2,5
|
|
||||||
c-3.2,1.4-6.4,2.6-9.8,3.5c-13.3,3.6-27.7,2.9-40.4-1.9c-12.8-4.8-23.8-13.5-31.2-24.7c-7.4-11.1-11-24.4-10.6-37.6
|
|
||||||
c0.4-13.1,5.2-25.9,13.2-36.1c7.9-10.2,19-17.7,31.3-21.2c12.2-3.5,25.4-3.2,37.2,1c5.9,2.1,11.4,5.1,16.3,8.8s9.2,8.2,12.7,13.3
|
|
||||||
c-3.8-4.8-8.3-9-13.4-12.4c-5-3.4-10.6-6-16.4-7.7c-11.6-3.4-24.1-2.9-35.2,1c-11.2,3.9-20.9,11.4-27.5,21
|
|
||||||
c-6.6,9.5-10.1,21-9.8,32.4c0.3,11.4,4.2,22.6,10.9,31.5c6.7,8.9,16.3,15.5,26.7,18.7c10.5,3.3,21.8,3.1,32-0.3
|
|
||||||
c8.1-2.7,15.4-7.4,21.2-13.6c0.4-0.4,1.1-0.5,1.5-0.1c0.6,0.6,1.3,1.3,1.8,1.9C123.8,134,129.5,140.8,131.5,143.1z"/>
|
|
||||||
<path class="st1" d="M171.3,74.2l-35.9,43.7l2,4.1l4.1,8.6c0.7,1.5,0.4,3.3-0.8,4.5l-2.9,2.7c-0.2,0.2-0.4,0.2-0.7,0.2
|
|
||||||
c-0.1,0-0.2-0.1-0.3-0.2c0,0-0.1,0-0.1-0.1l-7.9-9.4c-0.8-0.9-1.6-1.8-2.5-2.6c-0.7-0.6-1.3-1.2-2.1-1.8c-1.4-1.1-2.9-2.2-4.6-3
|
|
||||||
c-0.3-0.2-0.5-0.3-0.8-0.4l-9.3-4.8l-1.7-0.9c-0.3-0.2-0.5-0.6-0.3-1l2-3.4c0.9-1.5,2.6-2.2,4.2-1.8l13.8,3.1l14-18.1L112.9,81
|
|
||||||
c-0.4-0.2-0.5-0.7-0.3-1l4.5-5.6c1.8-2.3,4.8-3.4,7.7-3l30.3,5.1l7.5-9.6c1.7-2.2,3.9-3.9,6.4-5l3.5-1.5c0.5-0.2,1-0.2,1.4-0.1
|
|
||||||
c0.3,0.1,0.5,0.2,0.7,0.3l0,0c0.5,0.5,0.9,1.2,0.7,2l-0.6,3.7C174.4,69.2,173.1,71.9,171.3,74.2z"/>
|
|
||||||
<g>
|
|
||||||
<path class="st1" d="M175.6,119.1l-4.5,5.6c-0.2,0.2-0.5,0.3-0.7,0.2c-0.1,0-0.3-0.1-0.4-0.3l-17.3-23.3l13.5-16.1l10.6,25.8
|
|
||||||
C177.9,113.7,177.5,116.8,175.6,119.1z"/>
|
|
||||||
</g>
|
|
||||||
</svg>
|
|
||||||
|
Before Width: | Height: | Size: 2.4 KiB |
@@ -1,63 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<!-- Generator: Adobe Illustrator 24.1.2, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
|
||||||
<svg version="1.1" id="Server" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
|
||||||
viewBox="0 0 24 24" style="enable-background:new 0 0 24 24;" xml:space="preserve">
|
|
||||||
<style type="text/css">
|
|
||||||
.st0{fill:#D9DBDC;}
|
|
||||||
.st1{opacity:0.1;fill:#010101;enable-background:new ;}
|
|
||||||
.st2{opacity:0.2;fill:#FFFFFF;enable-background:new ;}
|
|
||||||
.st3{fill:#818181;}
|
|
||||||
.st4{fill:url(#SVGID_1_);}
|
|
||||||
.st5{fill:url(#SVGID_2_);}
|
|
||||||
.st6{fill:#333333;}
|
|
||||||
.st7{opacity:5.000000e-02;fill:#FFFFFF;enable-background:new ;}
|
|
||||||
.st8{fill:url(#SVGID_3_);}
|
|
||||||
.st9{fill:url(#SVGID_4_);}
|
|
||||||
.st10{fill:#00425A;}
|
|
||||||
.st11{fill:#27A0DA;}
|
|
||||||
</style>
|
|
||||||
<path class="st0" d="M1.1,14.7v1.8c0,1,0.8,1.8,1.8,1.8h6.4c0,0.7-0.2,1.9-0.6,2.5c-0.2,0.2-0.5,0.3-0.7,0.3s-0.5,0.2-0.5,0.5
|
|
||||||
S7.6,22,7.9,22h8.2c0.3,0,0.5-0.2,0.5-0.5s-0.2-0.5-0.5-0.5c-0.3,0-0.5-0.1-0.7-0.3c-0.5-0.5-0.6-1.7-0.6-2.5h6.4
|
|
||||||
c1,0,1.8-0.8,1.8-1.8v-1.8H1.1z"/>
|
|
||||||
<path class="st1" d="M21.1,18.2H2.9c-1,0-1.8-0.8-1.8-1.8v0.2c0,1,0.8,1.8,1.8,1.8h18.2c1,0,1.8-0.8,1.8-1.8v-0.3
|
|
||||||
C22.9,17.3,22.1,18.2,21.1,18.2z"/>
|
|
||||||
<path class="st2" d="M7.9,21.3h8.2c0.2,0,0.4,0.2,0.5,0.4v-0.1c0-0.3-0.2-0.5-0.5-0.5H7.9c-0.3-0.1-0.5,0.1-0.5,0.4v0.1
|
|
||||||
C7.6,21.4,7.7,21.3,7.9,21.3z"/>
|
|
||||||
<path class="st3" d="M12,17.7c-0.4,0-0.6-0.4-0.6-0.7c0-0.4,0.3-0.6,0.6-0.6s0.6,0.4,0.6,0.7C12.6,17.3,12.4,17.6,12,17.7z"/>
|
|
||||||
<linearGradient id="SVGID_1_" gradientUnits="userSpaceOnUse" x1="11.3652" y1="-732.7223" x2="12.6001" y2="-733.298" gradientTransform="matrix(1 0 0 -1 0 -716)">
|
|
||||||
<stop offset="0" style="stop-color:#FFFFFF;stop-opacity:0.2"/>
|
|
||||||
<stop offset="1" style="stop-color:#FFFFFF;stop-opacity:0"/>
|
|
||||||
</linearGradient>
|
|
||||||
<path class="st4" d="M12,17.7c-0.4,0-0.6-0.4-0.6-0.7c0-0.4,0.3-0.6,0.6-0.6s0.6,0.4,0.6,0.7C12.6,17.3,12.4,17.6,12,17.7z"/>
|
|
||||||
<linearGradient id="SVGID_2_" gradientUnits="userSpaceOnUse" x1="10.8905" y1="-733.225" x2="14.6633" y2="-736.9988" gradientTransform="matrix(1 0 0 -1 0 -716)">
|
|
||||||
<stop offset="0" style="stop-color:#010101;stop-opacity:0.1"/>
|
|
||||||
<stop offset="1" style="stop-color:#010101;stop-opacity:0"/>
|
|
||||||
</linearGradient>
|
|
||||||
<path class="st5" d="M15.4,20.8c-0.5-0.5-0.6-1.7-0.6-2.5H9.3l2.7,2.7h4.1C15.8,21.1,15.5,21,15.4,20.8z"/>
|
|
||||||
<path class="st6" d="M22.9,3.8c0-1-0.8-1.8-1.8-1.8H2.9c-1,0-1.8,0.8-1.8,1.8v11.8h21.8V3.8z"/>
|
|
||||||
<path class="st7" d="M2.9,2.3h18.2c1,0,1.8,0.8,1.8,1.8V3.8c0-1-0.8-1.8-1.8-1.8H2.9c-1,0-1.8,0.8-1.8,1.8v0.3
|
|
||||||
C1.1,3,1.9,2.3,2.9,2.3z"/>
|
|
||||||
<linearGradient id="SVGID_3_" gradientUnits="userSpaceOnUse" x1="0.2378" y1="-721.2634" x2="23.3135" y2="-732.0244" gradientTransform="matrix(1 0 0 -1 0 -716)">
|
|
||||||
<stop offset="0" style="stop-color:#FFFFFF;stop-opacity:0.2"/>
|
|
||||||
<stop offset="1" style="stop-color:#FFFFFF;stop-opacity:0"/>
|
|
||||||
</linearGradient>
|
|
||||||
<path class="st8" d="M21.1,2H2.9c-1,0-1.8,0.8-1.8,1.8v12.7c0,1,0.8,1.8,1.8,1.8h6.4c0,0.7-0.2,1.9-0.6,2.5
|
|
||||||
c-0.2,0.2-0.5,0.3-0.7,0.3s-0.5,0.2-0.5,0.5S7.6,22,7.9,22h8.2c0.3,0,0.5-0.2,0.5-0.5s-0.2-0.5-0.5-0.5c-0.3,0-0.5-0.1-0.7-0.3
|
|
||||||
c-0.5-0.5-0.6-1.7-0.6-2.5h6.4c1,0,1.8-0.8,1.8-1.8V3.8C22.9,2.8,22.1,2,21.1,2z"/>
|
|
||||||
<linearGradient id="SVGID_4_" gradientUnits="userSpaceOnUse" x1="1.7228" y1="746.1478" x2="22.4117" y2="755.7944" gradientTransform="matrix(1 0 0 1 0 -742)">
|
|
||||||
<stop offset="0" style="stop-color:#FFFFFF;stop-opacity:0.2"/>
|
|
||||||
<stop offset="1" style="stop-color:#FFFFFF;stop-opacity:0"/>
|
|
||||||
</linearGradient>
|
|
||||||
<path class="st9" d="M22,3.7c0-0.5-0.4-0.8-0.7-0.8H2.7C2.4,2.9,2,3.3,2,3.7v11h20V3.7z"/>
|
|
||||||
<path class="st10" d="M6.7,13.8c-0.3,0-0.5-0.1-0.6-0.3c-0.4-0.4-0.4-1,0-1.4l3.1-3.1L6.1,5.9c-0.4-0.4-0.4-1,0-1.4
|
|
||||||
c0.4-0.4,1-0.4,1.4,0l3.8,3.8c0.4,0.4,0.4,1,0,1.4l-3.8,3.8C7.3,13.7,7,13.8,6.7,13.8z M17.3,13.8h-4.7c-0.5,0-0.9-0.5-0.9-0.9
|
|
||||||
s0.5-0.9,0.9-0.9h4.7c0.5,0,0.9,0.5,0.9,0.9S17.7,13.8,17.3,13.8z"/>
|
|
||||||
<g>
|
|
||||||
<path class="st11" d="M6.7,13.3c-0.3,0-0.5-0.1-0.6-0.3c-0.4-0.4-0.4-1,0-1.4l3.1-3.1L6.1,5.4c-0.4-0.4-0.4-1,0-1.4
|
|
||||||
c0.4-0.4,1-0.4,1.4,0l3.8,3.8c0.4,0.4,0.4,1,0,1.4l-3.8,3.8C7.3,13.2,7,13.3,6.7,13.3z"/>
|
|
||||||
</g>
|
|
||||||
<g>
|
|
||||||
<path class="st11" d="M17.3,13.3h-4.7c-0.5,0-0.9-0.5-0.9-0.9c0-0.5,0.5-0.9,0.9-0.9h4.7c0.5,0,0.9,0.5,0.9,0.9
|
|
||||||
S17.7,13.3,17.3,13.3z"/>
|
|
||||||
</g>
|
|
||||||
</svg>
|
|
||||||
|
Before Width: | Height: | Size: 4.1 KiB |
@@ -1,63 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<!-- Generator: Adobe Illustrator 24.1.2, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
|
||||||
<svg version="1.1" id="Server" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
|
||||||
viewBox="0 0 24 24" style="enable-background:new 0 0 24 24;" xml:space="preserve">
|
|
||||||
<style type="text/css">
|
|
||||||
.st0{fill:#303C42;}
|
|
||||||
.st1{opacity:0.1;enable-background:new ;}
|
|
||||||
.st2{opacity:0.2;enable-background:new ;}
|
|
||||||
.st3{opacity:0.1;fill:#FFFFFF;enable-background:new ;}
|
|
||||||
.st4{fill:#428EB3;}
|
|
||||||
.st5{fill:#C6CDD1;}
|
|
||||||
.st6{fill:url(#SVGID_1_);}
|
|
||||||
.st7{fill:url(#SVGID_2_);}
|
|
||||||
.st8{fill:#29A1DC;}
|
|
||||||
.st9{opacity:0.2;fill:#FFFFFF;enable-background:new ;}
|
|
||||||
.st10{fill:url(#SVGID_3_);}
|
|
||||||
</style>
|
|
||||||
<path class="st0" d="M2,7.5h18.2v2.7H2V7.5z"/>
|
|
||||||
<path class="st1" d="M2,7.5h18.2v2.7H2V7.5z"/>
|
|
||||||
<path class="st0" d="M1.1,3.8v3.6C1.1,8,1.5,8.4,2,8.4h18.2c0.5,0,0.9-0.4,0.9-0.9V3.8c0-0.5-0.4-0.9-0.9-0.9H2
|
|
||||||
C1.5,2.9,1.1,3.3,1.1,3.8z"/>
|
|
||||||
<path class="st2" d="M20.2,8.1H2c-0.5,0-0.9-0.4-0.9-0.9v0.2C1.1,8,1.5,8.4,2,8.4h18.2c0.5,0,0.9-0.4,0.9-0.9V7.2
|
|
||||||
C21.1,7.7,20.7,8.1,20.2,8.1z"/>
|
|
||||||
<path class="st3" d="M20.2,2.9H2c-0.5,0-0.9,0.4-0.9,0.9v0.2c0-0.5,0.4-0.9,0.9-0.9h18.2c0.5,0,0.9,0.4,0.9,0.9V3.8
|
|
||||||
C21.1,3.3,20.7,2.9,20.2,2.9z"/>
|
|
||||||
<circle class="st4" cx="17.9" cy="5.6" r="0.5"/>
|
|
||||||
<circle class="st4" cx="16.1" cy="5.6" r="0.5"/>
|
|
||||||
<circle class="st4" cx="14.3" cy="5.6" r="0.5"/>
|
|
||||||
<circle class="st5" cx="4.7" cy="5.6" r="0.9"/>
|
|
||||||
<linearGradient id="SVGID_1_" gradientUnits="userSpaceOnUse" x1="4.1628" y1="20.9292" x2="5.1788" y2="19.9133" gradientTransform="matrix(1 0 0 -1 0 26)">
|
|
||||||
<stop offset="0" style="stop-color:#000000;stop-opacity:0.1"/>
|
|
||||||
<stop offset="1" style="stop-color:#000000;stop-opacity:0"/>
|
|
||||||
</linearGradient>
|
|
||||||
<circle class="st6" cx="4.7" cy="5.6" r="0.9"/>
|
|
||||||
<path class="st0" d="M1.1,10.2v3.6c0,0.5,0.4,0.9,0.9,0.9h18.2c0.5,0,0.9-0.4,0.9-0.9v-3.6c0-0.5-0.4-0.9-0.9-0.9H2
|
|
||||||
C1.5,9.3,1.1,9.7,1.1,10.2z"/>
|
|
||||||
<path class="st2" d="M20.2,14.5H2c-0.5,0-0.9-0.4-0.9-0.9v0.2c0,0.5,0.4,0.9,0.9,0.9h18.2c0.5,0,0.9-0.4,0.9-0.9v-0.2
|
|
||||||
C21.1,14.1,20.7,14.5,20.2,14.5z"/>
|
|
||||||
<path class="st3" d="M20.2,9.3H2c-0.5,0-0.9,0.4-0.9,0.9v0.2c0-0.5,0.4-0.9,0.9-0.9h18.2c0.5,0,0.9,0.4,0.9,0.9v-0.2
|
|
||||||
C21.1,9.7,20.7,9.3,20.2,9.3z"/>
|
|
||||||
<circle class="st4" cx="17.9" cy="12" r="0.5"/>
|
|
||||||
<circle class="st4" cx="16.1" cy="12" r="0.5"/>
|
|
||||||
<circle class="st4" cx="14.3" cy="12" r="0.5"/>
|
|
||||||
<circle class="st5" cx="4.7" cy="12" r="0.9"/>
|
|
||||||
<linearGradient id="SVGID_2_" gradientUnits="userSpaceOnUse" x1="4.1628" y1="14.5738" x2="5.1788" y2="13.5578" gradientTransform="matrix(1 0 0 -1 0 26)">
|
|
||||||
<stop offset="0" style="stop-color:#000000;stop-opacity:0.1"/>
|
|
||||||
<stop offset="1" style="stop-color:#000000;stop-opacity:0"/>
|
|
||||||
</linearGradient>
|
|
||||||
<circle class="st7" cx="4.7" cy="12" r="0.9"/>
|
|
||||||
<path class="st8" d="M22.4,13.8h-4.4l-0.9-0.9h-3.8c-0.3,0-0.5,0.2-0.5,0.5v7.3c0,0.3,0.2,0.5,0.5,0.5h9.1c0.3,0,0.5-0.2,0.5-0.5
|
|
||||||
v-6.4C22.9,14,22.7,13.8,22.4,13.8z"/>
|
|
||||||
<path class="st9" d="M22.4,13.8h-4.4l-0.9-0.9h-3.8c-0.3,0-0.5,0.2-0.5,0.5v0.2c0-0.3,0.2-0.5,0.5-0.5h3.8l0.9,0.9h4.4
|
|
||||||
c0.3,0,0.5,0.2,0.5,0.5v-0.2C22.9,14,22.7,13.8,22.4,13.8z"/>
|
|
||||||
<path class="st1" d="M22.4,20.9h-9.1c-0.3,0-0.5-0.2-0.5-0.5v0.2c0,0.3,0.2,0.5,0.5,0.5h9.1c0.3,0,0.5-0.2,0.5-0.5v-0.2
|
|
||||||
C22.9,20.6,22.7,20.9,22.4,20.9z"/>
|
|
||||||
<linearGradient id="SVGID_3_" gradientUnits="userSpaceOnUse" x1="0.7043" y1="21.5139" x2="25.1518" y2="10.1132" gradientTransform="matrix(1 0 0 -1 0 26)">
|
|
||||||
<stop offset="0" style="stop-color:#FFFFFF;stop-opacity:0.2"/>
|
|
||||||
<stop offset="1" style="stop-color:#FFFFFF;stop-opacity:0"/>
|
|
||||||
</linearGradient>
|
|
||||||
<path class="st10" d="M22.4,13.8h-1.4v-3.6c0-0.5-0.4-0.9-0.9-0.9V8.4c0.5,0,0.9-0.4,0.9-0.9V3.8c0-0.5-0.4-0.9-0.9-0.9H2
|
|
||||||
c-0.5,0-0.9,0.4-0.9,0.9v3.6C1.1,8,1.5,8.4,2,8.4v0.9c-0.5,0-0.9,0.4-0.9,0.9v3.6c0,0.5,0.4,0.9,0.9,0.9h10.9v5.9
|
|
||||||
c0,0.3,0.2,0.5,0.5,0.5h9.1c0.3,0,0.5-0.2,0.5-0.5v-6.4C22.9,14,22.7,13.8,22.4,13.8z"/>
|
|
||||||
</svg>
|
|
||||||
|
Before Width: | Height: | Size: 3.8 KiB |
|
Before Width: | Height: | Size: 248 KiB |
|
Before Width: | Height: | Size: 245 KiB |
|
Before Width: | Height: | Size: 281 KiB |
@@ -1,380 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<!-- Generator: Adobe Illustrator 24.1.2, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
|
||||||
<svg version="1.1" id="Server" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
|
||||||
viewBox="0 0 24 24" style="enable-background:new 0 0 24 24;" xml:space="preserve">
|
|
||||||
<style type="text/css">
|
|
||||||
.st0{fill:none;}
|
|
||||||
.st1{fill:#173E51;}
|
|
||||||
.st2{fill:#51BCF0;}
|
|
||||||
.st3{fill:#29A1DC;}
|
|
||||||
.st4{fill:#1381B7;}
|
|
||||||
.st5{fill:#D1D6D8;}
|
|
||||||
.st6{fill:#C0C2C3;}
|
|
||||||
.st7{fill:url(#SVGID_24_);}
|
|
||||||
.st8{fill:#CECECE;}
|
|
||||||
.st9{fill:#727272;}
|
|
||||||
.st10{fill:url(#SVGID_25_);}
|
|
||||||
.st11{fill:url(#SVGID_26_);}
|
|
||||||
.st12{fill:url(#SVGID_27_);}
|
|
||||||
.st13{fill:url(#SVGID_28_);}
|
|
||||||
.st14{fill:url(#SVGID_29_);}
|
|
||||||
.st15{fill:url(#SVGID_30_);}
|
|
||||||
.st16{fill:url(#SVGID_31_);}
|
|
||||||
.st17{fill:url(#SVGID_32_);}
|
|
||||||
.st18{fill:url(#SVGID_33_);}
|
|
||||||
.st19{fill:url(#SVGID_34_);}
|
|
||||||
.st20{fill:url(#SVGID_35_);}
|
|
||||||
.st21{fill:url(#SVGID_36_);}
|
|
||||||
.st22{fill:url(#SVGID_37_);}
|
|
||||||
.st23{fill:url(#SVGID_38_);}
|
|
||||||
.st24{fill:url(#SVGID_39_);}
|
|
||||||
.st25{fill:url(#SVGID_40_);}
|
|
||||||
.st26{fill:url(#SVGID_41_);}
|
|
||||||
.st27{fill:url(#SVGID_42_);}
|
|
||||||
.st28{fill:url(#SVGID_43_);}
|
|
||||||
.st29{fill:url(#SVGID_44_);}
|
|
||||||
.st30{fill:url(#SVGID_45_);}
|
|
||||||
.st31{fill:url(#SVGID_46_);}
|
|
||||||
</style>
|
|
||||||
<pattern y="24" width="103.5" height="99" patternUnits="userSpaceOnUse" id="SVGID_1_" viewBox="0 -99 103.5 99" style="overflow:visible;">
|
|
||||||
<g>
|
|
||||||
<rect y="-99" class="st0" width="103.5" height="99"/>
|
|
||||||
<g>
|
|
||||||
<rect y="-99" class="st0" width="103.5" height="99"/>
|
|
||||||
<path class="st0" d="M0-99h103.5V0H0V-99z"/>
|
|
||||||
<path class="st1" d="M0-99h103.5V0H0V-99z"/>
|
|
||||||
</g>
|
|
||||||
</g>
|
|
||||||
</pattern>
|
|
||||||
<pattern y="24" width="37.5" height="40.5" patternUnits="userSpaceOnUse" id="SVGID_10_" viewBox="0 -40.5 37.5 40.5" style="overflow:visible;">
|
|
||||||
<g>
|
|
||||||
<rect y="-40.5" class="st0" width="37.5" height="40.5"/>
|
|
||||||
<g>
|
|
||||||
<rect y="-40.5" class="st0" width="37.5" height="40.5"/>
|
|
||||||
<path class="st0" d="M0-40.5h37.5V0H0V-40.5z"/>
|
|
||||||
<path class="st2" d="M0-40.5h37.5V0H0V-40.5z"/>
|
|
||||||
</g>
|
|
||||||
</g>
|
|
||||||
</pattern>
|
|
||||||
<pattern y="24" width="103.5" height="99" patternUnits="userSpaceOnUse" id="SVGID_11_" viewBox="0 -99 103.5 99" style="overflow:visible;">
|
|
||||||
<g>
|
|
||||||
<rect y="-99" class="st0" width="103.5" height="99"/>
|
|
||||||
<g>
|
|
||||||
<rect y="-99" class="st0" width="103.5" height="99"/>
|
|
||||||
<path class="st0" d="M0-99h103.5V0H0V-99z"/>
|
|
||||||
<path class="st1" d="M0-99h103.5V0H0V-99z"/>
|
|
||||||
</g>
|
|
||||||
</g>
|
|
||||||
</pattern>
|
|
||||||
<pattern y="24" width="37.5" height="40.5" patternUnits="userSpaceOnUse" id="SVGID_12_" viewBox="0 -40.5 37.5 40.5" style="overflow:visible;">
|
|
||||||
<g>
|
|
||||||
<rect y="-40.5" class="st0" width="37.5" height="40.5"/>
|
|
||||||
<g>
|
|
||||||
<rect y="-40.5" class="st0" width="37.5" height="40.5"/>
|
|
||||||
<path class="st0" d="M0-40.5h37.5V0H0V-40.5z"/>
|
|
||||||
<path class="st2" d="M0-40.5h37.5V0H0V-40.5z"/>
|
|
||||||
</g>
|
|
||||||
</g>
|
|
||||||
</pattern>
|
|
||||||
<pattern y="24" width="103.5" height="99" patternUnits="userSpaceOnUse" id="SVGID_13_" viewBox="0 -99 103.5 99" style="overflow:visible;">
|
|
||||||
<g>
|
|
||||||
<rect y="-99" class="st0" width="103.5" height="99"/>
|
|
||||||
<g>
|
|
||||||
<rect y="-99" class="st0" width="103.5" height="99"/>
|
|
||||||
<path class="st0" d="M0-99h103.5V0H0V-99z"/>
|
|
||||||
<path class="st1" d="M0-99h103.5V0H0V-99z"/>
|
|
||||||
</g>
|
|
||||||
</g>
|
|
||||||
</pattern>
|
|
||||||
<pattern y="24" width="37.5" height="40.5" patternUnits="userSpaceOnUse" id="SVGID_14_" viewBox="0 -40.5 37.5 40.5" style="overflow:visible;">
|
|
||||||
<g>
|
|
||||||
<rect y="-40.5" class="st0" width="37.5" height="40.5"/>
|
|
||||||
<g>
|
|
||||||
<rect y="-40.5" class="st0" width="37.5" height="40.5"/>
|
|
||||||
<path class="st0" d="M0-40.5h37.5V0H0V-40.5z"/>
|
|
||||||
<path class="st2" d="M0-40.5h37.5V0H0V-40.5z"/>
|
|
||||||
</g>
|
|
||||||
</g>
|
|
||||||
</pattern>
|
|
||||||
<pattern y="24" width="103.5" height="99" patternUnits="userSpaceOnUse" id="SVGID_15_" viewBox="0 -99 103.5 99" style="overflow:visible;">
|
|
||||||
<g>
|
|
||||||
<rect y="-99" class="st0" width="103.5" height="99"/>
|
|
||||||
<g>
|
|
||||||
<rect y="-99" class="st0" width="103.5" height="99"/>
|
|
||||||
<path class="st0" d="M0-99h103.5V0H0V-99z"/>
|
|
||||||
<path class="st1" d="M0-99h103.5V0H0V-99z"/>
|
|
||||||
</g>
|
|
||||||
</g>
|
|
||||||
</pattern>
|
|
||||||
<pattern y="24" width="103.5" height="99" patternUnits="userSpaceOnUse" id="SVGID_16_" viewBox="0 -99 103.5 99" style="overflow:visible;">
|
|
||||||
<g>
|
|
||||||
<rect y="-99" class="st0" width="103.5" height="99"/>
|
|
||||||
<g>
|
|
||||||
<rect y="-99" class="st0" width="103.5" height="99"/>
|
|
||||||
<path class="st0" d="M0-99h103.5V0H0V-99z"/>
|
|
||||||
<path class="st1" d="M0-99h103.5V0H0V-99z"/>
|
|
||||||
</g>
|
|
||||||
</g>
|
|
||||||
</pattern>
|
|
||||||
<pattern y="24" width="103.5" height="99" patternUnits="userSpaceOnUse" id="SVGID_17_" viewBox="0 -99 103.5 99" style="overflow:visible;">
|
|
||||||
<g>
|
|
||||||
<rect y="-99" class="st0" width="103.5" height="99"/>
|
|
||||||
<g>
|
|
||||||
<rect y="-99" class="st0" width="103.5" height="99"/>
|
|
||||||
<path class="st0" d="M0-99h103.5V0H0V-99z"/>
|
|
||||||
<path class="st1" d="M0-99h103.5V0H0V-99z"/>
|
|
||||||
</g>
|
|
||||||
</g>
|
|
||||||
</pattern>
|
|
||||||
<pattern y="24" width="103.5" height="99" patternUnits="userSpaceOnUse" id="SVGID_18_" viewBox="0 -99 103.5 99" style="overflow:visible;">
|
|
||||||
<g>
|
|
||||||
<rect y="-99" class="st0" width="103.5" height="99"/>
|
|
||||||
<g>
|
|
||||||
<rect y="-99" class="st0" width="103.5" height="99"/>
|
|
||||||
<path class="st0" d="M0-99h103.5V0H0V-99z"/>
|
|
||||||
<path class="st1" d="M0-99h103.5V0H0V-99z"/>
|
|
||||||
</g>
|
|
||||||
</g>
|
|
||||||
</pattern>
|
|
||||||
<pattern y="24" width="103.5" height="99" patternUnits="userSpaceOnUse" id="SVGID_19_" viewBox="0 -99 103.5 99" style="overflow:visible;">
|
|
||||||
<g>
|
|
||||||
<rect y="-99" class="st0" width="103.5" height="99"/>
|
|
||||||
<g>
|
|
||||||
<rect y="-99" class="st0" width="103.5" height="99"/>
|
|
||||||
<path class="st0" d="M0-99h103.5V0H0V-99z"/>
|
|
||||||
<path class="st1" d="M0-99h103.5V0H0V-99z"/>
|
|
||||||
</g>
|
|
||||||
</g>
|
|
||||||
</pattern>
|
|
||||||
<pattern y="24" width="37.5" height="40.5" patternUnits="userSpaceOnUse" id="SVGID_2_" viewBox="0 -40.5 37.5 40.5" style="overflow:visible;">
|
|
||||||
<g>
|
|
||||||
<rect y="-40.5" class="st0" width="37.5" height="40.5"/>
|
|
||||||
<g>
|
|
||||||
<rect y="-40.5" class="st0" width="37.5" height="40.5"/>
|
|
||||||
<path class="st0" d="M0-40.5h37.5V0H0V-40.5z"/>
|
|
||||||
<path class="st3" d="M0-40.5h37.5V0H0V-40.5z"/>
|
|
||||||
</g>
|
|
||||||
</g>
|
|
||||||
</pattern>
|
|
||||||
<pattern y="24" width="37.5" height="40.5" patternUnits="userSpaceOnUse" id="SVGID_20_" viewBox="0 -40.5 37.5 40.5" style="overflow:visible;">
|
|
||||||
<g>
|
|
||||||
<rect y="-40.5" class="st0" width="37.5" height="40.5"/>
|
|
||||||
<g>
|
|
||||||
<rect y="-40.5" class="st0" width="37.5" height="40.5"/>
|
|
||||||
<path class="st0" d="M0-40.5h37.5V0H0V-40.5z"/>
|
|
||||||
<path class="st3" d="M0-40.5h37.5V0H0V-40.5z"/>
|
|
||||||
</g>
|
|
||||||
</g>
|
|
||||||
</pattern>
|
|
||||||
<pattern y="24" width="37.5" height="40.5" patternUnits="userSpaceOnUse" id="SVGID_21_" viewBox="0 -40.5 37.5 40.5" style="overflow:visible;">
|
|
||||||
<g>
|
|
||||||
<rect y="-40.5" class="st0" width="37.5" height="40.5"/>
|
|
||||||
<g>
|
|
||||||
<rect y="-40.5" class="st0" width="37.5" height="40.5"/>
|
|
||||||
<path class="st0" d="M0-40.5h37.5V0H0V-40.5z"/>
|
|
||||||
<path class="st4" d="M0-40.5h37.5V0H0V-40.5z"/>
|
|
||||||
</g>
|
|
||||||
</g>
|
|
||||||
</pattern>
|
|
||||||
<pattern y="24" width="37.5" height="40.5" patternUnits="userSpaceOnUse" id="SVGID_22_" viewBox="0 -40.5 37.5 40.5" style="overflow:visible;">
|
|
||||||
<g>
|
|
||||||
<rect y="-40.5" class="st0" width="37.5" height="40.5"/>
|
|
||||||
<g>
|
|
||||||
<rect y="-40.5" class="st0" width="37.5" height="40.5"/>
|
|
||||||
<path class="st0" d="M0-40.5h37.5V0H0V-40.5z"/>
|
|
||||||
<path class="st5" d="M0-40.5h37.5V0H0V-40.5z"/>
|
|
||||||
</g>
|
|
||||||
</g>
|
|
||||||
</pattern>
|
|
||||||
<pattern y="24" width="37.5" height="40.5" patternUnits="userSpaceOnUse" id="SVGID_23_" viewBox="0 -40.5 37.5 40.5" style="overflow:visible;">
|
|
||||||
<g>
|
|
||||||
<rect y="-40.5" class="st0" width="37.5" height="40.5"/>
|
|
||||||
<g>
|
|
||||||
<rect y="-40.5" class="st0" width="37.5" height="40.5"/>
|
|
||||||
<path class="st0" d="M0-40.5h37.5V0H0V-40.5z"/>
|
|
||||||
<path class="st2" d="M0-40.5h37.5V0H0V-40.5z"/>
|
|
||||||
</g>
|
|
||||||
</g>
|
|
||||||
</pattern>
|
|
||||||
<pattern y="24" width="37.5" height="40.5" patternUnits="userSpaceOnUse" id="SVGID_3_" viewBox="0 -40.5 37.5 40.5" style="overflow:visible;">
|
|
||||||
<g>
|
|
||||||
<rect y="-40.5" class="st0" width="37.5" height="40.5"/>
|
|
||||||
<g>
|
|
||||||
<rect y="-40.5" class="st0" width="37.5" height="40.5"/>
|
|
||||||
<path class="st0" d="M0-40.5h37.5V0H0V-40.5z"/>
|
|
||||||
<path class="st4" d="M0-40.5h37.5V0H0V-40.5z"/>
|
|
||||||
</g>
|
|
||||||
</g>
|
|
||||||
</pattern>
|
|
||||||
<pattern y="24" width="103.5" height="99" patternUnits="userSpaceOnUse" id="SVGID_4_" viewBox="0 -99 103.5 99" style="overflow:visible;">
|
|
||||||
<g>
|
|
||||||
<rect y="-99" class="st0" width="103.5" height="99"/>
|
|
||||||
<g>
|
|
||||||
<rect y="-99" class="st0" width="103.5" height="99"/>
|
|
||||||
<path class="st0" d="M0-99h103.5V0H0V-99z"/>
|
|
||||||
<path class="st1" d="M0-99h103.5V0H0V-99z"/>
|
|
||||||
</g>
|
|
||||||
</g>
|
|
||||||
</pattern>
|
|
||||||
<pattern y="24" width="37.5" height="40.5" patternUnits="userSpaceOnUse" id="SVGID_5_" viewBox="0 -40.5 37.5 40.5" style="overflow:visible;">
|
|
||||||
<g>
|
|
||||||
<rect y="-40.5" class="st0" width="37.5" height="40.5"/>
|
|
||||||
<g>
|
|
||||||
<rect y="-40.5" class="st0" width="37.5" height="40.5"/>
|
|
||||||
<path class="st0" d="M0-40.5h37.5V0H0V-40.5z"/>
|
|
||||||
<path class="st5" d="M0-40.5h37.5V0H0V-40.5z"/>
|
|
||||||
</g>
|
|
||||||
</g>
|
|
||||||
</pattern>
|
|
||||||
<pattern y="24" width="37.5" height="40.5" patternUnits="userSpaceOnUse" id="SVGID_6_" viewBox="0 -40.5 37.5 40.5" style="overflow:visible;">
|
|
||||||
<g>
|
|
||||||
<rect y="-40.5" class="st0" width="37.5" height="40.5"/>
|
|
||||||
<g>
|
|
||||||
<rect y="-40.5" class="st0" width="37.5" height="40.5"/>
|
|
||||||
<path class="st0" d="M0-40.5h37.5V0H0V-40.5z"/>
|
|
||||||
<path class="st6" d="M0-40.5h37.5V0H0V-40.5z"/>
|
|
||||||
</g>
|
|
||||||
</g>
|
|
||||||
</pattern>
|
|
||||||
<pattern y="24" width="103.5" height="99" patternUnits="userSpaceOnUse" id="SVGID_7_" viewBox="0 -99 103.5 99" style="overflow:visible;">
|
|
||||||
<g>
|
|
||||||
<rect y="-99" class="st0" width="103.5" height="99"/>
|
|
||||||
<g>
|
|
||||||
<rect y="-99" class="st0" width="103.5" height="99"/>
|
|
||||||
<path class="st0" d="M0-99h103.5V0H0V-99z"/>
|
|
||||||
<path class="st1" d="M0-99h103.5V0H0V-99z"/>
|
|
||||||
</g>
|
|
||||||
</g>
|
|
||||||
</pattern>
|
|
||||||
<pattern y="24" width="37.5" height="40.5" patternUnits="userSpaceOnUse" id="SVGID_8_" viewBox="0 -40.5 37.5 40.5" style="overflow:visible;">
|
|
||||||
<g>
|
|
||||||
<rect y="-40.5" class="st0" width="37.5" height="40.5"/>
|
|
||||||
<g>
|
|
||||||
<rect y="-40.5" class="st0" width="37.5" height="40.5"/>
|
|
||||||
<path class="st0" d="M0-40.5h37.5V0H0V-40.5z"/>
|
|
||||||
<path class="st2" d="M0-40.5h37.5V0H0V-40.5z"/>
|
|
||||||
</g>
|
|
||||||
</g>
|
|
||||||
</pattern>
|
|
||||||
<pattern y="24" width="103.5" height="99" patternUnits="userSpaceOnUse" id="SVGID_9_" viewBox="0 -99 103.5 99" style="overflow:visible;">
|
|
||||||
<g>
|
|
||||||
<rect y="-99" class="st0" width="103.5" height="99"/>
|
|
||||||
<g>
|
|
||||||
<rect y="-99" class="st0" width="103.5" height="99"/>
|
|
||||||
<path class="st0" d="M0-99h103.5V0H0V-99z"/>
|
|
||||||
<path class="st1" d="M0-99h103.5V0H0V-99z"/>
|
|
||||||
</g>
|
|
||||||
</g>
|
|
||||||
</pattern>
|
|
||||||
<pattern id="SVGID_24_" xlink:href="#SVGID_1_" patternTransform="matrix(1 0 0 1 -636.654 15918.918)">
|
|
||||||
</pattern>
|
|
||||||
<path class="st7" d="M15.9,4.3h-1.6V4c0-0.4-0.3-0.7-0.8-0.7h-1.6c-0.1,0-0.2,0-0.2-0.1c0-0.1,0-0.3-0.1-0.4
|
|
||||||
c-0.2-0.5-0.7-0.9-1.3-0.9C9.9,1.8,9.4,2,9,2.3c-0.3,0.3-0.5,0.6-0.5,1c0,0,0,0,0,0c0,0-0.1,0-0.1,0H6.8C6.4,3.3,6,3.6,6,4v0.3H4.5
|
|
||||||
C3.7,4.3,3,4.9,3,5.8v14.6c0,0.8,0.7,1.5,1.5,1.5h11.4c0.8,0,1.5-0.7,1.5-1.5V5.8C17.4,4.9,16.7,4.3,15.9,4.3z M6.7,4
|
|
||||||
c0,0,0.1-0.1,0.2-0.1h1.6c0.2,0,0.4-0.1,0.6-0.2c0.1-0.1,0.2-0.3,0.2-0.5l0,0c0-0.2,0.1-0.3,0.3-0.5c0.3-0.2,0.6-0.3,0.9-0.3
|
|
||||||
c0.3,0.1,0.7,0.3,0.8,0.6c0,0.1,0,0.1,0,0.2c0,0.2,0.1,0.3,0.2,0.4c0.2,0.2,0.3,0.3,0.6,0.3h1.6c0.1,0,0.2,0.1,0.2,0.1v1.2
|
|
||||||
c0,0-0.1,0.1-0.2,0.1H6.8c-0.1,0-0.1,0-0.2-0.1C6.7,5.2,6.7,4,6.7,4z M16.8,20.4c0,0.5-0.4,0.9-0.9,0.9H4.5c0,0-0.1,0-0.1,0
|
|
||||||
s0,0-0.1,0s-0.1,0-0.1,0c0,0-0.1,0-0.1,0S4,21.2,4,21.1c0,0-0.1-0.1-0.1-0.1c0,0-0.1-0.1-0.1-0.1c0,0,0-0.1-0.1-0.1
|
|
||||||
c0,0-0.1-0.1-0.1-0.1c-0.1-0.1-0.1-0.3-0.1-0.4V5.8c0-0.5,0.4-0.9,0.9-0.9h1.6v0.3c0,0.4,0.3,0.7,0.8,0.7h6.7c0.4,0,0.8-0.3,0.8-0.7
|
|
||||||
V4.9h1.6c0.2,0,0.3,0,0.4,0.1l0,0c0.1,0,0.1,0.1,0.2,0.1c0,0,0,0,0.1,0.1c0.1,0.1,0.1,0.1,0.1,0.2c0,0,0,0.1,0.1,0.1
|
|
||||||
c0,0,0,0.1,0,0.1c0,0,0,0.1,0,0.1s0,0,0,0.1s0,0.1,0,0.1L16.8,20.4L16.8,20.4z"/>
|
|
||||||
<path class="st8" d="M16.8,5.7C16.8,5.7,16.8,5.7,16.8,5.7c0-0.1,0-0.1,0-0.2c0,0,0-0.1,0-0.1c0,0,0-0.1-0.1-0.1
|
|
||||||
c0-0.1-0.1-0.1-0.1-0.2C16.5,5.1,16.4,5,16.3,5l0,0c-0.1-0.1-0.3-0.1-0.4-0.1h-1.6v0.3c0,0.4-0.3,0.7-0.8,0.7H6.8
|
|
||||||
c-0.4,0-0.8-0.3-0.8-0.7V4.9H4.5C4,4.9,3.6,5.3,3.6,5.8v14.6c0,0.2,0,0.3,0.1,0.4c0,0,0,0.1,0.1,0.1c0,0.1,0,0.1,0.1,0.1
|
|
||||||
c0,0,0.1,0.1,0.1,0.1c0,0,0.1,0.1,0.1,0.1c0,0,0.1,0,0.1,0.1c0.1,0,0.1,0,0.1,0.1c0,0,0.1,0,0.1,0s0,0,0.1,0s0.1,0,0.1,0h11.4
|
|
||||||
c0.5,0,0.9-0.4,0.9-0.9L16.8,5.7C16.8,5.7,16.8,5.7,16.8,5.7z M4.6,6.9c0-0.2,0.1-0.3,0.3-0.3h10.7c0.2,0,0.3,0.1,0.3,0.3v13.3
|
|
||||||
c0,0.2-0.1,0.3-0.3,0.3H4.8c-0.2,0-0.3-0.1-0.3-0.3L4.6,6.9L4.6,6.9z"/>
|
|
||||||
<path class="st9" d="M16.8,5.8v14.6c0,0.5-0.4,0.9-0.9,0.9H4.5c-0.3,0-0.7-0.2-0.8-0.5c0.1,0.1,0.3,0.1,0.4,0.1h11.4
|
|
||||||
c0.5,0,0.9-0.4,0.9-0.9V5.4c0-0.2,0-0.3-0.1-0.4C16.6,5.1,16.8,5.4,16.8,5.8z"/>
|
|
||||||
<pattern id="SVGID_25_" xlink:href="#SVGID_2_" patternTransform="matrix(1 0 0 1 -585.044 15869.5332)">
|
|
||||||
</pattern>
|
|
||||||
<path class="st10" d="M13.7,4v1.2c0,0-0.1,0.1-0.2,0.1H6.8c-0.1,0-0.1,0-0.2-0.1V4c0,0,0.1-0.1,0.2-0.1h1.6c0.2,0,0.4-0.1,0.6-0.2
|
|
||||||
c0.1-0.1,0.2-0.3,0.2-0.5l0,0c0-0.2,0.1-0.3,0.3-0.5c0.3-0.2,0.6-0.3,0.9-0.3c0.3,0.1,0.7,0.3,0.8,0.6c0,0.1,0,0.1,0,0.2
|
|
||||||
c0,0.2,0.1,0.3,0.2,0.4c0.2,0.2,0.3,0.3,0.6,0.3L13.7,4C13.7,3.9,13.7,4,13.7,4z"/>
|
|
||||||
<pattern id="SVGID_26_" xlink:href="#SVGID_3_" patternTransform="matrix(1 0 0 1 -585.044 15869.5332)">
|
|
||||||
</pattern>
|
|
||||||
<path class="st11" d="M13.7,4v1.2c0,0-0.1,0.1-0.2,0.1H6.8c-0.1,0-0.1,0-0.2-0.1V4.8H13c0.1,0,0.2,0,0.2-0.1V3.9h0.4
|
|
||||||
C13.7,3.9,13.7,4,13.7,4z"/>
|
|
||||||
<pattern id="SVGID_27_" xlink:href="#SVGID_4_" patternTransform="matrix(1 0 0 1 -636.654 15918.918)">
|
|
||||||
</pattern>
|
|
||||||
<path class="st12" d="M15.5,6.6H4.8c-0.2,0-0.3,0.1-0.3,0.3v13.3c0,0.2,0.1,0.3,0.3,0.3h10.7c0.2,0,0.3-0.1,0.3-0.3V6.9
|
|
||||||
C15.9,6.7,15.7,6.6,15.5,6.6L15.5,6.6z M15.2,19.9H5.2V7.2h10.1V19.9z"/>
|
|
||||||
<pattern id="SVGID_28_" xlink:href="#SVGID_5_" patternTransform="matrix(1 0 0 1 -585.044 15869.5332)">
|
|
||||||
</pattern>
|
|
||||||
<path class="st13" d="M5.2,7.2v12.7h10.1V7.2H5.2z M8.6,18.8c0,0.2-0.1,0.3-0.3,0.3H6.8c-0.2,0-0.3-0.1-0.3-0.3v-1.5
|
|
||||||
c0-0.2,0.1-0.3,0.3-0.3h1.5c0.2,0,0.3,0.1,0.3,0.3V18.8z M8.6,15.8c0,0.2-0.1,0.3-0.3,0.3H6.8c-0.2,0-0.3-0.1-0.3-0.3v-1.5
|
|
||||||
c0-0.2,0.1-0.3,0.3-0.3h1.5c0.2,0,0.3,0.1,0.3,0.3V15.8z M8.6,12.8c0,0.2-0.1,0.3-0.3,0.3H6.8c-0.2,0-0.3-0.1-0.3-0.3v-1.5
|
|
||||||
c0-0.2,0.1-0.3,0.3-0.3h1.5c0.2,0,0.3,0.1,0.3,0.3V12.8z M8.6,9.8c0,0.2-0.1,0.3-0.3,0.3H6.8c-0.2,0-0.3-0.1-0.3-0.3V8.2
|
|
||||||
c0-0.2,0.1-0.3,0.3-0.3h1.5c0.2,0,0.3,0.1,0.3,0.3V9.8z M13.6,18.4H9.5c-0.2,0-0.3-0.1-0.3-0.3c0-0.2,0.1-0.3,0.3-0.3h4.1
|
|
||||||
c0.2,0,0.3,0.1,0.3,0.3C13.9,18.2,13.7,18.4,13.6,18.4z M13.6,15.4H9.5c-0.2,0-0.3-0.1-0.3-0.3s0.1-0.3,0.3-0.3h4.1
|
|
||||||
c0.2,0,0.3,0.1,0.3,0.3S13.7,15.4,13.6,15.4z M13.6,12.3H9.5c-0.2,0-0.3-0.1-0.3-0.3s0.1-0.3,0.3-0.3h4.1c0.2,0,0.3,0.1,0.3,0.3
|
|
||||||
S13.7,12.3,13.6,12.3z M13.6,9.3H9.5C9.3,9.3,9.2,9.2,9.2,9c0-0.2,0.1-0.3,0.3-0.3h4.1c0.2,0,0.3,0.1,0.3,0.3
|
|
||||||
C13.9,9.2,13.7,9.3,13.6,9.3z"/>
|
|
||||||
<pattern id="SVGID_29_" xlink:href="#SVGID_6_" patternTransform="matrix(1 0 0 1 -585.044 15869.5332)">
|
|
||||||
</pattern>
|
|
||||||
<path class="st14" d="M15.2,7.2v12.7H5.2v-0.6h9.5V7.2H15.2z"/>
|
|
||||||
<pattern id="SVGID_30_" xlink:href="#SVGID_7_" patternTransform="matrix(1 0 0 1 -636.654 15918.918)">
|
|
||||||
</pattern>
|
|
||||||
<path class="st15" d="M8.3,8H6.8C6.7,8,6.5,8.1,6.5,8.3v1.5c0,0.2,0.1,0.3,0.3,0.3h1.5c0.2,0,0.3-0.1,0.3-0.3V8.3
|
|
||||||
C8.6,8.1,8.5,8,8.3,8z M8,9.5H7.1V8.6H8V9.5z"/>
|
|
||||||
<pattern id="SVGID_31_" xlink:href="#SVGID_8_" patternTransform="matrix(1 0 0 1 -585.044 15869.5332)">
|
|
||||||
</pattern>
|
|
||||||
<path class="st16" d="M7.1,8.6H8v0.9H7.1V8.6z"/>
|
|
||||||
<pattern id="SVGID_32_" xlink:href="#SVGID_9_" patternTransform="matrix(1 0 0 1 -636.654 15918.918)">
|
|
||||||
</pattern>
|
|
||||||
<path class="st17" d="M8.3,11H6.8c-0.2,0-0.3,0.1-0.3,0.3v1.5c0,0.2,0.1,0.3,0.3,0.3h1.5c0.2,0,0.3-0.1,0.3-0.3v-1.5
|
|
||||||
C8.6,11.1,8.5,11,8.3,11z M8,12.5H7.1v-0.9H8V12.5z"/>
|
|
||||||
<pattern id="SVGID_33_" xlink:href="#SVGID_10_" patternTransform="matrix(1 0 0 1 -585.044 15869.5332)">
|
|
||||||
</pattern>
|
|
||||||
<path class="st18" d="M7.1,11.6H8v0.9H7.1V11.6z"/>
|
|
||||||
<pattern id="SVGID_34_" xlink:href="#SVGID_11_" patternTransform="matrix(1 0 0 1 -636.654 15918.918)">
|
|
||||||
</pattern>
|
|
||||||
<path class="st19" d="M8.3,14H6.8c-0.2,0-0.3,0.1-0.3,0.3v1.5c0,0.2,0.1,0.3,0.3,0.3h1.5c0.2,0,0.3-0.1,0.3-0.3v-1.5
|
|
||||||
C8.6,14.2,8.5,14,8.3,14z M8,15.5H7.1v-0.9H8V15.5z"/>
|
|
||||||
<pattern id="SVGID_35_" xlink:href="#SVGID_12_" patternTransform="matrix(1 0 0 1 -585.044 15869.5332)">
|
|
||||||
</pattern>
|
|
||||||
<path class="st20" d="M7.1,14.6H8v0.9H7.1V14.6z"/>
|
|
||||||
<pattern id="SVGID_36_" xlink:href="#SVGID_13_" patternTransform="matrix(1 0 0 1 -636.654 15918.918)">
|
|
||||||
</pattern>
|
|
||||||
<path class="st21" d="M8.3,17H6.8c-0.2,0-0.3,0.1-0.3,0.3l0,0v1.5c0,0.2,0.1,0.3,0.3,0.3h1.5c0.2,0,0.3-0.1,0.3-0.3v-1.5
|
|
||||||
C8.6,17.2,8.5,17,8.3,17z M8,18.6H7.1v-0.9H8V18.6z"/>
|
|
||||||
<pattern id="SVGID_37_" xlink:href="#SVGID_14_" patternTransform="matrix(1 0 0 1 -585.044 15869.5332)">
|
|
||||||
</pattern>
|
|
||||||
<path class="st22" d="M7.1,17.7H8v0.9H7.1V17.7z"/>
|
|
||||||
<pattern id="SVGID_38_" xlink:href="#SVGID_15_" patternTransform="matrix(1 0 0 1 -636.654 15918.918)">
|
|
||||||
</pattern>
|
|
||||||
<path class="st23" d="M13.9,9c0,0.2-0.1,0.3-0.3,0.3H9.5C9.3,9.3,9.2,9.2,9.2,9c0-0.2,0.1-0.3,0.3-0.3h4.1C13.7,8.7,13.9,8.9,13.9,9
|
|
||||||
z"/>
|
|
||||||
<pattern id="SVGID_39_" xlink:href="#SVGID_16_" patternTransform="matrix(1 0 0 1 -636.654 15918.918)">
|
|
||||||
</pattern>
|
|
||||||
<path class="st24" d="M13.9,12.1c0,0.2-0.1,0.3-0.3,0.3H9.5c-0.2,0-0.3-0.1-0.3-0.3s0.1-0.3,0.3-0.3h4.1
|
|
||||||
C13.7,11.7,13.9,11.9,13.9,12.1z"/>
|
|
||||||
<pattern id="SVGID_40_" xlink:href="#SVGID_17_" patternTransform="matrix(1 0 0 1 -636.654 15918.918)">
|
|
||||||
</pattern>
|
|
||||||
<path class="st25" d="M13.9,15.1c0,0.2-0.1,0.3-0.3,0.3H9.5c-0.2,0-0.3-0.1-0.3-0.3s0.1-0.3,0.3-0.3h4.1
|
|
||||||
C13.7,14.8,13.9,14.9,13.9,15.1z"/>
|
|
||||||
<pattern id="SVGID_41_" xlink:href="#SVGID_18_" patternTransform="matrix(1 0 0 1 -636.654 15918.918)">
|
|
||||||
</pattern>
|
|
||||||
<path class="st26" d="M13.9,18.1c0,0.2-0.1,0.3-0.3,0.3H9.5c-0.2,0-0.3-0.1-0.3-0.3c0-0.2,0.1-0.3,0.3-0.3h4.1
|
|
||||||
C13.7,17.8,13.9,17.9,13.9,18.1z"/>
|
|
||||||
<pattern id="SVGID_42_" xlink:href="#SVGID_19_" patternTransform="matrix(1 0 0 1 -636.654 15918.918)">
|
|
||||||
</pattern>
|
|
||||||
<path class="st27" d="M21,19.3C21,19.3,20.9,19.3,21,19.3l0-9.4l0,0v0c0,0,0-0.1,0-0.1l0,0l-1-2.3c-0.1-0.1-0.2-0.2-0.3-0.2
|
|
||||||
s-0.2,0.1-0.3,0.2l-0.9,2.3l0,0c0,0,0,0,0,0.1s0,0,0,0.1l0,0l0,10.7c0,0.7,0.6,1.3,1.3,1.3l0,0h0.1c0.3,0,0.6-0.1,0.9-0.4
|
|
||||||
c0.2-0.2,0.4-0.5,0.4-0.9V19.3C20.9,19.3,20.9,19.3,21,19.3z M19.6,8.4l0.5,1.3h-1L19.6,8.4z M20.3,10.2l0,8.8H19l0-8.8
|
|
||||||
C19,10.3,20.3,10.2,20.3,10.2z M20.2,21.1c-0.1,0.1-0.3,0.2-0.4,0.2h-0.1c-0.2,0-0.3-0.1-0.4-0.2S19,20.8,19,20.7v-1h1.3v1
|
|
||||||
C20.4,20.8,20.3,21,20.2,21.1z"/>
|
|
||||||
<pattern id="SVGID_43_" xlink:href="#SVGID_20_" patternTransform="matrix(1 0 0 1 -585.044 15869.5332)">
|
|
||||||
</pattern>
|
|
||||||
<path class="st28" d="M20.4,19H19l0-8.8h1.3L20.4,19z"/>
|
|
||||||
<pattern id="SVGID_44_" xlink:href="#SVGID_21_" patternTransform="matrix(1 0 0 1 -585.044 15869.5332)">
|
|
||||||
</pattern>
|
|
||||||
<path class="st29" d="M20.4,19H19v-0.4h1.1l0-8.4h0.3L20.4,19z"/>
|
|
||||||
<pattern id="SVGID_45_" xlink:href="#SVGID_22_" patternTransform="matrix(1 0 0 1 -585.044 15869.5332)">
|
|
||||||
</pattern>
|
|
||||||
<path class="st30" d="M20.2,9.7h-1l0.5-1.3L20.2,9.7z"/>
|
|
||||||
<pattern id="SVGID_46_" xlink:href="#SVGID_23_" patternTransform="matrix(1 0 0 1 -585.044 15869.5332)">
|
|
||||||
</pattern>
|
|
||||||
<path class="st31" d="M20.4,20.6c0,0.2-0.1,0.3-0.2,0.4c-0.1,0.1-0.3,0.2-0.4,0.2h-0.1c-0.2,0-0.3-0.1-0.4-0.2
|
|
||||||
c-0.1-0.1-0.2-0.3-0.2-0.4v-1h1.3V20.6z"/>
|
|
||||||
</svg>
|
|
||||||
|
Before Width: | Height: | Size: 18 KiB |
|
Before Width: | Height: | Size: 302 KiB |
|
Before Width: | Height: | Size: 355 KiB |
|
Before Width: | Height: | Size: 351 KiB |
@@ -1,55 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<!-- Generator: Adobe Illustrator 24.1.2, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
|
||||||
<svg version="1.1" id="Server" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
|
||||||
viewBox="0 0 24 24" style="enable-background:new 0 0 24 24;" xml:space="preserve">
|
|
||||||
<style type="text/css">
|
|
||||||
.st0{fill:#29A1DC;}
|
|
||||||
.st1{clip-path:url(#SVGID_2_);fill:#7DBCE7;}
|
|
||||||
.st2{fill:#010101;}
|
|
||||||
.st3{fill:#F5CCB3;}
|
|
||||||
.st4{fill:#FFFFFF;}
|
|
||||||
.st5{fill:#AF5C51;}
|
|
||||||
.st6{fill:#C4E5D9;}
|
|
||||||
</style>
|
|
||||||
<path class="st0" d="M18.6,19.8c0,1.3-2.9,2.3-6.5,2.3s-6.5-1-6.5-2.3c0-1.3,2.9-2.3,6.5-2.3S18.6,18.5,18.6,19.8z"/>
|
|
||||||
<g>
|
|
||||||
<defs>
|
|
||||||
<path id="SVGID_1_" d="M9.3,23.8c0.1,0.7,0.5,1.1,0.8,1.3h3.7c0.5-0.3,0.9-0.9,0.9-2v-2.8c0,0,0.1-0.7,0.7-0.9c0,0,0.4-0.3,0-0.4
|
|
||||||
c0,0-1.8-0.1-1.8,1.3v2.1c0,0,0.1,0.8-0.3,1.1V21c0,0,0-0.8,0.5-1.2c0,0,0.3-0.5-0.3-0.4c0,0-1.2,0.2-1.3,1.6l0,2.7h-0.3l0-2.7
|
|
||||||
c-0.1-1.4-1.3-1.6-1.3-1.6c-0.6-0.1-0.3,0.4-0.3,0.4c0.4,0.3,0.5,1.2,0.5,1.2v2.7c-0.4-0.3-0.3-1.1-0.3-1.1v-2.1
|
|
||||||
c0-1.4-1.8-1.3-1.8-1.3c-0.4,0.1,0,0.4,0,0.4c0.6,0.2,0.7,0.9,0.7,0.9v2L9.3,23.8L9.3,23.8z"/>
|
|
||||||
</defs>
|
|
||||||
<clipPath id="SVGID_2_">
|
|
||||||
<use xlink:href="#SVGID_1_" style="overflow:visible;"/>
|
|
||||||
</clipPath>
|
|
||||||
<path class="st1" d="M18.6,19.8c0,1.3-2.9,2.3-6.5,2.3s-6.5-1-6.5-2.3c0-1.3,2.9-2.3,6.5-2.3S18.6,18.5,18.6,19.8z"/>
|
|
||||||
</g>
|
|
||||||
<path class="st0" d="M4.7,13.1l-0.2,0.6c0,0,0,0.2,0.2,0.3c0.2,0,0.2-0.2,0.2-0.3L4.7,13.1L4.7,13.1z"/>
|
|
||||||
<path class="st2" d="M23.5,10.4L23.5,10.4c-1.9-0.5-3.8-0.5-5-0.4c0.2-0.7,0.3-1.5,0.3-2.4c0-1.3-0.5-2.3-1.3-3.1
|
|
||||||
C17.6,4,17.8,3,17.3,1.8c0,0-0.9-0.3-2.9,1.1c-0.8-0.2-1.6-0.3-2.5-0.3c-0.9,0-1.8,0.1-2.7,0.4c-2.1-1.4-3-1.1-3-1.1
|
|
||||||
C5.7,3.3,6,4.4,6.1,4.6C5.4,5.4,5,6.4,5,7.6c0,0.9,0.1,1.7,0.4,2.4c-1.2,0-3.1,0-4.9,0.3l0,0.1C2.3,10,4.2,10,5.4,10
|
|
||||||
c0.1,0.1,0.1,0.3,0.2,0.4c-1.2,0-3.2,0.2-5.1,0.7l0,0.1c1.9-0.5,3.9-0.7,5.1-0.7c0.7,1.3,2.1,2.1,4.5,2.4c-0.4,0.2-0.7,0.6-0.8,1.3
|
|
||||||
c-0.5,0.2-2,0.8-2.9-0.8c0,0-0.5-0.9-1.5-1c0,0-0.9,0-0.1,0.6c0,0,0.6,0.3,1.1,1.4c0,0,0.6,1.9,3.3,1.3v1.9c0,0-0.1,0.7-0.7,0.9
|
|
||||||
c0,0-0.4,0.3,0,0.4c0,0,1.8,0.1,1.8-1.3v-2.1c0,0-0.1-0.8,0.3-1.1V18c0,0,0,0.8-0.5,1.2c0,0-0.3,0.5,0.3,0.4c0,0,1.2-0.2,1.3-1.6
|
|
||||||
l0-3.5h0.3l0,3.5c0.1,1.4,1.3,1.6,1.3,1.6c0.6,0.1,0.3-0.4,0.3-0.4c-0.4-0.3-0.5-1.2-0.5-1.2v-3.5c0.4,0.3,0.3,1.1,0.3,1.1v2.1
|
|
||||||
c0,1.4,1.8,1.3,1.8,1.3c0.4-0.1,0-0.4,0-0.4c-0.6-0.2-0.7-0.9-0.7-0.9v-2.8c0-1.1-0.5-1.7-0.9-2c2.6-0.3,3.9-1.1,4.4-2.4
|
|
||||||
c1.1,0,3.2,0.2,5.2,0.7l0-0.1c-2-0.6-4-0.7-5.2-0.7c0.1-0.1,0.1-0.3,0.1-0.4C19.7,10,21.6,10,23.5,10.4L23.5,10.4z"/>
|
|
||||||
<path class="st3" d="M16.2,7.5c0.6,0.5,0.9,1.1,0.9,1.8c0,3.1-2.3,3.2-5.2,3.2S6.8,12,6.8,9.3c0-0.7,0.3-1.3,0.9-1.8
|
|
||||||
c0.9-0.8,2.5-0.4,4.3-0.4S15.3,6.6,16.2,7.5L16.2,7.5z"/>
|
|
||||||
<path class="st4" d="M10.2,9.4c0,0.9-0.5,1.5-1.1,1.5s-1.1-0.7-1.1-1.5c0-0.9,0.5-1.5,1.1-1.5C9.7,7.9,10.2,8.6,10.2,9.4z"/>
|
|
||||||
<path class="st5" d="M9.9,9.5c0,0.6-0.3,1-0.7,1c-0.4,0-0.7-0.5-0.7-1c0-0.6,0.3-1,0.7-1C9.6,8.4,9.9,8.9,9.9,9.5z"/>
|
|
||||||
<path class="st4" d="M16,9.4c0,0.9-0.5,1.5-1.1,1.5c-0.6,0-1.1-0.7-1.1-1.5c0-0.9,0.5-1.5,1.1-1.5C15.5,7.9,16,8.6,16,9.4z"/>
|
|
||||||
<path class="st5" d="M15.6,9.5c0,0.6-0.3,1-0.7,1c-0.4,0-0.7-0.5-0.7-1c0-0.6,0.3-1,0.7-1C15.3,8.4,15.6,8.9,15.6,9.5z M12.2,10.8
|
|
||||||
c0,0.1-0.1,0.3-0.3,0.3c-0.1,0-0.3-0.1-0.3-0.3c0-0.2,0.1-0.3,0.3-0.3C12.1,10.5,12.2,10.7,12.2,10.8z M11.3,11.5c0,0,0-0.1,0.1-0.1
|
|
||||||
c0,0,0.1,0,0.1,0.1c0.1,0.2,0.3,0.3,0.5,0.3c0.2,0,0.4-0.1,0.5-0.3c0,0,0.1-0.1,0.1-0.1c0,0,0.1,0.1,0.1,0.1
|
|
||||||
c-0.1,0.3-0.3,0.4-0.6,0.4C11.7,11.9,11.4,11.8,11.3,11.5L11.3,11.5z"/>
|
|
||||||
<path class="st6" d="M5.4,12.7c0,0.1-0.1,0.1-0.2,0.1c-0.1,0-0.2-0.1-0.2-0.1s0.1-0.1,0.2-0.1C5.3,12.6,5.4,12.6,5.4,12.7z M5.9,13
|
|
||||||
c0,0.1-0.1,0.1-0.2,0.1c-0.1,0-0.2-0.1-0.2-0.1s0.1-0.1,0.2-0.1C5.8,12.9,5.9,12.9,5.9,13z M6.2,13.4c0,0.1-0.1,0.1-0.2,0.1
|
|
||||||
c-0.1,0-0.2-0.1-0.2-0.1c0-0.1,0.1-0.1,0.2-0.1C6.1,13.3,6.2,13.3,6.2,13.4z M6.5,13.8c0,0.1-0.1,0.1-0.2,0.1
|
|
||||||
c-0.1,0-0.2-0.1-0.2-0.1c0-0.1,0.1-0.1,0.2-0.1C6.4,13.7,6.5,13.7,6.5,13.8z M6.8,14.2c0,0.1-0.1,0.1-0.2,0.1
|
|
||||||
c-0.1,0-0.2-0.1-0.2-0.1c0-0.1,0.1-0.1,0.2-0.1C6.7,14.1,6.8,14.1,6.8,14.2z M7.2,14.6c0,0.1-0.1,0.1-0.2,0.1
|
|
||||||
c-0.1,0-0.2-0.1-0.2-0.1c0-0.1,0.1-0.1,0.2-0.1C7.2,14.4,7.2,14.5,7.2,14.6z M7.8,14.8c0,0.1-0.1,0.1-0.2,0.1
|
|
||||||
c-0.1,0-0.2-0.1-0.2-0.1c0-0.1,0.1-0.1,0.2-0.1C7.8,14.7,7.8,14.7,7.8,14.8z M8.5,14.8c0,0.1-0.1,0.1-0.2,0.1
|
|
||||||
c-0.1,0-0.2-0.1-0.2-0.1c0-0.1,0.1-0.1,0.2-0.1C8.4,14.7,8.5,14.7,8.5,14.8z M9.1,14.7c0,0.1-0.1,0.1-0.2,0.1
|
|
||||||
c-0.1,0-0.2-0.1-0.2-0.1c0-0.1,0.1-0.1,0.2-0.1C9,14.6,9.1,14.6,9.1,14.7z"/>
|
|
||||||
</svg>
|
|
||||||
|
Before Width: | Height: | Size: 4.4 KiB |
|
Before Width: | Height: | Size: 318 KiB |
|
Before Width: | Height: | Size: 460 KiB |
|
Before Width: | Height: | Size: 22 KiB |
@@ -1,690 +0,0 @@
|
|||||||
<section class="oe_container custom_style description-odoo-font">
|
|
||||||
<div id="wrap" class="oe_structure oe_empty">
|
|
||||||
<section class="s_text_block o_colored_level pb120 pt168 oe_img_bg o_bg_img_center" data-snippet="s_text_block" data-name="Text" style="background-image: url('tower_website.svg'); position: relative;">
|
|
||||||
<div class="container">
|
|
||||||
<div class="row">
|
|
||||||
<div class="col-lg-6">
|
|
||||||
<h2 style="color: #0D3045; font-weight: 500; font-size: 48px" data-bs-original-title="" title="" aria-describedby="tooltip483440">
|
|
||||||
<strong style="font-weight: 800; color: #29A1DC; vertical-align: text-bottom;">| </strong> What is Cetmix Tower?
|
|
||||||
<br/>
|
|
||||||
</h2>
|
|
||||||
<p style="font-size: 18px; font-weight:300">
|
|
||||||
<b>Cetmix Tower</b> is an <b>open-source</b> DevOps framework built on Odoo. <br/><br/>
|
|
||||||
It empowers you to deploy, manage, and automate applications <b>directly from Odoo</b> whether it's Odoo itself, WordPress, ERPNext or Magento.<br/><br/>
|
|
||||||
Unlike traditional hosting platforms, Cetmix Tower is <b>not tied to any specific technology</b>. You can use it with Docker, Kubernetes, a bare operating system or whatever your infrastructure requires.<br/><br/>
|
|
||||||
Fully <b>self-hosted</b> and deeply integrated with the Odoo ecosystem, it gives you complete control over your servers and applications. <br/><br/>
|
|
||||||
<b>Cetmix Tower</b> is distributed under the <b>AGPL-3 license</b>, ensuring transparency and freedom.
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
<div class="col-lg-6">
|
|
||||||
<img src="cetmix_tower_server_kanban.png" alt="" class="img img-fluid o_we_custom_image" data-original-id="1256" data-original-src="cetmix_tower_server_kanban.png" data-mimetype="image/png" style="width: 100% !important;" loading="eager"/>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</section>
|
|
||||||
|
|
||||||
<section class="s_text_image pb32 o_colored_level o_cc o_cc1" data-snippet="s_image_text" style="color: #343A40;" data-name="Custom Image - Text (2)" data-bs-original-title="" title="" aria-describedby="tooltip882751">
|
|
||||||
<div class="container">
|
|
||||||
<div class="row">
|
|
||||||
<div class="col-lg-6 table-responsive">
|
|
||||||
<h2 style="color: #0D3045; font-weight: 500; font-size: 48px"> <strong style="font-weight: 800; color: #29A1DC; vertical-align: text-bottom;">| </strong>Key Differences</h2>
|
|
||||||
<!-- Bootstrap 5 CSS -->
|
|
||||||
<table class="table table-striped align-middle border">
|
|
||||||
<thead>
|
|
||||||
<tr class="align-middle">
|
|
||||||
<th class="text-center"> </th>
|
|
||||||
<th class="text-center"><b>Cetmix Tower</b></th>
|
|
||||||
<th class="text-center">Odoo.sh</th>
|
|
||||||
<th class="text-center">Other Odoo Hosting</th>
|
|
||||||
<th class="text-center">Generic DevOps Tools</th>
|
|
||||||
</tr>
|
|
||||||
</thead>
|
|
||||||
<tbody>
|
|
||||||
<tr>
|
|
||||||
<td class="text-start">Can Deploy Odoo Enterprise</td>
|
|
||||||
<td class="text-center"><i class="fa fa-check text-success"></i></td>
|
|
||||||
<td class="text-center"><i class="fa fa-check text-success"></i></td>
|
|
||||||
<td class="text-center"><i class="fa fa-check text-success"></i></td>
|
|
||||||
<td class="text-center"><i class="fa fa-check text-success"></i></td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td class="text-start">Can Deploy Odoo Community</td>
|
|
||||||
<td class="text-center"><i class="fa fa-check text-success"></i></td>
|
|
||||||
<td class="text-center"><i class="fa fa-close text-danger"></i></td>
|
|
||||||
<td class="text-center"><i class="fa fa-check text-success"></i></td>
|
|
||||||
<td class="text-center"><i class="fa fa-check text-success"></i></td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td class="text-start">Can Deploy Other Software besides Odoo</td>
|
|
||||||
<td class="text-center"><i class="fa fa-check text-success"></i></td>
|
|
||||||
<td class="text-center"><i class="fa fa-close text-danger"></i></td>
|
|
||||||
<td class="text-center"><i class="fa fa-close text-danger"></i></td>
|
|
||||||
<td class="text-center"><i class="fa fa-check text-success"></i></td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td class="text-start">Runs on Your Own Server</td>
|
|
||||||
<td class="text-center"><i class="fa fa-check text-success"></i></td>
|
|
||||||
<td class="text-center"><i class="fa fa-close text-danger"></i></td>
|
|
||||||
<td class="text-center"><i class="fa fa-close text-danger"></i></td>
|
|
||||||
<td class="text-center">Some*</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td class="text-start">Native Odoo App</td>
|
|
||||||
<td class="text-center"><i class="fa fa-check text-success"></i></td>
|
|
||||||
<td class="text-center"><i class="fa fa-close text-danger"></i></td>
|
|
||||||
<td class="text-center"><i class="fa fa-close text-danger"></i></td>
|
|
||||||
<td class="text-center"><i class="fa fa-close text-danger"></i></td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td class="text-start">Export/Import & Share Configurations</td>
|
|
||||||
<td class="text-center"><i class="fa fa-check text-success"></i></td>
|
|
||||||
<td class="text-center"><i class="fa fa-close text-danger"></i></td>
|
|
||||||
<td class="text-center"><i class="fa fa-close text-danger"></i></td>
|
|
||||||
<td class="text-center">Some*</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td class="text-start">Is Open Source</td>
|
|
||||||
<td class="text-center"><i class="fa fa-check text-success"></i></td>
|
|
||||||
<td class="text-center"><i class="fa fa-close text-danger"></i></td>
|
|
||||||
<td class="text-center"><i class="fa fa-close text-danger"></i></td>
|
|
||||||
<td class="text-center">Some*</td>
|
|
||||||
</tr>
|
|
||||||
</tbody>
|
|
||||||
</table>
|
|
||||||
<p class="small text-muted">* depends on the tool</p>
|
|
||||||
</div>
|
|
||||||
<div class="col-lg-6">
|
|
||||||
<h2 style="color: #0D3045; font-weight: 500; font-size: 48px"> <strong style="font-weight: 800; color: #29A1DC; vertical-align: text-bottom;">| </strong>Why Cetmix Tower?</h2>
|
|
||||||
<ul class="card-text text-800" style="font-size: 18px; font-weight:300; color: #3d4856 !important; text-align: left;">
|
|
||||||
<li><strong>Easy to use for non-technical users:</strong> Deploy a server or run a multi-step scenario with a single click in the UI.</li>
|
|
||||||
<li><strong>Power and flexibility for technical users:</strong> Leverage powerful features to build complex workflows and automate server and application management tasks.</li>
|
|
||||||
<li><strong>Not limited to a single technology:</strong> Run any software manageable via shell commands or API, whether you're using Docker, Kubernetes, or direct OS commands.</li>
|
|
||||||
<li><strong>Odoo Integration:</strong> Take advantage of the Odoo ecosystem for server management tasks. Integrate with Sales, Accounting, Subscriptions, Helpdesk, or any other Odoo module.</li>
|
|
||||||
<li><strong>Not limited to Odoo:</strong> While optimized for Odoo, Cetmix Tower can manage virtually any software.</li>
|
|
||||||
<li><strong>Extensibility:</strong> Develop your own Odoo modules based on Cetmix Tower to implement custom features.</li>
|
|
||||||
<li><strong>Self-Hosting:</strong> Deploy Cetmix Tower on your own infrastructure for complete control over your server and application management.</li>
|
|
||||||
<li><strong>Open Source:</strong> Cetmix Tower is distributed under the AGPL-3 license, ensuring transparency and freedom.</li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="container pt64">
|
|
||||||
<h2 class="pb32" style="color: #0D3045; font-weight: 500; font-size: 48px"><strong style="font-weight: 800; color: #29A1DC; vertical-align: text-bottom;">| </strong> Core Features</h2>
|
|
||||||
<div class="container">
|
|
||||||
<div class="pt32" style="margin-left: 40px; background-color:#0D3045; border-radius: 40px; padding: 24px;">
|
|
||||||
<p class="card-text text-800" style="font-size: 18px; font-weight:300; color: #d7dcdf !important; text-align: left;"><strong style="font-weight: 800; color: #29A1DC; vertical-align: text-bottom;">| </strong>Note</p>
|
|
||||||
<p class="card-text text-800 pb32" style="font-size: 18px; font-weight:300; color: #d7dcdf !important; text-align: left;">Cetmix Tower is designed with usability and simplicity in mind, though some features might require a foundational understanding of server management principles</p>
|
|
||||||
<h4 style="font-size: 24px; color: #ffffff; font-weight: 200;">
|
|
||||||
For documentation please check <strong style="font-size: 32px; font-weight: 800; color: #29A1DC;"> | </strong> <a href="https://tower.cetmix.com" style="color: #29A1DC;"> tower.cetmix.com</a>
|
|
||||||
</h4>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="container pt64">
|
|
||||||
<h3 style="color: #0D3045; font-weight: 500; font-size: 48px"><img src="self-host.svg" style="height: 48px; margin-right: 10px; vertical-align: text-top;"/>Server Management</h3>
|
|
||||||
<ul class="card-text text-800" style="font-size: 18px; font-weight:300; color: #3d4856 !important; text-align: left;">
|
|
||||||
<li>Variable-based flexible configuration</li>
|
|
||||||
<li>Create Servers using pre-defined Server Templates</li>
|
|
||||||
</ul>
|
|
||||||
<section
|
|
||||||
class="s_image_gallery pt24 pb24 o_colored_level o_spc-small o_masonry o_cc o_cc1"
|
|
||||||
data-vcss="001"
|
|
||||||
data-columns="2"
|
|
||||||
data-snippet="s_images_wall"
|
|
||||||
data-name="Images Wall"
|
|
||||||
style="overflow: hidden"
|
|
||||||
>
|
|
||||||
<div class="container">
|
|
||||||
<div class="row s_nb_column_fixed">
|
|
||||||
<div class="o_masonry_col o_snippet_not_selectable col-lg-6">
|
|
||||||
<img
|
|
||||||
src="server_1.png"
|
|
||||||
alt=""
|
|
||||||
class="img-fluid d-block rounded shadow mb16 o_visible img o_we_custom_image"
|
|
||||||
data-original-id="1218"
|
|
||||||
data-original-src="server_1.png"
|
|
||||||
data-mimetype="image/png"
|
|
||||||
data-resize-width="1920"
|
|
||||||
loading="eager"
|
|
||||||
title="Server Management"
|
|
||||||
aria-describedby="tooltip65859"
|
|
||||||
/>
|
|
||||||
<img
|
|
||||||
src="server_template_form.png"
|
|
||||||
alt=""
|
|
||||||
class="img-fluid d-block rounded shadow mb16 o_visible img o_we_custom_image"
|
|
||||||
data-original-id="1242"
|
|
||||||
data-original-src="server_template_form.png"
|
|
||||||
data-mimetype="image/png"
|
|
||||||
data-resize-width="1920"
|
|
||||||
data-bs-original-title=""
|
|
||||||
title="Server Management"
|
|
||||||
aria-describedby="tooltip990969"
|
|
||||||
loading="eager"
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
<div class="o_masonry_col o_snippet_not_selectable col-lg-6">
|
|
||||||
<img
|
|
||||||
src="server_form_configuration.png"
|
|
||||||
class="img-fluid d-block rounded shadow mb16 o_visible img o_we_custom_image"
|
|
||||||
loading="eager"
|
|
||||||
data-original-id="1225"
|
|
||||||
data-original-src="server_form_configuration.png"
|
|
||||||
data-mimetype="image/png"
|
|
||||||
title="Server Management"
|
|
||||||
aria-describedby="tooltip997009"
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</section>
|
|
||||||
</div>
|
|
||||||
<div class="container pt64">
|
|
||||||
<h3 style="color: #0D3045; font-weight: 500; font-size: 48px"><img src="connectivity.svg" style="height: 48px; margin-right: 10px; vertical-align: text-top;"/>Connectivity</h3>
|
|
||||||
<ul class="card-text text-800" style="font-size: 18px; font-weight:300; color: #3d4856 !important; text-align: left;">
|
|
||||||
<li>Password and key-based authentication for outgoing SSH connections</li>
|
|
||||||
<li>Built-in support of the Python requests library for outgoing API calls</li>
|
|
||||||
</ul>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
<div class="container pt64">
|
|
||||||
<h3 style="color: #0D3045; font-weight: 500; font-size: 48px"><img src="development.svg" style="height: 48px; margin-right: 10px; vertical-align: text-top;"/>Commands</h3>
|
|
||||||
<ul class="card-text text-800" style="font-size: 18px; font-weight:300; color: #3d4856 !important; text-align: left;">
|
|
||||||
<li>Execute SSH Commands on remote servers</li>
|
|
||||||
<li>Run Python Commands on the Tower Odoo server</li>
|
|
||||||
<li>Run Flight Plan from command</li>
|
|
||||||
<li>Render commands using Variables</li>
|
|
||||||
<li>Secrets/Keys for private data storage</li>
|
|
||||||
</ul>
|
|
||||||
<section
|
|
||||||
class="s_image_gallery pt24 pb24 o_colored_level o_spc-small o_masonry o_cc o_cc1"
|
|
||||||
data-vcss="001"
|
|
||||||
data-columns="2"
|
|
||||||
data-snippet="s_images_wall"
|
|
||||||
data-name="Images Wall"
|
|
||||||
style="overflow: hidden"
|
|
||||||
>
|
|
||||||
<div class="container">
|
|
||||||
<div class="row s_nb_column_fixed">
|
|
||||||
<div class="o_masonry_col o_snippet_not_selectable col-lg-6">
|
|
||||||
<img
|
|
||||||
src="commands_1.png"
|
|
||||||
alt=""
|
|
||||||
class="img-fluid d-block rounded shadow mb16 o_visible img o_we_custom_image"
|
|
||||||
data-original-id="1218"
|
|
||||||
data-original-src="commands_1.png"
|
|
||||||
data-mimetype="image/png"
|
|
||||||
data-resize-width="1920"
|
|
||||||
loading="eager"
|
|
||||||
title="Commands"
|
|
||||||
aria-describedby="tooltip65859"
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
<div class="o_masonry_col o_snippet_not_selectable col-lg-6">
|
|
||||||
<img
|
|
||||||
src="commands_2.png"
|
|
||||||
class="img-fluid d-block rounded shadow mb16 o_visible img o_we_custom_image"
|
|
||||||
loading="eager"
|
|
||||||
data-original-id="1225"
|
|
||||||
data-original-src="commands_2.png"
|
|
||||||
data-mimetype="image/png"
|
|
||||||
title="Commands"
|
|
||||||
aria-describedby="tooltip997009"
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</section>
|
|
||||||
</div>
|
|
||||||
<div class="container pt64">
|
|
||||||
<h3 style="color: #0D3045; font-weight: 500; font-size: 48px"><img src="flight-plan.svg" style="height: 48px; margin-right: 10px; vertical-align: text-top;"/>Flight Plans</h3>
|
|
||||||
<ul class="card-text text-800" style="font-size: 18px; font-weight:300; color: #3d4856 !important; text-align: left;">
|
|
||||||
<li>Execute multiple Commands in a row</li>
|
|
||||||
<li>Condition-based flow:</li>
|
|
||||||
<ul>
|
|
||||||
<li>Based on conditions using Python syntax</li>
|
|
||||||
<li>Based on the previous command exit code</li>
|
|
||||||
</ul>
|
|
||||||
</ul>
|
|
||||||
<section
|
|
||||||
class="s_image_gallery pt24 pb24 o_colored_level o_spc-small o_masonry o_cc o_cc1"
|
|
||||||
data-vcss="001"
|
|
||||||
data-columns="2"
|
|
||||||
data-snippet="s_images_wall"
|
|
||||||
data-name="Images Wall"
|
|
||||||
style="overflow: hidden"
|
|
||||||
>
|
|
||||||
<div class="container">
|
|
||||||
<div class="row s_nb_column_fixed">
|
|
||||||
<div class="o_masonry_col o_snippet_not_selectable col-lg-6">
|
|
||||||
<img
|
|
||||||
src="flight_plan_1.png"
|
|
||||||
alt=""
|
|
||||||
class="img-fluid d-block rounded shadow mb16 o_visible img o_we_custom_image"
|
|
||||||
data-original-id="1218"
|
|
||||||
data-original-src="flight_plan_1.png"
|
|
||||||
data-mimetype="image/png"
|
|
||||||
data-resize-width="1920"
|
|
||||||
loading="eager"
|
|
||||||
title="Flight Plans"
|
|
||||||
aria-describedby="tooltip65859"
|
|
||||||
/>
|
|
||||||
<img
|
|
||||||
src="flight_plan_3.png"
|
|
||||||
alt=""
|
|
||||||
class="img-fluid d-block rounded shadow mb16 o_visible img o_we_custom_image"
|
|
||||||
data-original-id="1242"
|
|
||||||
data-original-src="flight_plan_3.png"
|
|
||||||
data-mimetype="image/png"
|
|
||||||
data-resize-width="1920"
|
|
||||||
title="Flight Plans"
|
|
||||||
aria-describedby="tooltip990969"
|
|
||||||
loading="eager"
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
<div class="o_masonry_col o_snippet_not_selectable col-lg-6">
|
|
||||||
<img
|
|
||||||
src="flight_plan_2.png"
|
|
||||||
class="img-fluid d-block rounded shadow mb16 o_visible img o_we_custom_image"
|
|
||||||
loading="eager"
|
|
||||||
data-original-id="1225"
|
|
||||||
data-original-src="flight_plan_2.png"
|
|
||||||
data-mimetype="image/png"
|
|
||||||
title="Flight Plans"
|
|
||||||
aria-describedby="tooltip997009"
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</section>
|
|
||||||
</div>
|
|
||||||
<div class="container pt64">
|
|
||||||
<h3 style="color: #0D3045; font-weight: 500; font-size: 48px"><img src="files.svg" style="height: 48px; margin-right: 10px; vertical-align: text-top;"/>Files</h3>
|
|
||||||
<ul class="card-text text-800" style="font-size: 18px; font-weight:300; color: #3d4856 !important; text-align: left;">
|
|
||||||
<li>Download Files from a remote server using SFTP</li>
|
|
||||||
<li>Upload Files to a remote server using SFTP</li>
|
|
||||||
<li>Support for <code>text</code> and <code>binary</code> file formats</li>
|
|
||||||
<li>Manage Files using pre-defined File Templates</li>
|
|
||||||
</ul>
|
|
||||||
<section
|
|
||||||
class="s_image_gallery pt24 pb24 o_colored_level o_spc-small o_masonry o_cc o_cc1"
|
|
||||||
data-vcss="001"
|
|
||||||
data-columns="2"
|
|
||||||
data-snippet="s_images_wall"
|
|
||||||
data-name="Images Wall"
|
|
||||||
style="overflow: hidden"
|
|
||||||
>
|
|
||||||
<div class="container">
|
|
||||||
<div class="row s_nb_column_fixed">
|
|
||||||
<div class="o_masonry_col o_snippet_not_selectable col-lg-6">
|
|
||||||
<img
|
|
||||||
src="files_1.png"
|
|
||||||
alt=""
|
|
||||||
class="img-fluid d-block rounded shadow mb16 o_visible img o_we_custom_image"
|
|
||||||
data-original-id="1218"
|
|
||||||
data-original-src="files_1.png"
|
|
||||||
data-mimetype="image/png"
|
|
||||||
data-resize-width="1920"
|
|
||||||
loading="eager"
|
|
||||||
title="Files"
|
|
||||||
aria-describedby="tooltip65859"
|
|
||||||
/>
|
|
||||||
<img
|
|
||||||
src="files_3.png"
|
|
||||||
alt=""
|
|
||||||
class="img-fluid d-block rounded shadow mb16 o_visible img o_we_custom_image"
|
|
||||||
data-original-id="1242"
|
|
||||||
data-original-src="files_3.png"
|
|
||||||
data-mimetype="image/png"
|
|
||||||
data-resize-width="1920"
|
|
||||||
title="Files"
|
|
||||||
aria-describedby="tooltip990969"
|
|
||||||
loading="eager"
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
<div class="o_masonry_col o_snippet_not_selectable col-lg-6">
|
|
||||||
<img
|
|
||||||
src="files_2.png"
|
|
||||||
class="img-fluid d-block rounded shadow mb16 o_visible img o_we_custom_image"
|
|
||||||
loading="eager"
|
|
||||||
data-original-id="1225"
|
|
||||||
data-original-src="files_2.png"
|
|
||||||
data-mimetype="image/png"
|
|
||||||
title="Files"
|
|
||||||
aria-describedby="tooltip997009"
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</section>
|
|
||||||
</div>
|
|
||||||
<div class="container pt64">
|
|
||||||
<h3 style="color: #0D3045; font-weight: 500; font-size: 48px"><img src="server-logs.svg" style="height: 48px; margin-right: 10px; vertical-align: text-top;"/>Server Logs</h3>
|
|
||||||
<ul class="card-text text-800" style="font-size: 18px; font-weight:300; color: #3d4856 !important; text-align: left;">
|
|
||||||
<li>Fetch Logs from a remote server using Commands</li>
|
|
||||||
<li>Fetch Logs from a remote server using Files</li>
|
|
||||||
</ul>
|
|
||||||
<section
|
|
||||||
class="s_image_gallery pt24 pb24 o_colored_level o_spc-small o_masonry o_cc o_cc1"
|
|
||||||
data-vcss="001"
|
|
||||||
data-columns="2"
|
|
||||||
data-snippet="s_images_wall"
|
|
||||||
data-name="Images Wall"
|
|
||||||
style="overflow: hidden"
|
|
||||||
>
|
|
||||||
<div class="container">
|
|
||||||
<div class="row s_nb_column_fixed">
|
|
||||||
<div class="o_masonry_col o_snippet_not_selectable col-lg-6">
|
|
||||||
<img
|
|
||||||
src="logs_1.png"
|
|
||||||
alt=""
|
|
||||||
class="img-fluid d-block rounded shadow mb16 o_visible img o_we_custom_image"
|
|
||||||
data-original-id="1218"
|
|
||||||
data-original-src="logs_1.png"
|
|
||||||
data-mimetype="image/png"
|
|
||||||
data-resize-width="1920"
|
|
||||||
loading="eager"
|
|
||||||
title="Server Logs"
|
|
||||||
aria-describedby="tooltip65859"
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
<div class="o_masonry_col o_snippet_not_selectable col-lg-6">
|
|
||||||
<img
|
|
||||||
src="logs_2.png"
|
|
||||||
class="img-fluid d-block rounded shadow mb16 o_visible img o_we_custom_image"
|
|
||||||
loading="eager"
|
|
||||||
data-original-id="1225"
|
|
||||||
data-original-src="logs_2.png"
|
|
||||||
data-mimetype="image/png"
|
|
||||||
title="Server Logs"
|
|
||||||
aria-describedby="tooltip997009"
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</section>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="container pt64 pb64">
|
|
||||||
<h3 style="color: #0D3045; font-weight: 500; font-size: 48px"><img src="tools.svg" style="height: 48px; margin-right: 10px; vertical-align: text-top;"/>Import/Export Data in YAML Format</h3>
|
|
||||||
<ul class="card-text text-800" style="font-size: 18px; font-weight:300; color: #3d4856 !important; text-align: left;">
|
|
||||||
<li>Share and manage data easily using YAML format</li>
|
|
||||||
</ul>
|
|
||||||
<section
|
|
||||||
class="s_image_gallery pt24 pb24 o_colored_level o_spc-small o_masonry o_cc o_cc1"
|
|
||||||
data-vcss="001"
|
|
||||||
data-columns="2"
|
|
||||||
data-snippet="s_images_wall"
|
|
||||||
data-name="Images Wall"
|
|
||||||
style="overflow: hidden"
|
|
||||||
>
|
|
||||||
<div class="container">
|
|
||||||
<div class="row s_nb_column_fixed">
|
|
||||||
<div class="o_masonry_col o_snippet_not_selectable col-lg-6">
|
|
||||||
<img
|
|
||||||
src="yaml_1.png"
|
|
||||||
alt=""
|
|
||||||
class="img-fluid d-block rounded shadow mb16 o_visible img o_we_custom_image"
|
|
||||||
data-original-id="1218"
|
|
||||||
data-original-src="yaml_1.png"
|
|
||||||
data-mimetype="image/png"
|
|
||||||
data-resize-width="1920"
|
|
||||||
loading="eager"
|
|
||||||
title="Import/Export Data in YAML Format"
|
|
||||||
aria-describedby="tooltip65859"
|
|
||||||
/>
|
|
||||||
<img
|
|
||||||
src="yaml_4.png"
|
|
||||||
alt=""
|
|
||||||
class="img-fluid d-block rounded shadow mb16 o_visible img o_we_custom_image"
|
|
||||||
data-original-id="1218"
|
|
||||||
data-original-src="yaml_4.png"
|
|
||||||
data-mimetype="image/png"
|
|
||||||
data-resize-width="1920"
|
|
||||||
loading="eager"
|
|
||||||
title="Import/Export Data in YAML Format"
|
|
||||||
aria-describedby="tooltip65859"
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
<div class="o_masonry_col o_snippet_not_selectable col-lg-6">
|
|
||||||
<img
|
|
||||||
src="yaml_3.png"
|
|
||||||
class="img-fluid d-block rounded shadow mb16 o_visible img o_we_custom_image"
|
|
||||||
loading="eager"
|
|
||||||
data-original-src="yaml_3.png"
|
|
||||||
data-mimetype="image/png"
|
|
||||||
title="Import/Export Data in YAML Format"
|
|
||||||
/>
|
|
||||||
<img
|
|
||||||
src="yaml_5.png"
|
|
||||||
class="img-fluid d-block rounded shadow mb16 o_visible img o_we_custom_image"
|
|
||||||
loading="eager"
|
|
||||||
data-original-src="yaml_5.png"
|
|
||||||
data-mimetype="image/png"
|
|
||||||
title="Import/Export Data in YAML Format"
|
|
||||||
/>
|
|
||||||
<img
|
|
||||||
src="yaml_2.png"
|
|
||||||
class="img-fluid d-block rounded shadow mb16 o_visible img o_we_custom_image"
|
|
||||||
loading="eager"
|
|
||||||
data-original-src="yaml_2.png"
|
|
||||||
data-mimetype="image/png"
|
|
||||||
title="Import/Export Data in YAML Format"
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</section>
|
|
||||||
</div>
|
|
||||||
<div class="container pt64 pb64">
|
|
||||||
<h3 style="color: #0D3045; font-weight: 500; font-size: 48px"><img src="git.svg" style="height: 48px; margin-right: 10px; vertical-align: text-top;"/>Manage Git Projects</h3>
|
|
||||||
<ul class="card-text text-800" style="font-size: 18px; font-weight:300; color: #3d4856 !important; text-align: left;">
|
|
||||||
<li>
|
|
||||||
Manage Git projects directly from Odoo
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
User-friendly interface for controlling git repositories linked to your servers
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
<section
|
|
||||||
class="s_image_gallery pt24 pb24 o_colored_level o_spc-small o_masonry o_cc o_cc1"
|
|
||||||
data-vcss="001"
|
|
||||||
data-columns="2"
|
|
||||||
data-snippet="s_images_wall"
|
|
||||||
data-name="Images Wall"
|
|
||||||
style="overflow: hidden"
|
|
||||||
>
|
|
||||||
<div class="container">
|
|
||||||
<div class="row s_nb_column_fixed">
|
|
||||||
<div class="o_masonry_col o_snippet_not_selectable col-lg-6">
|
|
||||||
<img
|
|
||||||
src="git_1.png"
|
|
||||||
alt=""
|
|
||||||
class="img-fluid d-block rounded shadow mb16 o_visible img o_we_custom_image"
|
|
||||||
data-original-id="1218"
|
|
||||||
data-original-src="git_1.png"
|
|
||||||
data-mimetype="image/png"
|
|
||||||
data-resize-width="1920"
|
|
||||||
loading="eager"
|
|
||||||
title="Git Projects"
|
|
||||||
aria-describedby="tooltip65859"
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
<div class="o_masonry_col o_snippet_not_selectable col-lg-6">
|
|
||||||
<img
|
|
||||||
src="git_2.png"
|
|
||||||
class="img-fluid d-block rounded shadow mb16 o_visible img o_we_custom_image"
|
|
||||||
loading="eager"
|
|
||||||
data-original-src="git_2.png"
|
|
||||||
data-mimetype="image/png"
|
|
||||||
title="Git Projects"
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</section>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</section>
|
|
||||||
<section class="s_text_image o_colored_level pt64 pb64 o_cc o_cc5 " data-snippet="s_image_text" style="background-color: #0D3045 !important; background-image: none; position: relative; border-top-right-radius: 40px; border-top-left-radius: 40px;" data-name="Custom Image - Text" data-bs-original-title="" title="" aria-describedby="tooltip522920" data-oe-shape-data="{"shape":"web_editor/Origins/16","colors":{"c3":"#0D2945"},"flip":[]}">
|
|
||||||
<div class="container" style="padding: 30px;">
|
|
||||||
<div class="col-lg-6" style="text-align: right; margin-left: auto;">
|
|
||||||
<img src="cetmix.svg" alt="" class="img img-fluid o_we_custom_image" data-original-id="1256" data-original-src="cetmix.svg" data-mimetype="image/svg+xml" data-bs-original-title="" title="" aria-describedby="tooltip359107" style="width: 50% !important;" loading="eager"/>
|
|
||||||
</div>
|
|
||||||
<h3 class="pt64" style="color: #ffffff; font-weight: 500; font-size: 48px"><strong style="font-weight: 800; color: #29A1DC; vertical-align: text-bottom;">| </strong> Warning</h3>
|
|
||||||
<p class="card-text text-800" style="font-size: 18px; font-weight:300; color: #ffffff !important; text-align: left;">
|
|
||||||
The software is provided "as is", without warranty of any kind, express or implied, including but not limited to the warranties of merchantability, fitness for a particular purpose and noninfringement.
|
|
||||||
In no event shall the authors or copyright holders be liable for any claim, damages or other liability, whether in an action of contract, tort or otherwise, arising from, out of or in connection with the software or the use or other dealings in the software.
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
</section>
|
|
||||||
<section class="s_title o_colored_level o_cc o_cc1" style="position: relative; background-color: #0D3045 !important">
|
|
||||||
<div style="background-color: #3d4856 !important; border-top-right-radius: 40px; border-top-left-radius: 40px; padding: 20px;">
|
|
||||||
|
|
||||||
</div>
|
|
||||||
</section>
|
|
||||||
<section class="s_features o_colored_level pb64 o_cc o_cc1" data-snippet="s_features" data-name="Features" style="position: relative; background-color: #3d4856 !important" data-oe-shape-data="">
|
|
||||||
<div class="container mx-3">
|
|
||||||
<h2 style="font-size: 48px; font-weight:500; color: #d7dcdf;">License</h2>
|
|
||||||
<p class="card-text text-800" style="font-size: 18px; font-weight:300; color: #d7dcdf !important; text-align: left;">Cetmix Tower is distributed under the AGPL-3 license. In case you want to use this software in projects that are not compatible with AGPL-3 license, you should contact us directly.</p>
|
|
||||||
</div>
|
|
||||||
</section>
|
|
||||||
<section class="s_title o_colored_level o_cc o_cc1" style="position: relative; background-color: #3d4856">
|
|
||||||
<div style="background-color: #d7dcdf !important; border-top-right-radius: 40px; border-top-left-radius: 40px; padding: 20px;">
|
|
||||||
|
|
||||||
</div>
|
|
||||||
</section>
|
|
||||||
<section class="s_text_block o_colored_level pt32 pb64 o_cc o_cc1" data-snippet="s_text_block" data-name="Text" style="position: relative; background-color: #d7dcdf !important; color: #3d4856;">
|
|
||||||
<div class="container mx-3">
|
|
||||||
<h2 style="font-size: 48px; font-weight:500; color: #3d4856;">Copyright</h2>
|
|
||||||
<p class="card-text text-800" style="font-size: 18px; font-weight:300; color: #3d4856 !important; text-align: left;">Cetmix Tower is a trademark of Cetmix. All rights reserved.</p>
|
|
||||||
</div>
|
|
||||||
</section>
|
|
||||||
<section class="s_title o_colored_level o_cc o_cc1" style="position: relative; background-color: #d7dcdf">
|
|
||||||
<div style="background-color: #3d4856 !important; border-top-right-radius: 40px; border-top-left-radius: 40px; padding: 20px;">
|
|
||||||
|
|
||||||
</div>
|
|
||||||
</section>
|
|
||||||
<section class="s_text_block o_colored_level pt32 pb64 o_cc o_cc1" data-snippet="s_text_block" data-name="Text" style="position: relative; background-color: #3d4856 !important; color: #3d4856;">
|
|
||||||
<div class="container mx-3">
|
|
||||||
<h2 style="font-size: 48px; font-weight:500; color: #d7dcdf;">Support</h2>
|
|
||||||
|
|
||||||
<ul class="card-text text-800" style="font-size: 18px; font-weight:300; color: #d7dcdf !important; text-align: left;">
|
|
||||||
<li>This project is open source. All issues and feature requests should be reported in the GitHub repository</li>
|
|
||||||
<li>Your contribution is welcome. Please refer to the CONTRIBUTING.md file for more details.</li>
|
|
||||||
<li>Dedicated support is available on request. Contact us for details at cetmix.com</li>
|
|
||||||
</ul>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</section>
|
|
||||||
<section class="s_title o_colored_level o_cc o_cc1" style="position: relative; background-color: #3d4856">
|
|
||||||
<div style="background-color: #f4f4f4 !important; border-top-right-radius: 40px; border-top-left-radius: 40px; padding: 20px;">
|
|
||||||
|
|
||||||
</div>
|
|
||||||
</section>
|
|
||||||
<section id="cetmix" class="s_text_image o_colored_level pt64 pb64 o_cc o_cc5" data-snippet="s_image_text" style="background-color: #f4f4f4 !important; background-image: none; position: relative;" data-name="Custom Image - Text" data-bs-original-title="" title="" aria-describedby="tooltip522920">
|
|
||||||
<div class="container">
|
|
||||||
<div class="row align-items-center">
|
|
||||||
<div class="pt16 pb16 o_colored_level col-lg-4" style="position: relative;">
|
|
||||||
<img src="cx_logo.svg" alt="" class="img img-fluid mx-auto o_we_custom_image" style="position: relative;" data-original-id="1229" data-original-src="pdf.svg" data-mimetype="image/svg+xml" data-resize-width="undefined" loading="eager"/>
|
|
||||||
</div>
|
|
||||||
<div class="pb16 o_colored_level col-lg-8" >
|
|
||||||
<h1 style="text-align: left; color:#0D3045; font-size: 48px; font-weight:500;">
|
|
||||||
Cetmix is not just another IT company
|
|
||||||
</h1>
|
|
||||||
<h5 class="pt32" style="text-align: left; color:#3d4856; font-size: 22px; font-weight:300">
|
|
||||||
We know how the business works. Our experts have management
|
|
||||||
experience in heavy machinery, energy sector, logistics,
|
|
||||||
accounting, public services and many other industries _
|
|
||||||
<br/>
|
|
||||||
<br/>
|
|
||||||
We are the people of business
|
|
||||||
</h5>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</section>
|
|
||||||
<section class="s_title o_colored_level o_cc o_cc1" style="position: relative; background-color: #f4f4f4">
|
|
||||||
<div style="background-color: #29A1DC !important; border-top-right-radius: 40px; border-top-left-radius: 40px; padding: 20px;">
|
|
||||||
|
|
||||||
</div>
|
|
||||||
</section>
|
|
||||||
<section class="s_call_to_action pt48 pb64 o_colored_level o_cc o_cc5" data-snippet="s_call_to_action" data-name="Call to Action" style="background-color: #29A1DC; color: #ffffff;">
|
|
||||||
<div class="container" style="margin-left: 100px">
|
|
||||||
<div class="row o_header_white_border_left">
|
|
||||||
<div class="col-lg-6 pb16 o_colored_level">
|
|
||||||
<h3 style="text-align: left; color:#ffffff; font-size: 48px; font-weight:500;">Solutions for your business</h3>
|
|
||||||
<h5 class="pt16" style="text-align: left; color:#3d4856; font-size: 22px; font-weight:300">Choose an existing one or we can develop a custom one for you</h5>
|
|
||||||
</div>
|
|
||||||
<div class="col pt32 o_colored_level">
|
|
||||||
<p style="text-align: center;" data-bs-original-title="" title="" aria-describedby="tooltip742456">
|
|
||||||
<a class="mb-2 btn btn-lg shadow" href="https://apps.odoo.com/apps/modules/browse?author=Cetmix" data-bs-original-title="" title="" style="color: #ffffff; border-color: #ffffff; border-radius:20px; font-size: 22px; font-weight:300">Check our Apps</a>
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</section>
|
|
||||||
<section class="s_text_block o_colored_level o_cc o_cc5" data-snippet="s_text_block" data-name="Text" style="position: relative; background-color: #29A1DC; color: #ffffff; ">
|
|
||||||
<div class="s_allow_columns container-fluid">
|
|
||||||
<div class="row d-flex mx-3 pb64">
|
|
||||||
<div class="o_colored_level col-lg-4" >
|
|
||||||
<h2 style="text-align: center;">
|
|
||||||
<span style="color: #ffffff; font-size: 36px; font-weight:500;">>9 <br/> years</span>
|
|
||||||
</h2>
|
|
||||||
<h5 style="text-align: center; color:#3d4856; font-size: 22px; font-weight:300">of Odoo experience
|
|
||||||
</h5>
|
|
||||||
</div>
|
|
||||||
<div class="o_colored_level col-lg-4" >
|
|
||||||
<h2 style="text-align: center;">
|
|
||||||
<span style="color: #ffffff; font-size: 36px; font-weight:500;">> 15 000 <br/> downloads</span>
|
|
||||||
</h2>
|
|
||||||
<h5 style="text-align: center; color:#3d4856; font-size: 22px; font-weight:300">of our apps from Odoo App Store
|
|
||||||
</h5>
|
|
||||||
</div>
|
|
||||||
<div class="o_colored_level col-lg-3" >
|
|
||||||
<h2 style="text-align: center;">
|
|
||||||
<span style="color: #ffffff; font-size: 36px; font-weight:500;">>100 <br/> clients</span>
|
|
||||||
</h2>
|
|
||||||
<h5 style="text-align: center; color:#3d4856; font-size: 22px; font-weight:300">
|
|
||||||
are happy with our services
|
|
||||||
</h5>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</section>
|
|
||||||
<section class="s_title o_colored_level o_cc o_cc1" style="position: relative; background-color: #0D3045">
|
|
||||||
<div style="background-color: #29A1DC !important; border-bottom-right-radius: 40px; border-bottom-left-radius: 40px; padding: 20px;">
|
|
||||||
|
|
||||||
</div>
|
|
||||||
</section>
|
|
||||||
<section class="s_text_block pt64 pb48 o_colored_level" data-snippet="s_text_block" data-name="Text" style="background-color: #0D3045 !important; border-bottom-right-radius: 40px; border-bottom-left-radius: 40px;" data-bs-original-title="" title="" aria-describedby="tooltip180671">
|
|
||||||
<div class="s_allow_columns container mx-5" data-bs-original-title="" title="" aria-describedby="tooltip154809">
|
|
||||||
<h2 style="text-align: left; color:#ffffff; font-size: 48px; font-weight:500;">
|
|
||||||
Need support, customization<br/>or interested in collaboration ?
|
|
||||||
</h2>
|
|
||||||
<h5 class="pb32" style="font-size: 24px; left; color: #ffffff;">
|
|
||||||
<strong style="font-weight: 800; color: #29A1DC; vertical-align: text-bottom;">| </strong>cetmix.com
|
|
||||||
<br/>
|
|
||||||
</h5>
|
|
||||||
<p style="color: #ffffff;">
|
|
||||||
<span class="fa fa-linkedin-square fa-3x pt16 mr-3" data-bs-original-title="" title="" aria-describedby="tooltip359279" style="color: #29A1DC !important;"></span>
|
|
||||||
https://www.linkedin.com/company/cetmix/
|
|
||||||
</p>
|
|
||||||
<p style="color: #ffffff;">
|
|
||||||
<span class="fa fa-github-square fa-3x pt16 mr-3" data-bs-original-title="" title="" aria-describedby="tooltip359279" style="color: #29A1DC !important;"></span>
|
|
||||||
https://github.com/cetmix/
|
|
||||||
</p>
|
|
||||||
<p style="color: #ffffff;">
|
|
||||||
<span class="fa fa-facebook-square fa-3x pt16 mr-3" data-bs-original-title="" title="" aria-describedby="tooltip359279" style="color: #29A1DC !important;"></span>
|
|
||||||
https://www.facebook.com//cetmixteam
|
|
||||||
</p>
|
|
||||||
<p style="color: #ffffff;">
|
|
||||||
<span class="fa fa-twitter-square fa-3x pt16 mr-3" data-bs-original-title="" title="" aria-describedby="tooltip359279" style="color: #29A1DC !important;"></span>
|
|
||||||
https://twitter.com/cetmix_team
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</section>
|
|
||||||
</div>
|
|
||||||
</section>
|
|
||||||
|
|
||||||
|
Before Width: | Height: | Size: 291 KiB |
|
Before Width: | Height: | Size: 716 KiB |
@@ -1 +0,0 @@
|
|||||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" id="Server"><path fill="#303c42" d="M2 7h20v3H2z" class="color303c42 svgShape"></path><path d="M2 7h20v3H2z" opacity=".1" fill="#000000" class="color000000 svgShape"></path><path fill="#303c42" d="M2 14h20v3H2z" class="color303c42 svgShape"></path><path d="M2 14h20v3H2z" opacity=".1" fill="#000000" class="color000000 svgShape"></path><path fill="#303c42" d="M1 3v4a1 1 0 0 0 1 1h20a1 1 0 0 0 1-1V3a1 1 0 0 0-1-1H2a1 1 0 0 0-1 1z" class="color303c42 svgShape"></path><path d="M22 7.75H2a1 1 0 0 1-1-1V7a1 1 0 0 0 1 1h20a1 1 0 0 0 1-1v-.25a1 1 0 0 1-1 1z" opacity=".2" fill="#000000" class="color000000 svgShape"></path><path fill="#ffffff" d="M22 2H2a1 1 0 0 0-1 1v.25a1 1 0 0 1 1-1h20a1 1 0 0 1 1 1V3a1 1 0 0 0-1-1z" opacity=".1" class="colorffffff svgShape"></path><circle cx="19.5" cy="5" r=".5" fill="#428eb3" class="color69b342 svgShape"></circle><circle cx="17.5" cy="5" r=".5" fill="#428eb3" class="color69b342 svgShape"></circle><circle cx="15.5" cy="5" r=".5" fill="#428eb3" class="color69b342 svgShape"></circle><circle cx="5" cy="5" r="1" fill="#29a1dc" class="colorc6cdd1 svgShape"></circle><linearGradient id="a" x1="4.368" x2="5.487" y1="4.368" y2="5.487" gradientUnits="userSpaceOnUse"><stop offset="0" stop-opacity=".1"></stop><stop offset="1" stop-opacity="0"></stop></linearGradient><circle cx="5" cy="5" r="1" fill="url(#a)"></circle><path fill="#303c42" d="M1 10v4a1 1 0 0 0 1 1h20a1 1 0 0 0 1-1v-4a1 1 0 0 0-1-1H2a1 1 0 0 0-1 1z" class="color303c42 svgShape"></path><path d="M22 14.75H2a1 1 0 0 1-1-1V14a1 1 0 0 0 1 1h20a1 1 0 0 0 1-1v-.25a1 1 0 0 1-1 1z" opacity=".2" fill="#000000" class="color000000 svgShape"></path><path fill="#ffffff" d="M22 9H2a1 1 0 0 0-1 1v.25a1 1 0 0 1 1-1h20a1 1 0 0 1 1 1V10a1 1 0 0 0-1-1z" opacity=".1" class="colorffffff svgShape"></path><circle cx="19.5" cy="12" r=".5" fill="#428eb3" class="color69b342 svgShape"></circle><circle cx="17.5" cy="12" r=".5" fill="#428eb3" class="color69b342 svgShape"></circle><circle cx="15.5" cy="12" r=".5" fill="#428eb3" class="color69b342 svgShape"></circle><circle cx="5" cy="12" r="1" fill="#29a1dc" class="colorc6cdd1 svgShape"></circle><linearGradient id="b" x1="4.368" x2="5.487" y1="11.368" y2="12.487" gradientUnits="userSpaceOnUse"><stop offset="0" stop-opacity=".1"></stop><stop offset="1" stop-opacity="0"></stop></linearGradient><circle cx="5" cy="12" r="1" fill="url(#b)"></circle><path fill="#303c42" d="M1 17v4a1 1 0 0 0 1 1h20a1 1 0 0 0 1-1v-4a1 1 0 0 0-1-1H2a1 1 0 0 0-1 1z" class="color303c42 svgShape"></path><path d="M22 21.75H2a1 1 0 0 1-1-1V21a1 1 0 0 0 1 1h20a1 1 0 0 0 1-1v-.25a1 1 0 0 1-1 1z" opacity=".2" fill="#000000" class="color000000 svgShape"></path><path fill="#ffffff" d="M22 16H2a1 1 0 0 0-1 1v.25a1 1 0 0 1 1-1h20a1 1 0 0 1 1 1V17a1 1 0 0 0-1-1z" opacity=".1" class="colorffffff svgShape"></path><circle cx="19.5" cy="19" r=".5" fill="#428eb3" class="color69b342 svgShape"></circle><circle cx="17.5" cy="19" r=".5" fill="#428eb3" class="color69b342 svgShape"></circle><circle cx="15.5" cy="19" r=".5" fill="#428eb3" class="color69b342 svgShape"></circle><circle cx="5" cy="19" r="1" fill="#29a1dc" class="colorc6cdd1 svgShape"></circle><linearGradient id="c" x1="4.368" x2="5.487" y1="18.368" y2="19.487" gradientUnits="userSpaceOnUse"><stop offset="0" stop-opacity=".1"></stop><stop offset="1" stop-opacity="0"></stop></linearGradient><circle cx="5" cy="19" r="1" fill="url(#c)"></circle><linearGradient id="d" x1="-.568" x2="24.568" y1="6.14" y2="17.86" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#ffffff" stop-opacity=".2" class="stopColorffffff svgShape"></stop><stop offset="1" stop-color="#ffffff" stop-opacity="0" class="stopColorffffff svgShape"></stop></linearGradient><path fill="url(#d)" d="M23 7V3a1 1 0 0 0-1-1H2a1 1 0 0 0-1 1v4a1 1 0 0 0 1 1v1a1 1 0 0 0-1 1v4a1 1 0 0 0 1 1v1a1 1 0 0 0-1 1v4a1 1 0 0 0 1 1h20a1 1 0 0 0 1-1v-4a1 1 0 0 0-1-1v-1a1 1 0 0 0 1-1v-4a1 1 0 0 0-1-1V8a1 1 0 0 0 1-1z"></path></svg>
|
|
||||||
|
Before Width: | Height: | Size: 3.9 KiB |
@@ -1,93 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<!-- Generator: Adobe Illustrator 24.1.2, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
|
||||||
<svg version="1.1" id="Server" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
|
||||||
viewBox="0 0 24 24" style="enable-background:new 0 0 24 24;" xml:space="preserve">
|
|
||||||
<style type="text/css">
|
|
||||||
.st0{fill:#303C42;}
|
|
||||||
.st1{opacity:0.1;enable-background:new ;}
|
|
||||||
.st2{opacity:0.1;fill:#FFFFFF;enable-background:new ;}
|
|
||||||
.st3{opacity:0.2;enable-background:new ;}
|
|
||||||
.st4{fill:#428EB3;}
|
|
||||||
.st5{fill:#C6CDD1;}
|
|
||||||
.st6{fill:url(#SVGID_1_);}
|
|
||||||
.st7{fill:url(#SVGID_2_);}
|
|
||||||
.st8{fill:#D8DBDC;}
|
|
||||||
.st9{fill:#333333;}
|
|
||||||
.st10{fill:#4D4D4D;}
|
|
||||||
.st11{fill:url(#SVGID_3_);}
|
|
||||||
.st12{opacity:0.2;fill:#FFFFFF;enable-background:new ;}
|
|
||||||
.st13{fill:#29A1DC;}
|
|
||||||
.st14{fill:url(#SVGID_4_);}
|
|
||||||
.st15{fill:url(#SVGID_5_);}
|
|
||||||
.st16{fill:url(#SVGID_6_);}
|
|
||||||
</style>
|
|
||||||
<path class="st0" d="M2.8,6h14.7v1.8H2.8V6z"/>
|
|
||||||
<path class="st1" d="M2.8,6h14.7v1.8H2.8V6z"/>
|
|
||||||
<path class="st0" d="M17.5,6.5H2.8C2.3,6.5,1.8,6,1.8,5.5V2.8c0-0.5,0.4-0.9,0.9-0.9h14.7c0.5,0,0.9,0.4,0.9,0.9v2.8
|
|
||||||
C18.4,6,18,6.5,17.5,6.5z"/>
|
|
||||||
<path class="st2" d="M17.5,1.9H2.8c-0.5,0-0.9,0.4-0.9,0.9V3c0-0.5,0.4-0.9,0.9-0.9h14.7c0.5,0,0.9,0.4,0.9,0.9V2.8
|
|
||||||
C18.4,2.3,18,1.9,17.5,1.9z"/>
|
|
||||||
<path class="st3" d="M17.5,6.2H2.8c-0.5,0-0.9-0.4-0.9-0.9v0.2c0,0.5,0.4,0.9,0.9,0.9h14.7c0.5,0,0.9-0.4,0.9-0.9V5.3
|
|
||||||
C18.4,5.8,18,6.2,17.5,6.2z"/>
|
|
||||||
<path class="st0" d="M17.5,12H2.8c-0.5,0-0.9-0.4-0.9-0.9V8.3c0-0.5,0.4-0.9,0.9-0.9h14.7c0.5,0,0.9,0.4,0.9,0.9v2.8
|
|
||||||
C18.4,11.6,18,12,17.5,12z"/>
|
|
||||||
<circle class="st4" cx="16.1" cy="9.7" r="0.5"/>
|
|
||||||
<circle class="st4" cx="14.3" cy="9.7" r="0.5"/>
|
|
||||||
<circle class="st4" cx="12.4" cy="9.7" r="0.5"/>
|
|
||||||
<circle class="st5" cx="4.1" cy="9.7" r="0.9"/>
|
|
||||||
<linearGradient id="SVGID_1_" gradientUnits="userSpaceOnUse" x1="3.5643" y1="16.9049" x2="4.5946" y2="15.8746" gradientTransform="matrix(1 0 0 -1 0 26)">
|
|
||||||
<stop offset="0" style="stop-color:#000000;stop-opacity:0.1"/>
|
|
||||||
<stop offset="1" style="stop-color:#000000;stop-opacity:0"/>
|
|
||||||
</linearGradient>
|
|
||||||
<circle class="st6" cx="4.1" cy="9.7" r="0.9"/>
|
|
||||||
<circle class="st4" cx="16.1" cy="4.2" r="0.5"/>
|
|
||||||
<circle class="st4" cx="14.3" cy="4.2" r="0.5"/>
|
|
||||||
<circle class="st4" cx="12.4" cy="4.2" r="0.5"/>
|
|
||||||
<path class="st2" d="M17.5,7.4H2.8c-0.5,0-0.9,0.4-0.9,0.9v0.2c0-0.5,0.4-0.9,0.9-0.9h14.7c0.5,0,0.9,0.4,0.9,0.9V8.3
|
|
||||||
C18.4,7.8,18,7.4,17.5,7.4z"/>
|
|
||||||
<path class="st3" d="M17.5,11.7H2.8c-0.5,0-0.9-0.4-0.9-0.9v0.2c0,0.5,0.4,0.9,0.9,0.9h14.7c0.5,0,0.9-0.4,0.9-0.9v-0.2
|
|
||||||
C18.4,11.3,18,11.7,17.5,11.7z"/>
|
|
||||||
<circle class="st5" cx="4.1" cy="4.2" r="0.9"/>
|
|
||||||
<linearGradient id="SVGID_2_" gradientUnits="userSpaceOnUse" x1="3.5643" y1="22.4291" x2="4.5946" y2="21.3988" gradientTransform="matrix(1 0 0 -1 0 26)">
|
|
||||||
<stop offset="0" style="stop-color:#000000;stop-opacity:0.1"/>
|
|
||||||
<stop offset="1" style="stop-color:#000000;stop-opacity:0"/>
|
|
||||||
</linearGradient>
|
|
||||||
<circle class="st7" cx="4.1" cy="4.2" r="0.9"/>
|
|
||||||
<path class="st8" d="M17,19.3c0-0.3-0.2-0.5-0.5-0.5c-0.3,0-0.5,0.2-0.5,0.5h-1.8c0-0.3-0.2-0.5-0.5-0.5s-0.5,0.2-0.5,0.5
|
|
||||||
c0,1-0.5,1.8-0.9,1.8v0.5H18v-0.5C17.5,21.2,17,20.3,17,19.3z"/>
|
|
||||||
<path class="st9" d="M22.1,10.6c0-0.8-0.6-1.4-1.4-1.4h-11c-0.8,0-1.4,0.6-1.4,1.4V18h13.8V10.6z"/>
|
|
||||||
<path class="st8" d="M8.3,18v0.5c0,0.8,0.6,1.4,1.4,1.4h11c0.8,0,1.4-0.6,1.4-1.4V18H8.3z"/>
|
|
||||||
<path class="st1" d="M20.7,19.6h-11c-0.8,0-1.4-0.6-1.4-1.4v0.2c0,0.8,0.6,1.4,1.4,1.4h11c0.8,0,1.4-0.6,1.4-1.4v-0.2
|
|
||||||
C22.1,19,21.5,19.6,20.7,19.6z"/>
|
|
||||||
<path class="st2" d="M9.7,9.4h11c0.8,0,1.4,0.6,1.4,1.4v-0.2c0-0.8-0.6-1.4-1.4-1.4h-11c-0.8,0-1.4,0.6-1.4,1.4v0.2
|
|
||||||
C8.3,10.1,8.9,9.4,9.7,9.4z"/>
|
|
||||||
<path class="st10" d="M21.2,10.6c0-0.3-0.2-0.5-0.5-0.5h-11c-0.3,0-0.5,0.2-0.5,0.5V17h12V10.6z"/>
|
|
||||||
<linearGradient id="SVGID_3_" gradientUnits="userSpaceOnUse" x1="9.0616" y1="15.1862" x2="21.4007" y2="9.4328" gradientTransform="matrix(1 0 0 -1 0 26)">
|
|
||||||
<stop offset="0" style="stop-color:#FFFFFF;stop-opacity:0.2"/>
|
|
||||||
<stop offset="1" style="stop-color:#FFFFFF;stop-opacity:0"/>
|
|
||||||
</linearGradient>
|
|
||||||
<path class="st11" d="M21.2,10.6c0-0.3-0.2-0.5-0.5-0.5h-11c-0.3,0-0.5,0.2-0.5,0.5V17h12V10.6z"/>
|
|
||||||
<path class="st8" d="M18,22.1h-5.5c-0.3,0-0.5-0.2-0.5-0.5c0-0.3,0.2-0.5,0.5-0.5H18c0.3,0,0.5,0.2,0.5,0.5
|
|
||||||
C18.4,21.9,18.2,22.1,18,22.1z"/>
|
|
||||||
<path class="st12" d="M12.4,21.4H18c0.2,0,0.4,0.1,0.4,0.3c0,0,0-0.1,0-0.1c0-0.3-0.2-0.5-0.5-0.5h-5.5c-0.3,0-0.5,0.2-0.5,0.5
|
|
||||||
c0,0,0,0.1,0,0.1C12,21.6,12.2,21.4,12.4,21.4z"/>
|
|
||||||
<circle class="st13" cx="15.2" cy="18.9" r="0.5"/>
|
|
||||||
<linearGradient id="SVGID_4_" gradientUnits="userSpaceOnUse" x1="14.7771" y1="7.3105" x2="15.6119" y2="6.9216" gradientTransform="matrix(1 0 0 -1 0 26)">
|
|
||||||
<stop offset="0" style="stop-color:#FFFFFF;stop-opacity:0.2"/>
|
|
||||||
<stop offset="1" style="stop-color:#FFFFFF;stop-opacity:0"/>
|
|
||||||
</linearGradient>
|
|
||||||
<circle class="st14" cx="15.2" cy="18.9" r="0.5"/>
|
|
||||||
<linearGradient id="SVGID_5_" gradientUnits="userSpaceOnUse" x1="14.4175" y1="6.9761" x2="16.8002" y2="4.5933" gradientTransform="matrix(1 0 0 -1 0 26)">
|
|
||||||
<stop offset="0" style="stop-color:#000000;stop-opacity:0.1"/>
|
|
||||||
<stop offset="1" style="stop-color:#000000;stop-opacity:0"/>
|
|
||||||
</linearGradient>
|
|
||||||
<path class="st15" d="M17.1,19.8h-3.8l1.4,1.4H18C17.6,21.2,17.2,20.6,17.1,19.8z"/>
|
|
||||||
<linearGradient id="SVGID_6_" gradientUnits="userSpaceOnUse" x1="0.5921" y1="20.7473" x2="23.4202" y2="10.102" gradientTransform="matrix(1 0 0 -1 0 26)">
|
|
||||||
<stop offset="0" style="stop-color:#FFFFFF;stop-opacity:0.2"/>
|
|
||||||
<stop offset="1" style="stop-color:#FFFFFF;stop-opacity:0"/>
|
|
||||||
</linearGradient>
|
|
||||||
<path class="st16" d="M20.7,9.2h-2.3V8.3c0-0.5-0.4-0.9-0.9-0.9V6.5c0.5,0,0.9-0.4,0.9-0.9V2.8c0-0.5-0.4-0.9-0.9-0.9H2.8
|
|
||||||
c-0.5,0-0.9,0.4-0.9,0.9v2.8c0,0.5,0.4,0.9,0.9,0.9v0.9c-0.5,0-0.9,0.4-0.9,0.9v2.8c0,0.5,0.4,0.9,0.9,0.9h5.5v6.4
|
|
||||||
c0,0.8,0.6,1.4,1.4,1.4h3.6c-0.1,0.8-0.5,1.4-0.9,1.4c-0.3,0-0.5,0.2-0.5,0.5c0,0.3,0.2,0.5,0.5,0.5H18c0.3,0,0.5-0.2,0.5-0.5
|
|
||||||
c0-0.3-0.2-0.5-0.5-0.5c-0.4,0-0.8-0.6-0.9-1.4h3.6c0.8,0,1.4-0.6,1.4-1.4v-7.8C22.1,9.8,21.5,9.2,20.7,9.2z"/>
|
|
||||||
</svg>
|
|
||||||
|
Before Width: | Height: | Size: 5.8 KiB |
|
Before Width: | Height: | Size: 99 KiB |
|
Before Width: | Height: | Size: 272 KiB |
|
Before Width: | Height: | Size: 45 KiB |
|
Before Width: | Height: | Size: 52 KiB |
@@ -1,159 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<!-- Generator: Adobe Illustrator 25.0.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
|
||||||
<svg version="1.1" id="Server" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
|
||||||
viewBox="0 0 24 24" style="enable-background:new 0 0 24 24;" xml:space="preserve">
|
|
||||||
<style type="text/css">
|
|
||||||
.st0{fill:#303C42;}
|
|
||||||
.st1{opacity:0.1;enable-background:new ;}
|
|
||||||
.st2{opacity:0.2;enable-background:new ;}
|
|
||||||
.st3{opacity:0.1;fill:#FFFFFF;enable-background:new ;}
|
|
||||||
.st4{fill:#428EB3;}
|
|
||||||
.st5{fill:#C6CDD1;}
|
|
||||||
.st6{fill:url(#SVGID_1_);}
|
|
||||||
.st7{fill:url(#SVGID_2_);}
|
|
||||||
.st8{fill:none;}
|
|
||||||
.st9{fill:url(#SVGID_3_);}
|
|
||||||
.st10{fill:#29A1DC;}
|
|
||||||
.st11{fill:#EFF2F4;}
|
|
||||||
.st12{fill:#ACB5BA;}
|
|
||||||
.st13{fill:#CEDAE0;}
|
|
||||||
.st14{fill:#E6EBEE;}
|
|
||||||
.st15{fill:#3F5C6B;}
|
|
||||||
.st16{fill:#22353F;}
|
|
||||||
.st17{fill:#2B424E;}
|
|
||||||
.st18{fill:#324F5E;}
|
|
||||||
</style>
|
|
||||||
<path class="st0" d="M2,7.5h18.2v2.7H2V7.5z"/>
|
|
||||||
<path class="st1" d="M2,7.5h18.2v2.7H2V7.5z"/>
|
|
||||||
<path class="st0" d="M1.1,3.8v3.6c0,0.6,0.4,1,0.9,1h18.2c0.5,0,0.9-0.4,0.9-0.9V3.8c0-0.5-0.4-0.9-0.9-0.9H2
|
|
||||||
C1.5,2.9,1.1,3.3,1.1,3.8z"/>
|
|
||||||
<path class="st2" d="M20.2,8.1H2c-0.5,0-0.9-0.4-0.9-0.9v0.2c0,0.6,0.4,1,0.9,1h18.2c0.5,0,0.9-0.4,0.9-0.9V7.2
|
|
||||||
C21.1,7.7,20.7,8.1,20.2,8.1z"/>
|
|
||||||
<path class="st3" d="M20.2,2.9H2c-0.5,0-0.9,0.4-0.9,0.9V4c0-0.5,0.4-0.9,0.9-0.9h18.2c0.5,0,0.9,0.4,0.9,0.9V3.8
|
|
||||||
C21.1,3.3,20.7,2.9,20.2,2.9z"/>
|
|
||||||
<circle class="st4" cx="17.9" cy="5.6" r="0.5"/>
|
|
||||||
<circle class="st4" cx="16.1" cy="5.6" r="0.5"/>
|
|
||||||
<circle class="st4" cx="14.3" cy="5.6" r="0.5"/>
|
|
||||||
<circle class="st5" cx="4.7" cy="5.6" r="0.9"/>
|
|
||||||
<linearGradient id="SVGID_1_" gradientUnits="userSpaceOnUse" x1="4.1668" y1="-1953.0668" x2="5.1828" y2="-1954.0828" gradientTransform="matrix(1 0 0 -1 0 -1948)">
|
|
||||||
<stop offset="0" style="stop-color:#000000;stop-opacity:0.1"/>
|
|
||||||
<stop offset="1" style="stop-color:#000000;stop-opacity:0"/>
|
|
||||||
</linearGradient>
|
|
||||||
<circle class="st6" cx="4.7" cy="5.6" r="0.9"/>
|
|
||||||
<path class="st0" d="M1.1,10.2v3.6c0,0.5,0.4,0.9,0.9,0.9h18.2c0.5,0,0.9-0.4,0.9-0.9v-3.6c0-0.5-0.4-0.9-0.9-0.9H2
|
|
||||||
C1.5,9.3,1.1,9.7,1.1,10.2z"/>
|
|
||||||
<path class="st2" d="M20.2,14.5H2c-0.5,0-0.9-0.4-0.9-0.9v0.2c0,0.5,0.4,0.9,0.9,0.9h18.2c0.5,0,0.9-0.4,0.9-0.9v-0.2
|
|
||||||
C21.1,14.1,20.7,14.5,20.2,14.5z"/>
|
|
||||||
<path class="st3" d="M20.2,9.3H2c-0.5,0-0.9,0.4-0.9,0.9v0.2c0-0.5,0.4-0.9,0.9-0.9h18.2c0.5,0,0.9,0.4,0.9,0.9v-0.2
|
|
||||||
C21.1,9.7,20.7,9.3,20.2,9.3z"/>
|
|
||||||
<circle class="st4" cx="17.9" cy="12" r="0.5"/>
|
|
||||||
<circle class="st4" cx="16.1" cy="12" r="0.5"/>
|
|
||||||
<circle class="st4" cx="14.3" cy="12" r="0.5"/>
|
|
||||||
<circle class="st5" cx="4.7" cy="12" r="0.9"/>
|
|
||||||
<linearGradient id="SVGID_2_" gradientUnits="userSpaceOnUse" x1="4.1445" y1="-1959.4445" x2="5.1605" y2="-1960.4604" gradientTransform="matrix(1 0 0 -1 0 -1948)">
|
|
||||||
<stop offset="0" style="stop-color:#000000;stop-opacity:0.1"/>
|
|
||||||
<stop offset="1" style="stop-color:#000000;stop-opacity:0"/>
|
|
||||||
</linearGradient>
|
|
||||||
<circle class="st7" cx="4.7" cy="12" r="0.9"/>
|
|
||||||
<path class="st8" d="M19.1,13c0,0.4,0.3,0.7,0.7,0.8l0,0c0.4,0,0.8-0.3,0.8-0.8c0-0.4-0.3-0.7-0.7-0.8c0,0,0,0-0.1,0
|
|
||||||
C19.5,12.3,19.1,12.6,19.1,13L19.1,13z"/>
|
|
||||||
<linearGradient id="SVGID_3_" gradientUnits="userSpaceOnUse" x1="0.6335" y1="1978.4908" x2="25.081" y2="1989.8916" gradientTransform="matrix(1 0 0 1 0 -1974)">
|
|
||||||
<stop offset="0" style="stop-color:#FFFFFF;stop-opacity:0.2"/>
|
|
||||||
<stop offset="1" style="stop-color:#FFFFFF;stop-opacity:0"/>
|
|
||||||
</linearGradient>
|
|
||||||
<path class="st9" d="M22.4,13.8H21v-3.6c0-0.5-0.4-0.9-0.9-0.9V8.4C20.6,8.4,21,8,21,7.5V3.8c0-0.5-0.4-0.9-0.9-0.9H2
|
|
||||||
C1.5,2.9,1,3.3,1,3.8v3.6c0,0.6,0.4,1,0.9,1v0.9C1.5,9.3,1,9.7,1,10.2v3.6c0,0.5,0.4,0.9,0.9,0.9h10.9v5.9c0,0.3,0.2,0.5,0.5,0.5
|
|
||||||
h9.1c0.3,0,0.5-0.2,0.5-0.5v-6.4C22.9,14,22.7,13.8,22.4,13.8z"/>
|
|
||||||
<path class="st10" d="M22.4,16.2c0,2.7-2.2,4.8-4.8,4.8c-2.7,0-4.8-2.1-4.8-4.8c0-2.7,2.2-4.8,4.8-4.8
|
|
||||||
C20.2,11.3,22.4,13.5,22.4,16.2z"/>
|
|
||||||
<path class="st11" d="M22,12.7l-0.5-0.1c0,0-0.1,0-0.1-0.1c0-0.2-0.1-0.3-0.2-0.5c0,0,0-0.1,0-0.1l0.2-0.4c0,0,0-0.1,0-0.1l-0.3-0.3
|
|
||||||
c0,0-0.1,0-0.1,0l-0.4,0.2c0,0-0.1,0-0.1,0c-0.1-0.1-0.3-0.1-0.4-0.2c0,0-0.1,0-0.1-0.1L20,10.6c0,0-0.1-0.1-0.1-0.1h-0.4
|
|
||||||
c0,0-0.1,0-0.1,0.1l-0.1,0.5c0,0,0,0.1-0.1,0.1c0,0-0.1,0-0.1,0c-0.1,0-0.2,0.1-0.2,0.1c0,0-0.1,0-0.1,0.1c0,0,0,0,0,0c0,0,0,0,0,0
|
|
||||||
c0,0,0,0,0,0c0,0,0,0,0,0c0,0,0,0,0,0l-0.4-0.2c0,0-0.1,0-0.1,0l-0.2,0.2h0l-0.1,0.1h0c0,0,0,0,0,0.1c0,0,0,0.1,0,0.1l0.2,0.4
|
|
||||||
c0,0,0,0,0,0c0,0,0,0.1,0,0.1c-0.1,0.1-0.1,0.3-0.2,0.5c0,0,0,0.1-0.1,0.1l-0.5,0.1c0,0,0,0,0,0c0,0,0,0,0,0c0,0,0,0,0,0.1v0.4
|
|
||||||
c0,0,0,0,0,0c0,0,0,0,0,0c0,0,0,0,0,0c0,0,0,0,0,0l0.5,0.1c0,0,0.1,0,0.1,0.1c0,0.2,0.1,0.3,0.2,0.5c0,0,0,0.1,0,0.1l-0.2,0.4
|
|
||||||
c0,0,0,0.1,0,0.1c0,0,0,0,0,0.1h0l0.3,0.3c0,0,0.1,0,0.1,0l0.4-0.2c0,0,0,0,0,0c0,0,0.1,0,0.1,0c0,0,0.1,0,0.1,0.1
|
|
||||||
c0.1,0,0.2,0.1,0.2,0.1c0,0,0.1,0,0.1,0c0,0,0.1,0,0.1,0.1l0.1,0.5c0,0,0.1,0.1,0.1,0.1h0.4c0.1,0,0.1,0,0.1-0.1l0.1-0.5
|
|
||||||
c0,0,0-0.1,0.1-0.1c0.2,0,0.3-0.1,0.4-0.2c0,0,0.1,0,0.1,0l0.4,0.2c0,0,0.1,0,0.1,0l0.3-0.3c0,0,0-0.1,0-0.1l-0.2-0.4
|
|
||||||
c0,0,0-0.1,0-0.1c0.1-0.1,0.1-0.3,0.2-0.5c0,0,0,0,0-0.1c0,0,0,0,0,0l0.5-0.1c0,0,0.1-0.1,0.1-0.1v-0.4C22.1,12.8,22.1,12.7,22,12.7
|
|
||||||
z M19.8,14.1c-0.1,0-0.3,0-0.4,0c-0.2,0-0.4-0.1-0.6-0.3c0,0,0,0,0,0c-0.1-0.2-0.2-0.3-0.2-0.5c0-0.1,0-0.3,0-0.4
|
|
||||||
c0-0.5,0.4-0.9,0.8-1c0.2,0,0.3-0.1,0.5,0c0,0,0,0,0,0c0.2,0,0.4,0.1,0.6,0.3c0,0,0,0,0,0c0.1,0.1,0.1,0.1,0.1,0.2l0,0
|
|
||||||
c0.1,0.1,0.1,0.3,0.1,0.4C20.9,13.4,20.4,14,19.8,14.1C19.8,14.1,19.8,14.1,19.8,14.1z"/>
|
|
||||||
<path class="st8" d="M18.9,13c0,0.4,0.3,0.7,0.7,0.8c0,0,0,0,0,0c0.4,0,0.8-0.3,0.8-0.8c0-0.4-0.3-0.7-0.7-0.8c0,0,0,0-0.1,0
|
|
||||||
C19.2,12.3,18.9,12.6,18.9,13L18.9,13z"/>
|
|
||||||
<path class="st12" d="M20.8,13c0-0.6-0.5-1.2-1.1-1.2c0.1,0.1,0.2,0.2,0.1,0.3c0,0.1-0.1,0.1-0.2,0.1c0.4,0,0.7,0.4,0.7,0.8
|
|
||||||
c0,0.4-0.3,0.8-0.8,0.8c0,0,0,0,0,0c-0.1,0-0.2,0.1-0.2,0.2c0,0.1,0.1,0.2,0.2,0.2c0,0,0,0,0.1,0C20.3,14.2,20.8,13.7,20.8,13z"/>
|
|
||||||
<path class="st13" d="M18.9,13.3c0-0.1-0.1-0.2-0.1-0.3c0-0.4,0.3-0.8,0.8-0.8c0,0,0,0,0.1,0c0.1,0,0.2-0.2,0.2-0.3
|
|
||||||
c0-0.1-0.1-0.1-0.1-0.2c0,0-0.1,0-0.1,0c-0.7,0-1.2,0.5-1.2,1.2c0,0.1,0,0.2,0,0.3C18.5,13.3,18.9,13.3,18.9,13.3z"/>
|
|
||||||
<path class="st13" d="M19.7,13.8C19.7,13.8,19.6,13.8,19.7,13.8c-0.5,0-0.8-0.3-0.8-0.8c0,0,0,0,0-0.1h-0.5c0,0,0,0,0,0.1
|
|
||||||
c0,0.7,0.5,1.2,1.2,1.2c0,0,0,0,0.1,0c0.1,0,0.2-0.1,0.2-0.2C19.9,13.9,19.8,13.8,19.7,13.8z"/>
|
|
||||||
<path class="st8" d="M20.5,13c0,0.5-0.4,0.8-0.8,0.9c0,0,0,0,0,0c-0.5,0-0.9-0.4-0.9-0.9c0-0.5,0.3-0.8,0.8-0.8c0,0,0,0,0.1,0
|
|
||||||
C20.1,12.2,20.5,12.6,20.5,13L20.5,13z"/>
|
|
||||||
<path class="st14" d="M19.2,14.8c-0.6-0.4-1-1-1-1.8c0-0.8,0.4-1.4,1-1.8v-0.1c-0.2,0-0.3,0.1-0.5,0.2c0,0-0.1,0-0.1,0l-0.4-0.2
|
|
||||||
c0,0-0.1,0-0.1,0l-0.3,0.3c0,0,0,0.1,0,0.1l0.2,0.4c0,0,0,0.1,0,0.1c-0.1,0.1-0.1,0.3-0.2,0.5c0,0,0,0.1-0.1,0.1l-0.5,0.1
|
|
||||||
c0,0-0.1,0.1-0.1,0.1v0.4c0,0.1,0,0.1,0.1,0.1l0.5,0.1c0,0,0.1,0,0.1,0.1c0,0.2,0.1,0.3,0.2,0.5c0,0,0,0.1,0,0.1l-0.2,0.4
|
|
||||||
c0,0,0,0.1,0,0.1l0.3,0.3c0,0,0.1,0,0.1,0l0.4-0.2c0,0,0.1,0,0.1,0C18.8,14.8,19,14.9,19.2,14.8L19.2,14.8L19.2,14.8z"/>
|
|
||||||
<path class="st15" d="M23,18.3l-0.3-0.1c0,0-0.1,0-0.1-0.1c0-0.1-0.1-0.2-0.1-0.3c0,0,0-0.1,0-0.1l0.2-0.3c0,0,0-0.1,0-0.1l-0.2-0.2
|
|
||||||
c0,0-0.1,0-0.1,0l-0.3,0.2c0,0-0.1,0-0.1,0c-0.1-0.1-0.2-0.1-0.3-0.1c0,0-0.1,0-0.1-0.1l-0.1-0.3c0,0,0-0.1-0.1-0.1h-0.3
|
|
||||||
c0,0-0.1,0-0.1,0.1l-0.1,0.3c0,0,0,0-0.1,0.1c0,0,0,0-0.1,0c-0.1,0-0.1,0-0.2,0.1c0,0-0.1,0-0.1,0c0,0,0,0,0,0c0,0,0,0,0,0
|
|
||||||
c0,0,0,0,0,0c0,0,0,0,0,0c0,0,0,0,0,0l-0.3-0.2c0,0-0.1,0-0.1,0l-0.2,0.2h0l0,0h0c0,0,0,0,0,0c0,0,0,0,0,0.1l0.2,0.3c0,0,0,0,0,0
|
|
||||||
c0,0,0,0,0,0.1c-0.1,0.1-0.1,0.2-0.1,0.3c0,0,0,0-0.1,0.1l-0.3,0.1c0,0,0,0,0,0c0,0,0,0,0,0c0,0,0,0,0,0v0.3c0,0,0,0,0,0
|
|
||||||
c0,0,0,0,0,0c0,0,0,0,0,0c0,0,0,0,0,0l0.3,0.1c0,0,0.1,0,0.1,0.1c0,0.1,0.1,0.2,0.1,0.3c0,0,0,0.1,0,0.1l-0.2,0.3c0,0,0,0,0,0.1
|
|
||||||
c0,0,0,0,0,0h0l0.2,0.2c0,0,0.1,0,0.1,0l0.3-0.2c0,0,0,0,0,0c0,0,0,0,0.1,0c0,0,0.1,0,0.1,0c0.1,0,0.1,0.1,0.2,0.1c0,0,0,0,0.1,0
|
|
||||||
c0,0,0.1,0,0.1,0.1l0.1,0.3c0,0,0,0.1,0.1,0.1h0.3c0,0,0.1,0,0.1-0.1l0.1-0.3c0,0,0-0.1,0.1-0.1c0.1,0,0.2-0.1,0.3-0.1
|
|
||||||
c0,0,0.1,0,0.1,0l0.3,0.2c0,0,0.1,0,0.1,0l0.2-0.2c0,0,0-0.1,0-0.1l-0.2-0.3c0,0,0-0.1,0-0.1c0.1-0.1,0.1-0.2,0.1-0.3c0,0,0,0,0,0
|
|
||||||
c0,0,0,0,0,0l0.3-0.1c0,0,0.1,0,0.1-0.1L23,18.3C23.1,18.3,23.1,18.3,23,18.3L23,18.3z M21.4,19.3c-0.1,0-0.2,0-0.3,0
|
|
||||||
c-0.1,0-0.3-0.1-0.5-0.2c0,0,0,0,0,0c-0.1-0.1-0.2-0.3-0.2-0.4c0-0.1,0-0.2,0-0.3c0-0.4,0.3-0.7,0.6-0.8c0.1,0,0.2,0,0.4,0
|
|
||||||
c0,0,0,0,0,0c0.1,0,0.3,0.1,0.4,0.2c0,0,0,0,0,0c0,0.1,0.1,0.1,0.1,0.2l0,0c0,0.1,0.1,0.2,0.1,0.3C22.2,18.8,21.9,19.3,21.4,19.3
|
|
||||||
C21.4,19.3,21.4,19.3,21.4,19.3L21.4,19.3z"/>
|
|
||||||
<path class="st8" d="M20.7,18.5c0,0.3,0.2,0.5,0.5,0.6c0,0,0,0,0,0c0.3,0,0.6-0.3,0.6-0.6c0-0.3-0.2-0.5-0.5-0.6c0,0,0,0,0,0
|
|
||||||
C20.9,18,20.7,18.2,20.7,18.5z"/>
|
|
||||||
<path class="st16" d="M22.2,18.5c0-0.5-0.4-0.9-0.8-0.9c0.1,0,0.1,0.1,0.1,0.2c0,0-0.1,0.1-0.1,0.1c0.3,0,0.5,0.3,0.5,0.6
|
|
||||||
c0,0.3-0.3,0.6-0.6,0.6c0,0,0,0,0,0c-0.1,0-0.1,0.1-0.1,0.2c0,0.1,0.1,0.1,0.1,0.2c0,0,0,0,0,0C21.8,19.4,22.2,19,22.2,18.5
|
|
||||||
L22.2,18.5z"/>
|
|
||||||
<path class="st17" d="M21.3,17.6c-0.1,0-0.2,0-0.2,0V18c0.1,0,0.1,0,0.2,0c0.3,0,0.5,0.2,0.6,0.5c0-0.1,0.1-0.2,0.2-0.1
|
|
||||||
c0.1,0,0.1,0.1,0.1,0.1c0,0,0,0,0,0C22.1,18,21.7,17.6,21.3,17.6L21.3,17.6z"/>
|
|
||||||
<path class="st16" d="M20.7,18.7c0-0.1,0-0.1,0-0.2c0-0.3,0.3-0.6,0.6-0.6c0,0,0,0,0,0c0.1,0,0.2-0.1,0.1-0.2c0-0.1-0.1-0.1-0.1-0.1
|
|
||||||
c0,0,0,0-0.1,0c-0.5,0-0.9,0.4-0.9,0.9c0,0.1,0,0.2,0,0.2C20.4,18.7,20.7,18.7,20.7,18.7z"/>
|
|
||||||
<path class="st17" d="M21.3,19.1C21.3,19.1,21.3,19.1,21.3,19.1c-0.3,0-0.6-0.2-0.6-0.6c0,0,0,0,0-0.1h-0.3c0,0,0,0,0,0.1
|
|
||||||
c0,0.5,0.4,0.9,0.9,0.9c0,0,0,0,0,0c0.1,0,0.1-0.1,0.1-0.2C21.4,19.2,21.4,19.1,21.3,19.1L21.3,19.1z"/>
|
|
||||||
<path class="st8" d="M21.9,18.5c0,0.3-0.3,0.6-0.6,0.6c0,0,0,0,0,0c-0.4,0-0.6-0.3-0.6-0.6c0-0.3,0.3-0.6,0.6-0.6c0,0,0,0,0,0
|
|
||||||
C21.6,17.9,21.9,18.2,21.9,18.5L21.9,18.5z"/>
|
|
||||||
<path class="st18" d="M20.9,19.9c-0.4-0.3-0.7-0.8-0.7-1.3c0-0.6,0.3-1.1,0.7-1.3v-0.1c-0.1,0-0.2,0.1-0.4,0.1c0,0-0.1,0-0.1,0
|
|
||||||
l-0.3-0.2c0,0-0.1,0-0.1,0l-0.2,0.2c0,0,0,0.1,0,0.1l0.2,0.3c0,0,0,0.1,0,0.1c-0.1,0.1-0.1,0.2-0.1,0.3c0,0,0,0.1-0.1,0.1l-0.3,0.1
|
|
||||||
c0,0-0.1,0-0.1,0.1v0.3c0,0,0,0.1,0.1,0.1l0.3,0.1c0,0,0.1,0,0.1,0.1c0,0.1,0.1,0.2,0.1,0.3c0,0,0,0.1,0,0.1l-0.2,0.3
|
|
||||||
c0,0,0,0.1,0,0.1l0.2,0.2c0,0,0.1,0,0.1,0l0.3-0.2c0,0,0.1,0,0.1,0C20.7,19.8,20.8,19.9,20.9,19.9C20.9,19.9,20.9,19.9,20.9,19.9z"
|
|
||||||
/>
|
|
||||||
<path class="st15" d="M19.3,16.9l-0.9-0.1c0,0-0.1,0-0.1-0.1c0-0.1,0-0.1-0.1-0.2c0,0,0-0.1,0-0.1l0.6-0.6c0,0,0-0.1,0-0.2l-0.4-0.5
|
|
||||||
c0,0-0.1-0.1-0.2,0l-0.8,0.4c0,0-0.1,0-0.1,0c-0.1,0-0.1-0.1-0.2-0.1c0,0-0.1-0.1-0.1-0.1l0.1-0.9c0-0.1,0-0.1-0.1-0.1L16.7,14
|
|
||||||
c-0.1,0-0.1,0-0.1,0.1l-0.4,0.8c0,0-0.1,0.1-0.1,0.1c0,0-0.1,0-0.1,0c0,0-0.1,0-0.1,0c0,0-0.1,0-0.1-0.1l-0.1-0.3L15.3,14
|
|
||||||
c0-0.1-0.1-0.1-0.1-0.1l-0.6,0.2c-0.1,0-0.1,0.1-0.1,0.1l0.1,0.9c0,0,0,0.1-0.1,0.1c-0.1,0-0.1,0.1-0.2,0.1c0,0-0.1,0-0.1,0L13.5,15
|
|
||||||
c-0.1,0-0.1,0-0.2,0L13,15.6c0,0,0,0.1,0,0.2l0.6,0.6c0,0,0,0.1,0,0.1c0,0.1,0,0.1-0.1,0.2c0,0-0.1,0.1-0.1,0.1l-0.7,0.1
|
|
||||||
c0,0.3,0.1,0.6,0.2,1l0.5,0.1c0,0,0.1,0,0.1,0.1c0,0.1,0,0.1,0.1,0.2c0,0,0,0.1,0,0.1l-0.3,0.3c0.2,0.3,0.4,0.6,0.6,0.8l0.3-0.2
|
|
||||||
c0,0,0.1,0,0.1,0c0,0,0,0,0,0c0,0,0,0,0,0c0,0,0.1,0.1,0.2,0.1c0,0,0.1,0.1,0.1,0.1L14.6,20c0.3,0.2,0.5,0.4,0.8,0.5l0.3-0.6
|
|
||||||
c0,0,0.1-0.1,0.1-0.1h0.2c0,0,0.1,0,0.1,0.1l0.4,0.8c0,0.1,0.1,0.1,0.1,0.1l0.6-0.2c0.1,0,0.1-0.1,0.1-0.1l-0.1-0.9
|
|
||||||
c0-0.1,0-0.1,0.1-0.1c0.1,0,0.1-0.1,0.2-0.1c0,0,0.1,0,0.1,0l0.8,0.4c0.1,0,0.1,0,0.2,0l0.4-0.5c0-0.1,0-0.1,0-0.2l-0.6-0.6
|
|
||||||
c0,0,0-0.1,0-0.1c0-0.1,0.1-0.1,0.1-0.2c0,0,0-0.1,0.1-0.1l0.9-0.1c0.1,0,0.1-0.1,0.1-0.1v-0.6C19.4,17,19.4,17,19.3,16.9z
|
|
||||||
M15.2,18.3C15.2,18.3,15.2,18.2,15.2,18.3c-0.1-0.1-0.1-0.1-0.2-0.2c0,0-0.1-0.1-0.1-0.1c0-0.1-0.1-0.1-0.1-0.2c0-0.1,0-0.1,0-0.2
|
|
||||||
c0-0.1,0-0.2,0-0.2v0c0-0.6,0.5-1.2,1.2-1.2c0,0,0.1,0,0.1,0l0.1,0c0,0,0,0,0.1,0c0,0,0.1,0,0.1,0c0,0,0.1,0,0.1,0s0.1,0,0.1,0
|
|
||||||
l0.1,0c0,0,0,0,0.1,0.1l0.1,0.1c0.1,0.1,0.1,0.1,0.1,0.2c0,0,0,0.1,0.1,0.1c0,0,0,0.1,0,0.1c0,0,0,0.1,0,0.1c0,0,0,0.1,0,0.1
|
|
||||||
c0,0.1,0,0.2,0,0.2l0,0.2c0,0,0,0.1,0,0.1l-0.2,0.4c0,0,0,0.1-0.1,0.1c0,0,0,0-0.1,0.1c0,0-0.1,0.1-0.1,0.1c0,0-0.1,0-0.1,0.1
|
|
||||||
c-0.1,0-0.1,0.1-0.2,0.1c0,0-0.1,0-0.1,0C15.9,18.6,15.6,18.5,15.2,18.3C15.3,18.3,15.3,18.3,15.2,18.3z"/>
|
|
||||||
<path class="st18" d="M15.3,14c0-0.1-0.1-0.1-0.1-0.1l-0.6,0.2c-0.1,0-0.1,0.1-0.1,0.1l0.1,0.9c0,0,0,0.1-0.1,0.1
|
|
||||||
c-0.1,0-0.1,0.1-0.2,0.1c0,0-0.1,0-0.1,0L13.5,15c-0.1,0-0.1,0-0.2,0L13,15.6c0,0,0,0.1,0,0.2l0.6,0.6c0,0,0,0.1,0,0.1
|
|
||||||
c0,0.1,0,0.1-0.1,0.2c0,0-0.1,0.1-0.1,0.1l-0.7,0.1c0,0.3,0.1,0.6,0.2,1l0.5,0.1c0,0,0.1,0,0.1,0.1c0,0.1,0,0.1,0.1,0.2
|
|
||||||
c0,0,0,0.1,0,0.1l-0.3,0.3c0.2,0.3,0.4,0.6,0.6,0.8l0.3-0.2c0,0,0.1,0,0.1,0c0,0,0,0,0,0l0,0v0c-0.1-0.4-0.2-0.9-0.2-1.4
|
|
||||||
c0,0,0,0,0-0.1c0-0.2,0-0.4,0-0.6c0-0.3,0.1-0.6,0.2-0.9c0,0,0-0.1,0-0.1c0.2-0.7,0.6-1.4,1.1-1.8L15.3,14z"/>
|
|
||||||
<path class="st17" d="M17.2,16.1c-0.3-0.3-0.8-0.5-1.2-0.5c-0.1,0-0.2,0-0.3,0c-0.5,0.1-0.9,0.4-1.2,0.8c-0.2,0.3-0.3,0.6-0.3,0.9
|
|
||||||
c0,0.2,0,0.3,0.1,0.5c0.1,0.3,0.2,0.6,0.5,0.8c0.4,0.4,0.9,0.6,1.5,0.5c0.4,0,0.8-0.2,1-0.5c0.2-0.2,0.4-0.6,0.5-0.9v0
|
|
||||||
c0-0.1,0-0.2,0-0.3C17.7,16.9,17.5,16.4,17.2,16.1z M15.3,18.3C15.3,18.3,15.3,18.3,15.3,18.3c-0.1-0.1-0.1-0.1-0.2-0.1
|
|
||||||
c0,0-0.1-0.1-0.1-0.1c0,0-0.1-0.1-0.1-0.1c0-0.1-0.1-0.1-0.1-0.2c0-0.1,0-0.1,0-0.2c0-0.1,0-0.2,0-0.2v0c0-0.6,0.5-1.2,1.2-1.2
|
|
||||||
c0,0,0.1,0,0.1,0l0.1,0c0,0,0,0,0.1,0c0,0,0.1,0,0.1,0c0,0,0.1,0,0.1,0c0,0,0.1,0,0.1,0l0.1,0c0,0,0,0,0.1,0.1l0.1,0.1
|
|
||||||
c0.1,0.1,0.1,0.1,0.1,0.2c0,0,0,0.1,0.1,0.1s0,0.1,0,0.1c0,0,0,0.1,0,0.1c0,0,0,0.1,0,0.1c0,0.1,0,0.2,0,0.2l0,0.2c0,0,0,0.1,0,0.1
|
|
||||||
l-0.2,0.4c0,0,0,0.1-0.1,0.1c0,0,0,0-0.1,0.1c0,0-0.1,0.1-0.1,0.1c0,0-0.1,0-0.1,0.1c-0.1,0-0.1,0.1-0.2,0.1c0,0-0.1,0-0.1,0
|
|
||||||
c-0.1,0-0.2,0-0.2,0C15.7,18.5,15.5,18.5,15.3,18.3z"/>
|
|
||||||
<path class="st16" d="M14.5,17.4c0.1,0,0.3-0.1,0.3-0.2c0-0.2,0.2-0.4,0.3-0.6c0.2-0.2,0.4-0.3,0.6-0.3c0.1,0,0.2-0.1,0.2-0.3
|
|
||||||
c0-0.2-0.2-0.3-0.3-0.3c-0.3,0.1-0.7,0.2-0.9,0.5c-0.2,0.2-0.4,0.6-0.5,0.9C14.2,17.2,14.3,17.4,14.5,17.4z M17.4,17.4
|
|
||||||
c-0.1,0-0.3,0.1-0.3,0.2c0,0.2-0.2,0.4-0.3,0.6c-0.2,0.2-0.4,0.3-0.6,0.3c-0.1,0-0.2,0.1-0.2,0.3c0,0.2,0.2,0.3,0.3,0.3
|
|
||||||
c0.3-0.1,0.7-0.2,0.9-0.5c0.2-0.2,0.4-0.6,0.5-0.9C17.7,17.6,17.6,17.4,17.4,17.4z"/>
|
|
||||||
</svg>
|
|
||||||
|
Before Width: | Height: | Size: 14 KiB |
|
Before Width: | Height: | Size: 988 KiB |
|
Before Width: | Height: | Size: 333 KiB |
|
Before Width: | Height: | Size: 21 KiB |
|
Before Width: | Height: | Size: 73 KiB |
|
Before Width: | Height: | Size: 35 KiB |
|
Before Width: | Height: | Size: 81 KiB |
|
Before Width: | Height: | Size: 17 KiB |
@@ -1,122 +0,0 @@
|
|||||||
=========================
|
|
||||||
Cetmix Tower Server Queue
|
|
||||||
=========================
|
|
||||||
|
|
||||||
..
|
|
||||||
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
|
||||||
!! This file is generated by oca-gen-addon-readme !!
|
|
||||||
!! changes will be overwritten. !!
|
|
||||||
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
|
||||||
!! source digest: sha256:bcdbf27340bb59ec9a0cf443b108e2d6b27cf7c64466b47585fbd02410ef071b
|
|
||||||
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
|
||||||
|
|
||||||
.. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png
|
|
||||||
:target: https://odoo-community.org/page/development-status
|
|
||||||
:alt: Beta
|
|
||||||
.. |badge2| image:: https://img.shields.io/badge/license-AGPL--3-blue.png
|
|
||||||
:target: http://www.gnu.org/licenses/agpl-3.0-standalone.html
|
|
||||||
:alt: License: AGPL-3
|
|
||||||
.. |badge3| image:: https://img.shields.io/badge/github-cetmix%2Fcetmix--tower-lightgray.png?logo=github
|
|
||||||
:target: https://github.com/cetmix/cetmix-tower/tree/16.0/cetmix_tower_server_queue
|
|
||||||
:alt: cetmix/cetmix-tower
|
|
||||||
|
|
||||||
|badge1| |badge2| |badge3|
|
|
||||||
|
|
||||||
This module implements asynchronous task execution for `Cetmix
|
|
||||||
Tower <https://cetmix.com/tower>`__.
|
|
||||||
|
|
||||||
It requires the `queue_job <https://github.com/OCA/queue/queue_job>`__
|
|
||||||
module to be installed and configured in the Odoo instance.
|
|
||||||
|
|
||||||
Please refer to the `official
|
|
||||||
documentation <https://cetmix.com/tower>`__ for detailed information.
|
|
||||||
|
|
||||||
**Table of contents**
|
|
||||||
|
|
||||||
.. contents::
|
|
||||||
:local:
|
|
||||||
|
|
||||||
Configuration
|
|
||||||
=============
|
|
||||||
|
|
||||||
Please refer to the `official
|
|
||||||
documentation <https://cetmix.com/tower>`__ for detailed configuration
|
|
||||||
instructions.
|
|
||||||
|
|
||||||
Usage
|
|
||||||
=====
|
|
||||||
|
|
||||||
Please refer to the `official
|
|
||||||
documentation <https://cetmix.com/tower>`__ for detailed usage
|
|
||||||
instructions.
|
|
||||||
|
|
||||||
Changelog
|
|
||||||
=========
|
|
||||||
|
|
||||||
16.0.2.0.0 (2026-03-23)
|
|
||||||
-----------------------
|
|
||||||
|
|
||||||
- Features: Jets! (4700)
|
|
||||||
|
|
||||||
16.0.1.2.0 (2025-11-12)
|
|
||||||
-----------------------
|
|
||||||
|
|
||||||
- Features: Use the 'web_notify' module to send user notifications.
|
|
||||||
(5074)
|
|
||||||
|
|
||||||
16.0.1.1.4 (2025-11-05)
|
|
||||||
-----------------------
|
|
||||||
|
|
||||||
- Bugfixes: Finish multiple commands at once. (5062)
|
|
||||||
|
|
||||||
16.0.1.1.3 (2025-10-13)
|
|
||||||
-----------------------
|
|
||||||
|
|
||||||
- Features: Terminate running flight plan manually (3410)
|
|
||||||
|
|
||||||
16.0.1.1.0 (2025-07-16)
|
|
||||||
-----------------------
|
|
||||||
|
|
||||||
- Features: cetmix_tower_server_queue: Add async file upload/download
|
|
||||||
via job queue (3720)
|
|
||||||
- Features: Terminate command with error if job has failed (4718)
|
|
||||||
|
|
||||||
16.0.1.0.2 (2025-05-16)
|
|
||||||
-----------------------
|
|
||||||
|
|
||||||
- Features: 'sudo' parameter is not passed to command. (4678)
|
|
||||||
|
|
||||||
16.0.1.0.1 (2025-05-09)
|
|
||||||
-----------------------
|
|
||||||
|
|
||||||
- Bugfixes: Non-critical issues and performance improvements. (4611)
|
|
||||||
|
|
||||||
16.0.1.0.0
|
|
||||||
----------
|
|
||||||
|
|
||||||
Release for Odoo 16.0
|
|
||||||
|
|
||||||
Bug Tracker
|
|
||||||
===========
|
|
||||||
|
|
||||||
Bugs are tracked on `GitHub Issues <https://github.com/cetmix/cetmix-tower/issues>`_.
|
|
||||||
In case of trouble, please check there if your issue has already been reported.
|
|
||||||
If you spotted it first, help us to smash it by providing a detailed and welcomed
|
|
||||||
`feedback <https://github.com/cetmix/cetmix-tower/issues/new?body=module:%20cetmix_tower_server_queue%0Aversion:%2016.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**>`_.
|
|
||||||
|
|
||||||
Do not contact contributors directly about support or help with technical issues.
|
|
||||||
|
|
||||||
Credits
|
|
||||||
=======
|
|
||||||
|
|
||||||
Authors
|
|
||||||
-------
|
|
||||||
|
|
||||||
* Cetmix
|
|
||||||
|
|
||||||
Maintainers
|
|
||||||
-----------
|
|
||||||
|
|
||||||
This module is part of the `cetmix/cetmix-tower <https://github.com/cetmix/cetmix-tower/tree/16.0/cetmix_tower_server_queue>`_ project on GitHub.
|
|
||||||
|
|
||||||
You are welcome to contribute.
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
from . import models
|
|
||||||
@@ -1,19 +0,0 @@
|
|||||||
# Copyright (C) 2022 Cetmix OÜ
|
|
||||||
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
|
|
||||||
{
|
|
||||||
"name": "Cetmix Tower Server Queue",
|
|
||||||
"summary": "Cetmix Tower asynchronous task execution using 'queue_job'",
|
|
||||||
"version": "16.0.2.0.0",
|
|
||||||
"development_status": "Beta",
|
|
||||||
"category": "Productivity",
|
|
||||||
"website": "https://tower.cetmix.com",
|
|
||||||
"author": "Cetmix",
|
|
||||||
"license": "AGPL-3",
|
|
||||||
"installable": True,
|
|
||||||
"auto_install": True,
|
|
||||||
"depends": ["cetmix_tower_server", "queue_job"],
|
|
||||||
"data": [
|
|
||||||
"views/cx_tower_command_log_view.xml",
|
|
||||||
"views/cx_tower_file_view.xml",
|
|
||||||
],
|
|
||||||
}
|
|
||||||
@@ -1,150 +0,0 @@
|
|||||||
# Translation of Odoo Server.
|
|
||||||
# This file contains the translation of the following modules:
|
|
||||||
# * cetmix_tower_server_queue
|
|
||||||
#
|
|
||||||
msgid ""
|
|
||||||
msgstr ""
|
|
||||||
"Project-Id-Version: Odoo Server 16.0\n"
|
|
||||||
"Report-Msgid-Bugs-To: \n"
|
|
||||||
"Last-Translator: \n"
|
|
||||||
"Language-Team: \n"
|
|
||||||
"MIME-Version: 1.0\n"
|
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
|
||||||
"Content-Transfer-Encoding: \n"
|
|
||||||
"Plural-Forms: \n"
|
|
||||||
|
|
||||||
#. module: cetmix_tower_server_queue
|
|
||||||
#: model:ir.model.fields,help:cetmix_tower_server_queue.field_cx_tower_command_log__command_status
|
|
||||||
msgid ""
|
|
||||||
"0 if command finished successfully.\n"
|
|
||||||
"-100 general error,\n"
|
|
||||||
"-101 not found,\n"
|
|
||||||
"-201 another instance of this command is running,\n"
|
|
||||||
"-202 no runner found for the command action,\n"
|
|
||||||
"-203 Python code execution failed\n"
|
|
||||||
"-205 plan line condition check failed\n"
|
|
||||||
"503 if SSH connection error occurred\n"
|
|
||||||
"601 if queue job failed"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#. module: cetmix_tower_server_queue
|
|
||||||
#: model:ir.model,name:cetmix_tower_server_queue.model_cx_tower_command_log
|
|
||||||
msgid "Cetmix Tower Command Log"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#. module: cetmix_tower_server_queue
|
|
||||||
#: model:ir.model,name:cetmix_tower_server_queue.model_cx_tower_file
|
|
||||||
msgid "Cetmix Tower File"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#. module: cetmix_tower_server_queue
|
|
||||||
#: model:ir.model,name:cetmix_tower_server_queue.model_cx_tower_server
|
|
||||||
msgid "Cetmix Tower Server"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#. module: cetmix_tower_server_queue
|
|
||||||
#: model_terms:ir.ui.view,arch_db:cetmix_tower_server_queue.cx_tower_file_view_form
|
|
||||||
msgid "Error"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#. module: cetmix_tower_server_queue
|
|
||||||
#: model:ir.model.fields,field_description:cetmix_tower_server_queue.field_cx_tower_command_log__command_status
|
|
||||||
msgid "Exit Code"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#. module: cetmix_tower_server_queue
|
|
||||||
#. odoo-python
|
|
||||||
#: code:addons/cetmix_tower_server_queue/models/cx_tower_file.py:0
|
|
||||||
#: code:addons/cetmix_tower_server_queue/models/cx_tower_file.py:0
|
|
||||||
#: code:addons/cetmix_tower_server_queue/models/cx_tower_file.py:0
|
|
||||||
#, python-format
|
|
||||||
msgid "Failure"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#. module: cetmix_tower_server_queue
|
|
||||||
#. odoo-python
|
|
||||||
#: code:addons/cetmix_tower_server_queue/models/cx_tower_file.py:0
|
|
||||||
#, python-format
|
|
||||||
msgid "File downloaded!"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#. module: cetmix_tower_server_queue
|
|
||||||
#: model:ir.model.fields,help:cetmix_tower_server_queue.field_cx_tower_file__is_being_processed
|
|
||||||
msgid "File is currently being processed"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#. module: cetmix_tower_server_queue
|
|
||||||
#. odoo-python
|
|
||||||
#: code:addons/cetmix_tower_server_queue/models/cx_tower_file.py:0
|
|
||||||
#, python-format
|
|
||||||
msgid "File uploaded!"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#. module: cetmix_tower_server_queue
|
|
||||||
#. odoo-python
|
|
||||||
#: code:addons/cetmix_tower_server_queue/models/cx_tower_file.py:0
|
|
||||||
#, python-format
|
|
||||||
msgid "File(s) %(name)s download failed: %(error)s"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#. module: cetmix_tower_server_queue
|
|
||||||
#. odoo-python
|
|
||||||
#: code:addons/cetmix_tower_server_queue/models/cx_tower_file.py:0
|
|
||||||
#, python-format
|
|
||||||
msgid "File(s) %(name)s upload failed: %(error)s"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#. module: cetmix_tower_server_queue
|
|
||||||
#. odoo-python
|
|
||||||
#: code:addons/cetmix_tower_server_queue/models/cx_tower_file.py:0
|
|
||||||
#, python-format
|
|
||||||
msgid "Files downloaded!"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#. module: cetmix_tower_server_queue
|
|
||||||
#. odoo-python
|
|
||||||
#: code:addons/cetmix_tower_server_queue/models/cx_tower_file.py:0
|
|
||||||
#, python-format
|
|
||||||
msgid "Files uploaded!"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#. module: cetmix_tower_server_queue
|
|
||||||
#: model:ir.model.fields,field_description:cetmix_tower_server_queue.field_cx_tower_file__is_being_processed
|
|
||||||
msgid "Is Being Processed"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#. module: cetmix_tower_server_queue
|
|
||||||
#: model_terms:ir.ui.view,arch_db:cetmix_tower_server_queue.cx_tower_file_view_form
|
|
||||||
msgid "Processing"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#. module: cetmix_tower_server_queue
|
|
||||||
#: model:ir.model,name:cetmix_tower_server_queue.model_queue_job
|
|
||||||
#: model:ir.model.fields,field_description:cetmix_tower_server_queue.field_cx_tower_command_log__queue_job_id
|
|
||||||
msgid "Queue Job"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#. module: cetmix_tower_server_queue
|
|
||||||
#. odoo-python
|
|
||||||
#: code:addons/cetmix_tower_server_queue/models/cx_tower_file.py:0
|
|
||||||
#: code:addons/cetmix_tower_server_queue/models/cx_tower_file.py:0
|
|
||||||
#: model_terms:ir.ui.view,arch_db:cetmix_tower_server_queue.cx_tower_file_view_form
|
|
||||||
#, python-format
|
|
||||||
msgid "Success"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#. module: cetmix_tower_server_queue
|
|
||||||
#. odoo-python
|
|
||||||
#: code:addons/cetmix_tower_server_queue/models/cx_tower_file.py:0
|
|
||||||
#, python-format
|
|
||||||
msgid "The following files are already being processed: %(name)s"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#. module: cetmix_tower_server_queue
|
|
||||||
#. odoo-python
|
|
||||||
#: code:addons/cetmix_tower_server_queue/models/cx_tower_file.py:0
|
|
||||||
#, python-format
|
|
||||||
msgid ""
|
|
||||||
"Unable to upload file '%(f)s'.\n"
|
|
||||||
"Upload operation is not supported for 'server' type files."
|
|
||||||
msgstr ""
|
|
||||||
@@ -1,148 +0,0 @@
|
|||||||
# Translation of Odoo Server.
|
|
||||||
# This file contains the translation of the following modules:
|
|
||||||
# * cetmix_tower_server_queue
|
|
||||||
#
|
|
||||||
msgid ""
|
|
||||||
msgstr ""
|
|
||||||
"Project-Id-Version: Odoo Server 16.0\n"
|
|
||||||
"Report-Msgid-Bugs-To: \n"
|
|
||||||
"POT-Creation-Date: \n"
|
|
||||||
"PO-Revision-Date: \n"
|
|
||||||
"Last-Translator: \n"
|
|
||||||
"Language-Team: \n"
|
|
||||||
"MIME-Version: 1.0\n"
|
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
|
||||||
"Language: it\n"
|
|
||||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
|
||||||
"X-Generator: Poedit 2.3\n"
|
|
||||||
|
|
||||||
#. module: cetmix_tower_server_queue
|
|
||||||
#: model:ir.model.fields,help:cetmix_tower_server_queue.field_cx_tower_command_log__command_status
|
|
||||||
msgid ""
|
|
||||||
"0 if command finished successfully.\n"
|
|
||||||
"-100 general error,\n"
|
|
||||||
"-101 not found,\n"
|
|
||||||
"-201 another instance of this command is running,\n"
|
|
||||||
"-202 no runner found for the command action,\n"
|
|
||||||
"-203 Python code execution failed\n"
|
|
||||||
"-205 plan line condition check failed\n"
|
|
||||||
"503 if SSH connection error occurred\n"
|
|
||||||
"601 if queue job failed"
|
|
||||||
msgstr "0 se il comando è stato completato correttamente.-100 errore generale,-101 non trovato,-201 un'altra istanza di questo comando è in esecuzione,-202 nessun runner trovato per l'azione del comando,-203 esecuzione del codice Python non riuscita,-205 controllo delle condizioni della riga del piano non riuscito,503 se si è verificato un errore di connessione SSH,601 se il processo in coda non è riuscito."
|
|
||||||
|
|
||||||
#. module: cetmix_tower_server_queue
|
|
||||||
#: model:ir.model,name:cetmix_tower_server_queue.model_cx_tower_command_log
|
|
||||||
msgid "Cetmix Tower Command Log"
|
|
||||||
msgstr "Registro comando Cetmix Tower"
|
|
||||||
|
|
||||||
#. module: cetmix_tower_server_queue
|
|
||||||
#: model:ir.model,name:cetmix_tower_server_queue.model_cx_tower_file
|
|
||||||
msgid "Cetmix Tower File"
|
|
||||||
msgstr "File Cetmix Tower"
|
|
||||||
|
|
||||||
#. module: cetmix_tower_server_queue
|
|
||||||
#: model:ir.model,name:cetmix_tower_server_queue.model_cx_tower_server
|
|
||||||
msgid "Cetmix Tower Server"
|
|
||||||
msgstr "Server Cetmix Tower"
|
|
||||||
|
|
||||||
#. module: cetmix_tower_server_queue
|
|
||||||
#: model_terms:ir.ui.view,arch_db:cetmix_tower_server_queue.cx_tower_file_view_form
|
|
||||||
msgid "Error"
|
|
||||||
msgstr "Errore"
|
|
||||||
|
|
||||||
#. module: cetmix_tower_server_queue
|
|
||||||
#: model:ir.model.fields,field_description:cetmix_tower_server_queue.field_cx_tower_command_log__command_status
|
|
||||||
msgid "Exit Code"
|
|
||||||
msgstr "Codice uscita"
|
|
||||||
|
|
||||||
#. module: cetmix_tower_server_queue
|
|
||||||
#. odoo-python
|
|
||||||
#: code:addons/cetmix_tower_server_queue/models/cx_tower_file.py:0
|
|
||||||
#, python-format
|
|
||||||
msgid "Failure"
|
|
||||||
msgstr "Fallimento"
|
|
||||||
|
|
||||||
#. module: cetmix_tower_server_queue
|
|
||||||
#. odoo-python
|
|
||||||
#: code:addons/cetmix_tower_server_queue/models/cx_tower_file.py:0
|
|
||||||
#, python-format
|
|
||||||
msgid "File downloaded!"
|
|
||||||
msgstr "File scaricato!"
|
|
||||||
|
|
||||||
#. module: cetmix_tower_server_queue
|
|
||||||
#: model:ir.model.fields,help:cetmix_tower_server_queue.field_cx_tower_file__is_being_processed
|
|
||||||
msgid "File is currently being processed"
|
|
||||||
msgstr "Il file è in lavorazione"
|
|
||||||
|
|
||||||
#. module: cetmix_tower_server_queue
|
|
||||||
#. odoo-python
|
|
||||||
#: code:addons/cetmix_tower_server_queue/models/cx_tower_file.py:0
|
|
||||||
#, python-format
|
|
||||||
msgid "File uploaded!"
|
|
||||||
msgstr "File caricato!"
|
|
||||||
|
|
||||||
#. module: cetmix_tower_server_queue
|
|
||||||
#. odoo-python
|
|
||||||
#: code:addons/cetmix_tower_server_queue/models/cx_tower_file.py:0
|
|
||||||
#, python-format
|
|
||||||
msgid "Files downloaded!"
|
|
||||||
msgstr "File scaricati!"
|
|
||||||
|
|
||||||
#. module: cetmix_tower_server_queue
|
|
||||||
#. odoo-python
|
|
||||||
#: code:addons/cetmix_tower_server_queue/models/cx_tower_file.py:0
|
|
||||||
#, python-format
|
|
||||||
msgid "Files uploaded!"
|
|
||||||
msgstr "File caricati!"
|
|
||||||
|
|
||||||
#. module: cetmix_tower_server_queue
|
|
||||||
#: model:ir.model.fields,field_description:cetmix_tower_server_queue.field_cx_tower_file__is_being_processed
|
|
||||||
msgid "Is Being Processed"
|
|
||||||
msgstr "In lavorazione"
|
|
||||||
|
|
||||||
#. module: cetmix_tower_server_queue
|
|
||||||
#: model_terms:ir.ui.view,arch_db:cetmix_tower_server_queue.cx_tower_file_view_form
|
|
||||||
msgid "Processing"
|
|
||||||
msgstr "Lavorazione"
|
|
||||||
|
|
||||||
#. module: cetmix_tower_server_queue
|
|
||||||
#: model:ir.model,name:cetmix_tower_server_queue.model_queue_job
|
|
||||||
#: model:ir.model.fields,field_description:cetmix_tower_server_queue.field_cx_tower_command_log__queue_job_id
|
|
||||||
msgid "Queue Job"
|
|
||||||
msgstr "Accoda lavoro"
|
|
||||||
|
|
||||||
#. module: cetmix_tower_server_queue
|
|
||||||
#. odoo-python
|
|
||||||
#: code:addons/cetmix_tower_server_queue/models/cx_tower_file.py:0
|
|
||||||
#: model_terms:ir.ui.view,arch_db:cetmix_tower_server_queue.cx_tower_file_view_form
|
|
||||||
#, python-format
|
|
||||||
msgid "Success"
|
|
||||||
msgstr "Successo"
|
|
||||||
|
|
||||||
#. module: cetmix_tower_server_queue
|
|
||||||
#. odoo-python
|
|
||||||
#: code:addons/cetmix_tower_server_queue/models/cx_tower_file.py:0
|
|
||||||
#, python-format
|
|
||||||
msgid "The following files are already being processed: %(name)s"
|
|
||||||
msgstr "I seguenti file sono già in fase di elaborazione: %(name)s"
|
|
||||||
|
|
||||||
#. module: cetmix_tower_server_queue
|
|
||||||
#. odoo-python
|
|
||||||
#: code:addons/cetmix_tower_server_queue/models/cx_tower_file.py:0
|
|
||||||
#, python-format
|
|
||||||
msgid ""
|
|
||||||
"Unable to upload file '%(f)s'.\n"
|
|
||||||
"Upload operation is not supported for 'server' type files."
|
|
||||||
msgstr ""
|
|
||||||
"Impossibile caricare il file '%(f)s'.\n"
|
|
||||||
"L'operazione di caricamento non è supportata per i file di tipo 'server'."
|
|
||||||
|
|
||||||
#~ msgid "Display Name"
|
|
||||||
#~ msgstr "Nome visualizzato"
|
|
||||||
|
|
||||||
#~ msgid "ID"
|
|
||||||
#~ msgstr "ID"
|
|
||||||
|
|
||||||
#~ msgid "Last Modified on"
|
|
||||||
#~ msgstr "Ultima modifica il"
|
|
||||||
@@ -1,4 +0,0 @@
|
|||||||
from . import cx_tower_command_log
|
|
||||||
from . import cx_tower_server
|
|
||||||
from . import queue_job
|
|
||||||
from . import cx_tower_file
|
|
||||||
@@ -1,82 +0,0 @@
|
|||||||
# Copyright (C) 2025 Cetmix OÜ
|
|
||||||
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
|
|
||||||
|
|
||||||
import logging
|
|
||||||
|
|
||||||
from odoo import fields, models, tools
|
|
||||||
|
|
||||||
from odoo.addons.cetmix_tower_server.models.constants import (
|
|
||||||
COMMAND_STOPPED,
|
|
||||||
COMMAND_TIMED_OUT,
|
|
||||||
)
|
|
||||||
from odoo.addons.queue_job.job import CANCELLED
|
|
||||||
|
|
||||||
_logger = logging.getLogger(__name__)
|
|
||||||
|
|
||||||
|
|
||||||
class CxTowerCommandLog(models.Model):
|
|
||||||
_inherit = "cx.tower.command.log"
|
|
||||||
|
|
||||||
queue_job_id = fields.Many2one(
|
|
||||||
"queue.job",
|
|
||||||
readonly=True,
|
|
||||||
groups="queue_job.group_queue_job_manager",
|
|
||||||
)
|
|
||||||
|
|
||||||
command_status = fields.Integer(
|
|
||||||
help="0 if command finished successfully.\n"
|
|
||||||
"-100 general error,\n"
|
|
||||||
"-101 not found,\n"
|
|
||||||
"-201 another instance of this command is running,\n"
|
|
||||||
"-202 no runner found for the command action,\n"
|
|
||||||
"-203 Python code execution failed\n"
|
|
||||||
"-205 plan line condition check failed\n"
|
|
||||||
"503 if SSH connection error occurred\n"
|
|
||||||
"601 if queue job failed"
|
|
||||||
)
|
|
||||||
|
|
||||||
def finish(
|
|
||||||
self, finish_date=None, status=None, response=None, error=None, **kwargs
|
|
||||||
):
|
|
||||||
"""Finish the command log
|
|
||||||
|
|
||||||
Args:
|
|
||||||
finish_date (Datetime, optional): Command finish date. Defaults to None.
|
|
||||||
status (Integer, optional): Command status. Defaults to None.
|
|
||||||
response (Text, optional): Command response. Defaults to None.
|
|
||||||
error (Text, optional): Command error. Defaults to None.
|
|
||||||
"""
|
|
||||||
|
|
||||||
# Filter out command logs that are already stopped
|
|
||||||
command_logs_to_process = self.filtered(
|
|
||||||
lambda log: log.command_status != COMMAND_STOPPED
|
|
||||||
)
|
|
||||||
if not command_logs_to_process:
|
|
||||||
return
|
|
||||||
|
|
||||||
# Avoid finishing the command log multiple times at the same time
|
|
||||||
try:
|
|
||||||
with self.env.cr.savepoint(), tools.mute_logger("odoo.sql_db"):
|
|
||||||
self.env.cr.execute(
|
|
||||||
f"SELECT command_status FROM {self._table} WHERE id IN %s FOR UPDATE NOWAIT", # noqa: E501
|
|
||||||
(tuple(command_logs_to_process.ids),),
|
|
||||||
)
|
|
||||||
except Exception as e:
|
|
||||||
_logger.error(
|
|
||||||
"Could not acquire lock on command logs %s, skipping finish: %s",
|
|
||||||
command_logs_to_process.ids,
|
|
||||||
e,
|
|
||||||
)
|
|
||||||
return
|
|
||||||
|
|
||||||
# Update the related queue job state if the command timed out
|
|
||||||
if status == COMMAND_TIMED_OUT:
|
|
||||||
for command_log in command_logs_to_process:
|
|
||||||
if command_log.queue_job_id:
|
|
||||||
command_log.queue_job_id.sudo()._change_job_state(
|
|
||||||
CANCELLED, result=error
|
|
||||||
)
|
|
||||||
|
|
||||||
return super(CxTowerCommandLog, command_logs_to_process).finish(
|
|
||||||
finish_date, status, response, error, **kwargs
|
|
||||||
)
|
|
||||||
@@ -1,184 +0,0 @@
|
|||||||
# Copyright (C) 2025 Cetmix OÜ
|
|
||||||
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
|
|
||||||
|
|
||||||
import logging
|
|
||||||
|
|
||||||
from odoo import _, fields, models
|
|
||||||
from odoo.exceptions import UserError
|
|
||||||
|
|
||||||
_logger = logging.getLogger(__name__)
|
|
||||||
|
|
||||||
|
|
||||||
class CxTowerFile(models.Model):
|
|
||||||
_inherit = "cx.tower.file"
|
|
||||||
|
|
||||||
is_being_processed = fields.Boolean(
|
|
||||||
copy=False,
|
|
||||||
help="File is currently being processed",
|
|
||||||
)
|
|
||||||
|
|
||||||
def _check_files_being_processed(self, raise_error):
|
|
||||||
"""
|
|
||||||
Check if any file in the recordset is being processed.
|
|
||||||
True if at least one file is already processing and raise_error is False.
|
|
||||||
False if no files are currently being processed.
|
|
||||||
The caller uses the boolean to decide whether to continue or abort.
|
|
||||||
"""
|
|
||||||
processing_files = self.filtered(lambda rec: rec.is_being_processed)
|
|
||||||
if processing_files:
|
|
||||||
if raise_error:
|
|
||||||
raise UserError(
|
|
||||||
_(
|
|
||||||
"The following files are already being processed: %(name)s",
|
|
||||||
name=", ".join(processing_files.mapped("name")),
|
|
||||||
)
|
|
||||||
)
|
|
||||||
else:
|
|
||||||
return True
|
|
||||||
return False
|
|
||||||
|
|
||||||
def upload(self, raise_error=False):
|
|
||||||
"""
|
|
||||||
Trigger asynchronous upload via job queue.
|
|
||||||
"""
|
|
||||||
# Check if the file is already being processed
|
|
||||||
if self._check_files_being_processed(raise_error):
|
|
||||||
return
|
|
||||||
|
|
||||||
self.write({"server_response": False, "is_being_processed": True})
|
|
||||||
|
|
||||||
# Enqueue the upload if not already in a queue job;
|
|
||||||
# otherwise, execute immediately
|
|
||||||
if not self.env.context.get("job_uuid"):
|
|
||||||
self.with_delay()._do_upload(raise_error=raise_error)
|
|
||||||
else:
|
|
||||||
self._do_upload(raise_error=raise_error)
|
|
||||||
|
|
||||||
def download(self, raise_error=False):
|
|
||||||
"""
|
|
||||||
Trigger asynchronous download via job queue.
|
|
||||||
"""
|
|
||||||
|
|
||||||
# Check if the file is already being processed
|
|
||||||
if self._check_files_being_processed(raise_error):
|
|
||||||
return
|
|
||||||
|
|
||||||
self.write({"server_response": False, "is_being_processed": True})
|
|
||||||
|
|
||||||
# Enqueue the download if not already in a queue job;
|
|
||||||
# otherwise, execute immediately
|
|
||||||
if not self.env.context.get("job_uuid"):
|
|
||||||
self.with_delay()._do_download(raise_error=raise_error)
|
|
||||||
else:
|
|
||||||
self._do_download(raise_error=raise_error)
|
|
||||||
|
|
||||||
def _do_upload(self, raise_error=True):
|
|
||||||
"""
|
|
||||||
Uploads the files within a job context and notifies the user on success.
|
|
||||||
Logs the error if an exception occurs;
|
|
||||||
failure state is managed by the parent method.
|
|
||||||
"""
|
|
||||||
try:
|
|
||||||
with self.env.cr.savepoint():
|
|
||||||
result = super().upload(raise_error=raise_error)
|
|
||||||
single_msg = _("File uploaded!")
|
|
||||||
plural_msg = _("Files uploaded!")
|
|
||||||
self.env.user.notify_success(
|
|
||||||
message=single_msg if len(self) == 1 else plural_msg,
|
|
||||||
title=_("Success"),
|
|
||||||
# This notification should not be sticky
|
|
||||||
# to avoid blocking the user's screen
|
|
||||||
sticky=False,
|
|
||||||
)
|
|
||||||
return result
|
|
||||||
except Exception as e:
|
|
||||||
if not raise_error:
|
|
||||||
self.env.user.notify_danger(
|
|
||||||
message=_(
|
|
||||||
"File(s) %(name)s upload failed: %(error)s",
|
|
||||||
name=", ".join(self.mapped("name")),
|
|
||||||
error=str(e),
|
|
||||||
),
|
|
||||||
title=_("Failure"),
|
|
||||||
sticky=self.env["ir.config_parameter"]
|
|
||||||
.sudo()
|
|
||||||
.get_param("cetmix_tower_server.notification_type_error", "sticky")
|
|
||||||
== "sticky",
|
|
||||||
)
|
|
||||||
_logger.error("File %s upload failed: %s", str(self), str(e))
|
|
||||||
else:
|
|
||||||
raise
|
|
||||||
finally:
|
|
||||||
self.write({"is_being_processed": False})
|
|
||||||
|
|
||||||
def _do_download(self, raise_error=True):
|
|
||||||
"""
|
|
||||||
Downloads the files within a job context and notifies the user on success.
|
|
||||||
Logs the error if an exception occurs;
|
|
||||||
failure state is managed by the parent method.
|
|
||||||
"""
|
|
||||||
try:
|
|
||||||
with self.env.cr.savepoint():
|
|
||||||
result = super().download(raise_error=raise_error)
|
|
||||||
single_msg = _("File downloaded!")
|
|
||||||
plural_msg = _("Files downloaded!")
|
|
||||||
self.env.user.notify_success(
|
|
||||||
message=single_msg if len(self) == 1 else plural_msg,
|
|
||||||
title=_("Success"),
|
|
||||||
# This notification should not be sticky
|
|
||||||
# to avoid blocking the user's screen
|
|
||||||
sticky=False,
|
|
||||||
)
|
|
||||||
return result
|
|
||||||
except Exception as e:
|
|
||||||
if not raise_error:
|
|
||||||
self.env.user.notify_danger(
|
|
||||||
message=_(
|
|
||||||
"File(s) %(name)s download failed: %(error)s",
|
|
||||||
name=", ".join(self.mapped("name")),
|
|
||||||
error=str(e),
|
|
||||||
),
|
|
||||||
title=_("Failure"),
|
|
||||||
sticky=self.env["ir.config_parameter"]
|
|
||||||
.sudo()
|
|
||||||
.get_param("cetmix_tower_server.notification_type_error", "sticky")
|
|
||||||
== "sticky",
|
|
||||||
)
|
|
||||||
_logger.error("File %s download failed: %s", str(self), str(e))
|
|
||||||
else:
|
|
||||||
raise
|
|
||||||
finally:
|
|
||||||
self.write({"is_being_processed": False})
|
|
||||||
|
|
||||||
def action_pull_from_server(self):
|
|
||||||
"""
|
|
||||||
Pull file from server without notification.
|
|
||||||
"""
|
|
||||||
tower_files = self.filtered(lambda file_: file_.source == "tower")
|
|
||||||
server_files = self - tower_files
|
|
||||||
|
|
||||||
tower_files.action_get_current_server_code()
|
|
||||||
|
|
||||||
server_files.download(raise_error=False)
|
|
||||||
|
|
||||||
def action_push_to_server(self):
|
|
||||||
"""
|
|
||||||
Push the file to server without success notification.
|
|
||||||
"""
|
|
||||||
server_files = self.filtered(lambda file_: file_.source == "server")
|
|
||||||
if server_files:
|
|
||||||
return {
|
|
||||||
"type": "ir.actions.client",
|
|
||||||
"tag": "display_notification",
|
|
||||||
"params": {
|
|
||||||
"title": _("Failure"),
|
|
||||||
"message": _(
|
|
||||||
"Unable to upload file '%(f)s'.\n"
|
|
||||||
"Upload operation is not supported for 'server' type files.",
|
|
||||||
f=", ".join(server_files.mapped("rendered_name")),
|
|
||||||
),
|
|
||||||
"sticky": False,
|
|
||||||
},
|
|
||||||
}
|
|
||||||
|
|
||||||
self.upload(raise_error=False)
|
|
||||||
@@ -1,86 +0,0 @@
|
|||||||
# Copyright (C) 2022 Cetmix OÜ
|
|
||||||
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
|
|
||||||
from odoo import models
|
|
||||||
|
|
||||||
|
|
||||||
class CxTowerServer(models.Model):
|
|
||||||
_inherit = "cx.tower.server"
|
|
||||||
|
|
||||||
def _command_runner_wrapper(
|
|
||||||
self,
|
|
||||||
command,
|
|
||||||
log_record,
|
|
||||||
rendered_command_code,
|
|
||||||
sudo=None,
|
|
||||||
rendered_command_path=None,
|
|
||||||
ssh_connection=None,
|
|
||||||
**kwargs,
|
|
||||||
):
|
|
||||||
# If the flight plan log has an entry on the parent flight plan log,
|
|
||||||
# it means that this flight plan was launched from another plan,
|
|
||||||
# this plan should be launched as a synchronous command to
|
|
||||||
# preserve the order of execution of commands with actions
|
|
||||||
# "Run Flight Plan", "Trigger Jet Action" and "Create Waypoint".
|
|
||||||
# Use runner only if command log record is provided.
|
|
||||||
if (
|
|
||||||
log_record
|
|
||||||
and not log_record.plan_log_id.parent_flight_plan_log_id
|
|
||||||
and command.action
|
|
||||||
not in [
|
|
||||||
"jet_action",
|
|
||||||
"create_waypoint",
|
|
||||||
]
|
|
||||||
):
|
|
||||||
job = self.with_delay()._queue_command_runner_wrapper(
|
|
||||||
command=command,
|
|
||||||
log_record=log_record,
|
|
||||||
rendered_command_code=rendered_command_code,
|
|
||||||
sudo=sudo,
|
|
||||||
rendered_command_path=rendered_command_path,
|
|
||||||
ssh_connection=ssh_connection,
|
|
||||||
**kwargs,
|
|
||||||
)
|
|
||||||
log_record.sudo().queue_job_id = job.db_record().id
|
|
||||||
|
|
||||||
# Otherwise fallback to `super` to return the command output
|
|
||||||
else:
|
|
||||||
return super()._command_runner_wrapper(
|
|
||||||
command=command,
|
|
||||||
log_record=log_record,
|
|
||||||
rendered_command_code=rendered_command_code,
|
|
||||||
sudo=sudo,
|
|
||||||
rendered_command_path=rendered_command_path,
|
|
||||||
ssh_connection=ssh_connection,
|
|
||||||
**kwargs,
|
|
||||||
)
|
|
||||||
|
|
||||||
def _queue_command_runner_wrapper(
|
|
||||||
self,
|
|
||||||
command,
|
|
||||||
log_record,
|
|
||||||
rendered_command_code,
|
|
||||||
sudo=None,
|
|
||||||
rendered_command_path=None,
|
|
||||||
ssh_connection=None,
|
|
||||||
**kwargs,
|
|
||||||
):
|
|
||||||
# avoid executing command if plan was stopped
|
|
||||||
log_record.invalidate_recordset(["plan_log_id"])
|
|
||||||
plan_log_id = log_record.plan_log_id
|
|
||||||
if plan_log_id:
|
|
||||||
plan_log_id.invalidate_recordset(["is_stopped"])
|
|
||||||
|
|
||||||
# If plan was stopped, stop the command
|
|
||||||
if plan_log_id.is_stopped:
|
|
||||||
log_record.stop()
|
|
||||||
return
|
|
||||||
|
|
||||||
return self._command_runner(
|
|
||||||
command=command,
|
|
||||||
log_record=log_record,
|
|
||||||
rendered_command_code=rendered_command_code,
|
|
||||||
sudo=sudo,
|
|
||||||
rendered_command_path=rendered_command_path,
|
|
||||||
ssh_connection=ssh_connection,
|
|
||||||
**kwargs,
|
|
||||||
)
|
|
||||||
@@ -1,23 +0,0 @@
|
|||||||
# Copyright 2013-2020 Camptocamp SA
|
|
||||||
# License LGPL-3.0 or later (http://www.gnu.org/licenses/lgpl.html)
|
|
||||||
from odoo import models
|
|
||||||
|
|
||||||
|
|
||||||
class QueueJob(models.Model):
|
|
||||||
_inherit = "queue.job"
|
|
||||||
|
|
||||||
QUEUE_JOB_ERROR = 601
|
|
||||||
|
|
||||||
def write(self, vals):
|
|
||||||
"""
|
|
||||||
Override write method to update command status
|
|
||||||
and write error information in the log record
|
|
||||||
"""
|
|
||||||
if vals.get("state") == "failed":
|
|
||||||
log_record = self.kwargs.get("log_record")
|
|
||||||
if log_record:
|
|
||||||
log_record.finish(
|
|
||||||
status=self.QUEUE_JOB_ERROR,
|
|
||||||
error=vals.get("exc_info"),
|
|
||||||
)
|
|
||||||
return super().write(vals)
|
|
||||||
@@ -1,3 +0,0 @@
|
|||||||
[build-system]
|
|
||||||
requires = ["whool"]
|
|
||||||
build-backend = "whool.buildapi"
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
Please refer to the [official documentation](https://cetmix.com/tower) for detailed configuration instructions.
|
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
This module implements asynchronous task execution for [Cetmix Tower](https://cetmix.com/tower).
|
|
||||||
|
|
||||||
It requires the [queue_job](https://github.com/OCA/queue/queue_job) module to be installed and configured in the Odoo instance.
|
|
||||||
|
|
||||||
Please refer to the [official documentation](https://cetmix.com/tower) for detailed information.
|
|
||||||
@@ -1,39 +0,0 @@
|
|||||||
## 16.0.2.0.0 (2026-03-23)
|
|
||||||
|
|
||||||
- Features: Jets! (4700)
|
|
||||||
|
|
||||||
|
|
||||||
## 16.0.1.2.0 (2025-11-12)
|
|
||||||
|
|
||||||
- Features: Use the 'web_notify' module to send user notifications. (5074)
|
|
||||||
|
|
||||||
|
|
||||||
## 16.0.1.1.4 (2025-11-05)
|
|
||||||
|
|
||||||
- Bugfixes: Finish multiple commands at once. (5062)
|
|
||||||
|
|
||||||
|
|
||||||
## 16.0.1.1.3 (2025-10-13)
|
|
||||||
|
|
||||||
- Features: Terminate running flight plan manually (3410)
|
|
||||||
|
|
||||||
|
|
||||||
## 16.0.1.1.0 (2025-07-16)
|
|
||||||
|
|
||||||
- Features: cetmix_tower_server_queue: Add async file upload/download via job queue (3720)
|
|
||||||
- Features: Terminate command with error if job has failed (4718)
|
|
||||||
|
|
||||||
|
|
||||||
## 16.0.1.0.2 (2025-05-16)
|
|
||||||
|
|
||||||
- Features: 'sudo' parameter is not passed to command. (4678)
|
|
||||||
|
|
||||||
|
|
||||||
## 16.0.1.0.1 (2025-05-09)
|
|
||||||
|
|
||||||
- Bugfixes: Non-critical issues and performance improvements. (4611)
|
|
||||||
|
|
||||||
|
|
||||||
## 16.0.1.0.0
|
|
||||||
|
|
||||||
Release for Odoo 16.0
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
Please refer to the [official documentation](https://cetmix.com/tower) for detailed usage instructions.
|
|
||||||
|
Before Width: | Height: | Size: 22 KiB |
@@ -1,491 +0,0 @@
|
|||||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
|
||||||
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
|
|
||||||
<head>
|
|
||||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
|
||||||
<meta name="generator" content="Docutils: https://docutils.sourceforge.io/" />
|
|
||||||
<title>Cetmix Tower Server Queue</title>
|
|
||||||
<style type="text/css">
|
|
||||||
|
|
||||||
/*
|
|
||||||
:Author: David Goodger (goodger@python.org)
|
|
||||||
:Id: $Id: html4css1.css 9511 2024-01-13 09:50:07Z milde $
|
|
||||||
:Copyright: This stylesheet has been placed in the public domain.
|
|
||||||
|
|
||||||
Default cascading style sheet for the HTML output of Docutils.
|
|
||||||
Despite the name, some widely supported CSS2 features are used.
|
|
||||||
|
|
||||||
See https://docutils.sourceforge.io/docs/howto/html-stylesheets.html for how to
|
|
||||||
customize this style sheet.
|
|
||||||
*/
|
|
||||||
|
|
||||||
/* used to remove borders from tables and images */
|
|
||||||
.borderless, table.borderless td, table.borderless th {
|
|
||||||
border: 0 }
|
|
||||||
|
|
||||||
table.borderless td, table.borderless th {
|
|
||||||
/* Override padding for "table.docutils td" with "! important".
|
|
||||||
The right padding separates the table cells. */
|
|
||||||
padding: 0 0.5em 0 0 ! important }
|
|
||||||
|
|
||||||
.first {
|
|
||||||
/* Override more specific margin styles with "! important". */
|
|
||||||
margin-top: 0 ! important }
|
|
||||||
|
|
||||||
.last, .with-subtitle {
|
|
||||||
margin-bottom: 0 ! important }
|
|
||||||
|
|
||||||
.hidden {
|
|
||||||
display: none }
|
|
||||||
|
|
||||||
.subscript {
|
|
||||||
vertical-align: sub;
|
|
||||||
font-size: smaller }
|
|
||||||
|
|
||||||
.superscript {
|
|
||||||
vertical-align: super;
|
|
||||||
font-size: smaller }
|
|
||||||
|
|
||||||
a.toc-backref {
|
|
||||||
text-decoration: none ;
|
|
||||||
color: black }
|
|
||||||
|
|
||||||
blockquote.epigraph {
|
|
||||||
margin: 2em 5em ; }
|
|
||||||
|
|
||||||
dl.docutils dd {
|
|
||||||
margin-bottom: 0.5em }
|
|
||||||
|
|
||||||
object[type="image/svg+xml"], object[type="application/x-shockwave-flash"] {
|
|
||||||
overflow: hidden;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Uncomment (and remove this text!) to get bold-faced definition list terms
|
|
||||||
dl.docutils dt {
|
|
||||||
font-weight: bold }
|
|
||||||
*/
|
|
||||||
|
|
||||||
div.abstract {
|
|
||||||
margin: 2em 5em }
|
|
||||||
|
|
||||||
div.abstract p.topic-title {
|
|
||||||
font-weight: bold ;
|
|
||||||
text-align: center }
|
|
||||||
|
|
||||||
div.admonition, div.attention, div.caution, div.danger, div.error,
|
|
||||||
div.hint, div.important, div.note, div.tip, div.warning {
|
|
||||||
margin: 2em ;
|
|
||||||
border: medium outset ;
|
|
||||||
padding: 1em }
|
|
||||||
|
|
||||||
div.admonition p.admonition-title, div.hint p.admonition-title,
|
|
||||||
div.important p.admonition-title, div.note p.admonition-title,
|
|
||||||
div.tip p.admonition-title {
|
|
||||||
font-weight: bold ;
|
|
||||||
font-family: sans-serif }
|
|
||||||
|
|
||||||
div.attention p.admonition-title, div.caution p.admonition-title,
|
|
||||||
div.danger p.admonition-title, div.error p.admonition-title,
|
|
||||||
div.warning p.admonition-title, .code .error {
|
|
||||||
color: red ;
|
|
||||||
font-weight: bold ;
|
|
||||||
font-family: sans-serif }
|
|
||||||
|
|
||||||
/* Uncomment (and remove this text!) to get reduced vertical space in
|
|
||||||
compound paragraphs.
|
|
||||||
div.compound .compound-first, div.compound .compound-middle {
|
|
||||||
margin-bottom: 0.5em }
|
|
||||||
|
|
||||||
div.compound .compound-last, div.compound .compound-middle {
|
|
||||||
margin-top: 0.5em }
|
|
||||||
*/
|
|
||||||
|
|
||||||
div.dedication {
|
|
||||||
margin: 2em 5em ;
|
|
||||||
text-align: center ;
|
|
||||||
font-style: italic }
|
|
||||||
|
|
||||||
div.dedication p.topic-title {
|
|
||||||
font-weight: bold ;
|
|
||||||
font-style: normal }
|
|
||||||
|
|
||||||
div.figure {
|
|
||||||
margin-left: 2em ;
|
|
||||||
margin-right: 2em }
|
|
||||||
|
|
||||||
div.footer, div.header {
|
|
||||||
clear: both;
|
|
||||||
font-size: smaller }
|
|
||||||
|
|
||||||
div.line-block {
|
|
||||||
display: block ;
|
|
||||||
margin-top: 1em ;
|
|
||||||
margin-bottom: 1em }
|
|
||||||
|
|
||||||
div.line-block div.line-block {
|
|
||||||
margin-top: 0 ;
|
|
||||||
margin-bottom: 0 ;
|
|
||||||
margin-left: 1.5em }
|
|
||||||
|
|
||||||
div.sidebar {
|
|
||||||
margin: 0 0 0.5em 1em ;
|
|
||||||
border: medium outset ;
|
|
||||||
padding: 1em ;
|
|
||||||
background-color: #ffffee ;
|
|
||||||
width: 40% ;
|
|
||||||
float: right ;
|
|
||||||
clear: right }
|
|
||||||
|
|
||||||
div.sidebar p.rubric {
|
|
||||||
font-family: sans-serif ;
|
|
||||||
font-size: medium }
|
|
||||||
|
|
||||||
div.system-messages {
|
|
||||||
margin: 5em }
|
|
||||||
|
|
||||||
div.system-messages h1 {
|
|
||||||
color: red }
|
|
||||||
|
|
||||||
div.system-message {
|
|
||||||
border: medium outset ;
|
|
||||||
padding: 1em }
|
|
||||||
|
|
||||||
div.system-message p.system-message-title {
|
|
||||||
color: red ;
|
|
||||||
font-weight: bold }
|
|
||||||
|
|
||||||
div.topic {
|
|
||||||
margin: 2em }
|
|
||||||
|
|
||||||
h1.section-subtitle, h2.section-subtitle, h3.section-subtitle,
|
|
||||||
h4.section-subtitle, h5.section-subtitle, h6.section-subtitle {
|
|
||||||
margin-top: 0.4em }
|
|
||||||
|
|
||||||
h1.title {
|
|
||||||
text-align: center }
|
|
||||||
|
|
||||||
h2.subtitle {
|
|
||||||
text-align: center }
|
|
||||||
|
|
||||||
hr.docutils {
|
|
||||||
width: 75% }
|
|
||||||
|
|
||||||
img.align-left, .figure.align-left, object.align-left, table.align-left {
|
|
||||||
clear: left ;
|
|
||||||
float: left ;
|
|
||||||
margin-right: 1em }
|
|
||||||
|
|
||||||
img.align-right, .figure.align-right, object.align-right, table.align-right {
|
|
||||||
clear: right ;
|
|
||||||
float: right ;
|
|
||||||
margin-left: 1em }
|
|
||||||
|
|
||||||
img.align-center, .figure.align-center, object.align-center {
|
|
||||||
display: block;
|
|
||||||
margin-left: auto;
|
|
||||||
margin-right: auto;
|
|
||||||
}
|
|
||||||
|
|
||||||
table.align-center {
|
|
||||||
margin-left: auto;
|
|
||||||
margin-right: auto;
|
|
||||||
}
|
|
||||||
|
|
||||||
.align-left {
|
|
||||||
text-align: left }
|
|
||||||
|
|
||||||
.align-center {
|
|
||||||
clear: both ;
|
|
||||||
text-align: center }
|
|
||||||
|
|
||||||
.align-right {
|
|
||||||
text-align: right }
|
|
||||||
|
|
||||||
/* reset inner alignment in figures */
|
|
||||||
div.align-right {
|
|
||||||
text-align: inherit }
|
|
||||||
|
|
||||||
/* div.align-center * { */
|
|
||||||
/* text-align: left } */
|
|
||||||
|
|
||||||
.align-top {
|
|
||||||
vertical-align: top }
|
|
||||||
|
|
||||||
.align-middle {
|
|
||||||
vertical-align: middle }
|
|
||||||
|
|
||||||
.align-bottom {
|
|
||||||
vertical-align: bottom }
|
|
||||||
|
|
||||||
ol.simple, ul.simple {
|
|
||||||
margin-bottom: 1em }
|
|
||||||
|
|
||||||
ol.arabic {
|
|
||||||
list-style: decimal }
|
|
||||||
|
|
||||||
ol.loweralpha {
|
|
||||||
list-style: lower-alpha }
|
|
||||||
|
|
||||||
ol.upperalpha {
|
|
||||||
list-style: upper-alpha }
|
|
||||||
|
|
||||||
ol.lowerroman {
|
|
||||||
list-style: lower-roman }
|
|
||||||
|
|
||||||
ol.upperroman {
|
|
||||||
list-style: upper-roman }
|
|
||||||
|
|
||||||
p.attribution {
|
|
||||||
text-align: right ;
|
|
||||||
margin-left: 50% }
|
|
||||||
|
|
||||||
p.caption {
|
|
||||||
font-style: italic }
|
|
||||||
|
|
||||||
p.credits {
|
|
||||||
font-style: italic ;
|
|
||||||
font-size: smaller }
|
|
||||||
|
|
||||||
p.label {
|
|
||||||
white-space: nowrap }
|
|
||||||
|
|
||||||
p.rubric {
|
|
||||||
font-weight: bold ;
|
|
||||||
font-size: larger ;
|
|
||||||
color: maroon ;
|
|
||||||
text-align: center }
|
|
||||||
|
|
||||||
p.sidebar-title {
|
|
||||||
font-family: sans-serif ;
|
|
||||||
font-weight: bold ;
|
|
||||||
font-size: larger }
|
|
||||||
|
|
||||||
p.sidebar-subtitle {
|
|
||||||
font-family: sans-serif ;
|
|
||||||
font-weight: bold }
|
|
||||||
|
|
||||||
p.topic-title {
|
|
||||||
font-weight: bold }
|
|
||||||
|
|
||||||
pre.address {
|
|
||||||
margin-bottom: 0 ;
|
|
||||||
margin-top: 0 ;
|
|
||||||
font: inherit }
|
|
||||||
|
|
||||||
pre.literal-block, pre.doctest-block, pre.math, pre.code {
|
|
||||||
margin-left: 2em ;
|
|
||||||
margin-right: 2em }
|
|
||||||
|
|
||||||
pre.code .ln { color: gray; } /* line numbers */
|
|
||||||
pre.code, code { background-color: #eeeeee }
|
|
||||||
pre.code .comment, code .comment { color: #5C6576 }
|
|
||||||
pre.code .keyword, code .keyword { color: #3B0D06; font-weight: bold }
|
|
||||||
pre.code .literal.string, code .literal.string { color: #0C5404 }
|
|
||||||
pre.code .name.builtin, code .name.builtin { color: #352B84 }
|
|
||||||
pre.code .deleted, code .deleted { background-color: #DEB0A1}
|
|
||||||
pre.code .inserted, code .inserted { background-color: #A3D289}
|
|
||||||
|
|
||||||
span.classifier {
|
|
||||||
font-family: sans-serif ;
|
|
||||||
font-style: oblique }
|
|
||||||
|
|
||||||
span.classifier-delimiter {
|
|
||||||
font-family: sans-serif ;
|
|
||||||
font-weight: bold }
|
|
||||||
|
|
||||||
span.interpreted {
|
|
||||||
font-family: sans-serif }
|
|
||||||
|
|
||||||
span.option {
|
|
||||||
white-space: nowrap }
|
|
||||||
|
|
||||||
span.pre {
|
|
||||||
white-space: pre }
|
|
||||||
|
|
||||||
span.problematic, pre.problematic {
|
|
||||||
color: red }
|
|
||||||
|
|
||||||
span.section-subtitle {
|
|
||||||
/* font-size relative to parent (h1..h6 element) */
|
|
||||||
font-size: 80% }
|
|
||||||
|
|
||||||
table.citation {
|
|
||||||
border-left: solid 1px gray;
|
|
||||||
margin-left: 1px }
|
|
||||||
|
|
||||||
table.docinfo {
|
|
||||||
margin: 2em 4em }
|
|
||||||
|
|
||||||
table.docutils {
|
|
||||||
margin-top: 0.5em ;
|
|
||||||
margin-bottom: 0.5em }
|
|
||||||
|
|
||||||
table.footnote {
|
|
||||||
border-left: solid 1px black;
|
|
||||||
margin-left: 1px }
|
|
||||||
|
|
||||||
table.docutils td, table.docutils th,
|
|
||||||
table.docinfo td, table.docinfo th {
|
|
||||||
padding-left: 0.5em ;
|
|
||||||
padding-right: 0.5em ;
|
|
||||||
vertical-align: top }
|
|
||||||
|
|
||||||
table.docutils th.field-name, table.docinfo th.docinfo-name {
|
|
||||||
font-weight: bold ;
|
|
||||||
text-align: left ;
|
|
||||||
white-space: nowrap ;
|
|
||||||
padding-left: 0 }
|
|
||||||
|
|
||||||
/* "booktabs" style (no vertical lines) */
|
|
||||||
table.docutils.booktabs {
|
|
||||||
border: 0px;
|
|
||||||
border-top: 2px solid;
|
|
||||||
border-bottom: 2px solid;
|
|
||||||
border-collapse: collapse;
|
|
||||||
}
|
|
||||||
table.docutils.booktabs * {
|
|
||||||
border: 0px;
|
|
||||||
}
|
|
||||||
table.docutils.booktabs th {
|
|
||||||
border-bottom: thin solid;
|
|
||||||
text-align: left;
|
|
||||||
}
|
|
||||||
|
|
||||||
h1 tt.docutils, h2 tt.docutils, h3 tt.docutils,
|
|
||||||
h4 tt.docutils, h5 tt.docutils, h6 tt.docutils {
|
|
||||||
font-size: 100% }
|
|
||||||
|
|
||||||
ul.auto-toc {
|
|
||||||
list-style-type: none }
|
|
||||||
|
|
||||||
</style>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<div class="document" id="cetmix-tower-server-queue">
|
|
||||||
<h1 class="title">Cetmix Tower Server Queue</h1>
|
|
||||||
|
|
||||||
<!-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
|
||||||
!! This file is generated by oca-gen-addon-readme !!
|
|
||||||
!! changes will be overwritten. !!
|
|
||||||
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
|
||||||
!! source digest: sha256:bcdbf27340bb59ec9a0cf443b108e2d6b27cf7c64466b47585fbd02410ef071b
|
|
||||||
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
|
|
||||||
<p><a class="reference external image-reference" href="https://odoo-community.org/page/development-status"><img alt="Beta" src="https://img.shields.io/badge/maturity-Beta-yellow.png" /></a> <a class="reference external image-reference" href="http://www.gnu.org/licenses/agpl-3.0-standalone.html"><img alt="License: AGPL-3" src="https://img.shields.io/badge/license-AGPL--3-blue.png" /></a> <a class="reference external image-reference" href="https://github.com/cetmix/cetmix-tower/tree/16.0/cetmix_tower_server_queue"><img alt="cetmix/cetmix-tower" src="https://img.shields.io/badge/github-cetmix%2Fcetmix--tower-lightgray.png?logo=github" /></a></p>
|
|
||||||
<p>This module implements asynchronous task execution for <a class="reference external" href="https://cetmix.com/tower">Cetmix
|
|
||||||
Tower</a>.</p>
|
|
||||||
<p>It requires the <a class="reference external" href="https://github.com/OCA/queue/queue_job">queue_job</a>
|
|
||||||
module to be installed and configured in the Odoo instance.</p>
|
|
||||||
<p>Please refer to the <a class="reference external" href="https://cetmix.com/tower">official
|
|
||||||
documentation</a> for detailed information.</p>
|
|
||||||
<p><strong>Table of contents</strong></p>
|
|
||||||
<div class="contents local topic" id="contents">
|
|
||||||
<ul class="simple">
|
|
||||||
<li><a class="reference internal" href="#configuration" id="toc-entry-1">Configuration</a></li>
|
|
||||||
<li><a class="reference internal" href="#usage" id="toc-entry-2">Usage</a></li>
|
|
||||||
<li><a class="reference internal" href="#changelog" id="toc-entry-3">Changelog</a><ul>
|
|
||||||
<li><a class="reference internal" href="#section-1" id="toc-entry-4">16.0.2.0.0 (2026-03-23)</a></li>
|
|
||||||
<li><a class="reference internal" href="#section-2" id="toc-entry-5">16.0.1.2.0 (2025-11-12)</a></li>
|
|
||||||
<li><a class="reference internal" href="#section-3" id="toc-entry-6">16.0.1.1.4 (2025-11-05)</a></li>
|
|
||||||
<li><a class="reference internal" href="#section-4" id="toc-entry-7">16.0.1.1.3 (2025-10-13)</a></li>
|
|
||||||
<li><a class="reference internal" href="#section-5" id="toc-entry-8">16.0.1.1.0 (2025-07-16)</a></li>
|
|
||||||
<li><a class="reference internal" href="#section-6" id="toc-entry-9">16.0.1.0.2 (2025-05-16)</a></li>
|
|
||||||
<li><a class="reference internal" href="#section-7" id="toc-entry-10">16.0.1.0.1 (2025-05-09)</a></li>
|
|
||||||
<li><a class="reference internal" href="#section-8" id="toc-entry-11">16.0.1.0.0</a></li>
|
|
||||||
</ul>
|
|
||||||
</li>
|
|
||||||
<li><a class="reference internal" href="#bug-tracker" id="toc-entry-12">Bug Tracker</a></li>
|
|
||||||
<li><a class="reference internal" href="#credits" id="toc-entry-13">Credits</a><ul>
|
|
||||||
<li><a class="reference internal" href="#authors" id="toc-entry-14">Authors</a></li>
|
|
||||||
<li><a class="reference internal" href="#maintainers" id="toc-entry-15">Maintainers</a></li>
|
|
||||||
</ul>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
<div class="section" id="configuration">
|
|
||||||
<h1><a class="toc-backref" href="#toc-entry-1">Configuration</a></h1>
|
|
||||||
<p>Please refer to the <a class="reference external" href="https://cetmix.com/tower">official
|
|
||||||
documentation</a> for detailed configuration
|
|
||||||
instructions.</p>
|
|
||||||
</div>
|
|
||||||
<div class="section" id="usage">
|
|
||||||
<h1><a class="toc-backref" href="#toc-entry-2">Usage</a></h1>
|
|
||||||
<p>Please refer to the <a class="reference external" href="https://cetmix.com/tower">official
|
|
||||||
documentation</a> for detailed usage
|
|
||||||
instructions.</p>
|
|
||||||
</div>
|
|
||||||
<div class="section" id="changelog">
|
|
||||||
<h1><a class="toc-backref" href="#toc-entry-3">Changelog</a></h1>
|
|
||||||
<div class="section" id="section-1">
|
|
||||||
<h2><a class="toc-backref" href="#toc-entry-4">16.0.2.0.0 (2026-03-23)</a></h2>
|
|
||||||
<ul class="simple">
|
|
||||||
<li>Features: Jets! (4700)</li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
<div class="section" id="section-2">
|
|
||||||
<h2><a class="toc-backref" href="#toc-entry-5">16.0.1.2.0 (2025-11-12)</a></h2>
|
|
||||||
<ul class="simple">
|
|
||||||
<li>Features: Use the ‘web_notify’ module to send user notifications.
|
|
||||||
(5074)</li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
<div class="section" id="section-3">
|
|
||||||
<h2><a class="toc-backref" href="#toc-entry-6">16.0.1.1.4 (2025-11-05)</a></h2>
|
|
||||||
<ul class="simple">
|
|
||||||
<li>Bugfixes: Finish multiple commands at once. (5062)</li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
<div class="section" id="section-4">
|
|
||||||
<h2><a class="toc-backref" href="#toc-entry-7">16.0.1.1.3 (2025-10-13)</a></h2>
|
|
||||||
<ul class="simple">
|
|
||||||
<li>Features: Terminate running flight plan manually (3410)</li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
<div class="section" id="section-5">
|
|
||||||
<h2><a class="toc-backref" href="#toc-entry-8">16.0.1.1.0 (2025-07-16)</a></h2>
|
|
||||||
<ul class="simple">
|
|
||||||
<li>Features: cetmix_tower_server_queue: Add async file upload/download
|
|
||||||
via job queue (3720)</li>
|
|
||||||
<li>Features: Terminate command with error if job has failed (4718)</li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
<div class="section" id="section-6">
|
|
||||||
<h2><a class="toc-backref" href="#toc-entry-9">16.0.1.0.2 (2025-05-16)</a></h2>
|
|
||||||
<ul class="simple">
|
|
||||||
<li>Features: ‘sudo’ parameter is not passed to command. (4678)</li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
<div class="section" id="section-7">
|
|
||||||
<h2><a class="toc-backref" href="#toc-entry-10">16.0.1.0.1 (2025-05-09)</a></h2>
|
|
||||||
<ul class="simple">
|
|
||||||
<li>Bugfixes: Non-critical issues and performance improvements. (4611)</li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
<div class="section" id="section-8">
|
|
||||||
<h2><a class="toc-backref" href="#toc-entry-11">16.0.1.0.0</a></h2>
|
|
||||||
<p>Release for Odoo 16.0</p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="section" id="bug-tracker">
|
|
||||||
<h1><a class="toc-backref" href="#toc-entry-12">Bug Tracker</a></h1>
|
|
||||||
<p>Bugs are tracked on <a class="reference external" href="https://github.com/cetmix/cetmix-tower/issues">GitHub Issues</a>.
|
|
||||||
In case of trouble, please check there if your issue has already been reported.
|
|
||||||
If you spotted it first, help us to smash it by providing a detailed and welcomed
|
|
||||||
<a class="reference external" href="https://github.com/cetmix/cetmix-tower/issues/new?body=module:%20cetmix_tower_server_queue%0Aversion:%2016.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**">feedback</a>.</p>
|
|
||||||
<p>Do not contact contributors directly about support or help with technical issues.</p>
|
|
||||||
</div>
|
|
||||||
<div class="section" id="credits">
|
|
||||||
<h1><a class="toc-backref" href="#toc-entry-13">Credits</a></h1>
|
|
||||||
<div class="section" id="authors">
|
|
||||||
<h2><a class="toc-backref" href="#toc-entry-14">Authors</a></h2>
|
|
||||||
<ul class="simple">
|
|
||||||
<li>Cetmix</li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
<div class="section" id="maintainers">
|
|
||||||
<h2><a class="toc-backref" href="#toc-entry-15">Maintainers</a></h2>
|
|
||||||
<p>This module is part of the <a class="reference external" href="https://github.com/cetmix/cetmix-tower/tree/16.0/cetmix_tower_server_queue">cetmix/cetmix-tower</a> project on GitHub.</p>
|
|
||||||
<p>You are welcome to contribute.</p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
||||||
@@ -1,3 +0,0 @@
|
|||||||
from . import test_command
|
|
||||||
from . import test_command_log
|
|
||||||
from . import test_file
|
|
||||||
@@ -1,145 +0,0 @@
|
|||||||
from datetime import timedelta
|
|
||||||
from unittest.mock import patch
|
|
||||||
|
|
||||||
from odoo.fields import Datetime
|
|
||||||
from odoo.tools import mute_logger
|
|
||||||
|
|
||||||
from odoo.addons.cetmix_tower_server.tests.common import TestTowerCommon
|
|
||||||
|
|
||||||
|
|
||||||
class TestTowerCommand(TestTowerCommon):
|
|
||||||
"""Test suite for verifying zombie command detection and related
|
|
||||||
queue job cancellation.
|
|
||||||
|
|
||||||
Tests in this class verify that commands which have been running
|
|
||||||
longer than the timeout are properly detected as zombies, and their
|
|
||||||
associated queue jobs are cancelled.
|
|
||||||
"""
|
|
||||||
|
|
||||||
@classmethod
|
|
||||||
def setUpClass(cls):
|
|
||||||
super().setUpClass()
|
|
||||||
# Set command timeout to 10 seconds
|
|
||||||
cls.env["ir.config_parameter"].sudo().set_param(
|
|
||||||
"cetmix_tower_server.command_timeout", "10"
|
|
||||||
)
|
|
||||||
# Set old time to 20 seconds ago (older than timeout)
|
|
||||||
# to simulate running command in past
|
|
||||||
now = Datetime.now()
|
|
||||||
cls.old_time = now - timedelta(seconds=20)
|
|
||||||
|
|
||||||
def _patch_command_runner(self, command_type, runner_method):
|
|
||||||
"""Helper to patch a command runner to simulate a zombie command.
|
|
||||||
|
|
||||||
Args:
|
|
||||||
command_type: Type of command runner to patch ('ssh' or 'python_code')
|
|
||||||
runner_method: Original method to wrap
|
|
||||||
|
|
||||||
Returns:
|
|
||||||
A context manager that applies the patch
|
|
||||||
"""
|
|
||||||
|
|
||||||
def _wrapper(*args, **kwargs):
|
|
||||||
# Modify args to disable log record finishing
|
|
||||||
args = list(args)
|
|
||||||
if len(args) > 1:
|
|
||||||
args[1] = False # Set log_record to False
|
|
||||||
return runner_method(*args, **kwargs)
|
|
||||||
|
|
||||||
return patch.object(
|
|
||||||
self.registry["cx.tower.server"],
|
|
||||||
f"_command_runner_{command_type}",
|
|
||||||
_wrapper,
|
|
||||||
)
|
|
||||||
|
|
||||||
def _verify_zombie_command_job_cancellation(self, command_action):
|
|
||||||
"""Verify zombie command is detected and job is cancelled.
|
|
||||||
|
|
||||||
Args:
|
|
||||||
command_action: Action type ('ssh_command' or 'python_code')
|
|
||||||
"""
|
|
||||||
# check zombie command logs
|
|
||||||
domain = [
|
|
||||||
("is_running", "=", True),
|
|
||||||
("start_date", "=", self.old_time),
|
|
||||||
("command_action", "=", command_action),
|
|
||||||
]
|
|
||||||
zombie_command_logs = self.env["cx.tower.command.log"].search(domain)
|
|
||||||
|
|
||||||
self.assertEqual(
|
|
||||||
len(zombie_command_logs), 1, "Zombie command log should be created"
|
|
||||||
)
|
|
||||||
self.assertTrue(
|
|
||||||
zombie_command_logs.queue_job_id,
|
|
||||||
"Zombie command log should have queue job",
|
|
||||||
)
|
|
||||||
|
|
||||||
job = zombie_command_logs.queue_job_id
|
|
||||||
self.assertTrue(job.exists(), "Zombie command job should exist")
|
|
||||||
|
|
||||||
self.assertEqual(job.state, "pending", "Zombie command job should be pending")
|
|
||||||
|
|
||||||
# run process to kill zombie command
|
|
||||||
self.server_test_1._check_zombie_commands()
|
|
||||||
|
|
||||||
# check that command log is cancelled
|
|
||||||
self.assertEqual(
|
|
||||||
job.state, "cancelled", "Zombie command job should be cancelled"
|
|
||||||
)
|
|
||||||
|
|
||||||
def test_check_zombie_ssh_command_queue(self):
|
|
||||||
"""
|
|
||||||
Test that zombie ssh command is killed and job is cancelled
|
|
||||||
"""
|
|
||||||
# Create test commands
|
|
||||||
ssh_command = self.Command.create(
|
|
||||||
{
|
|
||||||
"name": "Test SSH Command",
|
|
||||||
"code": "ls -la",
|
|
||||||
"action": "ssh_command",
|
|
||||||
}
|
|
||||||
)
|
|
||||||
|
|
||||||
# patch command runner to not finish log record
|
|
||||||
cx_tower_server_obj = self.registry["cx.tower.server"]
|
|
||||||
_command_runner_ssh_super = cx_tower_server_obj._command_runner_ssh
|
|
||||||
|
|
||||||
with self._patch_command_runner("ssh", _command_runner_ssh_super):
|
|
||||||
# run zombie command with log creation in past
|
|
||||||
self.server_test_1.run_command(
|
|
||||||
ssh_command, log={"start_date": self.old_time}
|
|
||||||
)
|
|
||||||
|
|
||||||
# check zombie command logs
|
|
||||||
self._verify_zombie_command_job_cancellation("ssh_command")
|
|
||||||
|
|
||||||
@mute_logger("py.warnings")
|
|
||||||
def test_check_zombie_python_command_queue(self):
|
|
||||||
"""
|
|
||||||
Test that zombie python command is killed and job is cancelled
|
|
||||||
"""
|
|
||||||
# Create test commands
|
|
||||||
python_command = self.Command.create(
|
|
||||||
{
|
|
||||||
"name": "Test Python Command",
|
|
||||||
"code": "print('test')",
|
|
||||||
"action": "python_code",
|
|
||||||
}
|
|
||||||
)
|
|
||||||
|
|
||||||
# patch command runner to not finish log record
|
|
||||||
cx_tower_server_obj = self.registry["cx.tower.server"]
|
|
||||||
_command_runner_python_code_super = (
|
|
||||||
cx_tower_server_obj._command_runner_python_code
|
|
||||||
)
|
|
||||||
|
|
||||||
with self._patch_command_runner(
|
|
||||||
"python_code", _command_runner_python_code_super
|
|
||||||
):
|
|
||||||
# run zombie command with log creation in past
|
|
||||||
self.server_test_1.run_command(
|
|
||||||
python_command, log={"start_date": self.old_time}
|
|
||||||
)
|
|
||||||
|
|
||||||
# check zombie command logs
|
|
||||||
self._verify_zombie_command_job_cancellation("python_code")
|
|
||||||
@@ -1,37 +0,0 @@
|
|||||||
from odoo.addons.cetmix_tower_server.tests.common import TestTowerCommon
|
|
||||||
from odoo.addons.queue_job.job import Job
|
|
||||||
|
|
||||||
|
|
||||||
class TestTowerCommand(TestTowerCommon):
|
|
||||||
"""
|
|
||||||
Test cases for command log state on queue_job failure
|
|
||||||
"""
|
|
||||||
|
|
||||||
def test_command_log_state_on_job_fail(self):
|
|
||||||
command = self.env["cx.tower.command"].create(
|
|
||||||
{
|
|
||||||
"name": "Test Command",
|
|
||||||
"action": "ssh_command",
|
|
||||||
"code": "echo 'Hello World'",
|
|
||||||
}
|
|
||||||
)
|
|
||||||
self.assertTrue(command.id, "Command should be created successfully")
|
|
||||||
|
|
||||||
self.server_test_1.run_command(command=command)
|
|
||||||
command_log = self.env["cx.tower.command.log"].search(
|
|
||||||
[("command_id", "=", command.id)], order="id desc", limit=1
|
|
||||||
)
|
|
||||||
self.assertTrue(command_log, "Command log should be created")
|
|
||||||
|
|
||||||
job = command_log.queue_job_id
|
|
||||||
self.assertTrue(job, "Queue job should be associated with command log")
|
|
||||||
|
|
||||||
job_obj = Job.load(self.env, job.uuid)
|
|
||||||
job_obj.set_failed()
|
|
||||||
job_obj.store()
|
|
||||||
self.assertEqual(job.state, "failed", "Job should be in failed state")
|
|
||||||
self.assertEqual(
|
|
||||||
command_log.command_status,
|
|
||||||
self.env["queue.job"].QUEUE_JOB_ERROR,
|
|
||||||
"Command log should be in failed state",
|
|
||||||
)
|
|
||||||
@@ -1,201 +0,0 @@
|
|||||||
from odoo import exceptions
|
|
||||||
|
|
||||||
from odoo.addons.cetmix_tower_server.tests.common import TestTowerCommon
|
|
||||||
from odoo.addons.queue_job.tests.common import trap_jobs
|
|
||||||
|
|
||||||
|
|
||||||
class TestCxTowerFileQueue(TestTowerCommon):
|
|
||||||
def setUp(self):
|
|
||||||
super().setUp()
|
|
||||||
self.file_template = self.FileTemplate.create(
|
|
||||||
{
|
|
||||||
"name": "Test",
|
|
||||||
"file_name": "test.txt",
|
|
||||||
"server_dir": "/var/tmp",
|
|
||||||
"code": "Hello, world!",
|
|
||||||
}
|
|
||||||
)
|
|
||||||
|
|
||||||
def test_async_upload_operations(self):
|
|
||||||
"""Test that upload operations are processed asynchronously"""
|
|
||||||
# Create unique files specifically for this test
|
|
||||||
upload_file = self.File.create(
|
|
||||||
{
|
|
||||||
"source": "tower",
|
|
||||||
"template_id": self.file_template.id,
|
|
||||||
"server_id": self.server_test_1.id,
|
|
||||||
"name": "upload_test_1",
|
|
||||||
"auto_sync": False,
|
|
||||||
}
|
|
||||||
)
|
|
||||||
|
|
||||||
upload_file_2 = self.File.create(
|
|
||||||
{
|
|
||||||
"name": "upload_test_2",
|
|
||||||
"source": "server",
|
|
||||||
"server_id": self.server_test_1.id,
|
|
||||||
"server_dir": "/var/tmp",
|
|
||||||
"auto_sync": False,
|
|
||||||
}
|
|
||||||
)
|
|
||||||
|
|
||||||
with trap_jobs() as trap:
|
|
||||||
upload_file.upload()
|
|
||||||
upload_file_2.upload()
|
|
||||||
|
|
||||||
self.assertEqual(len(trap.enqueued_jobs), 2)
|
|
||||||
|
|
||||||
upload_file.write({"server_response": "ok", "is_being_processed": False})
|
|
||||||
upload_file_2.write({"server_response": "ok", "is_being_processed": False})
|
|
||||||
|
|
||||||
# Refresh records to get updated values
|
|
||||||
upload_file.invalidate_recordset()
|
|
||||||
upload_file_2.invalidate_recordset()
|
|
||||||
|
|
||||||
# Verify the expected state
|
|
||||||
self.assertEqual(upload_file.server_response, "ok")
|
|
||||||
self.assertFalse(upload_file.is_being_processed)
|
|
||||||
|
|
||||||
self.assertEqual(upload_file_2.server_response, "ok")
|
|
||||||
self.assertFalse(upload_file_2.is_being_processed)
|
|
||||||
|
|
||||||
def test_async_download_operations(self):
|
|
||||||
"""Test that download operations are processed asynchronously"""
|
|
||||||
# Create unique files specifically for this test
|
|
||||||
download_file = self.File.create(
|
|
||||||
{
|
|
||||||
"source": "tower",
|
|
||||||
"template_id": self.file_template.id,
|
|
||||||
"server_id": self.server_test_1.id,
|
|
||||||
"name": "download_test_1",
|
|
||||||
"auto_sync": False,
|
|
||||||
}
|
|
||||||
)
|
|
||||||
|
|
||||||
download_file_2 = self.File.create(
|
|
||||||
{
|
|
||||||
"name": "download_test_2",
|
|
||||||
"source": "server",
|
|
||||||
"server_id": self.server_test_1.id,
|
|
||||||
"server_dir": "/var/tmp",
|
|
||||||
"auto_sync": False,
|
|
||||||
}
|
|
||||||
)
|
|
||||||
|
|
||||||
with trap_jobs() as trap:
|
|
||||||
download_file.download()
|
|
||||||
download_file_2.download()
|
|
||||||
|
|
||||||
# Verify jobs were created
|
|
||||||
self.assertEqual(len(trap.enqueued_jobs), 2)
|
|
||||||
|
|
||||||
download_file.write({"server_response": "ok", "is_being_processed": False})
|
|
||||||
download_file_2.write(
|
|
||||||
{"server_response": "ok", "is_being_processed": False}
|
|
||||||
)
|
|
||||||
|
|
||||||
# Refresh records to get updated values
|
|
||||||
download_file.invalidate_recordset()
|
|
||||||
download_file_2.invalidate_recordset()
|
|
||||||
|
|
||||||
# Verify the expected state
|
|
||||||
self.assertEqual(download_file.server_response, "ok")
|
|
||||||
self.assertFalse(download_file.is_being_processed)
|
|
||||||
|
|
||||||
self.assertEqual(download_file_2.server_response, "ok")
|
|
||||||
self.assertFalse(download_file_2.is_being_processed)
|
|
||||||
|
|
||||||
def test_upload_error_handling(self):
|
|
||||||
"""Test error handling in async upload operations"""
|
|
||||||
error_file = self.File.create(
|
|
||||||
{
|
|
||||||
"source": "tower",
|
|
||||||
"template_id": self.file_template.id,
|
|
||||||
"server_id": self.server_test_1.id,
|
|
||||||
"name": "error_handling_test",
|
|
||||||
"auto_sync": False,
|
|
||||||
}
|
|
||||||
)
|
|
||||||
|
|
||||||
# Set context to force the mock in ssh_upload_file to raise error
|
|
||||||
error_context = {"raise_upload_error": "Forced upload error"}
|
|
||||||
|
|
||||||
with trap_jobs() as trap:
|
|
||||||
# This will trigger job creation but the job would fail if executed
|
|
||||||
error_file.with_context(**error_context).upload(raise_error=True)
|
|
||||||
|
|
||||||
# Verify job was created
|
|
||||||
self.assertEqual(len(trap.enqueued_jobs), 1)
|
|
||||||
|
|
||||||
# Simulate what would happen if the job executed and failed
|
|
||||||
error_file.write({"server_response": "error", "is_being_processed": False})
|
|
||||||
error_file.invalidate_recordset()
|
|
||||||
|
|
||||||
self.assertEqual(error_file.server_response, "error")
|
|
||||||
self.assertFalse(error_file.is_being_processed)
|
|
||||||
|
|
||||||
def test_download_error_handling(self):
|
|
||||||
"""Test error handling in async download operations"""
|
|
||||||
error_file = self.File.create(
|
|
||||||
{
|
|
||||||
"source": "server",
|
|
||||||
"server_id": self.server_test_1.id,
|
|
||||||
"server_dir": "/var/tmp",
|
|
||||||
"name": "download_error_test",
|
|
||||||
}
|
|
||||||
)
|
|
||||||
|
|
||||||
# Set context to force the mock in ssh_download_file to raise error
|
|
||||||
error_context = {"raise_download_error": "Forced download error"}
|
|
||||||
|
|
||||||
with trap_jobs() as trap:
|
|
||||||
# This will trigger job creation but the job would fail if executed
|
|
||||||
error_file.with_context(**error_context).download(raise_error=True)
|
|
||||||
|
|
||||||
# Verify job was created
|
|
||||||
self.assertEqual(len(trap.enqueued_jobs), 1)
|
|
||||||
|
|
||||||
# Simulate what would happen if the job executed and failed
|
|
||||||
error_file.write({"server_response": "error", "is_being_processed": False})
|
|
||||||
error_file.invalidate_recordset()
|
|
||||||
|
|
||||||
self.assertEqual(error_file.server_response, "error")
|
|
||||||
self.assertFalse(error_file.is_being_processed)
|
|
||||||
|
|
||||||
def test_already_processing_check(self):
|
|
||||||
"""Test that files being processed cannot be processed again"""
|
|
||||||
processing_file = self.File.create(
|
|
||||||
{
|
|
||||||
"source": "tower",
|
|
||||||
"template_id": self.file_template.id,
|
|
||||||
"server_id": self.server_test_1.id,
|
|
||||||
"name": "processing_test_file",
|
|
||||||
"is_being_processed": True,
|
|
||||||
}
|
|
||||||
)
|
|
||||||
|
|
||||||
self.assertTrue(processing_file.is_being_processed)
|
|
||||||
|
|
||||||
# Test with raising error
|
|
||||||
with self.assertRaises(exceptions.UserError):
|
|
||||||
processing_file.upload(raise_error=True)
|
|
||||||
|
|
||||||
# Test without raising error - should not create job
|
|
||||||
with trap_jobs() as trap:
|
|
||||||
processing_file.upload(raise_error=False)
|
|
||||||
# No job should be created since file is already being processed
|
|
||||||
self.assertEqual(len(trap.enqueued_jobs), 0)
|
|
||||||
|
|
||||||
# Verify still marked as processing
|
|
||||||
self.assertTrue(processing_file.is_being_processed)
|
|
||||||
|
|
||||||
# Same tests for download
|
|
||||||
with self.assertRaises(exceptions.UserError):
|
|
||||||
processing_file.download(raise_error=True)
|
|
||||||
|
|
||||||
with trap_jobs() as trap:
|
|
||||||
processing_file.download(raise_error=False)
|
|
||||||
# No job should be created
|
|
||||||
self.assertEqual(len(trap.enqueued_jobs), 0)
|
|
||||||
|
|
||||||
self.assertTrue(processing_file.is_being_processed)
|
|
||||||
@@ -1,20 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8" ?>
|
|
||||||
<odoo>
|
|
||||||
<record id="cx_tower_command_log_view_form" model="ir.ui.view">
|
|
||||||
<field name="name">cx.tower.command.log.view.form</field>
|
|
||||||
<field name="model">cx.tower.command.log</field>
|
|
||||||
<field
|
|
||||||
name="inherit_id"
|
|
||||||
ref="cetmix_tower_server.cx_tower_command_log_view_form"
|
|
||||||
/>
|
|
||||||
<field name="arch" type="xml">
|
|
||||||
<xpath expr="//field[@name='command_id']" position="after">
|
|
||||||
<field
|
|
||||||
name="queue_job_id"
|
|
||||||
attrs="{'invisible': [('queue_job_id', '=', False)]}"
|
|
||||||
/>
|
|
||||||
</xpath>
|
|
||||||
</field>
|
|
||||||
</record>
|
|
||||||
|
|
||||||
</odoo>
|
|
||||||
@@ -1,56 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8" ?>
|
|
||||||
<odoo>
|
|
||||||
|
|
||||||
<record id="cx_tower_file_view_form" model="ir.ui.view">
|
|
||||||
<field name="name">cx.tower.file.view.form</field>
|
|
||||||
<field name="model">cx.tower.file</field>
|
|
||||||
<field name="inherit_id" ref="cetmix_tower_server.cx_tower_file_view_form" />
|
|
||||||
<field name="arch" type="xml">
|
|
||||||
<xpath expr="//form/sheet/group" position="before">
|
|
||||||
<field name="is_being_processed" invisible="1" />
|
|
||||||
<field name="server_response" invisible="1" />
|
|
||||||
<widget
|
|
||||||
name="web_ribbon"
|
|
||||||
title="Processing"
|
|
||||||
bg_color="bg-info"
|
|
||||||
attrs="{'invisible': [('is_being_processed', '=', False)]}"
|
|
||||||
/>
|
|
||||||
<widget
|
|
||||||
name="web_ribbon"
|
|
||||||
title="Success"
|
|
||||||
bg_color="bg-success"
|
|
||||||
attrs="{'invisible': ['|', ('is_being_processed', '=', True), ('server_response', '!=', 'ok')]}"
|
|
||||||
/>
|
|
||||||
<widget
|
|
||||||
name="web_ribbon"
|
|
||||||
title="Error"
|
|
||||||
bg_color="bg-danger"
|
|
||||||
attrs="{'invisible': ['|', ('is_being_processed', '=', True), ('server_response', 'in', ('ok', False))]}"
|
|
||||||
/>
|
|
||||||
</xpath>
|
|
||||||
</field>
|
|
||||||
</record>
|
|
||||||
|
|
||||||
<record id="cx_tower_queue_file_view_tree" model="ir.ui.view">
|
|
||||||
<field name="name">cx.tower.queue.file.view.tree</field>
|
|
||||||
<field name="model">cx.tower.file</field>
|
|
||||||
<field name="inherit_id" ref="cetmix_tower_server.cx_tower_file_view_tree" />
|
|
||||||
<field name="arch" type="xml">
|
|
||||||
<xpath expr="//tree" position="inside">
|
|
||||||
<field name="is_being_processed" invisible="1" />
|
|
||||||
<field name="server_response" invisible="1" />
|
|
||||||
</xpath>
|
|
||||||
<xpath expr="//tree" position="attributes">
|
|
||||||
<attribute name="decoration-info">
|
|
||||||
is_being_processed == True
|
|
||||||
</attribute>
|
|
||||||
<attribute name="decoration-success">
|
|
||||||
is_being_processed != True and server_response == 'ok'
|
|
||||||
</attribute>
|
|
||||||
<attribute name="decoration-danger">
|
|
||||||
is_being_processed != True and server_response not in ('ok', False)
|
|
||||||
</attribute>
|
|
||||||
</xpath>
|
|
||||||
</field>
|
|
||||||
</record>
|
|
||||||
</odoo>
|
|
||||||
20
addons/odoosky_demo/__manifest__.py
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
{
|
||||||
|
"name": "OdooSky Demo Addon",
|
||||||
|
"summary": "Smoke-test addon — proves the v3 in-cluster build pipeline works end-to-end.",
|
||||||
|
"description": """
|
||||||
|
A minimal Odoo module used by OdooSky platform tests to prove that a tagged
|
||||||
|
addon in odoo-tower/odoo-addons builds into an OCI image inside the customer
|
||||||
|
cluster and mounts into the Odoo pod. No business logic; just a manifest and
|
||||||
|
an empty __init__.py so Odoo recognizes it.
|
||||||
|
""",
|
||||||
|
"author": "OdooSky",
|
||||||
|
"website": "https://odoosky.org",
|
||||||
|
"category": "Tools",
|
||||||
|
"version": "18.0.1.0.0",
|
||||||
|
"license": "LGPL-3",
|
||||||
|
"depends": ["base"],
|
||||||
|
"data": [],
|
||||||
|
"installable": True,
|
||||||
|
"application": False,
|
||||||
|
"auto_install": False,
|
||||||
|
}
|
||||||
1
addons/odoosky_demo/static/description/index.html
Normal file
@@ -0,0 +1 @@
|
|||||||
|
<section><h1>OdooSky Demo Addon</h1><p>Platform smoke-test addon. Safe to install / uninstall.</p></section>
|
||||||