未验证 提交 987b589b 编写于 作者: P Peter Pan 提交者: GitHub

fix travis-ci and update README.md (#572)

* refactor: initialize VisualDL 2.0

* refactor: fix dev server problem

* refactor: add i18n

* refactor: fix i18n

* infra i18n支持

* styled-components for debug

* infra. essential hack for styled comopnent

* use yaml for translation

* fix: navbar url problem

* feat: add nuxt module to build locales

* fix: index route redirect error

* feat: add page title

* refactor: move i18n to module

* feat: add html lang attribute

* R.I.P

* Hello React

* refactor: initialize VisualDL 2.0

* fix: layout rerender

* add favicon

* add page title

* add meta tags

* feat: finish tag filter

* refactor: hook tastes good

* add single select

* finish components

* add api server

* scalars segregate metrics

* json-server sucks

* echarts

* add eslint

* bug fix

* finish scalars page

* change layout, fix aside

* add commit hook

* use tag filter hook

* add chart loading

* encapsulate run select

* samples page under construction

* finish images

* feat: graph page, still need some polishment

* finish high-dimensional

* fix mock data problem

* update readme

* fix build

* fix: use Buffer.from instead of constractor

* update Readme

* add simplified chinese readme

* build: travis

* build: travis

* style: fix type errors

* build: travis-ci

* fix: remove unused page
Co-authored-by: NNiandalu <Niandalu@users.noreply.github.com>
上级 bfa23c25
matrix:
language: cpp
os:
- linux
# much bug with osx environment
# TODO(ChunweiYan) support osx in the future
#- osx
jobs:
include:
- language: cpp
compiler: clang
cache:
- pip
- ccache
sudo: required
dist: trusty
os:
- linux
# much bug with osx environment
# TODO(ChunweiYan) support osx in the future
#- osx
os: linux
env:
- MATRIX_EVAL="CC=clang-5.0 && CXX=clang++-5.0 && JOB=check_style"
......@@ -38,7 +40,8 @@ matrix:
- python3-wheel
- clang-format-3.8
- ccache
ssh_known_hosts: 13.229.163.131
ssh_known_hosts:
secure: "QBkR72gylM8YPzcEvzIk8Q0B+1AZfVK81S3CgzltRC6T/9oTqrsYVPnr4a/MhIXvXm1yi1O5icb0KBr2VAXhuSvVdTOBtMoraHydNiFgijM71j16AMfbw3VhmHtxp6RtVxaAzZysCHXTp8EsDb3mnxJqmWN2qDeJH9x7JTIRQknMnwnTyBKaM5/X6fJNLvEsd2Qfi7vmRGKcrOMRWXK0znGmutKglH22GB5oqHtkB8Xr1pF3AEV2kspNuxdmuvMjQddm7InTArL993PCRKl8PtCGRkurC1n0BdzWCG85heewcZl09DXlH8GCO84icZeIA5p8fJBS8ADi0ew55Vve8dqHxR739MyzNl/GqM9sOEoChAIJOuJ+MvzglRju7urNfRSCnGs6+OAMU2X1E3cWxHFKFM79C4WSLIRXyEhFyrD2Bp10XnfF2OcXKKJzI7GfFNSNjBOFEsZewzanEUXitK8Y8Coz7yMy4arac/PwH4WSfoz/2f4BMBwkATqOwzZX4h1qGxRFV7q+A6BjVT32qVAL+wKqYU6qiXynBw8pC69usjsWlQ0QsrB/kYMNm/p1wRcPvHeb5tvMpBkdGwv3NudFFhXNYCAWSV4rTlH+f7mb/FAf7uEw0MKkV2eUgOt0SVsJ7XOMsuu8pxuDG6FefUCPLPLAZUVMUVlGMoZ16vo="
before_install:
- eval "${MATRIX_EVAL}"
......@@ -52,21 +55,24 @@ matrix:
- if [[ "$JOB" == "test" ]]; then ./scripts/tests.sh all; fi
- if [[ "$JOB" == "test_python3" ]]; then WITH_PYTHON3=ON ./scripts/tests.sh all; fi
- if [[ "$JOB" == "build_doc" ]]; then ./scripts/deploy_docs_on_travis.sh; fi;
- language: node_js
dist: trusty
node_js:
- 12
sudo: false
node_js: 12
cache:
- npm
- yarn
env:
- NODE_ENV=production
before_script:
- PUBLIC_PATH=""
- API_URL="/api"
before_install:
- cd frontend
install:
- yarn
script:
- if [[ "$JOB" == "check_style" ]]; then yarn lint; fi
- if [[ "$JOB" == "test" ]]; then yarn test; fi
- yarn lint
- yarn test
- ./scripts/build.sh
notifications:
email:
......
# FrontEnd of VisualDL
A platform to visualize the deep learning process and result.
[![code style: prettier](https://img.shields.io/badge/code_style-prettier-ff69b4.svg?style=flat-square)](https://github.com/prettier/prettier) [![License](https://img.shields.io/github/license/PaddlePaddle/VisualDL?style=flat-square)](https://github.com/PaddlePaddle/VisualDL/blob/develop/LICENSE) [![GitHub top language](https://img.shields.io/github/languages/top/PaddlePaddle/VisualDL?style=flat-square)](https://github.com/PaddlePaddle/VisualDL) [![GitHub code size in bytes](https://img.shields.io/github/languages/code-size/PaddlePaddle/VisualDL?style=flat-square)](https://github.com/PaddlePaddle/VisualDL) [![GitHub issues](https://img.shields.io/github/issues/PaddlePaddle/VisualDL?style=flat-square)](https://github.com/PaddlePaddle/VisualDL/issues) [![GitHub All Releases](https://img.shields.io/github/downloads/PaddlePaddle/VisualDL/total?style=flat-square)](https://github.com/PaddlePaddle/VisualDL/releases) [![GitHub stars](https://img.shields.io/github/stars/PaddlePaddle/VisualDL?style=social)](https://github.com/PaddlePaddle/VisualDL/stargazers)
<p align="center">
<img align="center" style="width:60%" src="https://raw.githubusercontent.com/PaddlePaddle/VisualDL/develop/frontend/public/images/logo-visualdl.svg" />
</p>
<br />
<p align="center">
<a href="https://travis-ci.org/PaddlePaddle/VisualDL"><img src="https://img.shields.io/travis/PaddlePaddle/VisualDL?style=flat-square" alt="Build Status" /></a>
<a href="https://github.com/PaddlePaddle/VisualDL"><img src="https://img.shields.io/github/languages/top/PaddlePaddle/VisualDL?style=flat-square" alt="GitHub top language" /></a>
<a href="https://github.com/prettier/prettier"><img src="https://img.shields.io/badge/code_style-prettier-ff69b4.svg?style=flat-square" alt="code style: prettier" /></a>
<a href="https://github.com/PaddlePaddle/VisualDL"><img src="https://img.shields.io/github/languages/code-size/PaddlePaddle/VisualDL?style=flat-square" alt="GitHub code size in bytes" /></a>
<a href="https://github.com/PaddlePaddle/VisualDL/blob/develop/LICENSE"><img src="https://img.shields.io/github/license/PaddlePaddle/VisualDL?style=flat-square" alt="License" /></a>
<a href="https://github.com/PaddlePaddle/VisualDL/issues"><img src="https://img.shields.io/github/issues/PaddlePaddle/VisualDL?style=flat-square" alt="GitHub issues" /></a>
<a href="https://github.com/PaddlePaddle/VisualDL/graphs/contributors"><img src="https://img.shields.io/github/contributors/PaddlePaddle/VisualDL?style=flat-square" alt="GitHub Contributors" /></a>
<a href="https://github.com/PaddlePaddle/VisualDL/stargazers"><img src="https://img.shields.io/github/stars/PaddlePaddle/VisualDL?style=social" alt="GitHub stars" /></a>
</p>
# VisualDL FrontEnd
English | [简体中文](https://github.com/PaddlePaddle/VisualDL/blob/develop/frontend/README_cn.md)
**🚧UNDER CONSTRUCTION🚧**
......@@ -12,7 +26,7 @@ A platform to visualize the deep learning process and result.
## Development
> nodejs ≥ 10 and npm ≥ 6 is required.
> nodejs ≥ 10 and npm ≥ 6 are required.
First, install all dependencies:
......@@ -30,12 +44,26 @@ yarn dev
Now open [http://localhost:8999](http://localhost:8999) with your browser.
You can change the port with `PORT` environment variable.
You can change the port with `PORT` environment variable:
```bash
PORT=3000 yarn dev
```
## Build & Deploy
```bash
./scripts/build.sh
yarn start
# we are working on deployment now, please wait
```
### Browser Compatibility
VisualDL supports the latest version of [Google Chrome](https://www.google.com/chrome/) and [Mozilla Firefox](https://www.mozilla.org/). [Microsoft Edge](https://www.microsoft.com/edge) and [Apple Safari](https://www.apple.com/safari/) may work too but are not tested.
## Learn More
This project is based on following projects:
......@@ -44,6 +72,9 @@ This project is based on following projects:
- [React](https://reactjs.org/)
- [ECharts](https://echarts.apache.org/)
## Author
<table><tr><td align="center"><a href="https://github.com/PeterPanZH"><img src="https://avatars0.githubusercontent.com/u/3366499?s=460&v=4" width="120px;" alt="PeterPanZH"/><br /><sub><b>PeterPanZH</b></sub></a></td><td align="center"><a href="https://github.com/Niandalu"><img src="https://avatars1.githubusercontent.com/u/6406875?s=460&v=4" width="120px;" alt="Niandalu"/><br /><sub><b>Niandalu</b></sub></a></td></tr></table>
## License
Apache-2.0
[Apache-2.0](https://github.com/PaddlePaddle/VisualDL/blob/develop/LICENSE)
<p align="center">
<img align="center" style="width:60%" src="https://raw.githubusercontent.com/PaddlePaddle/VisualDL/develop/frontend/public/images/logo-visualdl.svg" />
</p>
<br />
<p align="center">
<a href="https://travis-ci.org/PaddlePaddle/VisualDL"><img src="https://img.shields.io/travis/PaddlePaddle/VisualDL?style=flat-square" alt="Build Status" /></a>
<a href="https://github.com/PaddlePaddle/VisualDL"><img src="https://img.shields.io/github/languages/top/PaddlePaddle/VisualDL?style=flat-square" alt="GitHub top language" /></a>
<a href="https://github.com/prettier/prettier"><img src="https://img.shields.io/badge/code_style-prettier-ff69b4.svg?style=flat-square" alt="code style: prettier" /></a>
<a href="https://github.com/PaddlePaddle/VisualDL"><img src="https://img.shields.io/github/languages/code-size/PaddlePaddle/VisualDL?style=flat-square" alt="GitHub code size in bytes" /></a>
<a href="https://github.com/PaddlePaddle/VisualDL/blob/develop/LICENSE"><img src="https://img.shields.io/github/license/PaddlePaddle/VisualDL?style=flat-square" alt="License" /></a>
<a href="https://github.com/PaddlePaddle/VisualDL/issues"><img src="https://img.shields.io/github/issues/PaddlePaddle/VisualDL?style=flat-square" alt="GitHub issues" /></a>
<a href="https://github.com/PaddlePaddle/VisualDL/graphs/contributors"><img src="https://img.shields.io/github/contributors/PaddlePaddle/VisualDL?style=flat-square" alt="GitHub Contributors" /></a>
<a href="https://github.com/PaddlePaddle/VisualDL/stargazers"><img src="https://img.shields.io/github/stars/PaddlePaddle/VisualDL?style=social" alt="GitHub stars" /></a>
</p>
# VisualDL 前端
[English](https://github.com/PaddlePaddle/VisualDL/blob/develop/frontend/README.md) | 简体中文
**🚧仍在建设中🚧**
**🚧某些功能可能不能正常工作🚧**
**🚧欢迎 Pull Request🚧**
## 开发
> 要求 nodejs ≥ 10 并且 npm ≥ 6
首先,安装所有依赖:
```bash
npm install
# 或者
yarn
```
之后可以启动开发服务:
```bash
yarn dev
```
现在可以用浏览器打开 [http://localhost:8999](http://localhost:8999)
你可以使用 `PORT` 环境变量更改服务的端口:
```bash
PORT=3000 yarn dev
```
## 编译和部署
```bash
./scripts/build.sh
yarn start
# 我们正在开发部署功能,请耐心等待
```
### 浏览器兼容性
VisualDL 支持最新版本的 [Google Chrome](https://www.google.com/chrome/)[Mozilla Firefox](https://www.mozilla.org/)[Microsoft Edge](https://www.microsoft.com/edge)[Apple Safari](https://www.apple.com/safari/) 也许可以工作但是并未经过测试。
## 了解更多
本项目基于以下项目:
- [Next.js](https://nextjs.org/)
- [React](https://reactjs.org/)
- [ECharts](https://echarts.apache.org/)
## 作者
<table><tr><td align="center"><a href="https://github.com/PeterPanZH"><img src="https://avatars0.githubusercontent.com/u/3366499?s=460&v=4" width="120px;" alt="PeterPanZH"/><br /><sub><b>PeterPanZH</b></sub></a></td><td align="center"><a href="https://github.com/Niandalu"><img src="https://avatars1.githubusercontent.com/u/6406875?s=460&v=4" width="120px;" alt="Niandalu"/><br /><sub><b>Niandalu</b></sub></a></td></tr></table>
## 许可证
[Apache-2.0](https://github.com/PaddlePaddle/VisualDL/blob/develop/LICENSE)
import React, {FunctionComponent} from 'react';
import {useTranslation, NextI18NextPage} from '~/utils/i18n';
import {useTranslation} from '~/utils/i18n';
import {NodeType, TypedNode} from '~/resource/graph';
const typeName: {[k in NodeType]: string} = {
......
......@@ -13,6 +13,7 @@ import NodeInfo, {NodeInfoProps} from '~/components/GraphPage/NodeInfo';
import {Graph, collectDagFacts} from '~/resource/graph';
import {saveSvgAsPng} from 'save-svg-as-png';
// eslint-disable-next-line @typescript-eslint/no-empty-function
const dumbFn = () => {};
const SubSection = styled.div`
......@@ -114,7 +115,7 @@ const useDagreD3 = (graph: Graph | undefined) => {
dagInfo.edges.forEach(e => g.setEdge(e[0], e[1]));
const render = new dagre.render();
const svg = d3.select<HTMLElement, any>('svg');
const svg = d3.select<HTMLElement, any>('svg'); // eslint-disable-line @typescript-eslint/no-explicit-any
const inner = svg.select('svg g');
render(inner, g);
......@@ -122,8 +123,8 @@ const useDagreD3 = (graph: Graph | undefined) => {
const scaleFactor = 1;
svg.attr('height', Math.max(640, window.innerHeight + 40));
var zoom = d3
.zoom<HTMLElement, any>()
const zoom = d3
.zoom<HTMLElement, any>() // eslint-disable-line @typescript-eslint/no-explicit-any
.scaleExtent([MIN_SCALE, MAX_SCALE])
.on('zoom', function() {
setScaleValue(d3.event.transform.k / scaleFactor);
......@@ -197,6 +198,7 @@ const useDagreD3 = (graph: Graph | undefined) => {
return {currentNode, displaySwitch, setDisplaySwitch, downloadImage, fitScreen, scale, setScale};
};
// eslint-disable-next-line @typescript-eslint/no-empty-interface
interface GraphsProps {}
const Graphs: NextI18NextPage<GraphsProps> = () => {
const {t} = useTranslation(['graphs', 'common']);
......
import Title from '~/components/Title';
import Content from '~/components/Content';
import {useTranslation} from '~/utils/i18n';
const HighDimension = () => {
const {t} = useTranslation(['highDimension', 'common']);
const aside = <section></section>;
return (
<>
<Title>{t('common:highDimension')}</Title>
<Content aside={aside}></Content>
</>
);
};
HighDimension.getInitialProps = () => {
return {
namespacesRequired: ['highDimension', 'common']
};
};
export default HighDimension;
<svg viewBox="0 0 188.85 36.81" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><clipPath id="a" transform="translate(-536 -260.4)"><path clip-rule="evenodd" d="m563.76 265.4a2.15 2.15 0 1 0 2.15 2.15 2.15 2.15 0 0 0 -2.15-2.15"/></clipPath><clipPath id="b" transform="translate(-536 -260.4)"><path d="m0 0h1045v1000h-1045z"/></clipPath><clipPath id="c" transform="translate(-536 -260.4)"><path clip-rule="evenodd" d="m562.75 292.21h3.1a.17.17 0 0 0 .14-.09l9.35-20.56a.16.16 0 0 0 -.15-.22h-3.1a.15.15 0 0 0 -.14.09l-9.35 20.57a.16.16 0 0 0 .15.22"/></clipPath><clipPath id="d" transform="translate(-536 -260.4)"><path clip-rule="evenodd" d="m582.45 265.4a2.15 2.15 0 1 0 2.15 2.15 2.15 2.15 0 0 0 -2.15-2.15"/></clipPath><clipPath id="e" transform="translate(-536 -260.4)"><path clip-rule="evenodd" d="m556.58 271.34h-3.1a.16.16 0 0 0 -.15.09l-3.65 8h-7.27a.24.24 0 0 0 -.23.14l-1.18 2.65a.14.14 0 0 0 .13.19h7.2l-4.33 9.59a.16.16 0 0 0 .14.22h3.1a.16.16 0 0 0 .14-.09l9.35-20.56a.16.16 0 0 0 -.14-.22"/></clipPath><clipPath id="f" transform="translate(-536 -260.4)"><path clip-rule="evenodd" d="m620.44 280.47h-2.16a.1.1 0 0 0 -.09.11v.42c0 .06-.1.1-.15.1h-7.42a.1.1 0 0 0 -.1.1v1.8a.09.09 0 0 0 .1.1h7.38c.05 0 .15.05.15.11v6a.09.09 0 0 0 .09.1h2.16a.09.09 0 0 0 .09-.1v-6a.1.1 0 0 1 .1-.11h7.49a.09.09 0 0 0 .1-.1v-1.76a.1.1 0 0 0 -.1-.1h-7.49a.09.09 0 0 1 -.1-.1v-.41a.1.1 0 0 0 -.09-.11"/></clipPath><clipPath id="g" transform="translate(-536 -260.4)"><path clip-rule="evenodd" d="m628.12 289.13c-3.6-.1-5.73-2.51-6.89-4.94a.1.1 0 0 1 .08-.15h2.35a.08.08 0 0 1 .07 0 5.19 5.19 0 0 0 4.4 2.87.1.1 0 0 1 .09.1v2a.11.11 0 0 1 -.1.1"/></clipPath><clipPath id="h" transform="translate(-536 -260.4)"><path clip-rule="evenodd" d="m610.62 289.13c3.6-.1 5.73-2.51 6.89-4.94a.1.1 0 0 0 -.08-.15h-2.34a.08.08 0 0 0 -.08 0 5.19 5.19 0 0 1 -4.4 2.87.1.1 0 0 0 -.09.1v2a.11.11 0 0 0 .1.1"/></clipPath><clipPath id="i" transform="translate(-536 -260.4)"><path clip-rule="evenodd" d="m615 275.32h.07v.07a9 9 0 0 1 -4.34 2.43.1.1 0 0 0 -.08.1v2a.1.1 0 0 0 .12.1 11.47 11.47 0 0 0 4.42-2.18l.07-.06v2.22a.1.1 0 0 0 .1.1h1.93a.1.1 0 0 0 .1-.1v-9.2a.11.11 0 0 0 -.1-.11h-1.93a.11.11 0 0 0 -.1.11v2.4h-.05a4.51 4.51 0 0 1 -2.56-2.49.11.11 0 0 0 -.09-.05h-2.16a.1.1 0 0 0 -.09.14c.57 1.45 2.13 4 4.67 4.56"/></clipPath><clipPath id="j" transform="translate(-536 -260.4)"><path clip-rule="evenodd" d="m600.75 275.27h-1.12a.1.1 0 0 0 -.09.06l-1 2.11a.1.1 0 0 0 .09.15h2.15c4.5 0 5.59-2.49 6.56-4.71.47-1.07.8-1.86.89-2.13a.1.1 0 0 0 -.09-.13h-2.2a.09.09 0 0 0 -.09.06l-.75 1.71c-.9 2-1.68 2.88-4.31 2.88"/></clipPath><clipPath id="k" transform="translate(-536 -260.4)"><path clip-rule="evenodd" d="m606.66 284.78h.89a.1.1 0 0 0 .1-.1v-2.05a.11.11 0 0 0 -.1-.11h-.65a7.4 7.4 0 0 1 -6.36-3.81.09.09 0 0 0 -.08 0h-2.31a.1.1 0 0 0 -.09.15 9.43 9.43 0 0 0 8.6 6"/></clipPath><clipPath id="l" transform="translate(-536 -260.4)"><path clip-rule="evenodd" d="m623.93 276.25a7.46 7.46 0 0 1 -2.25-2 .11.11 0 0 0 -.12 0 16.45 16.45 0 0 1 -1.64.95.1.1 0 0 0 0 .15 7 7 0 0 0 2 2.09.07.07 0 0 0 .06 0l1.64-.2a.08.08 0 0 0 .08-.07l.27-.79a.11.11 0 0 0 -.05-.13"/></clipPath><clipPath id="m" transform="translate(-536 -260.4)"><path clip-rule="evenodd" d="m627.77 271.33h-5.27v-.07c.12-.22.24-.44.34-.66a.11.11 0 0 0 -.09-.15h-2.09a.1.1 0 0 0 -.09.06 3.82 3.82 0 0 1 -2.3 2 .1.1 0 0 0 -.06.09v1.92a.11.11 0 0 0 .12.1 6.47 6.47 0 0 0 2.28-1.22h.05 4.89a.29.29 0 0 1 .23.1.35.35 0 0 1 0 .26c-1.43 3.72-5.84 4.1-7.53 4.18a.1.1 0 0 0 -.09.1v1.82a.1.1 0 0 0 .1.1c8.45-.22 9.94-5.37 9.94-7.67v-.53c0-.23-.11-.43-.53-.43"/></clipPath><clipPath id="n" transform="translate(-536 -260.4)"><path clip-rule="evenodd" d="m594 286.3c-.25-.43 0-1.1.32-1.77l6.12-13.18c.13-.28.21-.61-.39-.61h-9.24a.09.09 0 0 0 -.1.1v2a.1.1 0 0 0 .1.1h5.67a.3.3 0 0 1 .25.11.26.26 0 0 1 0 .23l-5.28 11.72a3.33 3.33 0 0 0 -.07 3 2.89 2.89 0 0 0 2.62 1h13.56a.1.1 0 0 0 .1-.1v-2.1a.09.09 0 0 0 -.1-.1h-12.4c-.64 0-1-.15-1.21-.44"/></clipPath><clipPath id="o" transform="translate(-536 -260.4)"><path clip-rule="evenodd" d="m567.23 276.24a5.48 5.48 0 0 0 -5.26-4.9h-2a.12.12 0 0 0 -.11.07l-1.08 2.4a.12.12 0 0 0 .11.17h1.91a5.55 5.55 0 0 1 1 .07 2.77 2.77 0 0 1 2.48 2.87 2.61 2.61 0 0 1 -2.62 2.55h-6.86a.31.31 0 0 0 -.27.17l-1.14 2.51a.19.19 0 0 0 .17.26h8a5.6 5.6 0 0 0 5.6-6.17"/></clipPath><clipPath id="p" transform="translate(-536 -260.4)"><path clip-rule="evenodd" d="m585.85 276.24a5.48 5.48 0 0 0 -5.26-4.9h-2a.11.11 0 0 0 -.11.07l-1.08 2.4a.12.12 0 0 0 .11.17h1.91a5.61 5.61 0 0 1 1 .07 2.77 2.77 0 0 1 2.48 2.87 2.61 2.61 0 0 1 -2.62 2.55h-6.86a.3.3 0 0 0 -.27.17l-1.14 2.51a.19.19 0 0 0 .17.26h8a5.61 5.61 0 0 0 5.61-6.17"/></clipPath><clipPath id="q" transform="translate(-536 -260.4)"><path d="m719.85 287.87v-1.78h-8.09v-13.44h-2.3v15.22zm-20.55-1.78h-2.67v-11.51h2.67q5.26.15 5.42 5.64 0 5.86-5.42 5.87zm.15 1.78q7.86.15 7.72-7.65-.15-7.41-7.8-7.57h-5v15.22zm-7.64-.08v-15.66h-2.3v15.66zm-10.39-1.26c-1.58.05-2.35-.47-2.3-1.56s.92-1.83 2.9-2.07a6 6 0 0 0 3.26-1.12v1.41c-.2 2.08-1.48 3.19-3.86 3.34zm-1 1.56c2.27 0 3.86-.77 4.75-2.15a3.83 3.83 0 0 0 .59 1.85h2.24a4.35 4.35 0 0 1 -.59-2.3v-4.49c.15-3-1.49-4.48-4.9-4.38q-4.38-.07-5.19 3.26l2.15.37c.29-1.33 1.31-2 3-2s2.77.62 2.67 2.15c-.39.45-1.78.84-4.15 1.19q-4.1.53-4.09 3.49t3.56 3.01zm-11.21 0a4.07 4.07 0 0 0 3.64-2.15v1.85h2.23v-10.91h-2.23v6.39q-.23 3-2.89 3.19c-1.74 0-2.6-1-2.6-2.9v-6.68h-2.23v6.91q.04 4.31 4.12 4.3zm-15.87-3.26q.66 3.48 5.34 3.26t4.68-3.19c.09-1.58-.94-2.62-3.12-3.12l-1.71-.44c-1.73-.3-2.55-.82-2.45-1.56 0-1 .72-1.56 2.15-1.56a2.21 2.21 0 0 1 2.45 1.63l2.23-.29q-.81-3-4.82-3c-2.77.1-4.23 1.18-4.38 3.26q-.07 2.16 3.41 3c.2.05.52.13 1 .22a3 3 0 0 0 .74.15c1.58.35 2.32.89 2.22 1.64 0 1.13-.89 1.7-2.52 1.7a2.61 2.61 0 0 1 -3-2.08zm-1.56 3v-10.95h-2.3v10.91zm0-13v-2.3h-2.3v2.3zm-9.42 13.06 6.09-15.22h-2.6q-4.6 12.84-4.68 13.21h-.07q-.15-.28-4.9-13.21h-2.52l6.08 15.22z"/></clipPath><g clip-path="url(#a)"><g clip-path="url(#b)"><path d="m20.61 0h14.3v14.3h-14.3z" fill="#2932df"/></g></g><g clip-path="url(#c)"><g clip-path="url(#b)"><path d="m21.59 5.94h22.76v30.88h-22.76z" fill="#2932df"/></g></g><g clip-path="url(#d)"><g clip-path="url(#b)"><path d="m39.3 0h14.3v14.3h-14.3z" fill="#2932df"/></g></g><g clip-path="url(#e)"><g clip-path="url(#b)"><path d="m0 5.94h25.74v30.88h-25.74z" fill="#2932df"/></g></g><g clip-path="url(#f)"><g clip-path="url(#b)"><path d="m69.52 15.08h27.69v18.84h-27.69z" fill="#2932df"/></g></g><g clip-path="url(#g)"><g clip-path="url(#b)"><path d="m80.22 18.64h17v15.09h-17z" fill="#2932df"/></g></g><g clip-path="url(#h)"><g clip-path="url(#b)"><path d="m69.52 18.64h17v15.09h-17z" fill="#2932df"/></g></g><g clip-path="url(#i)"><g clip-path="url(#b)"><path d="m69.3 5.22h17.01v19.47h-17.01z" fill="#2932df"/></g></g><g clip-path="url(#j)"><g clip-path="url(#b)"><path d="m57.49 5.22h19.71v16.97h-19.71z" fill="#2932df"/></g></g><g clip-path="url(#k)"><g clip-path="url(#b)"><path d="m57.05 13.26h19.59v16.13h-19.59z" fill="#2932df"/></g></g><g clip-path="url(#l)"><g clip-path="url(#b)"><path d="m78.87 8.83h14.11v13.22h-14.11z" fill="#2932df"/></g></g><g clip-path="url(#m)"><g clip-path="url(#b)"><path d="m77.26 5.05h20.04v19.51h-20.04z" fill="#2932df"/></g></g><g clip-path="url(#n)"><g clip-path="url(#b)"><path d="m49.68 5.34h27v28.3h-27z" fill="#2932df"/></g></g><g clip-path="url(#o)"><g clip-path="url(#b)"><path d="m12.43 5.94h23.84v21.07h-23.84z" fill="#2932df"/></g></g><g clip-path="url(#p)"><g clip-path="url(#b)"><path d="m31.05 5.94h23.84v21.07h-23.84z" fill="#2932df"/></g></g><g clip-path="url(#q)"><g clip-path="url(#b)"><path d="m92.72 6.74h96.14v25.97h-96.14z" fill="#777"/></g></g></svg>
\ No newline at end of file
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册