Compare commits

...

153 Commits

Author SHA1 Message Date
Dzmitry Plashchynski
0702e20add Bump 2.0.1 2022-09-03 15:27:02 +03:00
Dzmitry Plashchynski
db8c29afbe Merge pull request #109 from itbeaver/fix_job_args
Fixes arguments for jobs
2022-09-03 15:22:26 +03:00
Aleksandr Bobrov
43e411cf0f Fix args 2022-09-03 00:26:10 +04:00
Dzmitry Plashchynski
e43ad4d409 Merge pull request #108 from plashchynski/dependabot/bundler/activerecord-7.0.3.1
Bump activerecord from 7.0.3 to 7.0.3.1
2022-07-24 22:52:25 +03:00
Dzmitry Plashchynski
c5c58b559f Write PID in the daemon mode 2022-07-24 22:50:05 +03:00
Dzmitry Plashchynski
81d1e3496f remove duplicated file 2022-07-24 22:44:45 +03:00
Dzmitry Plashchynski
ddbfa4c42e Fix specs 2022-07-24 22:38:08 +03:00
Dzmitry Plashchynski
e03d9b4ba6 Remove crono_test.sqlite from git cache 2022-07-24 22:37:50 +03:00
dependabot[bot]
811ab31978 Bump activerecord from 7.0.3 to 7.0.3.1
Bumps [activerecord](https://github.com/rails/rails) from 7.0.3 to 7.0.3.1.
- [Release notes](https://github.com/rails/rails/releases)
- [Changelog](https://github.com/rails/rails/blob/v7.0.3.1/activerecord/CHANGELOG.md)
- [Commits](https://github.com/rails/rails/compare/v7.0.3...v7.0.3.1)

---
updated-dependencies:
- dependency-name: activerecord
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-07-15 11:38:13 +00:00
Dzmitry Plashchynski
cb5064852a Merge pull request #107 from mediafinger/add-github-actions-for-specs
Add GitHub actions for specs
2022-07-15 14:37:21 +03:00
Andreas Finger
a421a6207b ci: Add GitHub Action to run specs 2022-07-11 10:43:02 +02:00
Andreas Finger
4abc999583 doc: List compatible Ruby versions in the README 2022-07-11 10:41:20 +02:00
Dzmitry Plashchynski
0e1dec2956 Merge pull request #106 from plashchynski/dependabot/bundler/rails-html-sanitizer-1.4.3
Bump rails-html-sanitizer from 1.4.2 to 1.4.3
2022-07-08 13:05:37 +03:00
dependabot[bot]
3a17938571 Bump rails-html-sanitizer from 1.4.2 to 1.4.3
Bumps [rails-html-sanitizer](https://github.com/rails/rails-html-sanitizer) from 1.4.2 to 1.4.3.
- [Release notes](https://github.com/rails/rails-html-sanitizer/releases)
- [Changelog](https://github.com/rails/rails-html-sanitizer/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rails/rails-html-sanitizer/compare/v1.4.2...v1.4.3)

---
updated-dependencies:
- dependency-name: rails-html-sanitizer
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-07-06 12:23:15 +00:00
Dzmitry Plashchynski
5391930954 Merge branch 'main' of https://github.com/plashchynski/crono 2022-06-16 11:08:28 +02:00
Dzmitry Plashchynski
5c16c8c6dd Do not pass empty arguments to the worker. Closes #95 2022-06-16 11:08:22 +02:00
Dzmitry Plashchynski
b1cc71e9a4 Update README.md 2022-05-30 00:25:46 +03:00
Dzmitry Plashchynski
4d6e7b58b4 Merge branch 'main' of https://github.com/plashchynski/crono 2022-05-29 22:33:33 +03:00
Dzmitry Plashchynski
a3587816e1 Create SECURITY.md 2022-05-29 22:31:51 +03:00
Dzmitry Plashchynski
805fbc48e6 Create codeql-analysis.yml 2022-05-29 22:28:58 +03:00
Dzmitry Plashchynski
80d8713cb2 Bump 2.0.0 2022-05-29 22:25:03 +03:00
Dzmitry Plashchynski
f5b5169b1f Remove requirements as it pretty common 2022-05-29 22:22:02 +03:00
Dzmitry Plashchynski
0a1ec366e0 do not pass empty arguments to Job#perform if arguments are not specified 2022-05-29 22:21:23 +03:00
Dzmitry Plashchynski
fc18c8c787 Update README.md 2022-05-29 21:30:53 +03:00
Dzmitry Plashchynski
49b1d2b85d Remove unused badgets 2022-05-29 21:28:29 +03:00
Dzmitry Plashchynski
efc4254146 Merge branch 'master' of https://github.com/plashchynski/crono 2022-05-29 21:18:16 +03:00
Dzmitry Plashchynski
abbae2bb33 remove deprecated 2022-05-29 21:18:07 +03:00
Dzmitry Plashchynski
e4066cfe10 Merge pull request #92 from magynhard/patch-1
Rake example does only fire once
2022-05-29 20:35:32 +03:00
Dzmitry Plashchynski
9f1bd7bf72 Merge branch 'master' into patch-1 2022-05-29 20:35:27 +03:00
Dzmitry Plashchynski
5831e040fc Update Gemfile.lock 2022-05-29 20:33:12 +03:00
Dzmitry Plashchynski
258b258003 Merge pull request #91 from cseelus/convert-to-engine-rspec
Convert to Rails engine
2022-05-29 20:32:11 +03:00
Dzmitry Plashchynski
333f18d89b Merge branch 'master' into convert-to-engine-rspec 2022-05-29 20:32:06 +03:00
Dzmitry Plashchynski
be1ecf2995 Merge pull request #90 from cseelus/ruby-3-compatibility
Use Ruby 3 conversion kwargs
2022-05-29 20:28:39 +03:00
Dzmitry Plashchynski
3d7267d97e Merge pull request #74 from muZk/patch-1
fix: rails 4.0.x
2022-05-29 20:28:10 +03:00
Dzmitry Plashchynski
9e8a6f0e05 Update dependencies 2022-05-29 20:24:45 +03:00
Dzmitry Plashchynski
2232671d86 Merge branch 'master' of https://github.com/plashchynski/crono 2022-05-29 20:22:55 +03:00
Dzmitry Plashchynski
8ea181397e Bundle with bundler 2 2022-05-29 20:22:19 +03:00
Dzmitry Plashchynski
e500738fd4 Merge pull request #97 from plashchynski/dependabot/bundler/activesupport-7.0.3
Bump activesupport from 5.0.0.1 to 7.0.3
2022-05-29 19:46:14 +03:00
Dzmitry Plashchynski
4279cbe27a Merge pull request #98 from plashchynski/dependabot/bundler/activerecord-7.0.3
Bump activerecord from 5.0.0.1 to 7.0.3
2022-05-29 19:46:02 +03:00
Dzmitry Plashchynski
630137d575 Merge pull request #99 from plashchynski/dependabot/bundler/rack-2.2.3.1
Bump rack from 2.2.3 to 2.2.3.1
2022-05-29 19:45:45 +03:00
Dzmitry Plashchynski
ae78de420f Update crono.gemspec 2022-05-29 19:44:44 +03:00
Dzmitry Plashchynski
e6f5e4299b Update README.md 2022-05-29 19:07:44 +03:00
dependabot[bot]
a6f8354e89 Bump rack from 2.2.3 to 2.2.3.1
Bumps [rack](https://github.com/rack/rack) from 2.2.3 to 2.2.3.1.
- [Release notes](https://github.com/rack/rack/releases)
- [Changelog](https://github.com/rack/rack/blob/main/CHANGELOG.md)
- [Commits](https://github.com/rack/rack/compare/2.2.3...2.2.3.1)

---
updated-dependencies:
- dependency-name: rack
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-05-27 17:59:38 +00:00
dependabot[bot]
610046d0fe Bump activerecord from 5.0.0.1 to 7.0.3
Bumps [activerecord](https://github.com/rails/rails) from 5.0.0.1 to 7.0.3.
- [Release notes](https://github.com/rails/rails/releases)
- [Changelog](https://github.com/rails/rails/blob/v7.0.3/activerecord/CHANGELOG.md)
- [Commits](https://github.com/rails/rails/compare/v5.0.0.1...v7.0.3)

---
updated-dependencies:
- dependency-name: activerecord
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-05-20 09:42:14 +00:00
dependabot[bot]
0391dac2e9 Bump activesupport from 5.0.0.1 to 7.0.3
Bumps [activesupport](https://github.com/rails/rails) from 5.0.0.1 to 7.0.3.
- [Release notes](https://github.com/rails/rails/releases)
- [Changelog](https://github.com/rails/rails/blob/v7.0.3/activesupport/CHANGELOG.md)
- [Commits](https://github.com/rails/rails/compare/v5.0.0.1...v7.0.3)

---
updated-dependencies:
- dependency-name: activesupport
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-05-20 09:42:13 +00:00
Dzmitry Plashchynski
a74da12862 Merge pull request #96 from plashchynski/dependabot/bundler/sinatra-2.2.0
Bump sinatra from 1.4.7 to 2.2.0
2022-05-20 12:41:16 +03:00
Dzmitry Plashchynski
7573109519 Update README.md 2022-05-20 12:40:54 +03:00
dependabot[bot]
a8e80b6160 Bump sinatra from 1.4.7 to 2.2.0
Bumps [sinatra](https://github.com/sinatra/sinatra) from 1.4.7 to 2.2.0.
- [Release notes](https://github.com/sinatra/sinatra/releases)
- [Changelog](https://github.com/sinatra/sinatra/blob/master/CHANGELOG.md)
- [Commits](https://github.com/sinatra/sinatra/compare/v1.4.7...v2.2.0)

---
updated-dependencies:
- dependency-name: sinatra
  dependency-type: direct:development
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-05-03 21:13:19 +00:00
Matthäus J. N. Beyrle
0af1645456 update rake example 2021-02-19 14:33:46 +01:00
Chris Seelus
ee79596509 Cleanup and get rspec to run again 2021-02-11 17:37:10 +01:00
Chris Seelus
6fee31fc81 Fix tests 2021-02-11 01:59:28 +01:00
Chris Seelus
551572fe56 Move CronoJob to models dir 2021-02-11 01:59:10 +01:00
Chris Seelus
d53520bbf0 Use Rails plugin generator and adapt 2021-02-10 22:10:43 +01:00
Chris Seelus
87b5726919 Use Ruby 3 conversion kwargs 2021-02-10 16:57:48 +01:00
Dzmitry Plashchynski
9b9193e1c8 Merge pull request #80 from andrisbriedis/master
Fixed race condition when starting jobs
2019-07-10 14:15:04 +03:00
Andris Briedis
6ca28ae01d Fixed race condition when starting jobs
Calling Time.zone.now in the if statement and while calculating sleep delay sometimes resulted in an exception with message "time interval must be positive".
This happened if job was about to start and we needed to sleep for a really short period of time + server was under high load.
First the application was checking if difference between current time and scheduled run time was positive.
If the expression returned true, sleep was called, but required delay was calculated once again and could result in a negative value being passed to the sleep function.
2019-07-10 11:43:04 +03:00
Nicolás Gómez
11350e83d9 fix: rails 4.0.x
Patch time_atts when `compact` is not defined in Hash class.
2018-04-11 10:50:45 -03:00
Dzmitry Plashchynski
3344c431a9 Merge pull request #66 from redrick/master
Add migration version for Rails 5 and above
2017-10-19 21:19:48 +03:00
Andrej Antas
7c8246087c Add migration version for Rails 5 and above
Fixes #65
2017-10-16 00:09:59 +02:00
Dzmitry Plashchynski
4136a5af1a Update LICENSE 2017-03-28 18:31:21 +03:00
Dzmitry Plashchynski
5b72e08222 Merge pull request #59 from haoxilu/master
rails timezone support
2017-03-10 13:58:01 +02:00
Dzmitry Plashchynski
5c0c2ee195 Update .travis.yml 2017-03-10 13:51:35 +02:00
haoxilu
d72a2d2b07 write some annotation 2017-03-07 23:02:42 +08:00
haoxilu
258052b852 rails timezone support 2017-02-24 09:05:43 +08:00
Dzmitry Plashchynski
a7488df85b Bump v1.1.2 2016-12-02 03:42:32 +02:00
Dzmitry Plashchynski
c777933044 Fix PG text limit. Closes #54 2016-12-02 03:41:38 +02:00
Dzmitry Plashchynski
0c2f52d9bc Bump 1.1.1 2016-11-30 01:06:29 +02:00
Dzmitry Plashchynski
33e9794621 Last log instead of Log since it can be truncated 2016-11-30 01:05:47 +02:00
Dzmitry Plashchynski
c336b6d00b Fix empty job_options error 2016-11-30 00:52:54 +02:00
Dzmitry Plashchynski
1cf37ee30f Bump 1.1.0 2016-11-30 00:43:52 +02:00
Dzmitry Plashchynski
137dfe6d19 Fix MySQL default text size limit 2016-11-30 00:16:58 +02:00
Dzmitry Plashchynski
14c3e3162e Log truncating Close #41 2016-11-30 00:11:56 +02:00
Dzmitry Plashchynski
d1e15b8537 Ignore .byebug_history 2016-11-30 00:01:54 +02:00
Dzmitry Plashchynski
f5d65b6cc7 Job options 2016-11-29 15:41:39 +02:00
Dzmitry Plashchynski
64dde82342 Update gems 2016-11-29 15:39:49 +02:00
Dzmitry Plashchynski
e331490c48 Update ruby versions for travis 2016-11-29 15:35:09 +02:00
Dzmitry Plashchynski
8a61e65963 Merge pull request #53 from acolyer/same_day
schedule on: today if at: time not passed
2016-11-16 23:25:56 +02:00
Adrian Colyer
3f9ea8350d schedule today if at: time not passed 2016-11-06 15:47:50 +00:00
Dzmitry Plashchynski
1d9d30ef89 Fix issue link 2016-09-22 18:39:56 +03:00
Dzmitry Plashchynski
72810a95ae Add information about the showexceptions issue. Closes #1055 2016-09-22 18:38:44 +03:00
Dzmitry Plashchynski
4401c6bba4 Merge branch 'master' of github.com:plashchynski/crono 2016-09-22 18:24:56 +03:00
Dzmitry Plashchynski
e7df4bb067 Fix crash when no jobs defined 2016-09-22 18:24:46 +03:00
Dzmitry Plashchynski
935bdebd84 Merge pull request #51 from pachacamac/patch-1
deprecate need to config your app name.
2016-09-22 18:08:51 +03:00
Marc
b22845cba6 deprecate need to config your app name.
Instead of `<AppName>::Application.load_tasks` the same can be achieved by `Rails.app_class.load_tasks`, therefore not requiring the user to configure the AppName. Less margin for errors :)
2016-09-17 12:38:48 +02:00
Dzmitry Plashchynski
77481f1143 Fix asterisk 2016-07-02 21:27:55 +03:00
Dzmitry Plashchynski
42dc1bbc4f Remove gitter 2016-07-02 21:23:34 +03:00
Dzmitry Plashchynski
63c52896f7 Since Rails 5 requires Ruby 2.2.2 or newer. 2016-07-01 04:46:02 +03:00
Dzmitry Plashchynski
977f49a3a4 Rails 3 is not supported anymore 2016-07-01 04:40:00 +03:00
Dzmitry Plashchynski
7155ce797c Bump 1.0.3 2016-07-01 04:36:45 +03:00
Dzmitry Plashchynski
d18866564a Update change log 2016-07-01 04:35:56 +03:00
Dzmitry Plashchynski
b39be015b1 Rails 5 supports "week" in time notations 2016-07-01 04:35:09 +03:00
Dzmitry Plashchynski
51c914ea8a Tested on Rails 5, closes #49 2016-07-01 04:04:48 +03:00
Dzmitry Plashchynski
ac71db0d68 Added Known Issues section to Readme. Closes #43 2016-06-26 15:50:09 +03:00
Dzmitry Plashchynski
4e3ca885a8 Fix table_name_suffix/prefix issue. Closes #33 2016-06-26 02:12:04 +03:00
Dzmitry Plashchynski
8c998794b4 Bump 1.0.1 2016-06-24 13:36:20 +03:00
Dzmitry Plashchynski
de070d5bfa Fix job saving 2016-06-24 13:33:57 +03:00
Dzmitry Plashchynski
e1c143db60 Fix typo 2016-06-24 02:43:15 +03:00
Dzmitry Plashchynski
ad6d6cf9d6 Exclude ruby-2.3 from osx since it isn't installed on Travis 2016-06-24 02:41:10 +03:00
Dzmitry Plashchynski
01cc0864f2 Fix README grammar 2016-06-24 02:23:12 +03:00
Dzmitry Plashchynski
87deadf00e Update gems 2016-06-24 02:17:29 +03:00
Dzmitry Plashchynski
3e5ff2871d Add ruby 2.3 to test on Travis 2016-06-24 02:16:24 +03:00
Dzmitry Plashchynski
b2f107f83f Fix Travis build 2016-06-24 02:10:13 +03:00
Dzmitry Plashchynski
33867f1a25 Merge pull request #47 from adamico/master
Fix for Rails 5
2016-04-18 03:00:35 +03:00
Andrea D'Amico
f240036fcd Fix for Rails 5 2016-04-14 16:16:05 +02:00
Dzmitry Plashchynski
fa69ed0fd9 Bump version to 1.0.0 2016-03-30 16:41:31 +03:00
Dzmitry Plashchynski
95d8e13563 Update gems 2016-03-30 16:40:29 +03:00
Dzmitry Plashchynski
63283509cb Update gems 2016-01-29 18:08:14 +02:00
Dzmitry Plashchynski
16ca450033 Fix option parser 2016-01-20 20:41:26 +02:00
Dzmitry Plashchynski
acbfea2308 Bump 1.0.0.pre2 2016-01-20 16:20:59 +02:00
Dzmitry Plashchynski
b1695964a1 Fix rails loading issue 2016-01-20 15:29:16 +02:00
Dzmitry Plashchynski
fba29d80e2 Bump 1.0.0.pre 2016-01-20 01:23:51 +02:00
Dzmitry Plashchynski
8d6e9e3854 Add log to .gitignore 2016-01-20 01:21:07 +02:00
Dzmitry Plashchynski
c0feafa099 Update gems 2016-01-20 01:20:33 +02:00
Dzmitry Plashchynski
3d71df3d2f Merge pull request #36 from preisanalytics/jhuebl_add_data_to_scheduled_job_20160113
Add the possibility to schedule jobs with arguments
2016-01-16 01:18:22 +02:00
Dzmitry Plashchynski
4c223e1bf6 Merge pull request #34 from lhz/intervals
Added :within option to Period to run only within given time interval.
2016-01-16 01:17:54 +02:00
Dzmitry Plashchynski
65cc443f1d Merge pull request #37 from preisanalytics/jhuebl_add_start_stop_and_restart_to_cli_20160114
add start stop and restart to cli
2016-01-16 01:17:16 +02:00
Jannis Hübl
5d9b420582 fix build and config_spec 2016-01-15 11:34:32 +01:00
Jannis Hübl
4a0c2d78e2 add documentation and fix --help 2016-01-15 11:18:53 +01:00
Jannis Hübl
0affff21d1 add start|stop|restart|run to crono executable
this is done using daemonize gem, but it is not breaking the old
interface. But sets a deprected comment to the old one daemonize
process.
2016-01-15 11:03:38 +01:00
Jannis Hübl
042228900f document how to schedule jobs with arguments 2016-01-14 10:23:46 +01:00
Jannis Hübl
89f3b9a8a1 change to args which will be passed to Job#perform 2016-01-14 09:33:14 +01:00
Jannis Hübl
dd4f92b569 add data to Cron.perform which will be passed to ExampleJob.new(data).perform 2016-01-13 17:44:27 +01:00
Lars Haugseth
4b7b03f8a1 Convert TimeOfDay values to UTC. 2015-10-03 16:34:27 +02:00
Lars Haugseth
a93b937d14 Added :within option to Period to run only within given time interval. 2015-10-03 15:08:43 +02:00
Dzmitry Plashchynski
6881109934 Fix .travis.yml 2015-09-25 12:09:34 +03:00
Dzmitry Plashchynski
ffe49c0557 Update rack 2015-09-21 01:52:33 +03:00
Dzmitry Plashchynski
ecc83c5142 Update Gemfile.lock 2015-09-21 01:51:25 +03:00
Dzmitry Plashchynski
1d25475686 Merge pull request #32 from Natural-Intelligence/support_multiple_nodes
Support multiple nodes
2015-09-21 01:49:19 +03:00
avi_alima
e416113ac2 Add ability to define minimal time between job executions to support multiple corno nodes, so two different nodes will not execute the same job
Add Locking for the case that two nodes start perform job together.

If execution_interval == 0.minutes, skip locking and immediately perform
2015-08-20 13:35:41 +03:00
avi_alima
3a480a7d9a Add ability to define minimal time between job executions to support multiple corno nodes, so two different nodes will not execute the same job
Add Locking for the case that two nodes start perform job together.
2015-08-20 12:54:16 +03:00
avi_alima
32bdba3244 Add ability to define minimal time between job executions to support multiple corno nodes, so two different nodes will not execute the same job 2015-08-19 18:08:48 +03:00
Dzmitry Plashchynski
f76dff32e4 Merge pull request #28 from ChandravatiSG/db_connection_pool_fix
#27 Fixed DB connection pool issue.
2015-06-17 15:53:41 +03:00
ChandravatiSG
eaa3a872bf #27 Fixed DB connection pool issue. 2015-06-17 18:11:41 +05:30
Dzmitry Plashchynski
6b627275d8 v0.9.0 2015-05-29 23:29:46 +03:00
Dzmitry Plashchynski
00d5c777dd Merge branch 'master' of github.com:plashchynski/crono 2015-05-28 17:43:12 +03:00
Dzmitry Plashchynski
c28a0bbc8a Able to specify minutes for hour-based schedule. Closing #26 2015-05-28 17:43:02 +03:00
Dzmitry Plashchynski
45c22ee6ba Merge pull request #24 from rogercampos/feature/no-activejob-dependency
activejob is not a real dependency
2015-05-12 13:33:13 +03:00
Roger Campos
2ac14113b6 activejob is not a real dependency 2015-05-11 18:03:56 +02:00
Dzmitry Plashchynski
f909873165 v0.8.9 2015-04-14 13:48:51 +03:00
Dzmitry Plashchynski
94fed61c8a Update web ui preview 2015-04-13 18:05:29 +03:00
Dzmitry Plashchynski
ddf7127b27 Update web ui preview 2015-04-13 18:01:37 +03:00
Dzmitry Plashchynski
cd7e842fd2 v0.8.9.pre 2015-04-13 17:52:31 +03:00
Dzmitry Plashchynski
ad8794c497 Prefixes for Safari 2015-04-13 17:52:02 +03:00
Dzmitry Plashchynski
f711b6b450 Fix error message 2015-04-13 17:31:53 +03:00
Dzmitry Plashchynski
c2445d831b Fix specs 2015-04-13 16:45:38 +03:00
Dzmitry Plashchynski
1a5fd351b4 Merge branch 'materialize_css' 2015-04-13 16:43:24 +03:00
Dzmitry Plashchynski
aee028919c v0.8.8.pre 2015-04-13 16:18:18 +03:00
Dzmitry Plashchynski
6d41a19212 Handle a few jobs scheduled at the same time 2015-04-13 15:53:20 +03:00
Dzmitry Plashchynski
a28ec7b276 Add specs for bug with jobs scheduled at same time without at 2015-04-13 14:19:34 +03:00
Dzmitry Plashchynski
e8c7400caa Do not freeze time for period specs 2015-04-13 14:18:55 +03:00
Dzmitry Plashchynski
260cf14e95 Fix Cli specs 2015-04-13 14:18:32 +03:00
Dzmitry Plashchynski
1900a06582 Add Crono::Cronotab to process cronotab 2015-04-13 12:43:52 +03:00
Dzmitry Plashchynski
8174f86407 Fix crono:clean task 2015-04-13 12:29:27 +03:00
100 changed files with 1597 additions and 1698 deletions

72
.github/workflows/codeql-analysis.yml vendored Normal file
View File

@@ -0,0 +1,72 @@
# For most projects, this workflow file will not need changing; you simply need
# to commit it to your repository.
#
# You may wish to alter this file to override the set of languages analyzed,
# or to provide custom queries or build logic.
#
# ******** NOTE ********
# We have attempted to detect the languages in your repository. Please check
# the `language` matrix defined below to confirm you have the correct set of
# supported CodeQL languages.
#
name: "CodeQL"
on:
push:
branches: [ main ]
pull_request:
# The branches below must be a subset of the branches above
branches: [ main ]
schedule:
- cron: '36 15 * * 4'
jobs:
analyze:
name: Analyze
runs-on: ubuntu-latest
permissions:
actions: read
contents: read
security-events: write
strategy:
fail-fast: false
matrix:
language: [ 'ruby' ]
# CodeQL supports [ 'cpp', 'csharp', 'go', 'java', 'javascript', 'python', 'ruby' ]
# Learn more about CodeQL language support at https://aka.ms/codeql-docs/language-support
steps:
- name: Checkout repository
uses: actions/checkout@v3
# Initializes the CodeQL tools for scanning.
- name: Initialize CodeQL
uses: github/codeql-action/init@v2
with:
languages: ${{ matrix.language }}
# If you wish to specify custom queries, you can do so here or in a config file.
# By default, queries listed here will override any specified in a config file.
# Prefix the list here with "+" to use these queries and those in the config file.
# Details on CodeQL's query packs refer to : https://docs.github.com/en/code-security/code-scanning/automatically-scanning-your-code-for-vulnerabilities-and-errors/configuring-code-scanning#using-queries-in-ql-packs
# queries: security-extended,security-and-quality
# Autobuild attempts to build any compiled languages (C/C++, C#, or Java).
# If this step fails, then you should remove it and run the build manually (see below)
- name: Autobuild
uses: github/codeql-action/autobuild@v2
# Command-line programs to run using the OS shell.
# 📚 See https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstepsrun
# If the Autobuild fails above, remove it and uncomment the following three lines.
# modify them (or add more) to build your code if your project, please refer to the EXAMPLE below for guidance.
# - run: |
# echo "Run, Build Application using script"
# ./location_of_script_within_repo/buildscript.sh
- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@v2

36
.github/workflows/rspec.yml vendored Normal file
View File

@@ -0,0 +1,36 @@
name: "RSpec"
on:
push:
branches: [ main ]
pull_request:
# The branches below must be a subset of the branches above
branches: [ main ]
schedule:
- cron: '00 12 * * *' # daily at 12:00
jobs:
specs:
name: specs
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest]
ruby: ['2.7', '3.0', '3.1'] # Due to https://github.com/actions/runner/issues/849, we have to use quotes
runs-on: ${{ matrix.os }}
steps:
- name: Checkout repository
uses: actions/checkout@v3
- name: Setup Ruby and install gems
uses: ruby/setup-ruby@v1
with:
ruby-version: ${{ matrix.ruby }}
bundler-cache: true # runs 'bundle install' and caches installed gems automatically
cache-version: 1 # change this value when you have to empty the cache manually
- name: Run specs
run: |
bundle exec rspec spec/

3
.gitignore vendored
View File

@@ -6,3 +6,6 @@
/pkg/
/spec/reports/
/tmp/
log/*.log
.byebug_history
spec/internal

1
.rspec
View File

@@ -1,2 +1,3 @@
--require spec_helper
--format documentation
--color

View File

@@ -1,15 +0,0 @@
language: ruby
os:
- linux
- osx
rvm:
- 2.0.0
- 2.1
- 2.2
notifications:
webhooks:
urls:
- https://webhooks.gitter.im/e/907e95dada362be2a13c
on_success: change # options: [always|never|change] default: always
on_failure: always # options: [always|never|change] default: always
on_start: false # default: false

View File

@@ -1,3 +1,68 @@
2.0.1
-----------
- Fix a job argument error
2.0.0
-----------
- Converted this gem to a proper Rails engine
- Gets rid of `sinatra` and `haml` dependencies for the Web UI
- Web UI is now responsive and thus usable on smartphones, etc.
- Fixed crash with Ruby 3.0
1.1.0
-----------
- Rails 3 and old Rubies are not supported anymore, sorry rails 3 guys...
- Requires Ruby 2.2.2 or newer
- Fixed crash when no jobs defined in your cronotab
- Some doc updates (thanks to @pachacamac)
- Job will schedule on: today if at: time not passed (thanks to @acolyer)
- Job log truncating (thanks to @reiz)
1.0.3
-----------
- "every 1 week" jobs now displaying on Rails 5 as "1 week" not as "7 days"
- Liberal gem dependencies to support both Rails 4 and Rails 5
1.0.2
-----------
- Fix table_name_suffix/prefix issue: https://github.com/plashchynski/crono/issues/33
1.0.1
-----------
- Fix job saving
1.0.0
-----------
- Rails 5 support (thanks to @adamico)
- Possibility to schedule jobs with arguments (thanks to @preisanalytics)
- Added :within option to run only within given time interval (thanks to @lhz)
- daemon gem support (thanks to @preisanalytics) https://github.com/plashchynski/crono/pull/37
- Support multiple nodes (thanks to @Natural-Intelligence)
- Fixed DB connection pool issue (thanks to @ChandravatiSG)
0.9.1
-----------
- Add ability to define minimal time between job executions to support multiple corno nodes, so two different nodes will not execute the same job
0.8.9
-----------
- We moved Web UI to materializecss.com CSS framework
- We moved from CDN to local assets for Web UI
- We show current state of a job in Web UI (thanks to @michaelachrisco) https://github.com/plashchynski/crono/issues/16
- We won't write a pidfile unless daemonized (thanks to @thomasfedb) https://github.com/plashchynski/crono/pull/13
- Fixed `rake crono:clean` task error
- Fixed issue when jobs scheduled at same time exclude each other https://github.com/plashchynski/crono/issues/19
- Fixed issue with a daemon crash due to `time interval must be positive` error
0.8.0
-----------

22
Gemfile
View File

@@ -1,4 +1,24 @@
source 'https://rubygems.org'
git_source(:github) { |repo| "https://github.com/#{repo}.git" }
# Specify your gem's dependencies in crono.gemspec
# Specify your gem's dependencies in crono.gemspec.
gemspec
group :development, :test do
# gem 'activerecord'
# gem 'actionpack' # action_controller, action_view
# gem 'sprockets'
gem 'byebug'
gem 'combustion', '~> 1.3'
gem 'daemons'
gem 'rack-test'
gem 'rake', '>= 10.0'
gem 'rspec', '>= 3.0'
gem 'rspec-rails', '>= 4.0'
gem 'sqlite3'
gem 'timecop', '>= 0.7'
end
# To use a debugger
# gem 'byebug', group: [:development, :test]

View File

@@ -1,84 +1,229 @@
PATH
remote: .
specs:
crono (0.8.7.pre)
activejob (~> 4.0)
activerecord (~> 4.0)
activesupport (~> 4.0)
crono (2.0.0)
rails (>= 5.2.8)
sprockets-rails
GEM
remote: https://rubygems.org/
specs:
activejob (4.2.1)
activesupport (= 4.2.1)
globalid (>= 0.3.0)
activemodel (4.2.1)
activesupport (= 4.2.1)
actioncable (7.0.3.1)
actionpack (= 7.0.3.1)
activesupport (= 7.0.3.1)
nio4r (~> 2.0)
websocket-driver (>= 0.6.1)
actionmailbox (7.0.3.1)
actionpack (= 7.0.3.1)
activejob (= 7.0.3.1)
activerecord (= 7.0.3.1)
activestorage (= 7.0.3.1)
activesupport (= 7.0.3.1)
mail (>= 2.7.1)
net-imap
net-pop
net-smtp
actionmailer (7.0.3.1)
actionpack (= 7.0.3.1)
actionview (= 7.0.3.1)
activejob (= 7.0.3.1)
activesupport (= 7.0.3.1)
mail (~> 2.5, >= 2.5.4)
net-imap
net-pop
net-smtp
rails-dom-testing (~> 2.0)
actionpack (7.0.3.1)
actionview (= 7.0.3.1)
activesupport (= 7.0.3.1)
rack (~> 2.0, >= 2.2.0)
rack-test (>= 0.6.3)
rails-dom-testing (~> 2.0)
rails-html-sanitizer (~> 1.0, >= 1.2.0)
actiontext (7.0.3.1)
actionpack (= 7.0.3.1)
activerecord (= 7.0.3.1)
activestorage (= 7.0.3.1)
activesupport (= 7.0.3.1)
globalid (>= 0.6.0)
nokogiri (>= 1.8.5)
actionview (7.0.3.1)
activesupport (= 7.0.3.1)
builder (~> 3.1)
activerecord (4.2.1)
activemodel (= 4.2.1)
activesupport (= 4.2.1)
arel (~> 6.0)
activesupport (4.2.1)
i18n (~> 0.7)
json (~> 1.7, >= 1.7.7)
minitest (~> 5.1)
thread_safe (~> 0.3, >= 0.3.4)
tzinfo (~> 1.1)
arel (6.0.0)
builder (3.2.2)
byebug (4.0.5)
columnize (= 0.9.0)
columnize (0.9.0)
diff-lcs (1.2.5)
globalid (0.3.5)
activesupport (>= 4.1.0)
haml (4.0.6)
erubi (~> 1.4)
rails-dom-testing (~> 2.0)
rails-html-sanitizer (~> 1.1, >= 1.2.0)
activejob (7.0.3.1)
activesupport (= 7.0.3.1)
globalid (>= 0.3.6)
activemodel (7.0.3.1)
activesupport (= 7.0.3.1)
activerecord (7.0.3.1)
activemodel (= 7.0.3.1)
activesupport (= 7.0.3.1)
activestorage (7.0.3.1)
actionpack (= 7.0.3.1)
activejob (= 7.0.3.1)
activerecord (= 7.0.3.1)
activesupport (= 7.0.3.1)
marcel (~> 1.0)
mini_mime (>= 1.1.0)
activesupport (7.0.3.1)
concurrent-ruby (~> 1.0, >= 1.0.2)
i18n (>= 1.6, < 2)
minitest (>= 5.1)
tzinfo (~> 2.0)
builder (3.2.4)
byebug (11.1.3)
combustion (1.3.6)
activesupport (>= 3.0.0)
railties (>= 3.0.0)
thor (>= 0.14.6)
concurrent-ruby (1.1.10)
crass (1.0.6)
daemons (1.4.1)
diff-lcs (1.5.0)
digest (3.1.0)
erubi (1.10.0)
globalid (1.0.0)
activesupport (>= 5.0)
haml (5.2.2)
temple (>= 0.8.0)
tilt
i18n (0.7.0)
json (1.8.2)
minitest (5.5.1)
rack (1.6.0)
rack-protection (1.5.3)
i18n (1.12.0)
concurrent-ruby (~> 1.0)
loofah (2.18.0)
crass (~> 1.0.2)
nokogiri (>= 1.5.9)
mail (2.7.1)
mini_mime (>= 0.1.1)
marcel (1.0.2)
method_source (1.0.0)
mini_mime (1.1.2)
minitest (5.16.2)
mustermann (1.1.1)
ruby2_keywords (~> 0.0.1)
net-imap (0.2.3)
digest
net-protocol
strscan
net-pop (0.1.1)
digest
net-protocol
timeout
net-protocol (0.1.3)
timeout
net-smtp (0.3.1)
digest
net-protocol
timeout
nio4r (2.5.8)
nokogiri (1.13.7-arm64-darwin)
racc (~> 1.4)
nokogiri (1.13.7-x86_64-darwin)
racc (~> 1.4)
nokogiri (1.13.7-x86_64-linux)
racc (~> 1.4)
racc (1.6.0)
rack (2.2.4)
rack-protection (2.2.0)
rack
rack-test (0.6.3)
rack (>= 1.0)
rake (10.4.2)
rspec (3.2.0)
rspec-core (~> 3.2.0)
rspec-expectations (~> 3.2.0)
rspec-mocks (~> 3.2.0)
rspec-core (3.2.2)
rspec-support (~> 3.2.0)
rspec-expectations (3.2.0)
rack-test (1.1.0)
rack (>= 1.0, < 3)
rails (7.0.3.1)
actioncable (= 7.0.3.1)
actionmailbox (= 7.0.3.1)
actionmailer (= 7.0.3.1)
actionpack (= 7.0.3.1)
actiontext (= 7.0.3.1)
actionview (= 7.0.3.1)
activejob (= 7.0.3.1)
activemodel (= 7.0.3.1)
activerecord (= 7.0.3.1)
activestorage (= 7.0.3.1)
activesupport (= 7.0.3.1)
bundler (>= 1.15.0)
railties (= 7.0.3.1)
rails-dom-testing (2.0.3)
activesupport (>= 4.2.0)
nokogiri (>= 1.6)
rails-html-sanitizer (1.4.3)
loofah (~> 2.3)
railties (7.0.3.1)
actionpack (= 7.0.3.1)
activesupport (= 7.0.3.1)
method_source
rake (>= 12.2)
thor (~> 1.0)
zeitwerk (~> 2.5)
rake (13.0.6)
rspec (3.11.0)
rspec-core (~> 3.11.0)
rspec-expectations (~> 3.11.0)
rspec-mocks (~> 3.11.0)
rspec-core (3.11.0)
rspec-support (~> 3.11.0)
rspec-expectations (3.11.0)
diff-lcs (>= 1.2.0, < 2.0)
rspec-support (~> 3.2.0)
rspec-mocks (3.2.1)
rspec-support (~> 3.11.0)
rspec-mocks (3.11.1)
diff-lcs (>= 1.2.0, < 2.0)
rspec-support (~> 3.2.0)
rspec-support (3.2.2)
sinatra (1.4.5)
rack (~> 1.4)
rack-protection (~> 1.4)
tilt (~> 1.3, >= 1.3.4)
sqlite3 (1.3.10)
thread_safe (0.3.5)
tilt (1.4.1)
timecop (0.7.3)
tzinfo (1.2.2)
thread_safe (~> 0.1)
rspec-support (~> 3.11.0)
rspec-rails (5.1.2)
actionpack (>= 5.2)
activesupport (>= 5.2)
railties (>= 5.2)
rspec-core (~> 3.10)
rspec-expectations (~> 3.10)
rspec-mocks (~> 3.10)
rspec-support (~> 3.10)
rspec-support (3.11.0)
ruby2_keywords (0.0.5)
sinatra (2.2.0)
mustermann (~> 1.0)
rack (~> 2.2)
rack-protection (= 2.2.0)
tilt (~> 2.0)
sprockets (4.1.1)
concurrent-ruby (~> 1.0)
rack (> 1, < 3)
sprockets-rails (3.4.2)
actionpack (>= 5.2)
activesupport (>= 5.2)
sprockets (>= 3.0.0)
sqlite3 (1.4.2)
strscan (3.0.3)
temple (0.8.2)
thor (1.2.1)
tilt (2.0.10)
timecop (0.9.5)
timeout (0.3.0)
tzinfo (2.0.4)
concurrent-ruby (~> 1.0)
websocket-driver (0.7.5)
websocket-extensions (>= 0.1.0)
websocket-extensions (0.1.5)
zeitwerk (2.6.0)
PLATFORMS
ruby
arm64-darwin-21
x86_64-darwin-21
x86_64-linux
DEPENDENCIES
bundler (>= 1.0.0)
bundler (>= 2)
byebug
combustion (~> 1.3)
crono!
daemons
haml
rack-test
rake (~> 10.0)
rspec (~> 3.0)
rake (>= 10.0)
rspec (>= 3.0)
rspec-rails (>= 4.0)
sinatra
sqlite3
timecop (~> 0.7)
timecop (>= 0.7)
BUNDLED WITH
2.3.14

View File

@@ -1,4 +1,4 @@
Apache License
Apache License
Version 2.0, January 2004
http://www.apache.org/licenses/
@@ -186,7 +186,7 @@ Apache License
same "printed page" as the copyright notice for easier
identification within third-party archives.
Copyright 2015 Dzmitry Plashchynski <plashchynski@gmail.com>
Copyright 2022 Dzmitry Plashchynski
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
@@ -199,4 +199,3 @@ Apache License
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

2
NOTICE
View File

@@ -1,2 +1,2 @@
Copyright 2015 Dzmitry Plashchynski <plashchynski@gmail.com>
Copyright 2022 Dzmitry Plashchynski <plashchynski@gmail.com>
Licensed under the Apache License, Version 2.0

169
README.md
View File

@@ -1,25 +1,14 @@
Crono — Job scheduler for Rails
Job scheduler for Rails
------------------------
[![Gem Version](https://badge.fury.io/rb/crono.svg)](http://badge.fury.io/rb/crono)
[![Build Status](https://travis-ci.org/plashchynski/crono.svg?branch=master)](https://travis-ci.org/plashchynski/crono)
[![Code Climate](https://codeclimate.com/github/plashchynski/crono/badges/gpa.svg)](https://codeclimate.com/github/plashchynski/crono)
[![security](https://hakiri.io/github/plashchynski/crono/master.svg)](https://hakiri.io/github/plashchynski/crono/master)
[![Join the chat at https://gitter.im/plashchynski/crono](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/plashchynski/crono?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
Crono is a time-based background job scheduler daemon (just like Cron) for Ruby on Rails.
## The Purpose
Currently there is no such thing as Ruby Cron for Rails. Well, there's [Whenever](https://github.com/javan/whenever) but it works on top of Unix Cron, so you haven't control of it from Ruby. Crono is pure Ruby. It doesn't use Unix Cron and other platform-dependent things. So you can use it on all platforms supported by Ruby. It persists job states to your database using Active Record. You have full control of jobs performing process. It's Ruby, so you can understand and modify it to fit your needs.
Currently, there is no such thing as Ruby Cron for Rails. Well, there's [Whenever](https://github.com/javan/whenever) but it works on top of Unix Cron, so you can't manage it from Ruby. Crono is pure Ruby. It doesn't use Unix Cron and other platform-dependent things. So you can use it on all platforms supported by Ruby. It persists job states to your database using Active Record. You have full control of jobs performing process. It's Ruby, so you can understand and modify it to fit your needs.
![Web UI](https://github.com/plashchynski/crono/raw/master/examples/crono_web_ui.png)
## Requirements
Tested with latest MRI Ruby (2.2, 2.1 and 2.0) and Rails 3.2+
Other versions are untested but might work fine.
![Web UI](https://github.com/plashchynski/crono/raw/main/examples/crono_web_ui.png)
## Installation
@@ -42,47 +31,105 @@ Run the migration:
Now you are ready to move forward to create a job and schedule it.
### Compatibility
* **Crono v1.1.2** and older are compatible with Ruby 2.7.x and older
* **Crono v2.0.0** and newer are compatible with Ruby 2.7.x and _newer_
## Usage
#### Create Job
### The basic usage
Crono can use Active Job jobs from `app/jobs/`. The only requirements is that the `perform` method should take no arguments.
You can specigy a simple job by editing ```config/cronotab.rb```:
Here's an example of a job:
```ruby
# config/cronotab.rb
class TestJob
def perform
puts 'Test!'
end
end
Crono.perform(TestJob).every 5.seconds
```
Then, run a crono process:
```bundle exec crono -e development```
### Job Schedule
Schedule list is defined in the file `config/cronotab.rb`, that created using `rake crono:install`. The semantic is pretty straightforward:
```ruby
# config/cronotab.rb
Crono.perform(TestJob).every 2.days, at: {hour: 15, min: 30}
Crono.perform(TestJob).every 1.week, on: :monday, at: "15:30"
```
You can schedule one job a few times if you want the job to be performed a few times a day or a week:
```ruby
Crono.perform(TestJob).every 1.week, on: :monday
Crono.perform(TestJob).every 1.week, on: :thursday
```
The `at` can be a Hash:
```ruby
Crono.perform(TestJob).every 1.day, at: {hour: 12, min: 15}
```
You can schedule a job with arguments, which can contain objects that can be serialized using JSON.generate
```ruby
Crono.perform(TestJob, 'some', 'args').every 1.day, at: {hour: 12, min: 15}
```
You can set some options that not passed to the job but affect how the job will be treated by Crono. For example, you can set to truncate job logs (which stored in the database) to a certain number of records:
```ruby
Crono.perform(TestJob).with_options(truncate_log: 100).every 1.week, on: :monday
```
### Job classes
Crono can use Active Job jobs from `app/jobs/`. Here's an example of a job:
```ruby
# app/jobs/test_job.rb
class TestJob < ActiveJob::Base
def perform
def perform(options)
# put you scheduled code here
# Comments.deleted.clean_up...
end
end
```
The ActiveJob jobs is convenient because you can use one job in both periodic and enqueued ways. But Active Job is not required. Any class can be used as a crono job if it implements a method `perform` without arguments:
The ActiveJob jobs are convenient because you can use one job in both periodic and enqueued ways. But Active Job is not required. Any class can be used as a crono job if it implements a method `perform`:
```ruby
class TestJob # This is not an Active Job job, but pretty legal Crono job.
def perform
def perform(*args)
# put you scheduled code here
# Comments.deleted.clean_up...
end
end
```
### Run rake tasks
Here's an example of a Rake Task within a job:
```ruby
# config/cronotab.rb
require 'rake'
# Be sure to change AppName to your application name!
AppName::Application.load_tasks
Rails.app_class.load_tasks
class Test
def perform
Rake::Task['crono:hello'].invoke
Rake::Task['crono:hello'].execute
end
end
@@ -101,66 +148,60 @@ end
_Please note that crono uses threads, so your code should be thread-safe_
#### Job Schedule
### Run crono
Schedule list is defined in the file `config/cronotab.rb`, that created using `crono:install`. The semantic is pretty straightforward:
Run crono in your Rails project root directory:
```ruby
# config/cronotab.rb
Crono.perform(TestJob).every 2.days, at: {hour: 15, min: 30}
Crono.perform(TestJob).every 1.week, on: :monday, at: "15:30"
bundle exec crono -e development
Usage:
```
You can schedule one job a few times, if you want the job to be performed a few times a day or a week:
```ruby
Crono.perform(TestJob).every 1.week, on: :monday
Crono.perform(TestJob).every 1.week, on: :thursday
```
The `at` can be a Hash:
```ruby
Crono.perform(TestJob).every 1.day, at: {hour: 12, min: 15}
```
#### Run daemon
To run Crono daemon, in your Rails project root directory:
bundle exec crono RAILS_ENV=development
crono usage:
```
Usage: crono [options]
Usage: crono [options] [start|stop|restart|run]
-C, --cronotab PATH Path to cronotab file (Default: config/cronotab.rb)
-L, --logfile PATH Path to writable logfile (Default: log/crono.log)
-P, --pidfile PATH Path to pidfile (Default: tmp/pids/crono.pid)
-d, --[no-]daemonize Daemonize process (Default: false)
-P, --pidfile PATH Deprecated! use --piddir with --process_name; Path to pidfile (Default: )
-D, --piddir PATH Path to piddir (Default: tmp/pids)
-N, --process_name NAME Name of the process (Default: crono)
-m, --monitor Start monitor process for a deamon (Default false)
-e, --environment ENV Application environment (Default: development)
```
#### Run as a daemon
To run Crono as a daemon, please add to your Gemfile:
```ruby
gem 'daemons'
```
Then:
bundle install; bundle exec crono start RAILS_ENV=development
There are "start", "stop", and "restart" commands.
## Web UI
Crono comes with a Sinatra application that can display the current state of Crono jobs.
Add `sinatra` and `haml` to your Gemfile
```ruby
gem 'haml'
gem 'sinatra', require: nil
```
Crono can display the current state of Crono jobs.
Add the following to your `config/routes.rb`:
```ruby
Rails.application.routes.draw do
mount Crono::Web, at: '/crono'
mount Crono::Engine, at: '/crono'
...
```
Access management and other questions described in the [wiki](https://github.com/plashchynski/crono/wiki/Web-UI).
#### Known issues
For Rails 5, in case of the errors:
```
`require': cannot load such file -- rack/showexceptions (LoadError)
```
See the related issue [#52](https://github.com/plashchynski/crono/issues/52)
## Capistrano
@@ -169,9 +210,9 @@ Use the `capistrano-crono` gem ([github](https://github.com/plashchynski/capistr
## Support
Feel free to create [issues](https://github.com/plashchynski/crono/issues)
Feel free to create an [issues](https://github.com/plashchynski/crono/issues)
## License
Please see [LICENSE](https://github.com/plashchynski/crono/blob/master/LICENSE) for licensing details.
Please see [LICENSE](LICENSE) for licensing details.

View File

@@ -1,6 +1,5 @@
require 'bundler/setup'
load 'rails/tasks/statistics.rake'
require 'bundler/gem_tasks'
require 'rspec/core/rake_task'
RSpec::Core::RakeTask.new('spec')
task default: :spec

11
SECURITY.md Normal file
View File

@@ -0,0 +1,11 @@
# Security Policy
## Supported Versions
| Version | Supported |
| ------- | ------------------ |
| 2.x | :white_check_mark: |
## Reporting a Vulnerability
You are welcome to report security information to [plashchynski@gmail.com](mailto:plashchynski@gmail.com?subject=[GitHub]%20Security)

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,26 @@
nav {
position: relative;
z-index: 2;
}
nav .brand-logo {
font-size: 1.75em;
letter-spacing: -0.05em;
}
main {
position: relative;
z-index: 1;
padding: 20px;
}
main .page-footer {
margin: 0 -20px -20px -20px;
}
.page-footer > .footer-copyright {
padding: 20px;
}
.responsive-overflow {
overflow-x: auto;
}

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,5 @@
module Crono
class ApplicationController < ActionController::Base
protect_from_forgery with: :exception
end
end

View File

@@ -0,0 +1,11 @@
module Crono
class JobsController < ApplicationController
def index
@jobs = Crono::CronoJob.all
end
def show
@job = Crono::CronoJob.find(params[:id])
end
end
end

View File

@@ -0,0 +1,5 @@
module Crono
class ApplicationRecord < ActiveRecord::Base
self.abstract_class = true
end
end

View File

@@ -1,5 +1,3 @@
require 'active_record'
module Crono
# Crono::CronoJob is a ActiveRecord model to store job state
class CronoJob < ActiveRecord::Base

View File

@@ -0,0 +1,50 @@
<header>
<h4>Running Jobs</h4>
</header>
<div class="responsive-overflow">
<table id="job_list">
<tr>
<th>Job</th>
<th>Last performed at</th>
<th>Status</th>
<th></th>
</tr>
<% @jobs.each do |job| %>
<tr>
<td>
<%= job.job_id %>
</td>
<td>
<%= job.last_performed_at || 'Never performed yet' %>
</td>
<td>
<% if job.last_performed_at.nil? %>
<span class="grey-text darken-3" title="This job has never been performed yet.">
◷ Pending
</span>
<% elsif job.healthy %>
<a href="<%= job_path(job) %>">
<span class="green-text darken-3" title="This job was performed successfully.">
✔ Success
</span>
</a>
<% else %>
<a href="<%= job_path(job) %>">
<span class="red-text" title="There were problems with this job. Follow the link to check the log.">
⚠ Error
</span>
</a>
<% end %>
</td>
<td>
<% if job.last_performed_at %>
<a href="<%= job_path(job) %>" class="right">
Log
</a>
<% end %>
</td>
</tr>
<% end %>
</table>
</div>

View File

@@ -0,0 +1,16 @@
<header class="blue-grey lighten-4 grey-text text-darken-4">
<a href="<%= root_url %>">
Back to Home
</a>
<h4>Last log of <i><%= @job.job_id %></i>:</h4>
</header>
<% if @job.healthy == false %>
<div class="row red-text">
<div class="s12 center-align">
An error occurs during the last execution of this job.
Check the log below for details.
</div>
</div>
<% end %>
<pre class="responsive-overflow"><%= @job.log %></pre>

View File

@@ -0,0 +1,31 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8"/>
<meta content="IE=edge" http-equiv="X-UA-Compatible"/>
<meta content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no" name="viewport"/>
<title>Crono Dashboard</title>
<%= stylesheet_link_tag 'crono/materialize.min.css', media: "all" %>
<%= stylesheet_link_tag 'crono/application', media: "all" %>
<%= csrf_meta_tags %>
</head>
<body class="blue-grey darken-2">
<nav class="blue-grey white-text" role="navigation">
<a class="brand-logo center" href="<%= root_path %>">
<b>Crono</b> Dashboard
</a>
</nav>
<main class="container blue-grey lighten-4">
<%= yield %>
<footer class="page-footer blue-grey darken-2">
<div class="footer-copyright blue-grey">
Crono v<%= Crono::VERSION %>
<a class="right" href="https://github.com/plashchynski/crono" target="_blank">Documentation</a>
</div>
</footer>
</main>
</body>
</html>

View File

@@ -1,14 +0,0 @@
#!/usr/bin/env ruby
require "bundler/setup"
require "crono"
# You can add fixtures and/or initialization code here to make experimenting
# with your gem easier. You can also use a different console, if you like.
# (If you use this, don't forget to add pry to your Gemfile!)
# require "pry"
# Pry.start
require "irb"
IRB.start

24
bin/rails Executable file
View File

@@ -0,0 +1,24 @@
#!/usr/bin/env ruby
# This command will automatically be run when you run "rails" with Rails gems
# installed from the root of your application.
ENGINE_ROOT = File.expand_path('..', __dir__)
ENGINE_PATH = File.expand_path('../lib/crono/engine', __dir__)
# Set up gems listed in the Gemfile.
ENV['BUNDLE_GEMFILE'] ||= File.expand_path('../Gemfile', __dir__)
require 'bundler/setup' if File.exist?(ENV['BUNDLE_GEMFILE'])
require 'rails'
# Pick the frameworks you want:
require 'active_model/railtie'
require 'active_job/railtie'
require 'active_record/railtie'
require 'active_storage/engine'
require 'action_controller/railtie'
require 'action_mailer/railtie'
require 'action_view/railtie'
require 'action_cable/engine'
# require "sprockets/railtie"
# require "rails/test_unit/railtie"
require 'rails/engine/commands'

View File

@@ -1,7 +0,0 @@
#!/bin/bash
set -euo pipefail
IFS=$'\n\t'
bundle install
# Do any other automated setup that you need to do here

9
config.ru Normal file
View File

@@ -0,0 +1,9 @@
# frozen_string_literal: true
require "rubygems"
require "bundler"
Bundler.require :default, :development
Combustion.initialize! :all
run Combustion::Application

4
config/routes.rb Normal file
View File

@@ -0,0 +1,4 @@
Crono::Engine.routes.draw do
resources :jobs
root 'jobs#index'
end

View File

@@ -1,34 +1,33 @@
# coding: utf-8
lib = File.expand_path('../lib', __FILE__)
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
require 'crono/version'
# -*- encoding: utf-8 -*-
$:.push File.expand_path("../lib", __FILE__)
require_relative 'lib/crono/version'
Gem::Specification.new do |spec|
spec.name = 'crono'
spec.version = Crono::VERSION
spec.authors = ['Dzmitry Plashchynski']
spec.email = ['plashchynski@gmail.com']
Gem::Specification.new do |s|
s.name = 'crono'
s.version = Crono::VERSION
s.authors = ['Dzmitry Plashchynski']
s.email = ['plashchynski@gmail.com']
spec.summary = 'Job scheduler for Rails'
spec.description = 'A time-based background job scheduler daemon (just like Cron) for Rails'
spec.homepage = 'https://github.com/plashchynski/crono'
spec.license = 'Apache-2.0'
s.summary = 'Job scheduler for Rails'
s.description = 'A time-based background job scheduler daemon (just like Cron) for Rails'
s.homepage = 'https://github.com/plashchynski/crono'
s.license = 'Apache-2.0'
spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
spec.bindir = 'exe' # http://bundler.io/blog/2015/03/20/moving-bins-to-exe.html
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
spec.require_paths = ['lib']
s.files = Dir['{app,config,db,lib}/**/*', 'LICENSE', 'Rakefile', 'README.rdoc']
s.test_files = Dir['spec/**/*']
s.executables = ['crono']
s.require_paths = ["lib"]
spec.add_runtime_dependency 'activejob', '~> 4.0'
spec.add_runtime_dependency 'activesupport', '~> 4.0'
spec.add_runtime_dependency 'activerecord', '~> 4.0'
spec.add_development_dependency 'rake', '~> 10.0'
spec.add_development_dependency 'bundler', '>= 1.0.0'
spec.add_development_dependency 'rspec', '~> 3.0'
spec.add_development_dependency 'timecop', '~> 0.7'
spec.add_development_dependency 'sqlite3'
spec.add_development_dependency 'byebug'
spec.add_development_dependency 'sinatra'
spec.add_development_dependency 'haml'
spec.add_development_dependency 'rack-test'
s.add_dependency 'rails', '>= 5.2.8'
s.add_dependency 'sprockets-rails'
s.add_development_dependency 'rake', '>= 13.0.1'
s.add_development_dependency 'bundler', '>= 2'
s.add_development_dependency 'rspec', '>= 3.10'
s.add_development_dependency 'timecop', '>= 0.7'
s.add_development_dependency 'sqlite3'
s.add_development_dependency 'byebug'
s.add_development_dependency 'sinatra'
s.add_development_dependency 'haml'
s.add_development_dependency 'rack-test'
s.add_development_dependency 'daemons'
end

Binary file not shown.

Before

Width:  |  Height:  |  Size: 81 KiB

After

Width:  |  Height:  |  Size: 90 KiB

View File

@@ -2,15 +2,18 @@
module Crono
end
require 'rails'
require 'sprockets/railtie'
require 'active_support/all'
require 'crono/version'
require 'crono/engine'
require 'crono/logging'
require 'crono/period'
require 'crono/time_of_day'
require 'crono/interval'
require 'crono/job'
require 'crono/scheduler'
require 'crono/config'
require 'crono/performer_proxy'
require 'crono/orm/active_record/crono_job'
require 'crono/cronotab'
require 'crono/railtie' if defined?(Rails)
Crono.autoload :Web, 'crono/web'

View File

@@ -1,3 +1,5 @@
Thread.abort_on_exception = true
require 'crono'
require 'optparse'
@@ -7,6 +9,8 @@ module Crono
include Singleton
include Logging
COMMANDS = %w(start stop restart run zap reload status)
attr_accessor :config
def initialize
@@ -16,39 +20,41 @@ module Crono
def run
parse_options(ARGV)
parse_command(ARGV)
setup_log
write_pid
write_pid if config.daemonize
load_rails
Cronotab.process(File.expand_path(config.cronotab))
print_banner
check_jobs
start_working_loop
unless have_jobs?
logger.error "You have no jobs in you cronotab file #{config.cronotab}"
return
end
if config.daemonize
start_working_loop_in_daemon
else
start_working_loop
end
end
private
def have_jobs?
Crono.scheduler.jobs.present?
end
def setup_log
if config.daemonize
self.logfile = config.logfile
daemonize
else
self.logfile = STDOUT
end
end
def daemonize
::Process.daemon(true, true)
[$stdout, $stderr].each do |io|
File.open(config.logfile, 'ab') { |f| io.reopen(f) }
io.sync = true
end
$stdin.reopen('/dev/null')
end
def write_pid
return unless config.pidfile
pidfile = File.expand_path(config.pidfile)
@@ -71,25 +77,44 @@ module Crono
require 'rails'
require File.expand_path('config/environment.rb')
::Rails.application.eager_load!
require File.expand_path(config.cronotab)
end
def check_jobs
return if Crono.scheduler.jobs.present?
logger.error "You have no jobs in you cronotab file #{config.cronotab}"
def start_working_loop_in_daemon
unless ENV['RAILS_ENV'] == 'test'
begin
require 'daemons'
rescue LoadError
raise "You need to add gem 'daemons' to your Gemfile if you wish to use it."
end
end
Daemons.run_proc(config.process_name, dir: config.piddir, dir_mode: :normal, monitor: config.monitor, ARGV: @argv) do |*_argv|
Dir.chdir(root)
Crono.logger = Logger.new(config.logfile)
start_working_loop
end
end
def root
@root ||= rails_root_defined? ? ::Rails.root : DIR_PWD
end
def rails_root_defined?
defined?(::Rails.root)
end
def start_working_loop
loop do
next_time, jobs = Crono.scheduler.next_jobs
sleep(next_time - Time.now) if next_time > Time.now
now = Time.zone.now
sleep(next_time - now) if next_time > now
jobs.each(&:perform)
end
end
def parse_options(argv)
OptionParser.new do |opts|
opts.banner = "Usage: crono [options]"
@argv = OptionParser.new do |opts|
opts.banner = "Usage: crono [options] [start|stop|restart|run]"
opts.on("-C", "--cronotab PATH", "Path to cronotab file (Default: #{config.cronotab})") do |cronotab|
config.cronotab = cronotab
@@ -99,12 +124,20 @@ module Crono
config.logfile = logfile
end
opts.on("-P", "--pidfile PATH", "Path to pidfile (Default: #{config.pidfile})") do |pidfile|
opts.on("-P", "--pidfile PATH", "Deprecated! use --piddir with --process_name; Path to pidfile (Default: #{config.pidfile})") do |pidfile|
config.pidfile = pidfile
end
opts.on("-d", "--[no-]daemonize", "Daemonize process (Default: #{config.daemonize})") do |daemonize|
config.daemonize = daemonize
opts.on("-D", "--piddir PATH", "Path to piddir (Default: #{config.piddir})") do |piddir|
config.piddir = piddir
end
opts.on("-N", "--process_name NAME", "Name of the process (Default: #{config.process_name})") do |process_name|
config.process_name = process_name
end
opts.on("-m", "--monitor", "Start monitor process for a deamon (Default #{config.monitor})") do
config.monitor = true
end
opts.on '-e', '--environment ENV', "Application environment (Default: #{config.environment})" do |env|
@@ -112,5 +145,12 @@ module Crono
end
end.parse!(argv)
end
def parse_command(argv)
if COMMANDS.include? argv[0]
config.daemonize = true
end
end
end
end

View File

@@ -4,18 +4,30 @@ module Crono
CRONOTAB = 'config/cronotab.rb'
LOGFILE = 'log/crono.log'
PIDFILE = 'tmp/pids/crono.pid'
PIDDIR = 'tmp/pids'
PROCESS_NAME = 'crono'
attr_accessor :cronotab, :logfile, :pidfile, :daemonize, :environment
attr_accessor :cronotab, :logfile, :pidfile, :piddir, :process_name,
:monitor, :daemonize, :environment
def initialize
self.cronotab = CRONOTAB
self.logfile = LOGFILE
self.piddir = PIDDIR
self.process_name = PROCESS_NAME
self.daemonize = false
self.monitor = false
self.environment = ENV['RAILS_ENV'] || ENV['RACK_ENV'] || 'development'
end
def pidfile=(pidfile)
@pidfile = pidfile
self.process_name = Pathname.new(pidfile).basename(".*").to_s
self.piddir = Pathname.new(pidfile).dirname.to_s
end
def pidfile
@pidfile || (daemonize ? PIDFILE : nil)
@pidfile
end
end
end

10
lib/crono/cronotab.rb Normal file
View File

@@ -0,0 +1,10 @@
module Crono
class Cronotab
def self.process(cronotab_path = nil)
cronotab_path ||= ENV['CRONOTAB'] || (defined?(Rails) &&
File.join(Rails.root, Config::CRONOTAB))
fail 'No cronotab defined' unless cronotab_path
require cronotab_path
end
end
end

15
lib/crono/engine.rb Normal file
View File

@@ -0,0 +1,15 @@
module Crono
class Engine < ::Rails::Engine
isolate_namespace Crono
initializer 'crono.assets.precompile' do |app|
app.config.assets.precompile += %w( crono/application.css crono/materialize.min.css )
end
config.generators do |g|
g.test_framework :rspec
g.assets false
g.helper false
end
end
end

43
lib/crono/interval.rb Normal file
View File

@@ -0,0 +1,43 @@
module Crono
# Interval describes a period between two specific times of day
class Interval
attr_accessor :from, :to
def self.parse(value)
from_to =
case value
when Array then value
when Hash then value.values_at(:from, :to)
when String then value.split('-')
else
fail "Unknown interval format: #{value.inspect}"
end
from, to = from_to.map { |v| TimeOfDay.parse(v) }
new from, to
end
def initialize(from, to)
@from, @to = from, to
end
def within?(value)
tod = ((value.is_a? TimeOfDay) ? value : TimeOfDay.parse(value))
if @from <= @to
tod >= @from && tod < @to
else
tod >= @from || tod < @to
end
end
def next_within(time, period)
begin
time = period.since(time)
end until within? TimeOfDay.parse(time)
time
end
def to_s
"#{@from}-#{@to}"
end
end
end

View File

@@ -6,18 +6,23 @@ module Crono
class Job
include Logging
attr_accessor :performer, :period, :last_performed_at, :job_log,
:job_logger, :healthy
attr_accessor :performer, :period, :job_args, :last_performed_at, :job_options,
:next_performed_at, :job_log, :job_logger, :healthy, :execution_interval
def initialize(performer, period)
def initialize(performer, period, job_args = nil, job_options = nil)
self.execution_interval = 0.minutes
self.performer, self.period = performer, period
self.job_args = JSON.generate(job_args) if job_args.present?
self.job_log = StringIO.new
self.job_logger = Logger.new(job_log)
self.job_options = job_options || {}
self.next_performed_at = period.next
@semaphore = Mutex.new
end
def next
period.next(since: last_performed_at)
return next_performed_at if next_performed_at.future?
Time.zone.now
end
def description
@@ -29,8 +34,11 @@ module Crono
end
def perform
return Thread.new {} if perform_before_interval?
log "Perform #{performer}"
self.last_performed_at = Time.now
self.last_performed_at = Time.zone.now
self.next_performed_at = period.next(since: last_performed_at)
Thread.new { perform_job }
end
@@ -39,11 +47,13 @@ module Crono
@semaphore.synchronize do
update_model
clear_job_log
ActiveRecord::Base.clear_active_connections!
end
end
def load
self.last_performed_at = model.last_performed_at
self.next_performed_at = period.next(since: last_performed_at)
end
private
@@ -52,32 +62,43 @@ module Crono
job_log.truncate(job_log.rewind)
end
def truncate_log(log)
return log.lines.last(job_options[:truncate_log]).join if job_options[:truncate_log]
return log
end
def update_model
saved_log = model.reload.log || ''
log_to_save = saved_log + job_log.string
log_to_save = truncate_log(log_to_save)
model.update(last_performed_at: last_performed_at, log: log_to_save,
healthy: healthy)
end
def perform_job
performer.new.perform
finished_time_sec = format('%.2f', Time.now - last_performed_at)
if job_args
performer.new.perform(JSON.parse(job_args))
else
performer.new.perform
end
rescue StandardError => e
handle_job_fail(e, finished_time_sec)
handle_job_fail(e)
else
handle_job_success(finished_time_sec)
handle_job_success
ensure
save
end
def handle_job_fail(exception, finished_time_sec)
def handle_job_fail(exception)
finished_time_sec = format('%.2f', Time.zone.now - last_performed_at)
self.healthy = false
log_error "Finished #{performer} in #{finished_time_sec} seconds"\
"with error: #{exception.message}"
" with error: #{exception.message}"
log_error exception.backtrace.join("\n")
end
def handle_job_success(finished_time_sec)
def handle_job_success
finished_time_sec = format('%.2f', Time.zone.now - last_performed_at)
self.healthy = true
log "Finished #{performer} in #{finished_time_sec} seconds"
end
@@ -88,7 +109,7 @@ module Crono
def log(message, severity = Logger::INFO)
@semaphore.synchronize do
logger.log severity, message
logger.log(severity, message) if logger
job_logger.log severity, message
end
end
@@ -96,5 +117,27 @@ module Crono
def model
@model ||= Crono::CronoJob.find_or_create_by(job_id: job_id)
end
def perform_before_interval?
return false if execution_interval == 0.minutes
return true if self.last_performed_at.present? && self.last_performed_at > execution_interval.ago
return true if model.updated_at.present? && model.created_at != model.updated_at && model.updated_at > execution_interval.ago
Crono::CronoJob.transaction do
job_record = Crono::CronoJob.where(job_id: job_id).lock(true).first
return true if job_record.updated_at.present? &&
job_record.updated_at != job_record.created_at &&
job_record.updated_at > execution_interval.ago
job_record.touch
return true unless job_record.save
end
# Means that this node is permit to perform the job.
return false
end
end
end

View File

@@ -1,18 +1,31 @@
module Crono
# Crono::PerformerProxy is a proxy used in cronotab.rb semantic
class PerformerProxy
def initialize(performer, scheduler)
def initialize(performer, scheduler, job_args = nil, job_options = nil)
@performer = performer
@scheduler = scheduler
@job_args = job_args
@job_options = job_options
end
def every(period, *args)
job = Job.new(@performer, Period.new(period, *args))
@scheduler.add_job(job)
def every(period, **options)
@job = Job.new(@performer, Period.new(period, **options), @job_args, @job_options)
@scheduler.add_job(@job)
self
end
def once_per(execution_interval)
@job.execution_interval = execution_interval if @job
self
end
def with_options(options)
@job_options = options
self
end
end
def self.perform(performer)
PerformerProxy.new(performer, Crono.scheduler)
def self.perform(performer, *job_args)
PerformerProxy.new(performer, Crono.scheduler, *job_args)
end
end

View File

@@ -4,23 +4,35 @@ module Crono
DAYS = [:monday, :tuesday, :wednesday, :thursday, :friday, :saturday,
:sunday]
def initialize(period, at: nil, on: nil)
def initialize(period, at: nil, on: nil, within: nil)
@period = period
@at_hour, @at_min = parse_at(at) if at
@interval = Interval.parse(within) if within
@on = parse_on(on) if on
end
def next(since: nil)
return initial_next unless since
@next = @period.since(since)
if @interval
if since
@next = @interval.next_within(since, @period)
else
return initial_next if @interval.within?(initial_next)
@next = @interval.next_within(initial_next, @period)
end
else
return initial_next unless since
@next = @period.since(since)
end
@next = @next.beginning_of_week.advance(days: @on) if @on
@next = @next.change(time_atts)
return @next if @next.future?
Time.now
Time.zone.now
end
def description
desc = "every #{@period.inspect}"
desc += " between #{@interval.from} and #{@interval.to} UTC" if @interval
desc += format(' at %.2i:%.2i', @at_hour, @at_min) if @at_hour && @at_min
desc += " on #{DAYS[@on].capitalize}" if @on
desc
@@ -35,8 +47,9 @@ module Crono
end
def initial_day
return Time.now unless @on
day = Time.now.beginning_of_week.advance(days: @on)
return Time.zone.now unless @on
day = Time.zone.now.beginning_of_week.advance(days: @on)
day = day.change(time_atts)
return day if day.future?
@period.from_now.beginning_of_week.advance(days: @on)
end
@@ -49,10 +62,13 @@ module Crono
end
def parse_at(at)
fail "period should be at least 1 day to use 'at'" if @period < 1.day
if @period < 1.day && (at.is_a? String || at[:hour])
fail "period should be at least 1 day to use 'at' with specified hour"
end
case at
when String
time = Time.parse(at)
time = Time.zone.parse(at)
return time.hour, time.min
when Hash
return at[:hour], at[:min]
@@ -62,7 +78,8 @@ module Crono
end
def time_atts
{ hour: @at_hour, min: @at_min }.compact
atts = { hour: @at_hour, min: @at_min }
atts.respond_to?(:compact) ? atts.compact : atts.select { |_, value| !value.nil? }
end
end
end

36
lib/crono/time_of_day.rb Normal file
View File

@@ -0,0 +1,36 @@
module Crono
# TimeOfDay describes a certain hour and minute (on any day)
class TimeOfDay
include Comparable
attr_accessor :hour, :min
def self.parse(value)
time =
case value
when String then Time.zone.parse(value).utc
when Hash then Time.zone.now.change(value).utc
when Time then value.utc
else
fail "Unknown TimeOfDay format: #{value.inspect}"
end
new time.hour, time.min
end
def initialize(hour, min)
@hour, @min = hour, min
end
def to_i
@hour * 60 + @min
end
def to_s
'%02d:%02d' % [@hour, @min]
end
def <=>(other)
to_i <=> other.to_i
end
end
end

View File

@@ -1,3 +1,3 @@
module Crono
VERSION = '0.8.7.pre'
VERSION = '2.0.1'
end

View File

@@ -1,22 +0,0 @@
require 'haml'
require 'sinatra/base'
require 'crono'
module Crono
# Web is a Web UI Sinatra app
class Web < Sinatra::Base
set :root, File.expand_path(File.dirname(__FILE__) + '/../../web')
set :public_folder, proc { "#{root}/assets" }
set :views, proc { "#{root}/views" }
get '/' do
@jobs = Crono::CronoJob.all
haml :dashboard, format: :html5
end
get '/job/:id' do
@job = Crono::CronoJob.find(params[:id])
haml :job
end
end
end

View File

@@ -21,7 +21,18 @@ module Crono
def create_migrations
migration_template 'migrations/create_crono_jobs.rb',
'db/migrate/create_crono_jobs.rb'
'db/migrate/create_crono_jobs.rb',
migration_version: migration_version
end
def rails5?
Rails.version.start_with? '5'
end
def migration_version
if rails5?
"[#{Rails::VERSION::MAJOR}.#{Rails::VERSION::MINOR}]"
end
end
end
end

View File

@@ -1,16 +1,12 @@
class CreateCronoJobs < ActiveRecord::Migration
def self.up
class CreateCronoJobs < ActiveRecord::Migration[6.1]
def change
create_table :crono_jobs do |t|
t.string :job_id, null: false
t.text :log
t.text :log, limit: 1073741823 # LONGTEXT for MySQL
t.datetime :last_performed_at
t.boolean :healthy
t.timestamps null: false
end
add_index :crono_jobs, [:job_id], unique: true
end
def self.down
drop_table :crono_jobs
end
end

View File

@@ -1,18 +1,8 @@
module Crono
def self.load_cronotab
cronotab_path = ENV['CRONOTAB'] || (defined?(Rails) &&
File.join(Rails.root, cronotab_path))
fail 'No cronotab defined' unless cronotab_path
puts "Load cronotab #{cronotab_path}"
require cronotab_path
end
end
namespace :crono do
desc 'Clean unused job stats from DB'
task clean: :environment do
Crono.scheduler = Crono::Scheduler.new
Crono.load_cronotab
Crono::Cronotab.process
current_job_ids = Crono.scheduler.jobs.map(&:job_id)
Crono::CronoJob.where.not(job_id: current_job_ids).destroy_all
end
@@ -20,7 +10,7 @@ namespace :crono do
desc 'Check cronotab.rb syntax'
task check: :environment do
Crono.scheduler = Crono::Scheduler.new
Crono.load_cronotab
Crono::Cronotab.process
puts 'Syntax ok'
end
end

View File

@@ -7,11 +7,30 @@ describe Crono::CLI do
describe '#run' do
it 'should initialize rails with #load_rails and start working loop' do
expect(cli).to receive(:load_rails)
expect(cli).to receive(:have_jobs?).and_return(true)
expect(cli).to receive(:start_working_loop)
expect(cli).to receive(:parse_options)
expect(cli).to receive(:write_pid)
expect(cli).to receive(:parse_command)
expect(cli).not_to receive(:write_pid)
expect(Crono::Cronotab).to receive(:process)
cli.run
end
context 'should run as daemon' do
before { cli.config.daemonize = true }
it 'should initialize rails with #load_rails and start working loop' do
expect(cli).to receive(:load_rails)
expect(cli).to receive(:have_jobs?).and_return(true)
expect(cli).to receive(:start_working_loop_in_daemon)
expect(cli).to receive(:parse_options)
expect(cli).to receive(:parse_command)
expect(cli).to receive(:setup_log)
expect(cli).to receive(:write_pid)
expect(Crono::Cronotab).to receive(:process)
cli.run
end
end
end
describe '#parse_options' do
@@ -30,9 +49,19 @@ describe Crono::CLI do
expect(cli.config.pidfile).to be_eql 'tmp/pids/crono.0.log'
end
it 'should set daemonize' do
cli.send(:parse_options, ['--daemonize'])
expect(cli.config.daemonize).to be true
it 'should set piddir' do
cli.send(:parse_options, ['--piddir', 'tmp/pids'])
expect(cli.config.piddir).to be_eql 'tmp/pids'
end
it 'should set process_name' do
cli.send(:parse_options, ['--process_name', 'crono0'])
expect(cli.config.process_name).to be_eql 'crono0'
end
it 'should set monitor' do
cli.send(:parse_options, ['--monitor'])
expect(cli.config.monitor).to be true
end
it 'should set environment' do
@@ -40,4 +69,42 @@ describe Crono::CLI do
expect(cli.config.environment).to be_eql('production')
end
end
describe '#parse_command' do
it 'should set daemonize on start' do
cli.send(:parse_command, ['start'])
expect(cli.config.daemonize).to be true
end
it 'should set daemonize on stop' do
cli.send(:parse_command, ['stop'])
expect(cli.config.daemonize).to be true
end
it 'should set daemonize on restart' do
cli.send(:parse_command, ['restart'])
expect(cli.config.daemonize).to be true
end
it 'should set daemonize on run' do
cli.send(:parse_command, ['run'])
expect(cli.config.daemonize).to be true
end
it 'should set daemonize on zap' do
cli.send(:parse_command, ['zap'])
expect(cli.config.daemonize).to be true
end
it 'should set daemonize on reload' do
cli.send(:parse_command, ['reload'])
expect(cli.config.daemonize).to be true
end
it 'should set daemonize on status' do
cli.send(:parse_command, ['status'])
expect(cli.config.daemonize).to be true
end
end
end

View File

@@ -8,8 +8,10 @@ describe Crono::Config do
@config = Crono::Config.new
expect(@config.cronotab).to be Crono::Config::CRONOTAB
expect(@config.logfile).to be Crono::Config::LOGFILE
expect(@config.pidfile).to be nil
expect(@config.piddir).to be Crono::Config::PIDDIR
expect(@config.process_name).to be Crono::Config::PROCESS_NAME
expect(@config.daemonize).to be false
expect(@config.monitor).to be false
expect(@config.environment).to be_eql ENV['RAILS_ENV']
end
@@ -22,12 +24,6 @@ describe Crono::Config do
specify { expect(pidfile).to be_nil }
end
context "daemonize is true" do
before { config.daemonize = true }
specify { expect(pidfile).to eq Crono::Config::PIDFILE }
end
end
context "explicity configured" do
@@ -36,7 +32,16 @@ describe Crono::Config do
before { config.pidfile = path }
specify { expect(pidfile).to eq path }
it "trys to set piddir" do
expect(config.piddir).to eq "foo/bar"
end
it "trys to set process_name" do
expect(config.process_name).to eq "pid"
end
end
end
end
end

20
spec/cronotab_spec.rb Normal file
View File

@@ -0,0 +1,20 @@
require 'spec_helper'
describe Crono::Cronotab do
describe '#process' do
it 'should load cronotab file' do
cronotab_path = File.expand_path('../assets/good_cronotab.rb', __FILE__)
expect(Crono.scheduler).to receive(:add_job).with(kind_of(Crono::Job))
expect {
Crono::Cronotab.process(cronotab_path)
}.to_not raise_error
end
it 'should raise error when cronotab is invalid' do
cronotab_path = File.expand_path('../assets/bad_cronotab.rb', __FILE__)
expect {
Crono::Cronotab.process(cronotab_path)
}.to raise_error
end
end
end

BIN
spec/internal/:memory Normal file

Binary file not shown.

View File

@@ -0,0 +1,3 @@
class ApplicationController < ActionController::Base
protect_from_forgery with: :exception
end

View File

@@ -0,0 +1,5 @@
class PagesController < ApplicationController
def index
#
end
end

View File

@@ -0,0 +1 @@
<p>Hello World</p>

View File

@@ -0,0 +1,22 @@
require_relative 'boot'
require 'rails/all'
# Require the gems listed in Gemfile, including any gems
# you've limited to :test, :development, or :production.
Bundler.require(*Rails.groups)
require 'crono'
module Dummy
class Application < Rails::Application
config.load_defaults Rails::VERSION::STRING.to_f
# Configuration for the application, engines, and railties goes here.
#
# These settings can be overridden in specific environments using the files
# in config/environments, which are processed later.
#
# config.time_zone = "Central Time (US & Canada)"
# config.eager_load_paths << Rails.root.join("extras")
end
end

View File

@@ -0,0 +1,5 @@
# Set up gems listed in the Gemfile.
ENV['BUNDLE_GEMFILE'] ||= File.expand_path('../../../Gemfile', __dir__)
require "bundler/setup" if File.exist?(ENV['BUNDLE_GEMFILE'])
$LOAD_PATH.unshift File.expand_path('../../../lib', __dir__)

View File

@@ -0,0 +1,3 @@
test:
adapter: sqlite3
database: db/crono_test.sqlite

View File

@@ -0,0 +1,2 @@
# Load the Rails application.
require_relative 'application'

View File

@@ -0,0 +1,3 @@
Rails.application.routes.draw do
root 'pages#index'
end

View File

@@ -0,0 +1,3 @@
test:
service: Disk
root: /Users/chris/Sites/_playground/crono/tmp/storage

View File

@@ -0,0 +1,10 @@
ActiveRecord::Schema.define do
create_table :crono_jobs do |t|
t.string :job_id, null: false
t.text :log, limit: 1_073_741_823 # LONGTEXT for MySQL
t.datetime :last_performed_at
t.boolean :healthy
t.timestamps null: false
end
add_index :crono_jobs, [:job_id], unique: true
end

1
spec/internal/log/.gitignore vendored Normal file
View File

@@ -0,0 +1 @@
*.log

View File

View File

@@ -1,15 +1,40 @@
require 'spec_helper'
class TestJob
def perform(*args)
puts 'Test!'
end
end
class TestFailingJob
def perform(*args)
raise 'Some error'
end
end
class TestNoArgsJob
def perform
puts 'Test!'
end
end
describe Crono::Job do
let(:period) { Crono::Period.new(2.day, at: '15:00') }
let(:job) { Crono::Job.new(TestJob, period) }
let(:failing_job) { Crono::Job.new(TestFailingJob, period) }
let(:job_args) {[{some: 'data'}]}
let(:job) { Crono::Job.new(TestJob, period, []) }
let(:job_with_args) { Crono::Job.new(TestJob, period, job_args) }
let(:failing_job) { Crono::Job.new(TestFailingJob, period, []) }
let(:not_args_job) { Crono::Job.new(TestJob, period) }
it 'should contain performer and period' do
expect(job.performer).to be TestJob
expect(job.period).to be period
end
it 'should contain data as JSON String' do
expect(job_with_args.job_args).to eq '[{"some":"data"}]'
end
describe '#next' do
it 'should return next performing time according to period' do
expect(job.next).to be_eql period.next
@@ -36,6 +61,50 @@ describe Crono::Job do
failing_job.perform.join
expect(failing_job.healthy).to be false
end
it 'should execute one' do
job.execution_interval = 5.minutes
expect(job).to receive(:perform_job).once
job.perform.join
thread = job.perform.join
expect(thread).to be_stop
end
it 'should execute twice' do
job.execution_interval = 0.minutes
test_preform_job_twice
end
it 'should execute twice without args' do
test_preform_job_twice not_args_job
end
it 'should execute twice without initialize execution_interval' do
test_preform_job_twice
end
it 'should call perform of performer' do
expect(TestJob).to receive(:new).with(no_args)
thread = job.perform.join
expect(thread).to be_stop
end
it 'should call perform of performer with data' do
test_job = double()
expect(TestJob).to receive(:new).and_return(test_job)
expect(test_job).to receive(:perform).with([{ 'some' => 'data' }])
thread = job_with_args.perform.join
expect(thread).to be_stop
end
def test_preform_job_twice(jon_instance = job)
expect(jon_instance).to receive(:perform_job).twice
jon_instance.perform.join
thread = jon_instance.perform.join
expect(thread).to be_stop
end
end
describe '#description' do
@@ -52,31 +121,48 @@ describe Crono::Job do
end
it 'should update saved job' do
job.last_performed_at = Time.now
job.last_performed_at = Time.zone.now
job.healthy = true
job.job_args = JSON.generate([{some: 'data'}])
job.save
@crono_job = Crono::CronoJob.find_by(job_id: job.job_id)
expect(@crono_job.last_performed_at.utc.to_s).to be_eql job.last_performed_at.utc.to_s
expect(@crono_job.healthy).to be true
end
it 'should save and truncate job log' do
it 'should save log' do
message = 'test message'
job.send(:log, message)
job.save
expect(job.send(:model).reload.log).to include message
expect(job.job_log.string).to be_empty
end
it 'should not truncate log if not specified' do
log = (1..100).map {|n| "line #{n}" }.join("\n")
job = Crono::Job.new(TestJob, period, [])
job.send(:log, log)
job.save
expect(job.send(:model).reload.log.lines.size).to be >= log.lines.size
end
it 'should truncate log if specified' do
log = (1..100).map {|n| "line #{n}" }.join("\n")
job = Crono::Job.new(TestJob, period, [], truncate_log: 50)
job.send(:log, log)
job.save
expect(job.send(:model).reload.log.lines.size).to be 50
end
end
describe '#load' do
before do
@saved_last_performed_at = job.last_performed_at = Time.now
@saved_last_performed_at = job.last_performed_at = Time.zone.now
job.save
end
it 'should load last_performed_at from DB' do
@job = Crono::Job.new(TestJob, period)
@job = Crono::Job.new(TestJob, period, job_args)
@job.load
expect(@job.last_performed_at.utc.to_s).to be_eql @saved_last_performed_at.utc.to_s
end
@@ -85,6 +171,7 @@ describe Crono::Job do
describe '#log' do
it 'should write log messages to both common and job log' do
message = 'Test message'
job.logfile = "/dev/null"
expect(job.logger).to receive(:log).with(Logger::INFO, message)
expect(job.job_logger).to receive(:log).with(Logger::INFO, message)
job.send(:log, message)

View File

@@ -0,0 +1,31 @@
require 'spec_helper'
require 'rack/test'
module Crono
RSpec.describe Crono::CronoJob, type: :model do
let(:valid_attrs) do
{
job_id: 'Perform TestJob every 3 days'
}
end
it 'should validate presence of job_id' do
@crono_job = Crono::CronoJob.new
expect(@crono_job).not_to be_valid
expect(@crono_job.errors.added?(:job_id, :blank)).to be true
end
it 'should validate uniqueness of job_id' do
Crono::CronoJob.create!(job_id: 'TestJob every 2 days')
@crono_job = Crono::CronoJob.create(job_id: 'TestJob every 2 days')
expect(@crono_job).not_to be_valid
expect(@crono_job.errors.size).to be 1
end
it 'should save job_id to DB' do
Crono::CronoJob.create!(valid_attrs)
@crono_job = Crono::CronoJob.find_by(job_id: valid_attrs[:job_id])
expect(@crono_job).to be_present
end
end
end

View File

@@ -1,28 +0,0 @@
require 'spec_helper'
describe Crono::CronoJob do
let(:valid_attrs) do
{
job_id: 'Perform TestJob every 3 days'
}
end
it 'should validate presence of job_id' do
@crono_job = Crono::CronoJob.new
expect(@crono_job).not_to be_valid
expect(@crono_job.errors.added?(:job_id, :blank)).to be true
end
it 'should validate uniqueness of job_id' do
Crono::CronoJob.create!(job_id: 'TestJob every 2 days')
@crono_job = Crono::CronoJob.create(job_id: 'TestJob every 2 days')
expect(@crono_job).not_to be_valid
expect(@crono_job.errors.added?(:job_id, :taken)).to be true
end
it 'should save job_id to DB' do
Crono::CronoJob.create!(valid_attrs)
@crono_job = Crono::CronoJob.find_by(job_id: valid_attrs[:job_id])
expect(@crono_job).to be_present
end
end

View File

@@ -1,8 +1,45 @@
require 'spec_helper'
class TestJob
def perform
puts 'Test!'
end
end
describe Crono::PerformerProxy do
it 'should add job to schedule' do
expect(Crono.scheduler).to receive(:add_job).with(kind_of(Crono::Job))
Crono.perform(TestJob).every(2.days, at: '15:30')
end
it 'should set execution interval' do
allow(Crono).to receive(:scheduler).and_return(Crono::Scheduler.new)
expect_any_instance_of(Crono::Job).to receive(:execution_interval=).with(0.minutes).once
expect_any_instance_of(Crono::Job).to receive(:execution_interval=).with(10.minutes).once
Crono.perform(TestJob).every(2.days, at: '15:30').once_per 10.minutes
end
it 'do nothing when job not initalized' do
expect_any_instance_of(Crono::Job).not_to receive(:execution_interval=)
expect_any_instance_of(described_class).to receive(:once_per)
Crono.perform(TestJob).once_per 10.minutes
end
it 'should add job with args to schedule' do
expect(Crono::Job).to receive(:new).with(TestJob, kind_of(Crono::Period), :some, { some: 'data' })
allow(Crono.scheduler).to receive(:add_job)
Crono.perform(TestJob, :some, { some: 'data' }).every(2.days, at: '15:30')
end
it 'should add job without args to schedule' do
expect(Crono::Job).to receive(:new).with(TestJob, kind_of(Crono::Period), nil, nil)
allow(Crono.scheduler).to receive(:add_job)
Crono.perform(TestJob).every(2.days, at: '15:30')
end
it 'should add job with options to schedule' do
expect(Crono::Job).to receive(:new).with(TestJob, kind_of(Crono::Period), nil, { some_option: true })
allow(Crono.scheduler).to receive(:add_job)
Crono.perform(TestJob).with_options(some_option: true).every(2.days, at: '15:30')
end
end

View File

@@ -1,16 +1,15 @@
require 'spec_helper'
describe Crono::Period do
around(:each) do |example|
Timecop.freeze do
example.run
end
end
describe '#description' do
it 'should return period description' do
@period = Crono::Period.new(1.week, on: :monday, at: '15:20')
expect(@period.description).to be_eql('every 7 days at 15:20 on Monday')
expected_description = if ActiveSupport::VERSION::MAJOR >= 5
'every 1 week at 15:20 on Monday'
else
'every 7 days at 15:20 on Monday'
end
expect(@period.description).to be_eql(expected_description)
end
end
@@ -28,53 +27,63 @@ describe Crono::Period do
it "should return a 'on' day" do
@period = Crono::Period.new(1.week, on: :thursday, at: '15:30')
current_week = Time.now.beginning_of_week
current_week = Time.zone.now.beginning_of_week
last_run_time = current_week.advance(days: 1) # last run on the tuesday
next_run_at = Time.now.next_week.advance(days: 3)
next_run_at = Time.zone.now.next_week.advance(days: 3)
.change(hour: 15, min: 30)
expect(@period.next(since: last_run_time)).to be_eql(next_run_at)
end
it "should return a next week day 'on'" do
@period = Crono::Period.new(1.week, on: :thursday)
Timecop.freeze(Time.now.beginning_of_week.advance(days: 4)) do
expect(@period.next).to be_eql(Time.now.next_week.advance(days: 3))
Timecop.freeze(Time.zone.now.beginning_of_week.advance(days: 4)) do
expect(@period.next).to be_eql(Time.zone.now.next_week.advance(days: 3))
end
end
it 'should return a current week day on the first run if not too late' do
@period = Crono::Period.new(7.days, on: :tuesday)
beginning_of_the_week = Time.now.beginning_of_week
beginning_of_the_week = Time.zone.now.beginning_of_week
tuesday = beginning_of_the_week.advance(days: 1)
Timecop.freeze(beginning_of_the_week) do
expect(@period.next).to be_eql(tuesday)
end
end
it 'should return today on the first run if not too late' do
@period = Crono::Period.new(1.week, on: :sunday, at: '22:00')
Timecop.freeze(Time.zone.now.beginning_of_week.advance(days: 6)
.change(hour: 21, min: 0)) do
expect(@period.next).to be_eql(
Time.zone.now.beginning_of_week.advance(days: 6).change(hour: 22, min: 0)
)
end
end
end
context 'in daily basis' do
it "should return Time.now if the next time in past" do
it "should return Time.zone.now if the next time in past" do
@period = Crono::Period.new(1.day, at: '06:00')
expect(@period.next(since: 2.days.ago)).to be_eql(Time.now)
expect(@period.next(since: 2.days.ago).to_s).to be_eql(Time.zone.now.to_s)
end
it 'should return the time 2 days from now' do
it 'should return time 2 days from now' do
@period = Crono::Period.new(2.day)
expect(@period.next).to be_eql(2.days.from_now)
expect(@period.next.to_s).to be_eql(2.days.from_now.to_s)
end
it "should set time to 'at' time as a string" do
time = 10.minutes.ago
at = [time.hour, time.min].join(':')
@period = Crono::Period.new(2.days, at: at)
expect(@period.next).to be_eql(2.days.from_now.change(hour: time.hour, min: time.min))
expect(@period.next.to_s).to be_eql(2.days.from_now.change(hour: time.hour, min: time.min).to_s)
end
it "should set time to 'at' time as a hash" do
time = 10.minutes.ago
at = { hour: time.hour, min: time.min }
@period = Crono::Period.new(2.days, at: at)
expect(@period.next).to be_eql(2.days.from_now.change(at))
expect(@period.next.to_s).to be_eql(2.days.from_now.change(at).to_s)
end
it "should raise error when 'at' is wrong" do
@@ -86,19 +95,46 @@ describe Crono::Period do
it 'should raise error when period is less than 1 day' do
expect {
Crono::Period.new(5.hours, at: '15:30')
}.to raise_error("period should be at least 1 day to use 'at'")
}.to raise_error("period should be at least 1 day to use 'at' with specified hour")
end
it 'should return time in relation to last time' do
@period = Crono::Period.new(2.days)
expect(@period.next(since: 1.day.ago)).to be_eql(1.day.from_now)
expect(@period.next(since: 1.day.ago).to_s).to be_eql(1.day.from_now.to_s)
end
it 'should return today time if it is first run and not too late' do
time = 10.minutes.from_now
at = { hour: time.hour, min: time.min }
@period = Crono::Period.new(2.days, at: at)
expect(@period.next.utc.to_s).to be_eql(Time.now.change(at).utc.to_s)
expect(@period.next.utc.to_s).to be_eql(Time.zone.now.change(at).utc.to_s)
end
end
context 'in hourly basis' do
it 'should return next hour minutes if current hour minutes passed' do
Timecop.freeze(Time.zone.now.beginning_of_hour.advance(minutes: 20)) do
@period = Crono::Period.new(1.hour, at: { min: 15 })
expect(@period.next.utc.to_s).to be_eql 1.hour.from_now.beginning_of_hour.advance(minutes: 15).utc.to_s
end
end
it 'should return current hour minutes if current hour minutes not passed yet' do
Timecop.freeze(Time.zone.now.beginning_of_hour.advance(minutes: 10)) do
@period = Crono::Period.new(1.hour, at: { min: 15 })
expect(@period.next.utc.to_s).to be_eql Time.zone.now.beginning_of_hour.advance(minutes: 15).utc.to_s
end
end
it 'should return next hour minutes within the given interval' do
Timecop.freeze(Time.zone.now.change(hour: 16, min: 10)) do
@period = Crono::Period.new(1.hour, at: { min: 15 }, within: '08:00-16:00')
expect(@period.next.utc.to_s).to be_eql Time.zone.now.tomorrow.change(hour: 8, min: 15).utc.to_s
end
Timecop.freeze(Time.zone.now.change(hour: 16, min: 10)) do
@period = Crono::Period.new(1.hour, at: { min: 15 }, within: '23:00-07:00')
expect(@period.next.utc.to_s).to be_eql Time.zone.now.change(hour: 23, min: 15).utc.to_s
end
end
end
end

89
spec/rails_helper.rb Normal file
View File

@@ -0,0 +1,89 @@
# This file is copied to spec/ when you run 'rails generate rspec:install'
require 'spec_helper'
ENV['RAILS_ENV'] ||= 'test'
require File.expand_path('../spec/internal/config/environment.rb', __dir__)
# Prevent database truncation if the environment is production
abort('The Rails environment is running in production mode!') if Rails.env.production?
require 'rspec/rails'
# Add additional requires below this line. Rails is not loaded until this point!
require 'bundler/setup'
Bundler.setup
$LOAD_PATH.unshift File.expand_path('../../lib', __dir__)
require 'timecop'
require 'byebug'
require 'crono'
# setting default time zone
# In Rails project, Time.zone_default equals "UTC"
Time.zone_default = Time.find_zone('UTC')
ActiveRecord::Base.logger = Logger.new($stdout)
ActiveRecord::Base.establish_connection(
adapter: 'sqlite3',
database: ':memory'
)
ActiveRecord::Schema.define do
require_relative '../lib/generators/crono/install/templates/migrations/create_crono_jobs.rb'
@migration_version = '[6.1]'
end
CreateCronoJobs.up
# Requires supporting ruby files with custom matchers and macros, etc, in
# spec/support/ and its subdirectories. Files matching `spec/**/*_spec.rb` are
# run as spec files by default. This means that files in spec/support that end
# in _spec.rb will both be required and run as specs, causing the specs to be
# run twice. It is recommended that you do not name files matching this glob to
# end with _spec.rb. You can configure this pattern with the --pattern
# option on the command line or in ~/.rspec, .rspec or `.rspec-local`.
#
# The following line is provided for convenience purposes. It has the downside
# of increasing the boot-up time by auto-requiring all files in the support
# directory. Alternatively, in the individual `*_spec.rb` files, manually
# require only the support files necessary.
#
# Dir[Rails.root.join('spec', 'support', '**', '*.rb')].sort.each { |f| require f }
# Checks for pending migrations and applies them before tests are run.
# If you are not using ActiveRecord, you can remove these lines.
begin
ActiveRecord::Migration.maintain_test_schema!
rescue ActiveRecord::PendingMigrationError => e
puts e.to_s.strip
exit 1
end
RSpec.configure do |config|
# Remove this line if you're not using ActiveRecord or ActiveRecord fixtures
# config.fixture_path = "#{::Rails.root}/spec/fixtures"
# If you're not using ActiveRecord, or you'd prefer not to run each of your
# examples within a transaction, remove the following line or assign false
# instead of true.
# config.use_transactional_fixtures = true
# You can uncomment this line to turn off ActiveRecord support entirely.
# config.use_active_record = false
# RSpec Rails can automatically mix in different behaviours to your tests
# based on their file location, for example enabling you to call `get` and
# `post` in specs under `spec/controllers`.
#
# You can disable this behaviour by removing the line below, and instead
# explicitly tag your specs with their type, e.g.:
#
# RSpec.describe UsersController, type: :controller do
# # ...
# end
#
# The different available types are documented in the features, such as in
# https://relishapp.com/rspec/rspec-rails/docs
config.infer_spec_type_from_file_location!
# Filter lines from Rails gems in backtraces.
config.filter_rails_from_backtrace!
# arbitrary gems may also be filtered via:
# config.filter_gems_from_backtrace("gem name")
end

View File

@@ -1,11 +1,17 @@
require 'spec_helper'
class TestJob
def perform
puts 'Test!'
end
end
describe Crono::Scheduler do
let(:scheduler) { Crono::Scheduler.new }
describe '#add_job' do
it 'should call Job#load on Job' do
@job = Crono::Job.new(TestJob, Crono::Period.new(10.day, at: '04:05'))
@job = Crono::Job.new(TestJob, Crono::Period.new(10.day, at: '04:05'), [])
expect(@job).to receive(:load)
scheduler.add_job(@job)
end
@@ -17,22 +23,40 @@ describe Crono::Scheduler do
Crono::Period.new(3.days, at: 10.minutes.from_now.strftime('%H:%M')),
Crono::Period.new(1.day, at: 20.minutes.from_now.strftime('%H:%M')),
Crono::Period.new(7.days, at: 40.minutes.from_now.strftime('%H:%M'))
].map { |period| Crono::Job.new(TestJob, period) }
].map { |period| Crono::Job.new(TestJob, period, []) }
time, jobs = scheduler.next_jobs
expect(jobs).to be_eql [jobs[0]]
end
it 'should return an array of jobs scheduled at same time' do
it 'should return an array of jobs scheduled at same time with `at`' do
time = 5.minutes.from_now
scheduler.jobs = jobs = [
Crono::Period.new(1.day, at: time.strftime('%H:%M')),
Crono::Period.new(1.day, at: time.strftime('%H:%M')),
Crono::Period.new(1.day, at: 10.minutes.from_now.strftime('%H:%M'))
].map { |period| Crono::Job.new(TestJob, period) }
].map { |period| Crono::Job.new(TestJob, period, []) }
time, jobs = scheduler.next_jobs
expect(jobs).to be_eql [jobs[0], jobs[1]]
end
it 'should handle a few jobs scheduled at same time without `at`' do
scheduler.jobs = jobs = [
Crono::Period.new(10.seconds),
Crono::Period.new(10.seconds),
Crono::Period.new(1.day, at: 10.minutes.from_now.strftime('%H:%M'))
].map { |period| Crono::Job.new(TestJob, period, []) }
_, next_jobs = scheduler.next_jobs
expect(next_jobs).to be_eql [jobs[0]]
Timecop.travel(4.seconds.from_now)
expect(Thread).to receive(:new)
jobs[0].perform
_, next_jobs = scheduler.next_jobs
expect(next_jobs).to be_eql [jobs[1]]
end
end
end

View File

@@ -1,28 +1,19 @@
require 'bundler/setup'
Bundler.setup
require 'bundler'
$LOAD_PATH.unshift File.expand_path('../../lib', __FILE__)
Bundler.require :default, :development
require 'timecop'
require 'byebug'
require 'crono'
require 'generators/crono/install/templates/migrations/create_crono_jobs.rb'
# If you're using all parts of Rails:
Combustion.initialize! :all
# Or, load just what you need:
# Combustion.initialize! :active_record, :action_controller
ActiveRecord::Base.establish_connection(
adapter: 'sqlite3',
database: 'file::memory:?cache=shared'
)
require 'rspec/rails'
# If you're using Capybara:
# require 'capybara/rails'
ActiveRecord::Base.logger = Logger.new(STDOUT)
CreateCronoJobs.up
class TestJob
def perform
end
end
class TestFailingJob
def perform
fail 'Some error'
RSpec.configure do |config|
config.use_transactional_fixtures = true
config.mock_with :rspec do |mocks|
mocks.allow_message_expectations_on_nil = true
end
end

View File

@@ -2,8 +2,8 @@ require 'spec_helper'
require 'rack/test'
include Rack::Test::Methods
describe Crono::Web do
let(:app) { Crono::Web }
describe Crono::Engine do
let(:app) { Crono::Engine }
before do
Crono::CronoJob.destroy_all
@@ -25,13 +25,13 @@ describe Crono::Web do
end
it 'should show a error mark when a job is unhealthy' do
@test_job.update(healthy: false)
@test_job.update(healthy: false, last_performed_at: 10.minutes.ago)
get '/'
expect(last_response.body).to include 'Error'
end
it 'should show a success mark when a job is healthy' do
@test_job.update(healthy: true)
@test_job.update(healthy: true, last_performed_at: 10.minutes.ago)
get '/'
expect(last_response.body).to include 'Success'
end
@@ -45,7 +45,7 @@ describe Crono::Web do
describe '/job/:id' do
it 'should show job log' do
get "/job/#{@test_job.id}"
get "/jobs/#{@test_job.id}"
expect(last_response).to be_ok
expect(last_response.body).to include @test_job_id
expect(last_response.body).to include @test_job_log
@@ -54,7 +54,7 @@ describe Crono::Web do
it 'should show a message about the unhealthy job' do
message = 'An error occurs during the last execution of this job'
@test_job.update(healthy: false)
get "/job/#{@test_job.id}"
get "/jobs/#{@test_job.id}"
expect(last_response.body).to include message
end
end

View File

@@ -1,9 +0,0 @@
body {
display: flex;
min-height: 100vh;
flex-direction: column;
}
main {
flex: 1 0 auto;
}

File diff suppressed because one or more lines are too long

View File

@@ -1,428 +0,0 @@
https://github.com/google/material-design-icons/blob/master/LICENSE
https://github.com/FezVrasta/bootstrap-material-design/blob/master/fonts/LICENSE.txt
Attribution-ShareAlike 4.0 International
=======================================================================
Creative Commons Corporation ("Creative Commons") is not a law firm and
does not provide legal services or legal advice. Distribution of
Creative Commons public licenses does not create a lawyer-client or
other relationship. Creative Commons makes its licenses and related
information available on an "as-is" basis. Creative Commons gives no
warranties regarding its licenses, any material licensed under their
terms and conditions, or any related information. Creative Commons
disclaims all liability for damages resulting from their use to the
fullest extent possible.
Using Creative Commons Public Licenses
Creative Commons public licenses provide a standard set of terms and
conditions that creators and other rights holders may use to share
original works of authorship and other material subject to copyright
and certain other rights specified in the public license below. The
following considerations are for informational purposes only, are not
exhaustive, and do not form part of our licenses.
Considerations for licensors: Our public licenses are
intended for use by those authorized to give the public
permission to use material in ways otherwise restricted by
copyright and certain other rights. Our licenses are
irrevocable. Licensors should read and understand the terms
and conditions of the license they choose before applying it.
Licensors should also secure all rights necessary before
applying our licenses so that the public can reuse the
material as expected. Licensors should clearly mark any
material not subject to the license. This includes other CC-
licensed material, or material used under an exception or
limitation to copyright. More considerations for licensors:
wiki.creativecommons.org/Considerations_for_licensors
Considerations for the public: By using one of our public
licenses, a licensor grants the public permission to use the
licensed material under specified terms and conditions. If
the licensor's permission is not necessary for any reason--for
example, because of any applicable exception or limitation to
copyright--then that use is not regulated by the license. Our
licenses grant only permissions under copyright and certain
other rights that a licensor has authority to grant. Use of
the licensed material may still be restricted for other
reasons, including because others have copyright or other
rights in the material. A licensor may make special requests,
such as asking that all changes be marked or described.
Although not required by our licenses, you are encouraged to
respect those requests where reasonable. More_considerations
for the public:
wiki.creativecommons.org/Considerations_for_licensees
=======================================================================
Creative Commons Attribution-ShareAlike 4.0 International Public
License
By exercising the Licensed Rights (defined below), You accept and agree
to be bound by the terms and conditions of this Creative Commons
Attribution-ShareAlike 4.0 International Public License ("Public
License"). To the extent this Public License may be interpreted as a
contract, You are granted the Licensed Rights in consideration of Your
acceptance of these terms and conditions, and the Licensor grants You
such rights in consideration of benefits the Licensor receives from
making the Licensed Material available under these terms and
conditions.
Section 1 -- Definitions.
a. Adapted Material means material subject to Copyright and Similar
Rights that is derived from or based upon the Licensed Material
and in which the Licensed Material is translated, altered,
arranged, transformed, or otherwise modified in a manner requiring
permission under the Copyright and Similar Rights held by the
Licensor. For purposes of this Public License, where the Licensed
Material is a musical work, performance, or sound recording,
Adapted Material is always produced where the Licensed Material is
synched in timed relation with a moving image.
b. Adapter's License means the license You apply to Your Copyright
and Similar Rights in Your contributions to Adapted Material in
accordance with the terms and conditions of this Public License.
c. BY-SA Compatible License means a license listed at
creativecommons.org/compatiblelicenses, approved by Creative
Commons as essentially the equivalent of this Public License.
d. Copyright and Similar Rights means copyright and/or similar rights
closely related to copyright including, without limitation,
performance, broadcast, sound recording, and Sui Generis Database
Rights, without regard to how the rights are labeled or
categorized. For purposes of this Public License, the rights
specified in Section 2(b)(1)-(2) are not Copyright and Similar
Rights.
e. Effective Technological Measures means those measures that, in the
absence of proper authority, may not be circumvented under laws
fulfilling obligations under Article 11 of the WIPO Copyright
Treaty adopted on December 20, 1996, and/or similar international
agreements.
f. Exceptions and Limitations means fair use, fair dealing, and/or
any other exception or limitation to Copyright and Similar Rights
that applies to Your use of the Licensed Material.
g. License Elements means the license attributes listed in the name
of a Creative Commons Public License. The License Elements of this
Public License are Attribution and ShareAlike.
h. Licensed Material means the artistic or literary work, database,
or other material to which the Licensor applied this Public
License.
i. Licensed Rights means the rights granted to You subject to the
terms and conditions of this Public License, which are limited to
all Copyright and Similar Rights that apply to Your use of the
Licensed Material and that the Licensor has authority to license.
j. Licensor means the individual(s) or entity(ies) granting rights
under this Public License.
k. Share means to provide material to the public by any means or
process that requires permission under the Licensed Rights, such
as reproduction, public display, public performance, distribution,
dissemination, communication, or importation, and to make material
available to the public including in ways that members of the
public may access the material from a place and at a time
individually chosen by them.
l. Sui Generis Database Rights means rights other than copyright
resulting from Directive 96/9/EC of the European Parliament and of
the Council of 11 March 1996 on the legal protection of databases,
as amended and/or succeeded, as well as other essentially
equivalent rights anywhere in the world.
m. You means the individual or entity exercising the Licensed Rights
under this Public License. Your has a corresponding meaning.
Section 2 -- Scope.
a. License grant.
1. Subject to the terms and conditions of this Public License,
the Licensor hereby grants You a worldwide, royalty-free,
non-sublicensable, non-exclusive, irrevocable license to
exercise the Licensed Rights in the Licensed Material to:
a. reproduce and Share the Licensed Material, in whole or
in part; and
b. produce, reproduce, and Share Adapted Material.
2. Exceptions and Limitations. For the avoidance of doubt, where
Exceptions and Limitations apply to Your use, this Public
License does not apply, and You do not need to comply with
its terms and conditions.
3. Term. The term of this Public License is specified in Section
6(a).
4. Media and formats; technical modifications allowed. The
Licensor authorizes You to exercise the Licensed Rights in
all media and formats whether now known or hereafter created,
and to make technical modifications necessary to do so. The
Licensor waives and/or agrees not to assert any right or
authority to forbid You from making technical modifications
necessary to exercise the Licensed Rights, including
technical modifications necessary to circumvent Effective
Technological Measures. For purposes of this Public License,
simply making modifications authorized by this Section 2(a)
(4) never produces Adapted Material.
5. Downstream recipients.
a. Offer from the Licensor -- Licensed Material. Every
recipient of the Licensed Material automatically
receives an offer from the Licensor to exercise the
Licensed Rights under the terms and conditions of this
Public License.
b. Additional offer from the Licensor -- Adapted Material.
Every recipient of Adapted Material from You
automatically receives an offer from the Licensor to
exercise the Licensed Rights in the Adapted Material
under the conditions of the Adapter's License You apply.
c. No downstream restrictions. You may not offer or impose
any additional or different terms or conditions on, or
apply any Effective Technological Measures to, the
Licensed Material if doing so restricts exercise of the
Licensed Rights by any recipient of the Licensed
Material.
6. No endorsement. Nothing in this Public License constitutes or
may be construed as permission to assert or imply that You
are, or that Your use of the Licensed Material is, connected
with, or sponsored, endorsed, or granted official status by,
the Licensor or others designated to receive attribution as
provided in Section 3(a)(1)(A)(i).
b. Other rights.
1. Moral rights, such as the right of integrity, are not
licensed under this Public License, nor are publicity,
privacy, and/or other similar personality rights; however, to
the extent possible, the Licensor waives and/or agrees not to
assert any such rights held by the Licensor to the limited
extent necessary to allow You to exercise the Licensed
Rights, but not otherwise.
2. Patent and trademark rights are not licensed under this
Public License.
3. To the extent possible, the Licensor waives any right to
collect royalties from You for the exercise of the Licensed
Rights, whether directly or through a collecting society
under any voluntary or waivable statutory or compulsory
licensing scheme. In all other cases the Licensor expressly
reserves any right to collect such royalties.
Section 3 -- License Conditions.
Your exercise of the Licensed Rights is expressly made subject to the
following conditions.
a. Attribution.
1. If You Share the Licensed Material (including in modified
form), You must:
a. retain the following if it is supplied by the Licensor
with the Licensed Material:
i. identification of the creator(s) of the Licensed
Material and any others designated to receive
attribution, in any reasonable manner requested by
the Licensor (including by pseudonym if
designated);
ii. a copyright notice;
iii. a notice that refers to this Public License;
iv. a notice that refers to the disclaimer of
warranties;
v. a URI or hyperlink to the Licensed Material to the
extent reasonably practicable;
b. indicate if You modified the Licensed Material and
retain an indication of any previous modifications; and
c. indicate the Licensed Material is licensed under this
Public License, and include the text of, or the URI or
hyperlink to, this Public License.
2. You may satisfy the conditions in Section 3(a)(1) in any
reasonable manner based on the medium, means, and context in
which You Share the Licensed Material. For example, it may be
reasonable to satisfy the conditions by providing a URI or
hyperlink to a resource that includes the required
information.
3. If requested by the Licensor, You must remove any of the
information required by Section 3(a)(1)(A) to the extent
reasonably practicable.
b. ShareAlike.
In addition to the conditions in Section 3(a), if You Share
Adapted Material You produce, the following conditions also apply.
1. The Adapter's License You apply must be a Creative Commons
license with the same License Elements, this version or
later, or a BY-SA Compatible License.
2. You must include the text of, or the URI or hyperlink to, the
Adapter's License You apply. You may satisfy this condition
in any reasonable manner based on the medium, means, and
context in which You Share Adapted Material.
3. You may not offer or impose any additional or different terms
or conditions on, or apply any Effective Technological
Measures to, Adapted Material that restrict exercise of the
rights granted under the Adapter's License You apply.
Section 4 -- Sui Generis Database Rights.
Where the Licensed Rights include Sui Generis Database Rights that
apply to Your use of the Licensed Material:
a. for the avoidance of doubt, Section 2(a)(1) grants You the right
to extract, reuse, reproduce, and Share all or a substantial
portion of the contents of the database;
b. if You include all or a substantial portion of the database
contents in a database in which You have Sui Generis Database
Rights, then the database in which You have Sui Generis Database
Rights (but not its individual contents) is Adapted Material,
including for purposes of Section 3(b); and
c. You must comply with the conditions in Section 3(a) if You Share
all or a substantial portion of the contents of the database.
For the avoidance of doubt, this Section 4 supplements and does not
replace Your obligations under this Public License where the Licensed
Rights include other Copyright and Similar Rights.
Section 5 -- Disclaimer of Warranties and Limitation of Liability.
a. UNLESS OTHERWISE SEPARATELY UNDERTAKEN BY THE LICENSOR, TO THE
EXTENT POSSIBLE, THE LICENSOR OFFERS THE LICENSED MATERIAL AS-IS
AND AS-AVAILABLE, AND MAKES NO REPRESENTATIONS OR WARRANTIES OF
ANY KIND CONCERNING THE LICENSED MATERIAL, WHETHER EXPRESS,
IMPLIED, STATUTORY, OR OTHER. THIS INCLUDES, WITHOUT LIMITATION,
WARRANTIES OF TITLE, MERCHANTABILITY, FITNESS FOR A PARTICULAR
PURPOSE, NON-INFRINGEMENT, ABSENCE OF LATENT OR OTHER DEFECTS,
ACCURACY, OR THE PRESENCE OR ABSENCE OF ERRORS, WHETHER OR NOT
KNOWN OR DISCOVERABLE. WHERE DISCLAIMERS OF WARRANTIES ARE NOT
ALLOWED IN FULL OR IN PART, THIS DISCLAIMER MAY NOT APPLY TO YOU.
b. TO THE EXTENT POSSIBLE, IN NO EVENT WILL THE LICENSOR BE LIABLE
TO YOU ON ANY LEGAL THEORY (INCLUDING, WITHOUT LIMITATION,
NEGLIGENCE) OR OTHERWISE FOR ANY DIRECT, SPECIAL, INDIRECT,
INCIDENTAL, CONSEQUENTIAL, PUNITIVE, EXEMPLARY, OR OTHER LOSSES,
COSTS, EXPENSES, OR DAMAGES ARISING OUT OF THIS PUBLIC LICENSE OR
USE OF THE LICENSED MATERIAL, EVEN IF THE LICENSOR HAS BEEN
ADVISED OF THE POSSIBILITY OF SUCH LOSSES, COSTS, EXPENSES, OR
DAMAGES. WHERE A LIMITATION OF LIABILITY IS NOT ALLOWED IN FULL OR
IN PART, THIS LIMITATION MAY NOT APPLY TO YOU.
c. The disclaimer of warranties and limitation of liability provided
above shall be interpreted in a manner that, to the extent
possible, most closely approximates an absolute disclaimer and
waiver of all liability.
Section 6 -- Term and Termination.
a. This Public License applies for the term of the Copyright and
Similar Rights licensed here. However, if You fail to comply with
this Public License, then Your rights under this Public License
terminate automatically.
b. Where Your right to use the Licensed Material has terminated under
Section 6(a), it reinstates:
1. automatically as of the date the violation is cured, provided
it is cured within 30 days of Your discovery of the
violation; or
2. upon express reinstatement by the Licensor.
For the avoidance of doubt, this Section 6(b) does not affect any
right the Licensor may have to seek remedies for Your violations
of this Public License.
c. For the avoidance of doubt, the Licensor may also offer the
Licensed Material under separate terms or conditions or stop
distributing the Licensed Material at any time; however, doing so
will not terminate this Public License.
d. Sections 1, 5, 6, 7, and 8 survive termination of this Public
License.
Section 7 -- Other Terms and Conditions.
a. The Licensor shall not be bound by any additional or different
terms or conditions communicated by You unless expressly agreed.
b. Any arrangements, understandings, or agreements regarding the
Licensed Material not stated herein are separate from and
independent of the terms and conditions of this Public License.
Section 8 -- Interpretation.
a. For the avoidance of doubt, this Public License does not, and
shall not be interpreted to, reduce, limit, restrict, or impose
conditions on any use of the Licensed Material that could lawfully
be made without permission under this Public License.
b. To the extent possible, if any provision of this Public License is
deemed unenforceable, it shall be automatically reformed to the
minimum extent necessary to make it enforceable. If the provision
cannot be reformed, it shall be severed from this Public License
without affecting the enforceability of the remaining terms and
conditions.
c. No term or condition of this Public License will be waived and no
failure to comply consented to unless expressly agreed to by the
Licensor.
d. Nothing in this Public License constitutes or may be interpreted
as a limitation upon, or waiver of, any privileges and immunities
that apply to the Licensor or You, including from the legal
processes of any jurisdiction or authority.
=======================================================================
Creative Commons is not a party to its public licenses.
Notwithstanding, Creative Commons may elect to apply one of its public
licenses to material it publishes and in those instances will be
considered the "Licensor." Except for the limited purpose of indicating
that material is shared under a Creative Commons public license or as
otherwise permitted by the Creative Commons policies published at
creativecommons.org/policies, Creative Commons does not authorize the
use of the trademark "Creative Commons" or any other trademark or logo
of Creative Commons without its prior written consent including,
without limitation, in connection with any unauthorized modifications
to any of its public licenses or any other arrangements,
understandings, or agreements concerning use of licensed material. For
the avoidance of doubt, this paragraph does not form part of the public
licenses.
Creative Commons may be contacted at creativecommons.org.

View File

@@ -1,751 +0,0 @@
<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
<svg xmlns="http://www.w3.org/2000/svg">
<metadata>Generated by IcoMoon</metadata>
<defs>
<font id="Material-Design-Icons" horiz-adv-x="1024">
<font-face units-per-em="1024" ascent="960" descent="-64" />
<missing-glyph horiz-adv-x="1024" />
<glyph unicode="&#x20;" d="" horiz-adv-x="512" />
<glyph unicode="&#xe600;" d="M320.64 43.307c-139.307 66.133-239.36 201.6-254.507 362.027h-64c21.76-262.827 241.493-469.333 509.867-469.333 9.6 0 18.773 0.853 28.16 1.493l-162.56 162.773-56.96-56.96zM358.613 321.707c-8.107 0-15.573 1.067-22.4 3.627-6.613 2.347-12.373 5.76-17.067 10.027s-8.32 9.6-10.88 15.573c-2.56 6.187-3.84 12.8-3.84 20.053h-55.467c0-15.36 2.987-28.8 8.96-40.533s13.867-21.547 23.893-29.227c10.027-7.893 21.547-13.653 34.773-17.707 13.227-4.267 26.88-6.187 41.387-6.187 15.787 0 30.507 2.133 44.16 6.4s25.387 10.667 35.413 18.987 17.707 18.56 23.467 30.72c5.547 12.16 8.533 26.027 8.533 41.6 0 8.32-1.067 16.213-2.987 23.893-2.133 7.68-5.333 14.933-9.6 21.76-4.48 6.827-10.24 12.8-17.28 18.347-7.040 5.333-15.787 9.813-25.813 13.44 8.533 3.84 16 8.533 22.4 14.080s11.733 11.52 16 17.707c4.267 6.4 7.467 12.8 9.6 19.627s3.2 13.653 3.2 20.267c0 15.573-2.56 29.227-7.68 40.96s-12.373 21.547-21.76 29.44c-9.387 7.893-20.48 13.867-33.707 17.92-13.653 4.267-28.16 6.187-43.947 6.187-15.36 0-29.653-2.347-42.667-6.827s-24.107-10.88-33.493-18.987c-9.387-8.107-16.64-17.707-21.973-28.8s-7.893-23.253-7.893-36.267h55.467c0 7.253 1.28 13.653 3.84 19.2 2.56 5.76 6.187 10.667 10.667 14.507 4.48 4.053 10.027 7.253 16.213 9.387s13.013 3.413 20.267 3.413c17.067 0 29.653-4.48 37.973-13.227s12.373-21.12 12.373-36.907c0-7.68-1.067-14.507-3.413-20.693s-5.76-11.52-10.453-16c-4.693-4.48-10.667-7.893-17.493-10.453-7.040-2.56-15.36-3.84-24.747-3.84h-32.853v-43.733h32.853c9.387 0 17.92-1.067 25.387-3.2s13.867-5.333 19.2-10.027c5.333-4.48 9.387-10.24 12.373-17.067 2.773-6.827 4.267-14.933 4.267-24.32 0-17.28-4.907-30.507-14.933-39.68-9.6-8.96-23.040-13.44-40.32-13.44zM723.84 574.507c-13.44 14.080-29.653 24.96-48.427 32.64-18.987 7.68-39.68 11.52-62.507 11.52h-100.907v-341.333h97.92c23.68 0 45.013 3.84 64.427 11.52s35.84 18.56 49.493 32.64c13.653 14.080 24.32 31.147 31.573 50.987 7.467 19.84 11.093 42.24 11.093 66.987v16.853c0 24.747-3.84 46.933-11.307 66.987s-17.92 37.12-31.36 51.2zM706.987 439.253c0-17.707-1.92-33.92-6.187-48-4.053-14.293-10.027-26.24-18.133-36.053s-18.133-17.28-30.293-22.613c-12.16-5.12-26.24-7.893-42.453-7.893h-38.613v246.187h41.6c30.72 0 53.973-9.813 70.187-29.227 16-19.627 24.107-47.787 24.107-84.907v-17.493zM512 960c-9.6 0-18.773-0.853-28.16-1.493l162.56-162.773 56.747 56.747c139.52-65.92 239.573-201.387 254.72-361.813h64c-21.76 262.827-241.493 469.333-509.867 469.333z" />
<glyph unicode="&#xe601;" d="M512 874.667c47.147 0 85.333-38.187 85.333-85.333s-38.187-85.333-85.333-85.333-85.333 38.187-85.333 85.333 38.187 85.333 85.333 85.333zM896 576h-256v-554.667h-85.333v256h-85.333v-256h-85.333v554.667h-256v85.333h768v-85.333z" />
<glyph unicode="&#xe602;" d="M170.667 533.333v-298.667h128v298.667h-128zM426.667 533.333v-298.667h128v298.667h-128zM85.333 21.333h810.667v128h-810.667v-128zM682.667 533.333v-298.667h128v298.667h-128zM490.667 917.333l-405.333-213.333v-85.333h810.667v85.333l-405.333 213.333z" />
<glyph unicode="&#xe603;" d="M896 192v-42.667c0-47.147-38.187-85.333-85.333-85.333h-597.333c-47.147 0-85.333 38.187-85.333 85.333v597.333c0 47.147 38.187 85.333 85.333 85.333h597.333c47.147 0 85.333-38.187 85.333-85.333v-42.667h-384c-47.147 0-85.333-38.187-85.333-85.333v-341.333c0-47.147 38.187-85.333 85.333-85.333h384zM512 277.333h426.667v341.333h-426.667v-341.333zM682.667 384c-35.413 0-64 28.587-64 64s28.587 64 64 64 64-28.587 64-64-28.587-64-64-64z" />
<glyph unicode="&#xe604;" d="M128 746.667v-597.333c0-47.147 38.187-85.333 85.333-85.333h597.333c47.147 0 85.333 38.187 85.333 85.333v597.333c0 47.147-38.187 85.333-85.333 85.333h-597.333c-47.147 0-85.333-38.187-85.333-85.333zM640 576c0-70.827-57.387-128-128-128s-128 57.173-128 128c0 70.613 57.387 128 128 128s128-57.387 128-128zM256 234.667c0 85.333 170.667 132.267 256 132.267s256-46.933 256-132.267v-42.667h-512v42.667z" />
<glyph unicode="&#xe605;" d="M704 448c58.88 0 106.24 47.787 106.24 106.667s-47.36 106.667-106.24 106.667c-58.88 0-106.667-47.787-106.667-106.667s47.787-106.667 106.667-106.667zM384 490.667c70.613 0 127.573 57.387 127.573 128s-56.96 128-127.573 128c-70.613 0-128-57.387-128-128s57.387-128 128-128zM704 362.667c-78.293 0-234.667-39.253-234.667-117.333v-96h469.333v96c0 78.080-156.373 117.333-234.667 117.333zM384 405.333c-99.627 0-298.667-49.92-298.667-149.333v-106.667h298.667v96c0 36.267 14.293 99.627 101.12 148.053-37.12 7.893-73.173 11.947-101.12 11.947z" />
<glyph unicode="&#xe606;" d="M512 874.667c-235.733 0-426.667-190.933-426.667-426.667s190.933-426.667 426.667-426.667 426.667 190.933 426.667 426.667-190.933 426.667-426.667 426.667zM512 746.667c70.613 0 128-57.387 128-128 0-70.827-57.387-128-128-128s-128 57.173-128 128c0 70.613 57.387 128 128 128zM512 140.8c-106.88 0-200.747 54.613-256 137.387 1.067 84.693 170.88 131.413 256 131.413s254.72-46.72 256-131.413c-55.253-82.773-149.12-137.387-256-137.387z" />
<glyph unicode="&#xe607;" d="M469.333 576h85.333v128h128v85.333h-128v128h-85.333v-128h-128v-85.333h128v-128zM298.667 192c-47.147 0-84.907-38.187-84.907-85.333s37.76-85.333 84.907-85.333 85.333 38.187 85.333 85.333-38.187 85.333-85.333 85.333zM725.333 192c-47.147 0-84.907-38.187-84.907-85.333s37.76-85.333 84.907-85.333 85.333 38.187 85.333 85.333-38.187 85.333-85.333 85.333zM306.133 330.667c0 1.92 0.427 3.627 1.28 5.12l38.4 69.547h317.867c32 0 59.947 17.707 74.667 43.947l164.693 299.093-74.667 40.96h-0.213l-47.147-85.333-117.547-213.333h-299.307l-5.547 11.52-136.32 287.147-40.32 85.333h-139.307v-85.333h85.333l153.6-323.627-57.813-104.533c-6.613-12.373-10.453-26.24-10.453-41.173 0-47.147 38.187-85.333 85.333-85.333h512v85.333h-493.867c-5.973 0-10.667 4.693-10.667 10.667z" />
<glyph unicode="&#xe608;" d="M938.667 715.947l-196.053 164.48-54.827-65.28 196.053-164.48 54.827 65.28zM336.213 815.36l-54.827 65.28-196.053-164.48 54.827-65.28 196.053 164.48zM533.333 618.667h-64v-256l202.453-121.813 32.213 52.693-170.667 101.12v224zM511.787 789.333c-212.267 0-383.787-171.947-383.787-384s171.52-384 383.787-384 384.213 171.947 384.213 384-171.947 384-384.213 384zM512 106.667c-164.907 0-298.667 133.76-298.667 298.667s133.76 298.667 298.667 298.667 298.667-133.76 298.667-298.667-133.547-298.667-298.667-298.667z" />
<glyph unicode="&#xe609;" d="M336.213 815.36l-54.827 65.28-196.053-164.48 54.827-65.28 196.053 164.48zM938.667 715.947l-196.053 164.48-54.827-65.28 196.053-164.48 54.827 65.28zM511.787 789.333c-212.267 0-383.787-171.947-383.787-384s171.52-384 383.787-384 384.213 171.947 384.213 384-171.947 384-384.213 384zM512 106.667c-164.907 0-298.667 133.76-298.667 298.667s133.76 298.667 298.667 298.667 298.667-133.76 298.667-298.667-133.547-298.667-298.667-298.667zM554.667 576h-85.333v-128h-128v-85.333h128v-128h85.333v128h128v85.333h-128v128z" />
<glyph unicode="&#xe60a;" d="M512 704c164.907 0 298.667-133.76 298.667-298.667 0-36.053-6.613-70.4-18.347-102.4l64.853-64.853c24.747 50.56 38.827 107.307 38.827 167.253 0 212.053-171.947 384-384.213 384-59.947 0-116.48-14.080-167.253-38.613l65.067-65.067c32 11.733 66.347 18.347 102.4 18.347zM938.667 715.947l-196.053 164.48-54.827-65.28 196.053-164.48 54.827 65.28zM124.587 862.080l-54.4-54.187 56.747-56.747-47.36-39.68 60.587-60.587 47.36 39.68 34.133-34.133c-58.24-67.413-93.653-155.093-93.653-251.093 0-212.053 171.52-384 383.787-384 96.213 0 183.893 35.627 251.093 93.867l93.867-93.867 54.187 54.4-786.347 786.347zM702.72 175.36c-51.84-42.88-118.187-68.693-190.72-68.693-164.907 0-298.667 133.76-298.667 298.667 0 72.533 25.813 138.88 68.693 190.72l420.693-420.693zM341.973 820.267l-60.587 60.587-36.267-30.507 60.587-60.587 36.267 30.507z" />
<glyph unicode="&#xe60b;" d="M938.667 715.947l-196.053 164.48-54.827-65.28 196.053-164.48 54.827 65.28zM336.213 815.36l-54.827 65.28-196.053-164.48 54.827-65.28 196.053 164.48zM511.787 789.333c-212.267 0-383.787-171.947-383.787-384s171.52-384 383.787-384 384.213 171.947 384.213 384-171.947 384-384.213 384zM512 106.667c-164.907 0-298.667 133.76-298.667 298.667s133.76 298.667 298.667 298.667 298.667-133.76 298.667-298.667-133.547-298.667-298.667-298.667zM449.493 340.267l-90.453 90.453-45.227-45.227 135.68-135.68 256.213 256.213-45.227 45.227-210.987-210.987z" />
<glyph unicode="&#xe60c;" d="M256 192c0-23.467 19.2-42.667 42.667-42.667h42.667v-149.333c0-35.413 28.587-64 64-64s64 28.587 64 64v149.333h85.333v-149.333c0-35.413 28.587-64 64-64s64 28.587 64 64v149.333h42.667c23.467 0 42.667 19.2 42.667 42.667v426.667h-512v-426.667zM149.333 618.667c-35.413 0-64-28.587-64-64v-298.667c0-35.413 28.587-64 64-64s64 28.587 64 64v298.667c0 35.413-28.587 64-64 64zM874.667 618.667c-35.413 0-64-28.587-64-64v-298.667c0-35.413 28.587-64 64-64s64 28.587 64 64v298.667c0 35.413-28.587 64-64 64zM662.613 867.84l55.68 55.68c8.32 8.32 8.32 21.76 0 30.080s-21.76 8.32-30.080 0l-63.147-62.933c-34.133 16.853-72.32 26.667-113.067 26.667-40.96 0-79.36-9.813-113.707-26.88l-63.36 63.36c-8.32 8.32-21.76 8.32-30.080 0s-8.32-21.76 0-30.080l55.893-55.893c-63.36-46.72-104.747-121.813-104.747-206.507h512c0 84.907-41.6 160-105.387 206.507zM426.667 746.667h-42.667v42.667h42.667v-42.667zM640 746.667h-42.667v42.667h42.667v-42.667z" />
<glyph unicode="&#xe60d;" d="M853.333 874.667h-682.667c-47.147 0-84.907-38.187-84.907-85.333l-0.427-768 170.667 170.667h597.333c47.147 0 85.333 38.187 85.333 85.333v512c0 47.147-38.187 85.333-85.333 85.333zM554.667 490.667h-85.333v256h85.333v-256zM554.667 320h-85.333v85.333h85.333v-85.333z" />
<glyph unicode="&#xe60e;" d="M810.667 448h-85.333v-128h-128v-85.333h213.333v213.333zM298.667 576h128v85.333h-213.333v-213.333h85.333v128zM896 832h-768c-47.147 0-85.333-38.187-85.333-85.333v-597.333c0-47.147 38.187-85.333 85.333-85.333h768c47.147 0 85.333 38.187 85.333 85.333v597.333c0 47.147-38.187 85.333-85.333 85.333zM896 148.693h-768v598.613h768v-598.613z" />
<glyph unicode="&#xe60f;" d="M810.667 832h-597.333c-47.147 0-85.333-38.187-85.333-85.333v-597.333c0-47.147 38.187-85.333 85.333-85.333h597.333c47.147 0 85.333 38.187 85.333 85.333v597.333c0 47.147-38.187 85.333-85.333 85.333zM384 234.667h-85.333v298.667h85.333v-298.667zM554.667 234.667h-85.333v426.667h85.333v-426.667zM725.333 234.667h-85.333v170.667h85.333v-170.667z" />
<glyph unicode="&#xe610;" d="M810.667 832h-178.56c-17.493 49.493-64.427 85.333-120.107 85.333s-102.613-35.84-120.107-85.333h-178.56c-47.147 0-85.333-38.187-85.333-85.333v-597.333c0-47.147 38.187-85.333 85.333-85.333h597.333c47.147 0 85.333 38.187 85.333 85.333v597.333c0 47.147-38.187 85.333-85.333 85.333zM512 832c23.467 0 42.667-18.987 42.667-42.667s-19.2-42.667-42.667-42.667-42.667 18.987-42.667 42.667 19.2 42.667 42.667 42.667zM597.333 234.667h-298.667v85.333h298.667v-85.333zM725.333 405.333h-426.667v85.333h426.667v-85.333zM725.333 576h-426.667v85.333h426.667v-85.333z" />
<glyph unicode="&#xe611;" d="M810.667 832h-178.56c-17.493 49.493-64.427 85.333-120.107 85.333s-102.613-35.84-120.107-85.333h-178.56c-47.147 0-85.333-38.187-85.333-85.333v-597.333c0-47.147 38.187-85.333 85.333-85.333h597.333c47.147 0 85.333 38.187 85.333 85.333v597.333c0 47.147-38.187 85.333-85.333 85.333zM512 832c23.467 0 42.667-18.987 42.667-42.667s-19.2-42.667-42.667-42.667-42.667 18.987-42.667 42.667 19.2 42.667 42.667 42.667zM512 661.333c70.613 0 128-57.387 128-128 0-70.827-57.387-128-128-128s-128 57.173-128 128c0 70.613 57.387 128 128 128zM768 149.333h-512v59.733c0 85.333 170.667 132.267 256 132.267s256-46.933 256-132.267v-59.733z" />
<glyph unicode="&#xe612;" d="M810.667 832h-178.56c-17.493 49.493-64.427 85.333-120.107 85.333s-102.613-35.84-120.107-85.333h-178.56c-47.147 0-85.333-38.187-85.333-85.333v-597.333c0-47.147 38.187-85.333 85.333-85.333h597.333c47.147 0 85.333 38.187 85.333 85.333v597.333c0 47.147-38.187 85.333-85.333 85.333zM554.667 192h-85.333v85.333h85.333v-85.333zM554.667 362.667h-85.333v256h85.333v-256zM512 746.667c-23.467 0-42.667 18.987-42.667 42.667s19.2 42.667 42.667 42.667 42.667-18.987 42.667-42.667-19.2-42.667-42.667-42.667z" />
<glyph unicode="&#xe613;" d="M810.667 832h-178.56c-17.493 49.493-64.427 85.333-120.107 85.333s-102.613-35.84-120.107-85.333h-178.56c-47.147 0-85.333-38.187-85.333-85.333v-597.333c0-47.147 38.187-85.333 85.333-85.333h597.333c47.147 0 85.333 38.187 85.333 85.333v597.333c0 47.147-38.187 85.333-85.333 85.333zM512 832c23.467 0 42.667-18.987 42.667-42.667s-19.2-42.667-42.667-42.667-42.667 18.987-42.667 42.667 19.2 42.667 42.667 42.667zM682.667 320h-170.667v-128l-213.333 213.333 213.333 213.333v-128h170.667v-170.667z" />
<glyph unicode="&#xe614;" d="M810.667 832h-178.56c-17.493 49.493-64.427 85.333-120.107 85.333s-102.613-35.84-120.107-85.333h-178.56c-47.147 0-85.333-38.187-85.333-85.333v-597.333c0-47.147 38.187-85.333 85.333-85.333h597.333c47.147 0 85.333 38.187 85.333 85.333v597.333c0 47.147-38.187 85.333-85.333 85.333zM512 832c23.467 0 42.667-18.987 42.667-42.667s-19.2-42.667-42.667-42.667-42.667 18.987-42.667 42.667 19.2 42.667 42.667 42.667zM512 192l-213.333 213.333h128v170.667h170.667v-170.667h128l-213.333-213.333z" />
<glyph unicode="&#xe615;" d="M810.667 832h-178.56c-17.493 49.493-64.427 85.333-120.107 85.333s-102.613-35.84-120.107-85.333h-178.56c-47.147 0-85.333-38.187-85.333-85.333v-597.333c0-47.147 38.187-85.333 85.333-85.333h597.333c47.147 0 85.333 38.187 85.333 85.333v597.333c0 47.147-38.187 85.333-85.333 85.333zM512 832c23.467 0 42.667-18.987 42.667-42.667s-19.2-42.667-42.667-42.667-42.667 18.987-42.667 42.667 19.2 42.667 42.667 42.667zM426.667 234.667l-170.667 170.667 60.373 60.373 110.293-110.293 280.96 280.96 60.373-60.373-341.333-341.333z" />
<glyph unicode="&#xe616;" d="M512 704v-128l170.667 170.667-170.667 170.667v-128c-188.587 0-341.333-152.747-341.333-341.333 0-66.987 19.627-129.067 52.907-181.76l62.293 62.293c-18.987 35.627-29.867 76.16-29.867 119.467 0 141.44 114.56 256 256 256zM800.427 629.76l-62.293-62.293c18.987-35.627 29.867-76.16 29.867-119.467 0-141.44-114.56-256-256-256v128l-170.667-170.667 170.667-170.667v128c188.587 0 341.333 152.747 341.333 341.333 0 66.987-19.627 129.067-52.907 181.76z" />
<glyph unicode="&#xe617;" d="M825.813 531.84c-29.013 146.773-158.507 257.493-313.813 257.493-123.307 0-230.187-69.973-283.733-172.16-128.213-13.867-228.267-122.453-228.267-254.507 0-141.44 114.56-256 256-256h554.667c117.76 0 213.333 95.573 213.333 213.333 0 112.64-87.68 203.947-198.187 211.84zM597.333 405.333v-170.667h-170.667v170.667h-128l213.333 213.333 213.333-213.333h-128z" />
<glyph unicode="&#xe618;" d="M768 874.667h-512c-47.147 0-85.333-38.187-85.333-85.333v-682.667c0-47.147 38.187-85.333 85.333-85.333h512c47.147 0 85.333 38.187 85.333 85.333v682.667c0 47.147-38.187 85.333-85.333 85.333zM256 789.333h213.333v-341.333l-106.667 64-106.667-64v341.333z" />
<glyph unicode="&#xe619;" d="M725.333 832h-426.667c-47.147 0-84.907-38.187-84.907-85.333l-0.427-682.667 298.667 128 298.667-128v682.667c0 47.147-38.187 85.333-85.333 85.333z" />
<glyph unicode="&#xe61a;" d="M725.333 832h-426.667c-47.147 0-84.907-38.187-84.907-85.333l-0.427-682.667 298.667 128 298.667-128v682.667c0 47.147-38.187 85.333-85.333 85.333zM725.333 192l-213.333 92.8-213.333-92.8v554.667h426.667v-554.667z" />
<glyph unicode="&#xe61b;" d="M853.333 618.667h-119.893c-19.2 33.28-45.653 62.080-77.44 83.627l69.333 69.333-60.373 60.373-92.8-92.8c-19.2 4.693-39.467 7.467-60.16 7.467s-40.96-2.773-60.16-7.467l-92.8 92.8-60.373-60.373 69.333-69.333c-31.787-21.547-58.24-50.347-77.44-83.627h-119.893v-85.333h89.173c-2.347-13.867-3.84-28.16-3.84-42.667v-42.667h-85.333v-85.333h85.333v-42.667c0-14.507 1.493-28.8 3.84-42.667h-89.173v-85.333h119.893c44.16-76.373 126.72-128 221.44-128s177.28 51.627 221.44 128h119.893v85.333h-89.173c2.347 13.867 3.84 28.16 3.84 42.667v42.667h85.333v85.333h-85.333v42.667c0 14.507-1.493 28.8-3.84 42.667h89.173v85.333zM597.333 277.333h-170.667v85.333h170.667v-85.333zM597.333 448h-170.667v85.333h170.667v-85.333z" />
<glyph unicode="&#xe61c;" d="M810.667 618.667l-170.667-170.667h128c0-141.44-114.56-256-256-256-43.307 0-83.84 10.88-119.68 29.653l-62.293-62.293c52.907-33.067 114.987-52.693 181.973-52.693 188.587 0 341.333 152.747 341.333 341.333h128l-170.667 170.667zM256 448c0 141.44 114.56 256 256 256 43.307 0 83.84-10.88 119.68-29.653l62.293 62.293c-52.907 33.067-114.987 52.693-181.973 52.693-188.587 0-341.333-152.747-341.333-341.333h-128l170.667-170.667 170.667 170.667h-128z" />
<glyph unicode="&#xe61d;" d="M768 874.667h-512c-47.147 0-85.333-38.187-85.333-85.333v-682.667c0-47.147 38.187-85.333 85.333-85.333h512c47.147 0 85.333 38.187 85.333 85.333v682.667c0 47.147-38.187 85.333-85.333 85.333zM256 789.333h213.333v-341.333l-106.667 64-106.667-64v341.333z" />
<glyph unicode="&#xe61e;" d="M170.667 448h682.667v-256h-682.667zM853.333 789.333h-682.667c-47.147 0-84.907-38.187-84.907-85.333l-0.427-512c0-47.147 38.187-85.333 85.333-85.333h682.667c47.147 0 85.333 38.187 85.333 85.333v512c0 47.147-38.187 85.333-85.333 85.333zM853.333 192h-682.667v256h682.667v-256zM853.333 618.667h-682.667v85.333h682.667v-85.333z" />
<glyph unicode="&#xe61f;" d="M128 405.333h341.333v426.667h-341.333v-426.667zM128 64h341.333v256h-341.333v-256zM554.667 64h341.333v426.667h-341.333v-426.667zM554.667 832v-256h341.333v256h-341.333z" />
<glyph unicode="&#xe620;" d="M256 149.333c0-47.147 38.187-85.333 85.333-85.333h341.333c47.147 0 85.333 38.187 85.333 85.333v512h-512v-512zM810.667 789.333h-149.333l-42.667 42.667h-213.333l-42.667-42.667h-149.333v-85.333h597.333v85.333z" />
<glyph unicode="&#xe621;" d="M597.333 874.667h-341.333c-47.147 0-84.907-38.187-84.907-85.333l-0.427-682.667c0-47.147 37.76-85.333 84.907-85.333h512.427c47.147 0 85.333 38.187 85.333 85.333v512l-256 256zM682.667 192h-341.333v85.333h341.333v-85.333zM682.667 362.667h-341.333v85.333h341.333v-85.333zM554.667 576v234.667l234.667-234.667h-234.667z" />
<glyph unicode="&#xe622;" d="M853.333 405.333h-682.667c-23.467 0-42.667-19.2-42.667-42.667v-256c0-23.467 19.2-42.667 42.667-42.667h682.667c23.467 0 42.667 19.2 42.667 42.667v256c0 23.467-19.2 42.667-42.667 42.667zM298.667 149.333c-47.147 0-85.333 38.187-85.333 85.333s38.187 85.333 85.333 85.333 85.333-38.187 85.333-85.333-38.187-85.333-85.333-85.333zM853.333 832h-682.667c-23.467 0-42.667-19.2-42.667-42.667v-256c0-23.467 19.2-42.667 42.667-42.667h682.667c23.467 0 42.667 19.2 42.667 42.667v256c0 23.467-19.2 42.667-42.667 42.667zM298.667 576c-47.147 0-85.333 38.187-85.333 85.333s38.187 85.333 85.333 85.333 85.333-38.187 85.333-85.333-38.187-85.333-85.333-85.333z" />
<glyph unicode="&#xe623;" d="M384 270.080l-177.92 177.92-60.373-60.373 238.293-238.293 512 512-60.373 60.373z" />
<glyph unicode="&#xe624;" d="M768 661.333l-60.373 60.373-270.507-270.72 60.373-60.373 270.507 270.72zM949.12 721.707l-451.84-451.627-177.92 177.92-60.373-60.373 238.293-238.293 512 512-60.16 60.373zM17.707 387.627l238.293-238.293 60.373 60.373-238.293 238.293-60.373-60.373z" />
<glyph unicode="&#xe625;" d="M725.333 448h-213.333v-213.333h213.333v213.333zM682.667 917.333v-85.333h-341.333v85.333h-85.333v-85.333h-42.667c-47.147 0-84.907-38.187-84.907-85.333l-0.427-597.333c0-47.147 38.187-85.333 85.333-85.333h597.333c47.147 0 85.333 38.187 85.333 85.333v597.333c0 47.147-38.187 85.333-85.333 85.333h-42.667v85.333h-85.333zM810.667 149.333h-597.333v469.333h597.333v-469.333z" />
<glyph unicode="&#xe626;" d="M430.293 295.040l60.373-60.373 213.333 213.333-213.333 213.333-60.373-60.373 110.293-110.293h-412.587v-85.333h412.587l-110.293-110.293zM810.667 832h-597.333c-47.147 0-85.333-38.187-85.333-85.333v-170.667h85.333v170.667h597.333v-597.333h-597.333v170.667h-85.333v-170.667c0-47.147 38.187-85.333 85.333-85.333h597.333c47.147 0 85.333 38.187 85.333 85.333v597.333c0 47.147-38.187 85.333-85.333 85.333z" />
<glyph unicode="&#xe627;" d="M512 494.933c-25.813 0-46.933-21.12-46.933-46.933s21.12-46.933 46.933-46.933c26.027 0 46.933 21.12 46.933 46.933s-20.907 46.933-46.933 46.933zM512 874.667c-235.733 0-426.667-190.933-426.667-426.667 0-235.52 190.933-426.667 426.667-426.667s426.667 191.147 426.667 426.667c0 235.733-190.933 426.667-426.667 426.667zM605.44 354.56l-349.44-162.56 162.56 349.44 349.44 162.56-162.56-349.44z" />
<glyph unicode="&#xe628;" d="M874.667 490.667h-64v170.667c0 47.147-38.187 85.333-85.333 85.333h-170.667v64c0 58.88-47.787 106.667-106.667 106.667s-106.667-47.787-106.667-106.667v-64h-170.667c-47.147 0-84.907-38.187-84.907-85.333l-0.213-162.133h63.787c63.573 0 115.2-51.627 115.2-115.2s-51.627-115.2-115.2-115.2h-63.787l-0.213-162.133c0-47.147 38.187-85.333 85.333-85.333h162.133v64c0 63.573 51.627 115.2 115.2 115.2s115.2-51.627 115.2-115.2v-64h162.133c47.147 0 85.333 38.187 85.333 85.333v170.667h64c58.88 0 106.667 47.787 106.667 106.667s-47.787 106.667-106.667 106.667z" />
<glyph unicode="&#xe629;" d="M626.987 230.187c-31.787-24.533-72.533-38.187-114.987-38.187s-83.2 13.653-114.987 38.187c-9.173 7.253-22.613 5.547-29.867-3.84s-5.547-22.613 3.84-29.867c39.040-30.293 89.173-47.147 141.013-47.147s101.973 16.853 141.013 47.147c9.387 7.253 11.093 20.693 3.84 29.867-7.253 9.387-20.693 11.093-29.867 3.84zM405.333 426.667c0-23.564-19.103-42.667-42.667-42.667s-42.667 19.103-42.667 42.667c0 23.564 19.103 42.667 42.667 42.667s42.667-19.103 42.667-42.667zM512 960c-282.667 0-512-229.333-512-512s229.333-512 512-512 512 229.333 512 512-229.333 512-512 512zM851.627 327.68c-46.507-159.573-182.187-275.413-343.040-275.413-161.067 0-296.96 116.267-343.253 276.267-50.773 4.267-90.667 50.347-90.667 107.093 0 54.187 36.48 98.773 83.84 106.453v0.213c89.173 62.507 162.347 148.907 174.72 215.467l0.213-0.213v0.64c57.813-112 268.8-221.44 504.533-215.893 4.267 0.64 8.32 1.493 12.587 1.493 54.4 0 98.56-48.427 98.56-108.16 0.213-59.307-43.52-107.52-97.493-107.947zM704 426.667c0-23.564-19.103-42.667-42.667-42.667s-42.667 19.103-42.667 42.667c0 23.564 19.103 42.667 42.667 42.667s42.667-19.103 42.667-42.667z" />
<glyph unicode="&#xe62a;" d="M512 49.067l-61.867 56.107c-219.733 199.467-364.8 331.093-364.8 492.16 0 131.627 103.040 234.667 234.667 234.667 74.24 0 145.493-34.56 192-88.96 46.507 54.4 117.76 88.96 192 88.96 131.627 0 234.667-103.040 234.667-234.667 0-161.067-145.067-292.693-364.8-492.16l-61.867-56.107z" />
<glyph unicode="&#xe62b;" d="M704 832c-74.24 0-145.493-34.56-192-88.96-46.507 54.4-117.76 88.96-192 88.96-131.627 0-234.667-103.040-234.667-234.667 0-161.067 145.067-292.693 364.8-492.16l61.867-56.107 61.867 56.107c219.733 199.467 364.8 331.093 364.8 492.16 0 131.627-103.040 234.667-234.667 234.667zM516.48 168.32l-4.48-4.053-4.48 4.053c-202.88 184.107-336.853 305.707-336.853 429.013 0 85.12 64.213 149.333 149.333 149.333 65.707 0 129.707-42.453 152.107-100.693h79.573c22.613 58.24 86.613 100.693 152.32 100.693 85.12 0 149.333-64.213 149.333-149.333 0-123.307-133.973-244.907-336.853-429.013z" />
<glyph unicode="&#xe62c;" d="M853.333 124.373v494.293l-256 256h-341.333c-47.147 0-84.907-38.187-84.907-85.333l-0.427-682.667c0-47.147 37.76-85.333 84.907-85.333h512.427c18.987 0 36.48 6.4 50.56 17.067l-189.227 189.227c-33.493-22.4-73.813-35.627-117.333-35.627-117.76 0-213.333 95.573-213.333 213.333s95.573 213.333 213.333 213.333 213.333-95.573 213.333-213.333c0-43.52-13.227-83.84-35.413-117.547l163.413-163.413zM384 405.333c0-70.613 57.387-128 128-128s128 57.387 128 128-57.387 128-128 128-128-57.387-128-128z" />
<glyph unicode="&#xe62d;" d="M469.333 704c58.88 0 112.213-23.893 150.827-62.507l-108.16-108.16h256v256l-87.467-87.467c-53.973 53.973-128.64 87.467-211.2 87.467-150.4 0-274.56-111.36-295.253-256h86.187c19.84 97.28 105.813 170.667 209.067 170.667zM709.973 314.24c28.373 38.613 47.573 84.267 54.613 133.76h-86.187c-19.84-97.28-105.813-170.667-209.067-170.667-58.88 0-112.213 23.893-150.827 62.507l108.16 108.16h-256v-256l87.467 87.467c53.973-53.973 128.64-87.467 211.2-87.467 66.133 0 127.147 21.76 176.64 58.24l207.36-207.147 63.573 63.573-206.933 207.573z" />
<glyph unicode="&#xe62e;" d="M384 661.333h-85.333v-85.333h85.333v85.333zM384 490.667h-85.333v-85.333h85.333v85.333zM384 832c-47.147 0-85.333-38.187-85.333-85.333h85.333v85.333zM554.667 320h-85.333v-85.333h85.333v85.333zM810.667 832v-85.333h85.333c0 47.147-38.187 85.333-85.333 85.333zM554.667 832h-85.333v-85.333h85.333v85.333zM384 234.667v85.333h-85.333c0-47.147 38.187-85.333 85.333-85.333zM810.667 405.333h85.333v85.333h-85.333v-85.333zM810.667 576h85.333v85.333h-85.333v-85.333zM810.667 234.667c47.147 0 85.333 38.187 85.333 85.333h-85.333v-85.333zM213.333 661.333h-85.333v-512c0-47.147 38.187-85.333 85.333-85.333h512v85.333h-512v512zM640 746.667h85.333v85.333h-85.333v-85.333zM640 234.667h85.333v85.333h-85.333v-85.333z" />
<glyph unicode="&#xe62f;" d="M128 405.333h85.333v85.333h-85.333v-85.333zM128 234.667h85.333v85.333h-85.333v-85.333zM213.333 64v85.333h-85.333c0-47.147 38.187-85.333 85.333-85.333zM128 576h85.333v85.333h-85.333v-85.333zM640 64h85.333v85.333h-85.333v-85.333zM810.667 832h-426.667c-47.147 0-85.333-38.187-85.333-85.333v-426.667c0-47.147 38.187-85.333 85.333-85.333h426.667c47.147 0 85.333 38.187 85.333 85.333v426.667c0 47.147-38.187 85.333-85.333 85.333zM810.667 320h-426.667v426.667h426.667v-426.667zM469.333 64h85.333v85.333h-85.333v-85.333zM298.667 64h85.333v85.333h-85.333v-85.333z" />
<glyph unicode="&#xe630;" d="M810.667 576h-170.667v256h-256v-256h-170.667l298.667-298.667 298.667 298.667zM213.333 192v-85.333h597.333v85.333h-597.333z" />
<glyph unicode="&#xe631;" d="M512 223.147l263.68-159.147-69.76 299.947 232.747 201.6-306.773 26.453-119.893 282.667-119.893-282.667-306.773-26.453 232.747-201.6-69.76-299.947z" />
<glyph unicode="&#xe632;" d="M512 874.667c-235.733 0-426.667-190.933-426.667-426.667 0-235.52 190.933-426.667 426.667-426.667s426.667 191.147 426.667 426.667c0 235.733-190.933 426.667-426.667 426.667zM341.333 213.333c-58.88 0-106.667 47.787-106.667 106.667s47.787 106.667 106.667 106.667 106.667-47.787 106.667-106.667-47.787-106.667-106.667-106.667zM405.333 618.667c0 58.88 47.787 106.667 106.667 106.667s106.667-47.787 106.667-106.667-47.787-106.667-106.667-106.667-106.667 47.787-106.667 106.667zM682.667 213.333c-58.88 0-106.667 47.787-106.667 106.667s47.787 106.667 106.667 106.667 106.667-47.787 106.667-106.667-47.787-106.667-106.667-106.667z" />
<glyph unicode="&#xe633;" d="M512 874.667c-235.733 0-426.667-190.933-426.667-426.667s190.933-426.667 426.667-426.667 426.667 190.933 426.667 426.667-190.933 426.667-426.667 426.667zM554.667 149.333h-85.333v85.333h85.333v-85.333zM642.773 479.787l-38.187-39.253c-30.72-30.72-49.92-56.533-49.92-120.533h-85.333v21.333c0 47.147 19.2 89.813 49.92 120.747l53.12 53.76c15.36 15.36 24.96 36.693 24.96 60.16 0 47.147-38.187 85.333-85.333 85.333s-85.333-38.187-85.333-85.333h-85.333c0 94.293 76.373 170.667 170.667 170.667s170.667-76.373 170.667-170.667c0-37.547-15.147-71.467-39.893-96.213z" />
<glyph unicode="&#xe634;" d="M622.293 618.667l-110.293-110.293-110.293 110.293-60.373-60.373 110.293-110.293-110.293-110.293 60.373-60.373 110.293 110.293 110.293-110.293 60.373 60.373-110.293 110.293 110.293 110.293-60.373 60.373zM512 874.667c-235.733 0-426.667-190.933-426.667-426.667s190.933-426.667 426.667-426.667 426.667 190.933 426.667 426.667-190.933 426.667-426.667 426.667zM512 106.667c-188.16 0-341.333 153.173-341.333 341.333s153.173 341.333 341.333 341.333 341.333-153.173 341.333-341.333-153.173-341.333-341.333-341.333z" />
<glyph unicode="&#xe635;" d="M554.453 832c-212.267 0-383.787-171.947-383.787-384h-128l166.187-166.187 2.987-6.187 172.16 172.373h-128c0 164.907 133.76 298.667 298.667 298.667s298.667-133.76 298.667-298.667-133.76-298.667-298.667-298.667c-82.56 0-157.013 33.707-210.987 87.68l-60.373-60.373c69.333-69.547 165.12-112.64 271.147-112.64 212.267 0 384.213 171.947 384.213 384s-171.947 384-384.213 384zM512 618.667v-213.333l182.613-108.373 30.72 51.84-149.333 88.533v181.333h-64z" />
<glyph unicode="&#xe636;" d="M426.667 106.667v256h170.667v-256h213.333v341.333h128l-426.667 384-426.667-384h128v-341.333z" />
<glyph unicode="&#xe637;" d="M768 618.667h-42.667v85.333c0 117.76-95.573 213.333-213.333 213.333s-213.333-95.573-213.333-213.333v-85.333h-42.667c-47.147 0-85.333-38.187-85.333-85.333v-426.667c0-47.147 38.187-85.333 85.333-85.333h512c47.147 0 85.333 38.187 85.333 85.333v426.667c0 47.147-38.187 85.333-85.333 85.333zM512 234.667c-47.147 0-85.333 38.187-85.333 85.333s38.187 85.333 85.333 85.333 85.333-38.187 85.333-85.333-38.187-85.333-85.333-85.333zM644.267 618.667h-264.533v85.333c0 72.96 59.307 132.267 132.267 132.267s132.267-59.307 132.267-132.267v-85.333z" />
<glyph unicode="&#xe638;" d="M512 874.667c-235.733 0-426.667-190.933-426.667-426.667s190.933-426.667 426.667-426.667 426.667 190.933 426.667 426.667-190.933 426.667-426.667 426.667zM554.667 234.667h-85.333v256h85.333v-256zM554.667 576h-85.333v85.333h85.333v-85.333z" />
<glyph unicode="&#xe639;" d="M469.333 234.667h85.333v256h-85.333v-256zM512 874.667c-235.733 0-426.667-190.933-426.667-426.667s190.933-426.667 426.667-426.667 426.667 190.933 426.667 426.667-190.933 426.667-426.667 426.667zM512 106.667c-188.16 0-341.333 153.173-341.333 341.333s153.173 341.333 341.333 341.333 341.333-153.173 341.333-341.333-153.173-341.333-341.333-341.333zM469.333 576h85.333v85.333h-85.333v-85.333z" />
<glyph unicode="&#xe63a;" d="M896 831.573h-768c-47.147 0-85.333-38.187-85.333-85.333v-170.24h85.333v171.093h768v-598.613h-768v171.52h-85.333v-171.093c0-47.147 38.187-84.48 85.333-84.48h768c47.147 0 85.333 37.547 85.333 84.48v597.333c0 47.147-38.187 85.333-85.333 85.333zM469.333 277.333l170.667 170.667-170.667 170.667v-128h-426.667v-85.333h426.667v-128z" />
<glyph unicode="&#xe63b;" d="M753.28 621.653l-241.28 241.493-241.28-241.493c-133.333-133.333-133.333-349.44 0-482.773 66.56-66.56 154.027-100.053 241.28-100.053s174.72 33.28 241.28 100.053c133.333 133.333 133.333 349.44 0 482.773zM512 124.373c-68.48 0-132.693 26.667-180.907 75.093-48.427 48.213-75.093 112.427-75.093 180.907s26.667 132.693 75.093 181.12l180.907 180.907v-618.027z" />
<glyph unicode="&#xe63c;" d="M752.427 710.613c-15.573 21.76-40.96 36.053-69.76 36.053l-469.333-0.427c-47.147 0-85.333-37.76-85.333-84.907v-426.667c0-47.147 38.187-84.907 85.333-84.907l469.333-0.427c28.8 0 54.187 14.293 69.76 36.053l186.24 262.613-186.24 262.613z" />
<glyph unicode="&#xe63d;" d="M752.427 710.613c-15.573 21.76-40.96 36.053-69.76 36.053l-469.333-0.427c-47.147 0-85.333-37.76-85.333-84.907v-426.667c0-47.147 38.187-84.907 85.333-84.907l469.333-0.427c28.8 0 54.187 14.293 69.76 36.053l186.24 262.613-186.24 262.613zM682.667 234.667h-469.333v426.667h469.333l151.253-213.333-151.253-213.333z" />
<glyph unicode="&#xe63e;" d="M511.787 874.667c-235.733 0-426.453-190.933-426.453-426.667s190.72-426.667 426.453-426.667c235.733 0 426.88 190.933 426.88 426.667s-191.147 426.667-426.88 426.667zM807.253 618.667h-125.867c-13.867 53.333-33.28 104.533-58.88 151.893 78.507-26.88 143.787-81.28 184.747-151.893zM512 787.84c35.627-51.2 63.36-108.16 81.493-169.173h-162.987c18.133 61.013 45.867 117.973 81.493 169.173zM181.76 362.667c-7.040 27.307-11.093 55.893-11.093 85.333s4.053 58.027 11.093 85.333h144c-3.413-27.947-5.76-56.32-5.76-85.333s2.347-57.387 5.973-85.333h-144.213zM216.533 277.333h125.867c13.867-53.333 33.28-104.533 58.88-152.107-78.507 26.88-143.787 81.493-184.747 152.107zM342.4 618.667h-125.867c40.96 70.613 106.24 125.227 184.747 152.107-25.6-47.573-45.013-98.773-58.88-152.107zM512 108.16c-35.413 51.2-63.147 108.16-81.493 169.173h162.987c-18.347-61.013-46.080-117.973-81.493-169.173zM611.84 362.667h-199.68c-4.053 27.947-6.827 56.32-6.827 85.333s2.773 57.387 6.827 85.333h199.68c4.053-27.947 6.827-56.32 6.827-85.333s-2.773-57.387-6.827-85.333zM622.72 125.44c25.6 47.573 45.013 98.56 58.88 151.893h125.867c-41.173-70.613-106.453-125.013-184.747-151.893zM698.027 362.667c3.413 27.947 5.973 56.32 5.973 85.333s-2.347 57.387-5.973 85.333h144c7.040-27.307 11.307-55.893 11.307-85.333s-4.053-58.027-11.307-85.333h-144z" />
<glyph unicode="&#xe63f;" d="M810.667 149.333h-597.333v597.333h298.667v85.333h-298.667c-47.147 0-85.333-38.187-85.333-85.333v-597.333c0-47.147 38.187-85.333 85.333-85.333h597.333c47.147 0 85.333 38.187 85.333 85.333v298.667h-85.333v-298.667zM597.333 832v-85.333h152.96l-419.413-419.413 60.373-60.373 419.413 419.413v-152.96h85.333v298.667h-298.667z" />
<glyph unicode="&#xe640;" d="M128 405.333h85.333v85.333h-85.333v-85.333zM128 234.667h85.333v85.333h-85.333v-85.333zM128 576h85.333v85.333h-85.333v-85.333zM298.667 405.333h597.333v85.333h-597.333v-85.333zM298.667 234.667h597.333v85.333h-597.333v-85.333zM298.667 661.333v-85.333h597.333v85.333h-597.333z" />
<glyph unicode="&#xe641;" d="M768 618.667h-42.667v85.333c0 117.76-95.573 213.333-213.333 213.333s-213.333-95.573-213.333-213.333v-85.333h-42.667c-47.147 0-85.333-38.187-85.333-85.333v-426.667c0-47.147 38.187-85.333 85.333-85.333h512c47.147 0 85.333 38.187 85.333 85.333v426.667c0 47.147-38.187 85.333-85.333 85.333zM512 234.667c-47.147 0-85.333 38.187-85.333 85.333s38.187 85.333 85.333 85.333 85.333-38.187 85.333-85.333-38.187-85.333-85.333-85.333zM644.267 618.667h-264.533v85.333c0 72.96 59.307 132.267 132.267 132.267s132.267-59.307 132.267-132.267v-85.333z" />
<glyph unicode="&#xe642;" d="M512 234.667c47.147 0 85.333 38.187 85.333 85.333s-38.187 85.333-85.333 85.333-85.333-38.187-85.333-85.333 38.187-85.333 85.333-85.333zM768 618.667h-42.667v85.333c0 117.76-95.573 213.333-213.333 213.333s-213.333-95.573-213.333-213.333h81.067c0 72.96 59.307 132.267 132.267 132.267s132.267-59.307 132.267-132.267v-85.333h-388.267c-47.147 0-85.333-38.187-85.333-85.333v-426.667c0-47.147 38.187-85.333 85.333-85.333h512c47.147 0 85.333 38.187 85.333 85.333v426.667c0 47.147-38.187 85.333-85.333 85.333zM768 106.667h-512v426.667h512v-426.667z" />
<glyph unicode="&#xe643;" d="M768 618.667h-42.667v85.333c0 117.76-95.573 213.333-213.333 213.333s-213.333-95.573-213.333-213.333v-85.333h-42.667c-47.147 0-85.333-38.187-85.333-85.333v-426.667c0-47.147 38.187-85.333 85.333-85.333h512c47.147 0 85.333 38.187 85.333 85.333v426.667c0 47.147-38.187 85.333-85.333 85.333zM512 836.267c72.96 0 132.267-59.307 132.267-132.267v-85.333h-260.267v85.333h-4.267c0 72.96 59.307 132.267 132.267 132.267zM768 106.667h-512v426.667h512v-426.667zM512 234.667c47.147 0 85.333 38.187 85.333 85.333s-38.187 85.333-85.333 85.333-85.333-38.187-85.333-85.333 38.187-85.333 85.333-85.333z" />
<glyph unicode="&#xe644;" d="M913.493 465.92l-383.787 383.787c-15.36 15.36-36.693 24.96-60.373 24.96h-298.667c-47.147 0-85.333-38.187-85.333-85.333v-298.667c0-23.68 9.6-45.013 25.173-60.373l384-384c15.36-15.36 36.693-24.96 60.16-24.96 23.68 0 45.013 9.6 60.373 24.96l298.667 298.667c15.36 15.573 24.96 36.907 24.96 60.373 0 23.68-9.6 45.013-25.173 60.587zM234.667 661.333c-35.413 0-64 28.587-64 64s28.587 64 64 64 64-28.587 64-64-28.587-64-64-64zM736.853 308.48l-182.187-182.187-182.187 182.187c-19.2 19.413-31.147 46.080-31.147 75.52 0 58.88 47.787 106.667 106.667 106.667 29.44 0 56.32-11.947 75.52-31.36l31.147-31.147 31.147 31.147c19.413 19.413 46.080 31.36 75.52 31.36 58.88 0 106.667-47.787 106.667-106.667 0-29.44-11.947-56.107-31.147-75.52z" />
<glyph unicode="&#xe645;" d="M853.333 704h-426.667v-256h-85.333v341.333h256v170.667h-341.333v-256h-85.333c-46.933 0-85.333-38.4-85.333-85.333v-512c0-46.933 38.4-85.333 85.333-85.333h682.667c46.933 0 85.333 38.4 85.333 85.333v512c0 46.933-38.4 85.333-85.333 85.333z" />
<glyph unicode="&#xe646;" d="M597.333 874.667h-341.333c-47.147 0-84.907-38.187-84.907-85.333l-0.427-682.667c0-47.147 37.76-85.333 84.907-85.333h512.427c47.147 0 85.333 38.187 85.333 85.333v512l-256 256zM682.667 277.333h-128v-128h-85.333v128h-128v85.333h128v128h85.333v-128h128v-85.333zM554.667 576v234.667l234.667-234.667h-234.667z" />
<glyph unicode="&#xe647;" d="M810.667 789.333h-597.333c-47.147 0-85.333-38.187-85.333-85.333v-512c0-47.147 38.187-85.333 85.333-85.333h170.667v85.333h-170.667v426.667h597.333v-426.667h-170.667v-85.333h170.667c47.147 0 85.333 38.187 85.333 85.333v512c0 47.147-38.187 85.333-85.333 85.333zM512 533.333l-170.667-170.667h128v-256h85.333v256h128l-170.667 170.667z" />
<glyph unicode="&#xe648;" d="M810.667 149.333h-597.333v597.333h298.667v85.333h-298.667c-47.147 0-85.333-38.187-85.333-85.333v-597.333c0-47.147 38.187-85.333 85.333-85.333h597.333c47.147 0 85.333 38.187 85.333 85.333v298.667h-85.333v-298.667zM597.333 832v-85.333h152.96l-419.413-419.413 60.373-60.373 419.413 419.413v-152.96h85.333v298.667h-298.667z" />
<glyph unicode="&#xe649;" d="M426.667 576h170.667v128h128l-213.333 213.333-213.333-213.333h128v-128zM384 533.333h-128v128l-213.333-213.333 213.333-213.333v128h128v170.667zM981.333 448l-213.333 213.333v-128h-128v-170.667h128v-128l213.333 213.333zM597.333 320h-170.667v-128h-128l213.333-213.333 213.333 213.333h-128v128z" />
<glyph unicode="&#xe64a;" d="M469.333 618.667c-70.613 0-128-57.387-128-128s57.387-128 128-128 128 57.387 128 128-57.387 128-128 128zM810.667 832h-597.333c-47.147 0-85.333-38.187-85.333-85.333v-597.333c0-47.147 38.187-85.333 85.333-85.333h597.333c47.147 0 85.333 38.187 85.333 85.333v597.333c0 47.147-38.187 85.333-85.333 85.333zM750.293 149.333l-163.413 163.413c-33.707-22.187-74.027-35.413-117.547-35.413-117.76 0-213.333 95.573-213.333 213.333s95.573 213.333 213.333 213.333 213.333-95.573 213.333-213.333c0-43.52-13.227-83.84-35.413-117.547l163.413-163.413-60.373-60.373z" />
<glyph unicode="&#xe64b;" d="M853.333 789.333h-682.667c-47.147 0-84.907-38.187-84.907-85.333l-0.427-512c0-47.147 38.187-85.333 85.333-85.333h682.667c47.147 0 85.333 38.187 85.333 85.333v512c0 47.147-38.187 85.333-85.333 85.333zM853.333 192h-682.667v256h682.667v-256zM853.333 618.667h-682.667v85.333h682.667v-85.333z" />
<glyph unicode="&#xe64c;" d="M853.333 746.667h-135.253l-78.080 85.333h-256l-78.080-85.333h-135.253c-47.147 0-85.333-38.187-85.333-85.333v-512c0-47.147 38.187-85.333 85.333-85.333h298.667v89.173c-120.96 20.48-213.333 125.653-213.333 252.16h85.333c0-94.080 76.587-170.667 170.667-170.667s170.667 76.587 170.667 170.667h85.333c0-126.507-92.373-231.68-213.333-252.16v-89.173h298.667c47.147 0 85.333 38.187 85.333 85.333v512c0 47.147-38.187 85.333-85.333 85.333zM597.333 405.333c0-47.147-38.187-85.333-85.333-85.333s-85.333 38.187-85.333 85.333v170.667c0 47.147 38.187 85.333 85.333 85.333s85.333-38.187 85.333-85.333v-170.667z" />
<glyph unicode="&#xe64d;" d="M810.667 832h-42.667v85.333h-85.333v-85.333h-341.333v85.333h-85.333v-85.333h-42.667c-47.147 0-85.333-38.187-85.333-85.333v-597.333c0-47.147 38.187-85.333 85.333-85.333h597.333c47.147 0 85.333 38.187 85.333 85.333v597.333c0 47.147-38.187 85.333-85.333 85.333zM512 704c70.613 0 128-57.387 128-128 0-70.827-57.387-128-128-128s-128 57.173-128 128c0 70.613 57.387 128 128 128zM768 192h-512v42.667c0 85.333 170.667 132.267 256 132.267s256-46.933 256-132.267v-42.667z" />
<glyph unicode="&#xe64e;" d="M810.24 469.333c14.507 0 29.013-1.28 43.093-3.2v493.867l-853.333-853.333h493.44c-1.92 14.080-3.2 28.16-3.2 42.667 0 176.64 143.36 320 320 320zM968.747 128.427c0.853 6.827 1.493 13.653 1.493 20.907 0 7.040-0.64 14.080-1.493 20.907l45.013 35.2c4.053 3.2 5.12 8.96 2.56 13.653l-42.667 73.813c-2.56 4.693-8.32 6.4-13.013 4.693l-53.12-21.333c-11.093 8.533-23.040 15.573-36.053 20.907l-7.893 56.533c-0.853 5.12-5.333 8.96-10.667 8.96h-85.333c-5.333 0-9.813-3.84-10.453-8.96l-7.893-56.533c-13.013-5.333-24.96-12.587-36.053-20.907l-53.12 21.333c-4.907 1.92-10.453 0-13.013-4.693l-42.667-73.813c-2.773-4.693-1.493-10.453 2.56-13.653l45.013-35.2c-0.853-6.827-1.493-13.867-1.493-20.907s0.64-14.080 1.493-20.907l-45.013-35.2c-4.053-3.2-5.12-8.96-2.56-13.653l42.667-73.813c2.773-4.693 8.32-6.4 13.013-4.693l53.12 21.333c11.093-8.533 23.040-15.573 36.053-20.907l7.893-56.533c0.853-5.12 5.333-8.96 10.453-8.96h85.333c5.333 0 9.6 3.84 10.453 8.96l7.893 56.533c13.013 5.333 24.96 12.587 36.053 20.907l53.12-21.333c4.907-1.92 10.453 0 13.013 4.693l42.667 73.813c2.773 4.693 1.493 10.453-2.56 13.653l-44.8 35.2zM810.24 85.333c-35.413 0-64 28.587-64 64s28.587 64 64 64 64-28.587 64-64-28.587-64-64-64z" />
<glyph unicode="&#xe64f;" d="M554.667 661.333h-85.333v-85.333h85.333v85.333zM554.667 490.667h-85.333v-256h85.333v256zM725.333 916.907l-426.667 0.427c-47.147 0-85.333-38.187-85.333-85.333v-768c0-47.147 38.187-85.333 85.333-85.333h426.667c47.147 0 85.333 38.187 85.333 85.333v768c0 47.147-38.187 84.907-85.333 84.907zM725.333 149.333h-426.667v597.333h426.667v-597.333z" />
<glyph unicode="&#xe650;" d="M512 708.267c49.493 0 89.6-40.107 89.6-89.6s-40.107-89.6-89.6-89.6-89.6 40.107-89.6 89.6 40.107 89.6 89.6 89.6zM512 324.267c126.933 0 260.267-62.080 260.267-89.6v-46.933h-520.533v46.933c0 27.52 133.333 89.6 260.267 89.6zM512 789.333c-94.293 0-170.667-76.373-170.667-170.667 0-94.080 76.373-170.667 170.667-170.667s170.667 76.587 170.667 170.667c0 94.293-76.373 170.667-170.667 170.667zM512 405.333c-113.707 0-341.333-56.96-341.333-170.667v-128h682.667v128c0 113.707-227.627 170.667-341.333 170.667z" />
<glyph unicode="&#xe651;" d="M85.333 704h-85.333v-213.333h0.427l-0.427-384c0-47.147 38.187-85.333 85.333-85.333h768v85.333h-768v597.333zM938.667 789.333h-341.333l-85.333 85.333h-256c-47.147 0-84.907-38.187-84.907-85.333l-0.427-512c0-47.147 38.187-85.333 85.333-85.333h682.667c47.147 0 85.333 38.187 85.333 85.333v426.667c0 47.147-38.187 85.333-85.333 85.333zM298.667 320l192 256 149.333-192.213 106.667 128.213 149.333-192h-597.333z" />
<glyph unicode="&#xe652;" d="M853.333 298.667c-53.12 0-104.533 8.533-152.32 24.32-14.72 4.693-31.573 1.28-43.307-10.453l-93.867-94.080c-120.96 61.44-219.52 160.213-281.173 280.96l93.867 94.293c11.733 11.733 15.147 28.587 10.453 43.307-15.787 47.787-24.32 99.2-24.32 152.32 0 23.68-18.987 42.667-42.667 42.667h-149.333c-23.467 0-42.667-18.987-42.667-42.667 0-400.64 324.693-725.333 725.333-725.333 23.68 0 42.667 18.987 42.667 42.667v149.333c0 23.68-18.987 42.667-42.667 42.667zM512 832v-426.667l128 128h256v298.667h-384z" />
<glyph unicode="&#xe653;" d="M512 832c-215.253 0-377.813-78.933-512-180.693l512-629.973 512 629.333c-134.187 101.547-296.747 181.333-512 181.333zM554.667 277.333h-85.333v256h85.333v-256zM469.333 618.667v85.333h85.333v-85.333h-85.333z" />
<glyph unicode="&#xe654;" d="M810.667 661.333h-341.333v-256h341.333v256zM896 832h-768c-47.147 0-85.333-38.187-85.333-85.333v-597.333c0-47.147 38.187-84.48 85.333-84.48h768c47.147 0 85.333 37.547 85.333 84.48v597.333c0 47.147-38.187 85.333-85.333 85.333zM896 148.693h-768v598.613h768v-598.613z" />
<glyph unicode="&#xe655;" d="M810.667 789.333h-170.667l-336.853-538.88-111.147 197.547 192 341.333h-170.667l-192-341.333 192-341.333h170.667l336.853 538.88 111.147-197.547-192-341.333h170.667l192 341.333z" />
<glyph unicode="&#xe656;" d="M810.667 618.667h-597.333c-70.613 0-128-57.387-128-128v-256h170.667v-170.667h512v170.667h170.667v256c0 70.613-57.387 128-128 128zM682.667 149.333h-341.333v213.333h341.333v-213.333zM810.667 448c-23.68 0-42.667 18.987-42.667 42.667s18.987 42.667 42.667 42.667c23.68 0 42.667-18.987 42.667-42.667s-18.987-42.667-42.667-42.667zM768 832h-512v-170.667h512v170.667z" />
<glyph unicode="&#xe657;" d="M511.787 874.667c-235.733 0-426.453-190.933-426.453-426.667s190.72-426.667 426.453-426.667c235.733 0 426.88 190.933 426.88 426.667s-191.147 426.667-426.88 426.667zM512 106.667c-188.587 0-341.333 152.747-341.333 341.333s152.747 341.333 341.333 341.333 341.333-152.747 341.333-341.333-152.747-341.333-341.333-341.333zM533.333 661.333h-64v-256l223.787-134.4 32.213 52.48-192 113.92z" />
<glyph unicode="&#xe658;" d="M896 704h-85.333v-384h-554.667v-85.333c0-23.467 19.2-42.667 42.667-42.667h469.333l170.667-170.667v640c0 23.467-19.2 42.667-42.667 42.667zM725.333 448v384c0 23.467-19.2 42.667-42.667 42.667h-554.667c-23.467 0-42.667-19.2-42.667-42.667v-597.333l170.667 170.667h426.667c23.467 0 42.667 19.2 42.667 42.667z" />
<glyph unicode="&#xe659;" d="M768 234.667h-512v85.333h512v-85.333zM768 405.333h-512v85.333h512v-85.333zM768 576h-512v85.333h512v-85.333zM128 21.333l64 64 64-64 64 64 64-64 64 64 64-64 64 64 64-64 64 64 64-64 64 64 64-64v853.333l-64-64-64 64-64-64-64 64-64-64-64 64-64-64-64 64-64-64-64 64-64-64-64 64v-853.333z" />
<glyph unicode="&#xe65a;" d="M853.333 704h-93.227c4.693 13.44 7.893 27.52 7.893 42.667 0 70.613-57.387 128-128 128-44.587 0-83.84-22.827-106.667-57.387l-21.333-29.013-21.333 29.013c-22.827 34.56-62.080 57.387-106.667 57.387-70.613 0-128-57.387-128-128 0-15.147 2.987-29.227 7.893-42.667h-93.227c-47.147 0-84.907-38.187-84.907-85.333l-0.427-469.333c0-47.147 38.187-85.333 85.333-85.333h682.667c47.147 0 85.333 38.187 85.333 85.333v469.333c0 47.147-38.187 85.333-85.333 85.333zM640 789.333c23.467 0 42.667-19.2 42.667-42.667s-19.2-42.667-42.667-42.667-42.667 19.2-42.667 42.667 19.2 42.667 42.667 42.667zM384 789.333c23.467 0 42.667-19.2 42.667-42.667s-19.2-42.667-42.667-42.667-42.667 19.2-42.667 42.667 19.2 42.667 42.667 42.667zM853.333 149.333h-682.667v85.333h682.667v-85.333zM853.333 362.667h-682.667v256h216.747l-88.747-120.96 69.333-49.707 144 196.053 42.667-58.027 101.333-138.027 69.333 49.707-88.747 120.96h216.747v-256z" />
<glyph unicode="&#xe65b;" d="M42.667 64h938.667l-469.333 810.667-469.333-810.667zM554.667 192h-85.333v85.333h85.333v-85.333zM554.667 362.667h-85.333v170.667h85.333v-170.667z" />
<glyph unicode="&#xe65c;" d="M554.453 832c-212.267 0-383.787-171.947-383.787-384h-128l166.187-166.187 2.987-6.187 172.16 172.373h-128c0 164.907 133.76 298.667 298.667 298.667s298.667-133.76 298.667-298.667-133.76-298.667-298.667-298.667c-82.56 0-157.013 33.707-210.987 87.68l-60.373-60.373c69.333-69.547 165.12-112.64 271.147-112.64 212.267 0 384.213 171.947 384.213 384s-171.947 384-384.213 384zM512 618.667v-213.333l182.613-108.373 30.72 51.84-149.333 88.533v181.333h-64z" />
<glyph unicode="&#xe65d;" d="M512 874.667c-164.907 0-298.667-133.76-298.667-298.667 0-224 298.667-554.667 298.667-554.667s298.667 330.667 298.667 554.667c0 164.907-133.76 298.667-298.667 298.667zM512 469.333c-58.88 0-106.667 47.787-106.667 106.667s47.787 106.667 106.667 106.667 106.667-47.787 106.667-106.667-47.787-106.667-106.667-106.667z" />
<glyph unicode="&#xe65e;" d="M511.787 874.667c-235.733 0-426.453-190.933-426.453-426.667s190.72-426.667 426.453-426.667c235.733 0 426.88 190.933 426.88 426.667s-191.147 426.667-426.88 426.667zM512 106.667c-188.587 0-341.333 152.747-341.333 341.333s152.747 341.333 341.333 341.333 341.333-152.747 341.333-341.333-152.747-341.333-341.333-341.333zM533.333 661.333h-64v-256l223.787-134.4 32.213 52.48-192 113.92z" />
<glyph unicode="&#xe65f;" d="M661.333 362.667h-33.92l-11.733 11.733c41.813 48.427 66.987 111.36 66.987 180.267 0 153.173-124.16 277.333-277.333 277.333s-277.333-124.16-277.333-277.333 124.16-277.333 277.333-277.333c68.907 0 131.84 25.173 180.267 66.773l11.733-11.733v-33.707l213.333-212.907 63.573 63.573-212.907 213.333zM405.333 362.667c-106.027 0-192 85.973-192 192s85.973 192 192 192 192-85.973 192-192-85.973-192-192-192z" />
<glyph unicode="&#xe660;" d="M829.013 406.4c1.707 13.653 2.987 27.52 2.987 41.6s-1.28 27.947-2.987 41.6l90.24 70.613c8.107 6.4 10.453 17.92 5.12 27.307l-85.333 147.84c-5.333 9.173-16.427 13.013-26.027 9.173l-106.24-42.88c-21.973 16.853-46.080 31.147-72.107 42.027l-16 113.067c-1.92 10.027-10.667 17.92-21.333 17.92h-170.667c-10.667 0-19.413-7.893-21.12-17.92l-16-113.067c-26.027-10.88-50.133-24.96-72.107-42.027l-106.24 42.88c-9.6 3.627-20.693 0-26.027-9.173l-85.333-147.84c-5.333-9.173-2.987-20.693 5.12-27.307l90.027-70.613c-1.707-13.653-2.987-27.52-2.987-41.6s1.28-27.947 2.987-41.6l-90.027-70.613c-8.107-6.4-10.453-17.92-5.12-27.307l85.333-147.84c5.333-9.173 16.427-13.013 26.027-9.173l106.24 42.88c21.973-16.853 46.080-31.147 72.107-42.027l16-113.067c1.707-10.027 10.453-17.92 21.12-17.92h170.667c10.667 0 19.413 7.893 21.12 17.92l16 113.067c26.027 10.88 50.133 24.96 72.107 42.027l106.24-42.88c9.6-3.627 20.693 0 26.027 9.173l85.333 147.84c5.333 9.173 2.987 20.693-5.12 27.307l-90.027 70.613zM512 298.667c-82.56 0-149.333 66.773-149.333 149.333s66.773 149.333 149.333 149.333 149.333-66.773 149.333-149.333-66.773-149.333-149.333-149.333z" />
<glyph unicode="&#xe661;" d="M512 533.333c-47.147 0-85.333-38.187-85.333-85.333s38.187-85.333 85.333-85.333 85.333 38.187 85.333 85.333-38.187 85.333-85.333 85.333zM810.667 832h-597.333c-47.147 0-85.333-38.187-85.333-85.333v-597.333c0-47.147 38.187-85.333 85.333-85.333h597.333c47.147 0 85.333 38.187 85.333 85.333v597.333c0 47.147-38.187 85.333-85.333 85.333zM736 448c0-9.813-0.853-19.627-2.133-29.227l63.147-49.493c5.547-4.48 7.253-12.587 3.413-18.987l-59.733-103.467c-3.627-6.4-11.52-8.96-18.347-6.4l-74.453 30.080c-15.36-11.947-32.213-21.76-50.56-29.44l-11.093-79.147c-0.853-7.040-7.040-12.587-14.507-12.587h-119.467c-7.467 0-13.653 5.547-14.72 12.587l-11.093 79.147c-18.133 7.467-34.987 17.493-50.56 29.44l-74.24-29.867c-6.827-2.56-14.507 0-18.347 6.4l-59.733 103.467c-3.84 6.4-2.133 14.507 3.413 18.987l63.147 49.28c-1.28 9.6-2.133 19.2-2.133 29.227 0 9.813 0.853 19.627 2.133 29.227l-63.147 49.28c-5.547 4.48-7.253 12.587-3.413 18.987l59.733 103.467c3.84 6.4 11.52 8.96 18.347 6.4l74.24-29.867c15.36 11.733 32.213 21.76 50.56 29.44l11.093 79.147c1.067 7.040 7.253 12.587 14.72 12.587h119.467c7.467 0 13.653-5.547 14.72-12.587l11.093-79.147c18.133-7.467 34.987-17.493 50.56-29.44l74.24 29.867c6.827 2.56 14.507 0 18.347-6.4l59.733-103.467c3.84-6.4 2.133-14.507-3.413-18.987l-63.147-49.493c1.28-9.387 2.133-19.2 2.133-29.013z" />
<glyph unicode="&#xe662;" d="M597.333 448c0 47.147-38.187 85.333-85.333 85.333s-85.333-38.187-85.333-85.333 38.187-85.333 85.333-85.333 85.333 38.187 85.333 85.333zM512 832c-212.053 0-384-171.947-384-384h-128l170.667-170.667 170.667 170.667h-128c0 164.907 133.76 298.667 298.667 298.667s298.667-133.76 298.667-298.667-133.76-298.667-298.667-298.667c-64.64 0-124.16 20.693-173.227 55.68l-60.373-61.227c64.853-49.92 145.707-79.787 233.6-79.787 212.053 0 384 171.947 384 384s-171.947 384-384 384z" />
<glyph unicode="&#xe663;" d="M469.333-64h85.333v85.333h-85.333v-85.333zM298.667-64h85.333v85.333h-85.333v-85.333zM640-64h85.333v85.333h-85.333v-85.333zM755.413 716.587l-243.413 243.413h-42.667v-323.627l-195.627 195.627-60.373-60.373 238.293-238.293-238.293-238.293 60.373-60.373 195.627 195.627v-323.627h42.667l243.413 243.413-183.040 183.253 183.040 183.253zM554.667 796.587l80.213-80.213-80.213-80v160.213zM634.88 350.080l-80.213-80v160.213l80.213-80.213z" />
<glyph unicode="&#xe664;" d="M298.667-64h85.333v85.333h-85.333v-85.333zM469.333-64h85.333v85.333h-85.333v-85.333zM640-64h85.333v85.333h-85.333v-85.333zM682.667 959.573l-341.333 0.427c-47.147 0-85.333-38.187-85.333-85.333v-682.667c0-47.147 38.187-85.333 85.333-85.333h341.333c47.147 0 85.333 38.187 85.333 85.333v682.667c0 47.147-38.187 84.907-85.333 84.907zM682.667 277.333h-341.333v512h341.333v-512z" />
<glyph unicode="&#xe665;" d="M896 832h-768c-47.147 0-85.333-38.187-85.333-85.333v-597.333c0-47.147 38.187-85.333 85.333-85.333h768c47.147 0 85.333 38.187 85.333 85.333v597.333c0 47.147-38.187 85.333-85.333 85.333zM896 148.693h-768v598.613h768v-598.613zM341.333 277.333h106.667l64-64 64 64h106.667v106.667l64 64-64 64v106.667h-106.667l-64 64-64-64h-106.667v-106.667l-64-64 64-64v-106.667zM512 576c70.613 0 128-57.387 128-128s-57.387-128-128-128v256z" />
<glyph unicode="&#xe666;" d="M331.52 671.573l-65.707 54.4-230.827-277.973 230.827-278.187 65.707 54.4-185.6 223.787 185.6 223.573zM298.667 405.333h85.333v85.333h-85.333v-85.333zM725.333 490.667h-85.333v-85.333h85.333v85.333zM469.333 405.333h85.333v85.333h-85.333v-85.333zM758.187 726.187l-65.707-54.4 185.6-223.787-185.6-223.573 65.707-54.4 230.827 277.973-230.827 278.187z" />
<glyph unicode="&#xe667;" d="M512 746.667c-164.907 0-298.667-133.76-298.667-298.667h85.333c0 117.76 95.573 213.333 213.333 213.333s213.333-95.573 213.333-213.333h85.333c0 164.907-133.76 298.667-298.667 298.667zM554.667 350.293c37.547 16.427 64 53.973 64 97.707 0 58.88-47.787 106.667-106.667 106.667s-106.667-47.787-106.667-106.667c0-43.733 26.453-81.28 64-97.707v-140.587l-145.707-145.707 60.373-60.373 128 128 128-128 60.373 60.373-145.707 145.707v140.587zM512 917.333c-259.2 0-469.333-210.133-469.333-469.333h85.333c0 212.053 171.947 384 384 384s384-171.947 384-384h85.333c0 259.2-210.133 469.333-469.333 469.333z" />
<glyph unicode="&#xe668;" d="M213.333 874.667c0 23.467-18.987 42.667-42.667 42.667s-42.667-19.2-42.667-42.667v-170.667h-85.333v-256h256v256h-85.333v170.667zM384 277.333c0-55.68 35.84-102.613 85.333-120.107v-178.56h85.333v178.56c49.493 17.707 85.333 64.427 85.333 120.107v85.333h-256v-85.333zM42.667 277.333c0-55.68 35.84-102.613 85.333-120.107v-178.56h85.333v178.56c49.493 17.707 85.333 64.427 85.333 120.107v85.333h-256v-85.333zM896 704v170.667c0 23.467-18.987 42.667-42.667 42.667s-42.667-19.2-42.667-42.667v-170.667h-85.333v-256h256v256h-85.333zM554.667 874.667c0 23.467-18.987 42.667-42.667 42.667s-42.667-19.2-42.667-42.667v-170.667h-85.333v-256h256v256h-85.333v170.667zM725.333 277.333c0-55.68 35.84-102.613 85.333-120.107v-178.56h85.333v178.56c49.493 17.707 85.333 64.427 85.333 120.107v85.333h-256v-85.333z" />
<glyph unicode="&#xe669;" d="M213.333 874.667c0 23.467-18.987 42.667-42.667 42.667s-42.667-19.2-42.667-42.667v-170.667h-85.333v-256h256v256h-85.333v170.667zM384 277.333c0-55.68 35.84-102.613 85.333-120.107v-178.56h85.333v178.56c49.493 17.707 85.333 64.427 85.333 120.107v85.333h-256v-85.333zM42.667 277.333c0-55.68 35.84-102.613 85.333-120.107v-178.56h85.333v178.56c49.493 17.707 85.333 64.427 85.333 120.107v85.333h-256v-85.333zM896 704v170.667c0 23.467-18.987 42.667-42.667 42.667s-42.667-19.2-42.667-42.667v-170.667h-85.333v-256h256v256h-85.333zM554.667 874.667c0 23.467-18.987 42.667-42.667 42.667s-42.667-19.2-42.667-42.667v-170.667h-85.333v-256h256v256h-85.333v170.667zM725.333 277.333c0-55.68 35.84-102.613 85.333-120.107v-178.56h85.333v178.56c49.493 17.707 85.333 64.427 85.333 120.107v85.333h-256v-85.333z" />
<glyph unicode="&#xe66a;" d="M768 661.333v128c0 47.147-38.187 85.333-85.333 85.333h-341.333c-47.147 0-85.333-38.187-85.333-85.333v-128h-42.667v-256l128-256v-128h341.333v128l128 256v256h-42.667zM341.333 789.333h341.333v-128h-85.333v85.333h-42.667v-85.333h-85.333v85.333h-42.667v-85.333h-85.333v128z" />
<glyph unicode="&#xe66b;" d="M341.333 469.333c0 35.413-28.587 64-64 64s-64-28.587-64-64 28.587-64 64-64 64 28.587 64 64zM640 682.667c0 35.413-28.587 64-64 64h-128c-35.413 0-64-28.587-64-64s28.587-64 64-64h128c35.413 0 64 28.587 64 64zM362.667 320c-35.413 0-64-28.587-64-64s28.587-64 64-64 64 28.587 64 64-28.587 64-64 64zM512 917.333c-258.773 0-469.333-210.56-469.333-469.333s210.56-469.333 469.333-469.333 469.333 210.56 469.333 469.333-210.56 469.333-469.333 469.333zM512 64c-211.84 0-384 172.373-384 384s172.16 384 384 384 384-172.373 384-384-172.16-384-384-384zM746.667 533.333c-35.413 0-64-28.587-64-64s28.587-64 64-64 64 28.587 64 64-28.587 64-64 64zM661.333 320c-35.413 0-64-28.587-64-64s28.587-64 64-64 64 28.587 64 64-28.587 64-64 64z" />
<glyph unicode="&#xe66c;" d="M512.213 725.333l-85.547-106.667h170.667l-85.12 106.667zM768 533.333v-170.667l106.667 85.12-106.667 85.547zM256 533.333l-106.667-85.547 106.667-85.12v170.667zM597.333 277.333h-170.667l85.547-106.667 85.12 106.667zM896 832h-768c-47.147 0-85.333-38.187-85.333-85.333v-597.333c0-47.147 38.187-85.333 85.333-85.333h768c47.147 0 85.333 38.187 85.333 85.333v597.333c0 47.147-38.187 85.333-85.333 85.333zM896 148.693h-768v598.613h768v-598.613z" />
<glyph unicode="&#xe66d;" d="M554.667 576h-85.333v-85.333h85.333v85.333zM725.333 576h-85.333v-85.333h85.333v85.333zM853.333 298.667c-53.12 0-104.32 8.533-152.32 24.32-14.72 4.693-31.573 1.28-43.307-10.453l-93.867-94.080c-120.96 61.44-219.52 160.213-281.173 280.96l93.867 94.080c11.733 11.733 15.147 28.587 10.453 43.307-15.787 48-24.32 99.413-24.32 152.533 0 23.68-18.987 42.667-42.667 42.667h-149.333c-23.68 0-42.667-18.987-42.667-42.667 0-400.64 324.693-725.333 725.333-725.333 23.68 0 42.667 18.987 42.667 42.667v149.333c0 23.68-18.987 42.667-42.667 42.667zM810.667 576v-85.333h85.333v85.333h-85.333z" />
<glyph unicode="&#xe66e;" d="M298.667-64h85.333v85.333h-85.333v-85.333zM469.333-64h85.333v85.333h-85.333v-85.333zM554.667 874.667h-85.333v-426.667h85.333v426.667zM706.773 770.773l-61.653-61.653c73.6-45.013 122.88-125.867 122.88-218.453 0-141.44-114.56-256-256-256s-256 114.56-256 256c0 92.587 49.28 173.44 122.88 218.453l-61.653 61.653c-88.533-61.653-146.56-164.053-146.56-280.107 0-188.587 152.747-341.333 341.333-341.333s341.333 152.747 341.333 341.333c0 116.053-58.027 218.453-146.56 280.107zM640-64h85.333v85.333h-85.333v-85.333z" />
<glyph unicode="&#xe66f;" d="M640 576h-256c-23.68 0-42.667-19.2-42.667-42.667v-512c0-23.467 18.987-42.667 42.667-42.667h256c23.68 0 42.667 19.2 42.667 42.667v512c0 23.467-18.987 42.667-42.667 42.667zM512 320c-47.147 0-85.333 38.187-85.333 85.333s38.187 85.333 85.333 85.333 85.333-38.187 85.333-85.333-38.187-85.333-85.333-85.333zM300.8 701.867l60.373-60.373c38.613 38.613 91.947 62.507 150.827 62.507s112.213-23.893 150.827-62.507l60.373 60.373c-53.973 53.973-128.64 87.467-211.2 87.467s-157.227-33.493-211.2-87.467zM512 960c-129.493 0-246.827-52.48-331.947-137.387l60.373-60.373c69.547 69.547 165.547 112.427 271.573 112.427s202.027-42.88 271.573-112.427l60.373 60.373c-85.12 84.907-202.453 137.387-331.947 137.387z" />
<glyph unicode="&#xe670;" d="M298.667-64h85.333v85.333h-85.333v-85.333zM512 405.333c70.613 0 127.573 57.387 127.573 128l0.427 256c0 70.827-57.173 128-128 128-70.613 0-128-57.173-128-128v-256c0-70.613 57.387-128 128-128zM469.333-64h85.333v85.333h-85.333v-85.333zM640-64h85.333v85.333h-85.333v-85.333zM810.667 533.333h-72.533c0-128-108.16-217.6-226.133-217.6-117.76 0-226.133 89.6-226.133 217.6h-72.533c0-145.707 116.053-266.027 256-286.72v-139.947h85.333v139.947c139.947 20.693 256 141.013 256 286.72z" />
<glyph unicode="&#xe671;" d="M682.667 704v85.333c0 47.147-38.187 85.333-85.333 85.333h-170.667c-47.147 0-85.333-38.187-85.333-85.333v-85.333h-256v-554.667c0-47.147 38.187-85.333 85.333-85.333h682.667c47.147 0 85.333 38.187 85.333 85.333v554.667h-256zM426.667 789.333h170.667v-85.333h-170.667v85.333zM384 192v384l320-170.667-320-213.333z" />
<glyph unicode="&#xe672;" d="M734.293 576l-186.88 279.68c-8.107 12.373-21.76 18.133-35.413 18.133s-27.307-5.973-35.413-18.133l-186.88-279.68h-204.373c-23.467 0-42.667-19.2-42.667-42.667 0-4.053 0.64-7.893 1.493-11.52l108.16-395.52c10.027-35.84 43.093-62.293 82.347-62.293h554.667c39.253 0 72.32 26.453 82.133 62.507l108.16 395.52c1.067 3.413 1.707 7.253 1.707 11.307 0 23.467-19.2 42.667-42.667 42.667h-204.373zM384 576l128 187.733 128-187.733h-256zM512 234.667c-47.147 0-85.333 38.187-85.333 85.333s38.187 85.333 85.333 85.333 85.333-38.187 85.333-85.333-38.187-85.333-85.333-85.333z" />
<glyph unicode="&#xe673;" d="M298.667 192c-47.147 0-84.907-38.187-84.907-85.333s37.76-85.333 84.907-85.333 85.333 38.187 85.333 85.333-38.187 85.333-85.333 85.333zM42.667 874.667v-85.333h85.333l153.387-323.627-57.6-104.533c-6.613-12.373-10.453-26.24-10.453-41.173 0-47.147 38.187-85.333 85.333-85.333h512v85.333h-493.867c-5.973 0-10.667 4.693-10.667 10.667 0 1.92 0.427 3.627 1.28 5.12l38.187 69.547h317.867c32 0 59.947 17.707 74.667 43.947l152.533 276.907c3.413 5.973 5.333 13.013 5.333 20.48 0 23.68-19.2 42.667-42.667 42.667h-630.827l-40.533 85.333h-139.307zM725.333 192c-47.147 0-84.907-38.187-84.907-85.333s37.76-85.333 84.907-85.333 85.333 38.187 85.333 85.333-38.187 85.333-85.333 85.333z" />
<glyph unicode="&#xe674;" d="M768 746.667v85.333c0 47.147-38.187 85.333-85.333 85.333h-170.667c-47.147 0-85.333-38.187-85.333-85.333v-85.333h-213.333v-469.333c0-47.147 38.187-85.333 85.333-85.333h597.333c47.147 0 85.333 38.187 85.333 85.333v469.333h-213.333zM512 832h170.667v-85.333h-170.667v85.333zM512 320v298.667l234.667-128-234.667-170.667zM128 576h-85.333v-469.333c0-47.147 38.187-85.333 85.333-85.333h597.333c47.147 0 85.333 38.187 85.333 85.333h-682.667v469.333z" />
<glyph unicode="&#xe675;" d="M853.333 874.667h-682.667c-47.147 0-84.907-38.187-84.907-85.333l-0.427-768 170.667 170.667h597.333c47.147 0 85.333 38.187 85.333 85.333v512c0 47.147-38.187 85.333-85.333 85.333zM341.333 362.667h-85.333v85.333h85.333v-85.333zM341.333 490.667h-85.333v85.333h85.333v-85.333zM341.333 618.667h-85.333v85.333h85.333v-85.333zM640 362.667h-213.333v85.333h213.333v-85.333zM768 490.667h-341.333v85.333h341.333v-85.333zM768 618.667h-341.333v85.333h341.333v-85.333z" />
<glyph unicode="&#xe676;" d="M530.987 277.333h89.173l-217.813 554.667h-79.147l-218.027-554.667h89.173l48 128h240.853l47.787-128zM274.347 490.667l88.32 235.733 88.32-235.733h-176.64zM920.96 465.707l-344.96-344.96-156.587 156.587-60.373-60.373 216.96-216.96 405.333 405.333-60.373 60.373z" />
<glyph unicode="&#xe677;" d="M512 349.867l158.293-115.2-60.587 186.027 158.293 112.64h-194.133l-61.867 192-61.867-192h-194.133l158.293-112.64-60.373-186.027z" />
<glyph unicode="&#xe678;" d="M511.787 874.667c-235.733 0-426.453-190.933-426.453-426.667s190.72-426.667 426.453-426.667c235.733 0 426.88 190.933 426.88 426.667s-191.147 426.667-426.88 426.667zM692.48 192l-180.48 108.8-180.48-108.8 47.787 205.227-159.147 138.027 209.92 17.92 81.92 193.493 81.92-193.493 209.92-17.92-159.147-138.027 47.787-205.227z" />
<glyph unicode="&#xe679;" d="M853.333 789.333h-682.667v-85.333h682.667v85.333zM896 362.667v85.333l-42.667 213.333h-682.667l-42.667-213.333v-85.333h42.667v-256h426.667v256h170.667v-256h85.333v256h42.667zM512 192h-256v170.667h256v-170.667z" />
<glyph unicode="&#xe67a;" d="M597.333 234.667h-426.667v-85.333h426.667v85.333zM853.333 576h-682.667v-85.333h682.667v85.333zM170.667 320h682.667v85.333h-682.667v-85.333zM170.667 746.667v-85.333h682.667v85.333h-682.667z" />
<glyph unicode="&#xe67b;" d="M298.24 490.667l-170.24-170.667 170.24-170.667v128h299.093v85.333h-299.093v128zM896 576l-170.24 170.667v-128h-299.093v-85.333h299.093v-128l170.24 170.667z" />
<glyph unicode="&#xe67c;" d="M682.667 234.24v299.093h-85.333v-299.093h-128l170.667-170.24 170.667 170.24h-128zM384 832l-170.667-170.24h128v-299.093h85.333v299.093h128l-170.667 170.24z" />
<glyph unicode="&#xe67d;" d="M512 874.667c-235.733 0-426.667-190.933-426.667-426.667s190.933-426.667 426.667-426.667 426.667 190.933 426.667 426.667-190.933 426.667-426.667 426.667zM277.333 576l149.333 149.333 149.333-149.333h-106.667v-170.667h-85.333v170.667h-106.667zM746.667 320l-149.333-149.333-149.333 149.333h106.667v170.667h85.333v-170.667h106.667z" />
<glyph unicode="&#xe67e;" d="M512 266.667l170.667 170.667h-128v384h-85.333v-384h-128l170.667-170.667zM896 821.333h-256v-84.693h256v-598.613h-768v598.613h256v84.693h-256c-47.147 0-85.333-38.187-85.333-85.333v-597.333c0-47.147 38.187-85.333 85.333-85.333h768c47.147 0 85.333 38.187 85.333 85.333v597.333c0 47.147-38.187 85.333-85.333 85.333z" />
<glyph unicode="&#xe67f;" d="M896 832h-768c-47.147 0-85.333-38.187-85.333-85.333v-597.333c0-47.147 38.187-85.333 85.333-85.333h768c47.147 0 85.333 38.187 85.333 85.333v597.333c0 47.147-38.187 85.333-85.333 85.333zM896 149.333h-768v597.333h426.667v-170.667h341.333v-426.667z" />
<glyph unicode="&#xe680;" d="M42.667 576h85.333v85.333h-85.333v-85.333zM42.667 405.333h85.333v85.333h-85.333v-85.333zM42.667 746.667h85.333v85.333c-47.147 0-85.333-38.187-85.333-85.333zM384 64h85.333v85.333h-85.333v-85.333zM42.667 234.667h85.333v85.333h-85.333v-85.333zM128 64v85.333h-85.333c0-47.147 38.187-85.333 85.333-85.333zM896 832h-341.333v-256h426.667v170.667c0 47.147-38.187 85.333-85.333 85.333zM896 234.667h85.333v85.333h-85.333v-85.333zM384 746.667h85.333v85.333h-85.333v-85.333zM213.333 64h85.333v85.333h-85.333v-85.333zM213.333 746.667h85.333v85.333h-85.333v-85.333zM896 64c47.147 0 85.333 38.187 85.333 85.333h-85.333v-85.333zM896 405.333h85.333v85.333h-85.333v-85.333zM554.667 64h85.333v85.333h-85.333v-85.333zM725.333 64h85.333v85.333h-85.333v-85.333z" />
<glyph unicode="&#xe681;" d="M768 832v-85.333h-85.333v85.333h-341.333v-85.333h-85.333v85.333h-85.333v-768h85.333v85.333h85.333v-85.333h341.333v85.333h85.333v-85.333h85.333v768h-85.333zM341.333 234.667h-85.333v85.333h85.333v-85.333zM341.333 405.333h-85.333v85.333h85.333v-85.333zM341.333 576h-85.333v85.333h85.333v-85.333zM768 234.667h-85.333v85.333h85.333v-85.333zM768 405.333h-85.333v85.333h85.333v-85.333zM768 576h-85.333v85.333h85.333v-85.333z" />
<glyph unicode="&#xe682;" d="M640 832h-384c-35.413 0-65.707-21.547-78.507-52.053l-128.64-300.8c-3.84-9.813-6.187-20.267-6.187-31.147v-81.707l0.427-0.427-0.427-3.2c0-47.147 38.187-85.333 85.333-85.333h269.44l-40.747-194.987c-0.853-4.267-1.493-8.747-1.493-13.44 0-17.707 7.253-33.707 18.773-45.227l45.44-45.013 280.96 280.96c15.36 15.573 24.96 36.907 24.96 60.373v426.667c0 47.147-38.187 85.333-85.333 85.333zM810.667 832v-512h170.667v512h-170.667z" />
<glyph unicode="&#xe683;" d="M512 704c0 23.467-19.2 42.667-42.667 42.667h-221.227l28.373 135.467c0.64 3.2 1.067 6.613 1.067 10.027 0 13.227-5.333 25.173-14.080 33.92l-33.92 33.92-210.773-210.773c-11.52-11.52-18.773-27.52-18.773-45.227v-277.333c0-35.413 28.587-64 64-64h288c26.453 0 49.28 16 58.88 39.040l96.64 225.707c2.773 7.253 4.48 14.933 4.48 23.253v53.333zM960 533.333h-288c-26.453 0-49.28-16-58.88-39.040l-96.64-225.707c-2.773-7.253-4.48-14.933-4.48-23.253v-53.333c0-23.467 19.2-42.667 42.667-42.667h221.227l-28.373-135.467c-0.64-3.2-1.067-6.613-1.067-10.027 0-13.227 5.333-25.173 14.080-33.92l33.92-33.92 210.773 210.773c11.52 11.52 18.773 27.52 18.773 45.227v277.333c0 35.413-28.587 64-64 64z" />
<glyph unicode="&#xe684;" d="M42.667 64h170.667v512h-170.667v-512zM981.333 533.333c0 47.147-38.187 85.333-85.333 85.333h-269.44l40.747 194.987c0.853 4.267 1.493 8.747 1.493 13.44 0 17.707-7.253 33.707-18.773 45.227l-45.44 45.013-280.96-280.96c-15.36-15.573-24.96-36.907-24.96-60.373v-426.667c0-47.147 38.187-85.333 85.333-85.333h384c35.413 0 65.707 21.547 78.507 52.053l128.64 300.8c3.84 9.813 6.187 20.267 6.187 31.147v81.707l-0.427 0.427 0.427 3.2z" />
<glyph unicode="&#xe685;" d="M128 576h597.333v85.333h-597.333v-85.333zM128 405.333h597.333v85.333h-597.333v-85.333zM128 234.667h597.333v85.333h-597.333v-85.333zM810.667 234.667h85.333v85.333h-85.333v-85.333zM810.667 661.333v-85.333h85.333v85.333h-85.333zM810.667 405.333h85.333v85.333h-85.333v-85.333z" />
<glyph unicode="&#xe686;" d="M810.667 832h-42.667v85.333h-85.333v-85.333h-341.333v85.333h-85.333v-85.333h-42.667c-47.147 0-84.907-38.187-84.907-85.333l-0.427-597.333c0-47.147 38.187-85.333 85.333-85.333h597.333c47.147 0 85.333 38.187 85.333 85.333v597.333c0 47.147-38.187 85.333-85.333 85.333zM810.667 149.333h-597.333v469.333h597.333v-469.333zM298.667 533.333h213.333v-213.333h-213.333z" />
<glyph unicode="&#xe687;" d="M813.653 749.653l-60.373-60.373c61.867-61.653 100.053-146.987 100.053-241.28 0-188.587-152.747-341.333-341.333-341.333s-341.333 152.747-341.333 341.333c0 174.080 130.347 317.44 298.667 338.347v-86.187c-120.96-20.267-213.333-125.44-213.333-252.16 0-141.44 114.56-256 256-256s256 114.56 256 256c0 70.613-28.587 134.613-74.88 181.12l-60.373-60.373c30.72-30.933 49.92-73.6 49.92-120.747 0-94.293-76.373-170.667-170.667-170.667s-170.667 76.373-170.667 170.667c0 79.36 54.613 145.707 128 164.693v-91.093c-25.387-14.72-42.667-42.027-42.667-73.6 0-47.147 38.187-85.333 85.333-85.333s85.333 38.187 85.333 85.333c0 31.573-17.28 58.667-42.667 73.6v353.067h-42.667c-235.733 0-426.667-190.933-426.667-426.667 0-235.52 190.933-426.667 426.667-426.667 235.52 0 426.667 191.147 426.667 426.667 0 117.76-47.787 224.427-125.013 301.653z" />
<glyph unicode="&#xe688;" d="M549.12 316.8l-108.373 107.093 1.28 1.28c74.24 82.773 127.147 177.92 158.293 278.613h125.013v85.547h-298.667v85.333h-85.333v-85.333h-298.667v-84.907h476.587c-28.8-82.347-73.813-160.427-135.253-228.693-39.68 44.16-72.533 92.16-98.56 142.933h-85.333c31.147-69.547 73.813-135.253 127.147-194.56l-216.96-214.4 60.373-60.373 213.333 213.333 132.693-132.693 32.427 86.827zM789.333 533.333h-85.333l-192-512h85.333l48 128h202.667l48-128h85.333l-192 512zM677.333 234.667l69.333 184.96 69.333-184.96h-138.667z" />
<glyph unicode="&#xe689;" d="M682.667 192l97.92 97.92-208.213 208-170.667-170.667-316.373 316.373 60.373 60.373 256-256 170.667 170.667 268.373-268.587 97.92 97.92v-256z" />
<glyph unicode="&#xe68a;" d="M938.667 448l-170.667 170.667v-128h-640v-85.333h640v-128z" />
<glyph unicode="&#xe68b;" d="M682.667 704l97.92-97.92-208.213-208-170.667 170.667-316.373-316.373 60.373-60.373 256 256 170.667-170.667 268.373 268.587 97.92-97.92v256z" />
<glyph unicode="&#xe68c;" d="M725.333 832h-426.667c-47.147 0-84.907-38.187-84.907-85.333l-0.427-682.667 298.667 128 298.667-128v682.667c0 47.147-38.187 85.333-85.333 85.333z" />
<glyph unicode="&#xe68d;" d="M725.333 832h-426.667c-47.147 0-84.907-38.187-84.907-85.333l-0.427-682.667 298.667 128 298.667-128v682.667c0 47.147-38.187 85.333-85.333 85.333zM725.333 192l-213.333 92.8-213.333-92.8v554.667h426.667v-554.667z" />
<glyph unicode="&#xe68e;" d="M512 917.333l-384-170.667v-256c0-237.013 163.627-458.027 384-512 220.373 53.973 384 274.987 384 512v256l-384 170.667zM426.667 234.667l-170.667 170.667 60.373 60.373 110.293-110.293 280.96 280.96 60.373-60.373-341.333-341.333z" />
<glyph unicode="&#xe68f;" d="M853.333 405.333h-725.333c-23.467 0-42.667-19.2-42.667-42.667v-256c0-23.467 19.2-42.667 42.667-42.667h725.333c23.467 0 42.667 19.2 42.667 42.667v256c0 23.467-19.2 42.667-42.667 42.667zM853.333 832h-725.333c-23.467 0-42.667-19.2-42.667-42.667v-256c0-23.467 19.2-42.667 42.667-42.667h725.333c23.467 0 42.667 19.2 42.667 42.667v256c0 23.467-19.2 42.667-42.667 42.667z" />
<glyph unicode="&#xe690;" d="M170.667 192h128v554.667h-128v-554.667zM768 746.667v-554.667h128v554.667h-128zM341.333 192h384v554.667h-384v-554.667z" />
<glyph unicode="&#xe691;" d="M298.667 149.333h426.667v640h-426.667v-640zM85.333 234.667h170.667v469.333h-170.667v-469.333zM768 704v-469.333h170.667v469.333h-170.667z" />
<glyph unicode="&#xe692;" d="M426.667 192h213.333v554.667h-213.333v-554.667zM170.667 192h213.333v554.667h-213.333v-554.667zM682.667 746.667v-554.667h213.333v554.667h-213.333z" />
<glyph unicode="&#xe693;" d="M85.333 64h810.667v128h-810.667v-128zM853.333 618.667h-725.333c-23.467 0-42.667-19.2-42.667-42.667v-256c0-23.467 19.2-42.667 42.667-42.667h725.333c23.467 0 42.667 19.2 42.667 42.667v256c0 23.467-19.2 42.667-42.667 42.667zM85.333 832v-128h810.667v128h-810.667z" />
<glyph unicode="&#xe694;" d="M170.667 320h725.333v85.333h-725.333v-85.333zM170.667 149.333h725.333v85.333h-725.333v-85.333zM170.667 490.667h725.333v85.333h-725.333v-85.333zM170.667 746.667v-85.333h725.333v85.333h-725.333z" />
<glyph unicode="&#xe695;" d="M170.667 362.667h170.667v170.667h-170.667v-170.667zM170.667 149.333h170.667v170.667h-170.667v-170.667zM170.667 576h170.667v170.667h-170.667v-170.667zM384 362.667h512v170.667h-512v-170.667zM384 149.333h512v170.667h-512v-170.667zM384 746.667v-170.667h512v170.667h-512z" />
<glyph unicode="&#xe696;" d="M170.667 490.667h213.333v256h-213.333v-256zM170.667 192h213.333v256h-213.333v-256zM426.667 192h213.333v256h-213.333v-256zM682.667 192h213.333v256h-213.333v-256zM426.667 490.667h213.333v256h-213.333v-256zM682.667 746.667v-256h213.333v256h-213.333z" />
<glyph unicode="&#xe697;" d="M426.667 192h213.333v256h-213.333v-256zM170.667 192h213.333v554.667h-213.333v-554.667zM682.667 192h213.333v256h-213.333v-256zM426.667 746.667v-256h469.333v256h-469.333z" />
<glyph unicode="&#xe698;" d="M170.667 192h725.333v256h-725.333v-256zM170.667 746.667v-256h725.333v256h-725.333z" />
<glyph unicode="&#xe699;" d="M256 746.667h-128c-23.467 0-42.667-19.2-42.667-42.667v-512c0-23.467 19.2-42.667 42.667-42.667h128c23.467 0 42.667 19.2 42.667 42.667v512c0 23.467-19.2 42.667-42.667 42.667zM853.333 746.667h-128c-23.467 0-42.667-19.2-42.667-42.667v-512c0-23.467 19.2-42.667 42.667-42.667h128c23.467 0 42.667 19.2 42.667 42.667v512c0 23.467-19.2 42.667-42.667 42.667zM554.667 746.667h-128c-23.467 0-42.667-19.2-42.667-42.667v-512c0-23.467 19.2-42.667 42.667-42.667h128c23.467 0 42.667 19.2 42.667 42.667v512c0 23.467-19.2 42.667-42.667 42.667z" />
<glyph unicode="&#xe69a;" d="M512 768c-213.333 0-395.52-132.693-469.333-320 73.813-187.307 256-320 469.333-320 213.547 0 395.52 132.693 469.333 320-73.813 187.307-255.787 320-469.333 320zM512 234.667c-117.76 0-213.333 95.573-213.333 213.333s95.573 213.333 213.333 213.333 213.333-95.573 213.333-213.333-95.573-213.333-213.333-213.333zM512 576c-70.613 0-128-57.387-128-128s57.387-128 128-128 128 57.387 128 128-57.387 128-128 128z" />
<glyph unicode="&#xe69b;" d="M512 661.333c117.76 0 213.333-95.573 213.333-213.333 0-27.52-5.547-53.76-15.147-77.867l124.8-124.8c64.427 53.76 115.2 123.307 146.56 202.667-74.027 187.307-256 320-469.547 320-59.733 0-116.907-10.667-170.027-29.867l92.16-91.947c24.107 9.387 50.347 15.147 77.867 15.147zM85.333 777.6l116.693-116.693c-70.4-55.040-126.080-128.213-159.36-212.907 73.813-187.307 256-320 469.333-320 66.133 0 129.28 12.8 187.093 36.053l18.133-18.133 124.373-124.587 54.4 54.187-756.267 756.48-54.4-54.4zM321.28 541.867l65.92-65.92c-1.92-9.173-3.2-18.347-3.2-27.947 0-70.613 57.387-128 128-128 9.6 0 18.773 1.28 27.733 3.2l65.92-65.92c-28.373-14.080-59.947-22.613-93.653-22.613-117.76 0-213.333 95.573-213.333 213.333 0 33.707 8.533 65.28 22.613 93.867zM504.96 575.36l134.4-134.4 0.64 7.040c0 70.613-57.387 128-128 128l-7.040-0.64z" />
<glyph unicode="&#xe69c;" d="M853.333 704h-93.227c4.693 13.44 7.893 27.733 7.893 42.667 0 70.613-57.387 128-128 128-44.587 0-83.84-22.827-106.667-57.387l-21.333-29.013-21.333 29.013c-22.827 34.56-62.080 57.387-106.667 57.387-70.613 0-128-57.387-128-128 0-14.933 2.987-29.227 7.893-42.667h-93.227c-47.147 0-84.907-38.187-84.907-85.333l-0.427-469.333c0-47.147 38.187-85.333 85.333-85.333h682.667c47.147 0 85.333 38.187 85.333 85.333v469.333c0 47.147-38.187 85.333-85.333 85.333zM640 789.333c23.467 0 42.667-19.2 42.667-42.667s-19.2-42.667-42.667-42.667-42.667 19.2-42.667 42.667 19.2 42.667 42.667 42.667zM384 789.333c23.467 0 42.667-19.2 42.667-42.667s-19.2-42.667-42.667-42.667-42.667 19.2-42.667 42.667 19.2 42.667 42.667 42.667zM853.333 149.333h-682.667v85.333h682.667v-85.333zM853.333 362.667h-682.667v256h216.747l-88.747-120.96 69.333-49.707 144 196.053 42.667-58.027 101.333-138.027 69.333 49.707-88.747 120.96h216.747v-256z" />
<glyph unicode="&#xe69d;" d="M853.333 874.667h-682.667c-47.147 0-85.333-38.187-85.333-85.333v-469.333c0-47.147 38.187-85.333 85.333-85.333h170.667v-213.333l170.667 85.333 170.667-85.333v213.333h170.667c47.147 0 85.333 38.187 85.333 85.333v469.333c0 47.147-38.187 85.333-85.333 85.333zM853.333 320h-682.667v85.333h682.667v-85.333zM853.333 533.333h-682.667v256h682.667v-256z" />
<glyph unicode="&#xe69e;" d="M853.333 704h-128v85.333c0 47.147-38.187 85.333-85.333 85.333h-256c-47.147 0-85.333-38.187-85.333-85.333v-85.333h-128c-47.147 0-85.333-38.187-85.333-85.333v-469.333c0-47.147 38.187-85.333 85.333-85.333h682.667c47.147 0 85.333 38.187 85.333 85.333v469.333c0 47.147-38.187 85.333-85.333 85.333zM384 789.333h256v-85.333h-256v85.333zM853.333 149.333h-682.667v85.333h682.667v-85.333zM853.333 362.667h-682.667v256h128v-85.333h85.333v85.333h256v-85.333h85.333v85.333h128v-256z" />
<glyph unicode="&#xe69f;" d="M1024 960v-1024h-1024v1024h1024zM1045.333 981.333h-1066.667v-1066.667h1066.667v1066.667zM853.333 704h-170.667v85.333c0 47.147-38.187 85.333-85.333 85.333h-170.667c-47.147 0-85.333-38.187-85.333-85.333v-85.333h-170.667c-47.147 0-84.907-38.187-84.907-85.333l-0.427-469.333c0-47.147 38.187-85.333 85.333-85.333h682.667c47.147 0 85.333 38.187 85.333 85.333v469.333c0 47.147-38.187 85.333-85.333 85.333zM597.333 704h-170.667v85.333h170.667v-85.333z" />
<glyph unicode="&#xe6a0;" d="M512 874.667c-235.52 0-426.667-190.933-426.667-426.667s191.147-426.667 426.667-426.667 426.667 190.933 426.667 426.667-191.147 426.667-426.667 426.667zM554.667 234.667h-85.333v85.333h85.333v-85.333zM554.667 405.333h-85.333v256h85.333v-256z" />
<glyph unicode="&#xe6a1;" d="M42.667 64h938.667l-469.333 810.667-469.333-810.667zM554.667 192h-85.333v85.333h85.333v-85.333zM554.667 362.667h-85.333v170.667h85.333v-170.667z" />
<glyph unicode="&#xe6a2;" d="M512 874.667c-235.733 0-426.667-190.933-426.667-426.667s190.933-426.667 426.667-426.667 426.667 190.933 426.667 426.667-190.933 426.667-426.667 426.667zM512 256c-106.027 0-192 85.973-192 192s85.973 192 192 192 192-85.973 192-192-85.973-192-192-192zM512 490.667c-23.467 0-42.667-19.2-42.667-42.667s19.2-42.667 42.667-42.667 42.667 19.2 42.667 42.667-19.2 42.667-42.667 42.667z" />
<glyph unicode="&#xe6a3;" d="M469.333 234.667c0-23.467 19.2-42.667 42.667-42.667s42.667 19.2 42.667 42.667-19.2 42.667-42.667 42.667-42.667-19.2-42.667-42.667zM469.333 832v-170.667h85.333v81.92c144.64-20.693 256-144.853 256-295.253 0-164.907-133.76-298.667-298.667-298.667s-298.667 133.76-298.667 298.667c0 71.68 25.173 137.173 67.2 188.8l231.467-231.467 60.373 60.373-290.133 290.133-0.427-0.853c-93.227-69.973-153.813-181.333-153.813-306.987 0-212.053 171.52-384 383.787-384s384.213 171.947 384.213 384-171.947 384-384.213 384h-42.453zM768 448c0 23.467-19.2 42.667-42.667 42.667s-42.667-19.2-42.667-42.667 19.2-42.667 42.667-42.667 42.667 19.2 42.667 42.667zM256 448c0-23.467 19.2-42.667 42.667-42.667s42.667 19.2 42.667 42.667-19.2 42.667-42.667 42.667-42.667-19.2-42.667-42.667z" />
<glyph unicode="&#xe6a4;" d="M810.667 789.333h-597.333c-47.147 0-85.333-38.187-85.333-85.333v-512c0-47.147 38.187-85.333 85.333-85.333h597.333c47.147 0 85.333 38.187 85.333 85.333v512c0 47.147-38.187 85.333-85.333 85.333zM469.333 490.667h-64v21.333h-85.333v-128h85.333v21.333h64v-42.667c0-23.467-18.987-42.667-42.667-42.667h-128c-23.68 0-42.667 19.2-42.667 42.667v170.667c0 23.467 18.987 42.667 42.667 42.667h128c23.68 0 42.667-19.2 42.667-42.667v-42.667zM768 490.667h-64v21.333h-85.333v-128h85.333v21.333h64v-42.667c0-23.467-18.987-42.667-42.667-42.667h-128c-23.68 0-42.667 19.2-42.667 42.667v170.667c0 23.467 18.987 42.667 42.667 42.667h128c23.68 0 42.667-19.2 42.667-42.667v-42.667z" />
<glyph unicode="&#xe6a5;" d="M426.667 106.667h170.667v682.667h-170.667v-682.667zM170.667 106.667h170.667v341.333h-170.667v-341.333zM682.667 576v-469.333h170.667v469.333h-170.667z" />
<glyph unicode="&#xe6a6;" d="M810.667 832h-597.333c-47.147 0-85.333-38.187-85.333-85.333v-597.333c0-47.147 38.187-85.333 85.333-85.333h597.333c47.147 0 85.333 38.187 85.333 85.333v597.333c0 47.147-38.187 85.333-85.333 85.333zM640 576h-170.667v-85.333h170.667v-85.333h-170.667v-85.333h170.667v-85.333h-256v426.667h256v-85.333z" />
<glyph unicode="&#xe6a7;" d="M170.667 192l362.667 256-362.667 256v-512zM554.667 704v-512l362.667 256-362.667 256z" />
<glyph unicode="&#xe6a8;" d="M469.333 192v512l-362.667-256 362.667-256zM490.667 448l362.667-256v512l-362.667-256z" />
<glyph unicode="&#xe6a9;" d="M640 640v234.667h-256v-234.667l128-128 128 128zM320 576h-234.667v-256h234.667l128 128-128 128zM384 256v-234.667h256v234.667l-128 128-128-128zM704 576l-128-128 128-128h234.667v256h-234.667z" />
<glyph unicode="&#xe6aa;" d="M725.333 106.667c-12.16 0-24.107 2.56-32.64 6.4-30.080 16-51.84 37.76-72.96 101.76-21.973 66.347-62.72 97.707-102.187 128.213-33.707 26.027-68.693 52.907-98.773 107.733-22.4 40.96-34.773 85.547-34.773 125.227 0 119.68 93.653 213.333 213.333 213.333s213.333-93.653 213.333-213.333h85.333c0 167.467-131.2 298.667-298.667 298.667s-298.667-131.2-298.667-298.667c0-53.973 16.213-113.067 45.44-166.4 38.827-70.613 84.693-105.813 121.6-134.4 34.56-26.667 59.52-45.867 73.173-87.253 25.6-77.44 58.667-121.173 116.267-151.467 22.187-10.027 45.653-15.147 70.187-15.147 94.080 0 170.667 76.587 170.667 170.667h-85.333c0-47.147-38.187-85.333-85.333-85.333zM325.76 847.573l-60.373 60.373c-84.907-84.907-137.387-202.24-137.387-331.947s52.48-247.040 137.387-331.947l60.373 60.373c-69.547 69.547-112.427 165.547-112.427 271.573s42.88 202.027 112.427 271.573zM490.667 576c0-58.88 47.787-106.667 106.667-106.667s106.667 47.787 106.667 106.667-47.787 106.667-106.667 106.667-106.667-47.787-106.667-106.667z" />
<glyph unicode="&#xe6ab;" d="M810.667 789.333h-597.333c-47.147 0-85.333-38.187-85.333-85.333v-512c0-47.147 38.187-85.333 85.333-85.333h597.333c47.147 0 85.333 38.187 85.333 85.333v512c0 47.147-38.187 85.333-85.333 85.333zM469.333 320h-64v85.333h-85.333v-85.333h-64v256h64v-106.667h85.333v106.667h64v-256zM768 362.667c0-23.467-18.987-42.667-42.667-42.667h-32v-64h-64v64h-32c-23.68 0-42.667 19.2-42.667 42.667v170.667c0 23.467 18.987 42.667 42.667 42.667h128c23.68 0 42.667-19.2 42.667-42.667v-170.667zM618.667 384h85.333v128h-85.333v-128z" />
<glyph unicode="&#xe6ac;" d="M512 789.333v128l-170.667-170.667 170.667-170.667v128c141.44 0 256-114.56 256-256 0-43.307-10.88-83.84-29.653-119.68l62.293-62.293c33.067 52.907 52.693 114.987 52.693 181.973 0 188.587-152.747 341.333-341.333 341.333zM512 192c-141.44 0-256 114.56-256 256 0 43.307 10.88 83.84 29.653 119.68l-62.293 62.293c-33.067-52.907-52.693-114.987-52.693-181.973 0-188.587 152.747-341.333 341.333-341.333v-128l170.667 170.667-170.667 170.667v-128z" />
<glyph unicode="&#xe6ad;" d="M512 362.667c70.613 0 127.573 57.387 127.573 128l0.427 256c0 70.827-57.173 128-128 128-70.613 0-128-57.173-128-128v-256c0-70.613 57.387-128 128-128zM738.133 490.667c0-128-108.16-217.6-226.133-217.6-117.76 0-226.133 89.6-226.133 217.6h-72.533c0-145.707 116.053-266.027 256-286.72v-139.947h85.333v139.947c139.947 20.693 256 141.013 256 286.72h-72.533z" />
<glyph unicode="&#xe6ae;" d="M512 362.667c70.613 0 127.573 57.387 127.573 128l0.427 256c0 70.827-57.173 128-128 128-70.613 0-128-57.173-128-128v-256c0-70.613 57.387-128 128-128zM460.8 750.933c0 28.16 23.040 51.2 51.2 51.2s51.2-23.040 51.2-51.2l-0.427-264.533c0-28.16-22.827-51.2-50.773-51.2-28.16 0-51.2 23.040-51.2 51.2v264.533zM738.133 490.667c0-128-108.16-217.6-226.133-217.6-117.76 0-226.133 89.6-226.133 217.6h-72.533c0-145.707 116.053-266.027 256-286.72v-139.947h85.333v139.947c139.947 20.693 256 141.013 256 286.72h-72.533z" />
<glyph unicode="&#xe6af;" d="M810.667 490.667h-72.533c0-31.787-6.613-61.227-18.56-87.467l52.48-52.48c24.32 41.6 38.613 89.173 38.613 139.947zM639.36 483.627c0 2.347 0.64 4.693 0.64 7.040v256c0 70.827-57.387 128-128 128s-128-57.173-128-128v-7.893l255.36-255.147zM182.4 832l-54.4-54.4 256.427-256.427v-30.72c0-70.613 56.96-128 127.573-128 9.6 0 18.773 1.28 27.733 3.2l70.827-70.827c-30.507-14.080-64-21.973-98.56-21.973-117.76 0-226.133 89.6-226.133 217.6h-72.533c0-145.707 116.053-266.027 256-286.72v-139.733h85.333v139.947c38.613 5.76 75.307 19.2 108.373 38.613l178.56-178.56 54.4 54.187-713.6 713.813z" />
<glyph unicode="&#xe6b0;" d="M768 789.333l85.333-170.667h-128l-85.333 170.667h-85.333l85.333-170.667h-128l-85.333 170.667h-85.333l85.333-170.667h-128l-85.333 170.667h-42.667c-47.147 0-84.907-38.187-84.907-85.333l-0.427-512c0-47.147 38.187-85.333 85.333-85.333h682.667c47.147 0 85.333 38.187 85.333 85.333v597.333h-170.667z" />
<glyph unicode="&#xe6b1;" d="M170.667 704h-85.333v-597.333c0-47.147 38.187-85.333 85.333-85.333h597.333v85.333h-597.333v597.333zM853.333 874.667h-512c-47.147 0-85.333-38.187-85.333-85.333v-512c0-47.147 38.187-85.333 85.333-85.333h512c47.147 0 85.333 38.187 85.333 85.333v512c0 47.147-38.187 85.333-85.333 85.333zM810.667 490.667h-170.667v-170.667h-85.333v170.667h-170.667v85.333h170.667v170.667h85.333v-170.667h170.667v-85.333z" />
<glyph unicode="&#xe6b2;" d="M170.667 704h-85.333v-597.333c0-47.147 38.187-85.333 85.333-85.333h597.333v85.333h-597.333v597.333zM853.333 874.667h-512c-47.147 0-85.333-38.187-85.333-85.333v-512c0-47.147 38.187-85.333 85.333-85.333h512c47.147 0 85.333 38.187 85.333 85.333v512c0 47.147-38.187 85.333-85.333 85.333zM810.667 490.667h-426.667v85.333h426.667v-85.333zM640 320h-256v85.333h256v-85.333zM810.667 661.333h-426.667v85.333h426.667v-85.333z" />
<glyph unicode="&#xe6b3;" d="M853.333 874.667h-512c-47.147 0-85.333-38.187-85.333-85.333v-512c0-47.147 38.187-85.333 85.333-85.333h512c47.147 0 85.333 38.187 85.333 85.333v512c0 47.147-38.187 85.333-85.333 85.333zM768 661.333h-128v-234.667c0-58.88-47.787-106.667-106.667-106.667s-106.667 47.787-106.667 106.667 47.787 106.667 106.667 106.667c24.107 0 46.080-8.32 64-21.76v235.093h170.667v-85.333zM170.667 704h-85.333v-597.333c0-47.147 38.187-85.333 85.333-85.333h597.333v85.333h-597.333v597.333z" />
<glyph unicode="&#xe6b4;" d="M981.333 448l-104.107 118.613 14.507 157.227-154.027 34.773-80.64 135.68-145.067-62.293-145.067 62.293-80.64-135.68-154.027-34.773 14.507-157.227-104.107-118.613 104.107-118.613-14.507-157.227 154.027-34.773 80.64-135.68 145.067 62.293 145.067-62.293 80.64 135.68 154.027 34.773-14.507 157.227 104.107 118.613zM554.667 234.667h-85.333v85.333h85.333v-85.333zM554.667 405.333h-85.333v256h85.333v-256z" />
<glyph unicode="&#xe6b5;" d="M512 874.667c-235.733 0-426.667-190.933-426.667-426.667s190.933-426.667 426.667-426.667 426.667 190.933 426.667 426.667-190.933 426.667-426.667 426.667zM512 106.667c-188.587 0-341.333 152.747-341.333 341.333 0 78.933 27.093 151.253 71.893 209.067l478.507-478.507c-57.813-44.8-130.133-71.893-209.067-71.893zM781.44 238.933l-478.507 478.507c57.813 44.8 130.133 71.893 209.067 71.893 188.587 0 341.333-152.747 341.333-341.333 0-78.933-27.093-151.253-71.893-209.067z" />
<glyph unicode="&#xe6b6;" d="M256 149.333h170.667v597.333h-170.667v-597.333zM597.333 746.667v-597.333h170.667v597.333h-170.667z" />
<glyph unicode="&#xe6b7;" d="M512 874.667c-235.733 0-426.667-190.933-426.667-426.667s190.933-426.667 426.667-426.667 426.667 190.933 426.667 426.667-190.933 426.667-426.667 426.667zM469.333 277.333h-85.333v341.333h85.333v-341.333zM640 277.333h-85.333v341.333h85.333v-341.333z" />
<glyph unicode="&#xe6b8;" d="M384 277.333h85.333v341.333h-85.333v-341.333zM512 874.667c-235.733 0-426.667-190.933-426.667-426.667s190.933-426.667 426.667-426.667 426.667 190.933 426.667 426.667-190.933 426.667-426.667 426.667zM512 106.667c-188.16 0-341.333 153.173-341.333 341.333s153.173 341.333 341.333 341.333 341.333-153.173 341.333-341.333-153.173-341.333-341.333-341.333zM554.667 277.333h85.333v341.333h-85.333v-341.333z" />
<glyph unicode="&#xe6b9;" d="M341.333 746.667v-597.333l469.333 298.667z" />
<glyph unicode="&#xe6ba;" d="M512 874.667c-235.733 0-426.667-190.933-426.667-426.667s190.933-426.667 426.667-426.667 426.667 190.933 426.667 426.667-190.933 426.667-426.667 426.667zM426.667 256v384l256-192-256-192z" />
<glyph unicode="&#xe6bb;" d="M426.667 256l256 192-256 192v-384zM512 874.667c-235.733 0-426.667-190.933-426.667-426.667s190.933-426.667 426.667-426.667 426.667 190.933 426.667 426.667-190.933 426.667-426.667 426.667zM512 106.667c-188.16 0-341.333 153.173-341.333 341.333s153.173 341.333 341.333 341.333 341.333-153.173 341.333-341.333-153.173-341.333-341.333-341.333z" />
<glyph unicode="&#xe6bc;" d="M597.333 533.333h-512v-85.333h512v85.333zM597.333 704h-512v-85.333h512v85.333zM768 362.667v170.667h-85.333v-170.667h-170.667v-85.333h170.667v-170.667h85.333v170.667h170.667v85.333h-170.667zM85.333 277.333h341.333v85.333h-341.333v-85.333z" />
<glyph unicode="&#xe6bd;" d="M682.667 704v85.333c0 47.147-38.187 85.333-85.333 85.333h-170.667c-47.147 0-85.333-38.187-85.333-85.333v-85.333h-256v-554.667c0-47.147 38.187-85.333 85.333-85.333h682.667c47.147 0 85.333 38.187 85.333 85.333v554.667h-256zM426.667 789.333h170.667v-85.333h-170.667v85.333zM384 192v384l320-170.667-320-213.333z" />
<glyph unicode="&#xe6be;" d="M170.667 704h-85.333v-597.333c0-47.147 38.187-85.333 85.333-85.333h597.333v85.333h-597.333v597.333zM853.333 874.667h-512c-47.147 0-85.333-38.187-85.333-85.333v-512c0-47.147 38.187-85.333 85.333-85.333h512c47.147 0 85.333 38.187 85.333 85.333v512c0 47.147-38.187 85.333-85.333 85.333zM810.667 490.667h-170.667v-170.667h-85.333v170.667h-170.667v85.333h170.667v170.667h85.333v-170.667h170.667v-85.333z" />
<glyph unicode="&#xe6bf;" d="M640 704h-512v-85.333h512v85.333zM640 533.333h-512v-85.333h512v85.333zM128 277.333h341.333v85.333h-341.333v-85.333zM725.333 704v-349.227c-13.44 4.907-27.52 7.893-42.667 7.893-70.613 0-128-57.387-128-128s57.387-128 128-128 128 57.387 128 128v384h128v85.333h-213.333z" />
<glyph unicode="&#xe6c0;" d="M138.027 697.6c-30.933-12.16-52.693-43.307-52.693-78.933v-512c0-47.147 38.187-85.333 85.333-85.333h682.667c47.147 0 85.333 38.187 85.333 85.333v512c0 47.147-38.187 85.333-85.333 85.333h-498.987l352.64 142.293-29.44 71.040-539.52-219.733zM298.667 106.667c-70.613 0-128 57.387-128 128s57.387 128 128 128 128-57.387 128-128-57.387-128-128-128zM853.333 448h-85.333v85.333h-85.333v-85.333h-512v170.667h682.667v-170.667z" />
<glyph unicode="&#xe6c1;" d="M896 746.667v-597.333h85.333v597.333h-85.333zM725.333 149.333h85.333v597.333h-85.333v-597.333zM597.333 746.667h-512c-23.467 0-42.667-19.2-42.667-42.667v-512c0-23.467 19.2-42.667 42.667-42.667h512c23.467 0 42.667 19.2 42.667 42.667v512c0 23.467-19.2 42.667-42.667 42.667zM341.333 629.333c52.907 0 96-43.093 96-96 0-53.12-43.093-96-96-96s-96 42.88-96 96c0 52.907 43.093 96 96 96zM533.333 234.667h-384v32c0 64 128 96 192 96s192-32 192-96v-32z" />
<glyph unicode="&#xe6c2;" d="M298.667 661.333h426.667v-128l170.667 170.667-170.667 170.667v-128h-512v-256h85.333v170.667zM725.333 234.667h-426.667v128l-170.667-170.667 170.667-170.667v128h512v256h-85.333v-170.667z" />
<glyph unicode="&#xe6c3;" d="M298.667 661.333h426.667v-128l170.667 170.667-170.667 170.667v-128h-512v-256h85.333v170.667zM725.333 234.667h-426.667v128l-170.667-170.667 170.667-170.667v128h512v256h-85.333v-170.667zM554.667 320v256h-42.667l-85.333-42.667v-42.667h64v-170.667h64z" />
<glyph unicode="&#xe6c4;" d="M512 746.667v170.667l-213.333-213.333 213.333-213.333v170.667c141.44 0 256-114.56 256-256s-114.56-256-256-256-256 114.56-256 256h-85.333c0-188.587 152.747-341.333 341.333-341.333s341.333 152.747 341.333 341.333-152.747 341.333-341.333 341.333z" />
<glyph unicode="&#xe6c5;" d="M451.627 568.747l-220.587 220.587-60.373-60.373 220.587-220.587 60.373 60.373zM618.667 789.333l87.253-87.253-535.253-535.040 60.373-60.373 535.253 535.253 87.040-87.253v234.667h-234.667zM632.747 387.627l-60.373-60.373 133.547-133.547-87.253-87.040h234.667v234.667l-87.253-87.253-133.333 133.547z" />
<glyph unicode="&#xe6c6;" d="M256 192l362.667 256-362.667 256v-512zM682.667 704v-512h85.333v512h-85.333z" />
<glyph unicode="&#xe6c7;" d="M256 704h85.333v-512h-85.333zM405.333 448l362.667-256v512z" />
<glyph unicode="&#xe6c8;" d="M336.213 815.36l-54.827 65.28-196.053-164.48 54.827-65.28 196.053 164.48zM938.667 715.947l-196.053 164.48-54.827-65.28 196.053-164.48 54.827 65.28zM511.787 789.333c-212.267 0-383.787-171.947-383.787-384s171.52-384 383.787-384 384.213 171.947 384.213 384-171.947 384-384.213 384zM512 106.667c-164.907 0-298.667 133.76-298.667 298.667s133.76 298.667 298.667 298.667 298.667-133.76 298.667-298.667-133.547-298.667-298.667-298.667zM384 490.667h154.667l-154.667-179.2v-76.8h256v85.333h-154.667l154.667 179.2v76.8h-256v-85.333z" />
<glyph unicode="&#xe6c9;" d="M256 704h512v-512h-512z" />
<glyph unicode="&#xe6ca;" d="M853.333 789.333h-682.667c-47.147 0-85.333-38.187-85.333-85.333v-512c0-47.147 38.187-85.333 85.333-85.333h682.667c47.147 0 85.333 38.187 85.333 85.333v512c0 47.147-38.187 85.333-85.333 85.333zM170.667 448h170.667v-85.333h-170.667v85.333zM597.333 192h-426.667v85.333h426.667v-85.333zM853.333 192h-170.667v85.333h170.667v-85.333zM853.333 362.667h-426.667v85.333h426.667v-85.333z" />
<glyph unicode="&#xe6cb;" d="M853.333 789.333h-682.667c-47.147 0-85.333-38.187-85.333-85.333v-512c0-47.147 38.187-85.333 85.333-85.333h682.667c47.147 0 85.333 38.187 85.333 85.333v512c0 47.147-38.187 85.333-85.333 85.333zM330.88 266.88l-60.373-60.373c-66.347 66.773-99.84 154.027-99.84 241.493s33.493 174.72 100.053 241.28l60.373-60.373c-49.92-49.707-75.093-115.413-75.093-180.907s24.96-131.2 74.88-181.12zM512 277.333c-94.293 0-170.667 76.373-170.667 170.667s76.373 170.667 170.667 170.667 170.667-76.373 170.667-170.667-76.373-170.667-170.667-170.667zM753.28 206.72l-60.373 60.373c50.133 49.707 75.093 115.413 75.093 180.907s-25.173 131.2-74.88 181.12l60.373 60.373c66.347-66.773 99.84-154.027 99.84-241.493s-33.493-174.72-100.053-241.28zM512 533.333c-47.147 0-85.333-38.187-85.333-85.333s38.187-85.333 85.333-85.333 85.333 38.187 85.333 85.333-38.187 85.333-85.333 85.333z" />
<glyph unicode="&#xe6cc;" d="M725.333 512v149.333c0 23.467-19.2 42.667-42.667 42.667h-512c-23.467 0-42.667-19.2-42.667-42.667v-426.667c0-23.467 19.2-42.667 42.667-42.667h512c23.467 0 42.667 19.2 42.667 42.667v149.333l170.667-170.667v469.333l-170.667-170.667z" />
<glyph unicode="&#xe6cd;" d="M896 682.667l-170.667-170.667v149.333c0 23.467-19.2 42.667-42.667 42.667h-263.68l477.013-477.013v455.68zM139.733 874.667l-54.4-54.4 116.267-116.267h-30.933c-23.467 0-42.667-19.2-42.667-42.667v-426.667c0-23.467 19.2-42.667 42.667-42.667h512c8.747 0 16.427 3.2 23.253 7.893l135.893-135.893 54.187 54.4-756.267 756.267z" />
<glyph unicode="&#xe6ce;" d="M170.667 704h-85.333v-597.333c0-47.147 38.187-85.333 85.333-85.333h597.333v85.333h-597.333v597.333zM853.333 874.667h-512c-47.147 0-85.333-38.187-85.333-85.333v-512c0-47.147 38.187-85.333 85.333-85.333h512c47.147 0 85.333 38.187 85.333 85.333v512c0 47.147-38.187 85.333-85.333 85.333zM512 341.333v384l256-192-256-192z" />
<glyph unicode="&#xe6cf;" d="M789.333 448c0 75.307-43.52 140.373-106.667 171.733v-343.68c63.147 31.573 106.667 96.64 106.667 171.947zM213.333 576v-256h170.667l213.333-213.333v682.667l-213.333-213.333h-170.667z" />
<glyph unicode="&#xe6d0;" d="M298.667 576v-256h170.667l213.333-213.333v682.667l-213.333-213.333h-170.667z" />
<glyph unicode="&#xe6d1;" d="M704 448c0 75.307-43.52 140.373-106.667 171.733v-94.293l104.747-104.747c1.28 8.96 1.92 18.133 1.92 27.307zM810.667 448c0-40.107-8.747-77.867-23.040-112.64l64.64-64.64c27.733 53.12 43.733 113.28 43.733 177.28 0 182.613-127.787 335.36-298.667 374.187v-88.107c123.307-36.693 213.333-150.827 213.333-286.080zM182.4 832l-54.4-54.4 201.6-201.6h-201.6v-256h170.667l213.333-213.333v286.933l181.547-181.547c-28.587-21.973-60.8-39.68-96.213-50.347v-88.107c58.667 13.44 112.213 40.32 157.227 77.227l87.040-86.827 54.4 54.4-713.6 713.6zM512 789.333l-89.173-89.173 89.173-89.173v178.347z" />
<glyph unicode="&#xe6d2;" d="M128 576v-256h170.667l213.333-213.333v682.667l-213.333-213.333h-170.667zM704 448c0 75.307-43.52 140.373-106.667 171.733v-343.68c63.147 31.573 106.667 96.64 106.667 171.947zM597.333 822.187v-88.107c123.307-36.693 213.333-150.827 213.333-286.080s-90.027-249.387-213.333-286.080v-88.107c170.88 38.827 298.667 191.36 298.667 374.187s-127.787 335.36-298.667 374.187z" />
<glyph unicode="&#xe6d3;" d="M853.333 789.333h-682.667c-47.147 0-84.907-38.187-84.907-85.333l-0.427-512c0-47.147 38.187-85.333 85.333-85.333h682.667c47.147 0 85.333 38.187 85.333 85.333v512c0 47.147-38.187 85.333-85.333 85.333zM640 192h-469.333v170.667h469.333v-170.667zM640 405.333h-469.333v170.667h469.333v-170.667zM853.333 192h-170.667v384h170.667v-384z" />
<glyph unicode="&#xe6d4;" d="M512 661.333v170.667h-426.667v-768h853.333v597.333h-426.667zM256 149.333h-85.333v85.333h85.333v-85.333zM256 320h-85.333v85.333h85.333v-85.333zM256 490.667h-85.333v85.333h85.333v-85.333zM256 661.333h-85.333v85.333h85.333v-85.333zM426.667 149.333h-85.333v85.333h85.333v-85.333zM426.667 320h-85.333v85.333h85.333v-85.333zM426.667 490.667h-85.333v85.333h85.333v-85.333zM426.667 661.333h-85.333v85.333h85.333v-85.333zM853.333 149.333h-341.333v85.333h85.333v85.333h-85.333v85.333h85.333v85.333h-85.333v85.333h341.333v-426.667zM768 490.667h-85.333v-85.333h85.333v85.333zM768 320h-85.333v-85.333h85.333v85.333z" />
<glyph unicode="&#xe6d5;" d="M282.667 499.413c61.44-120.747 160.213-219.52 281.173-280.96l93.867 94.080c11.733 11.733 28.587 15.147 43.307 10.453 47.787-15.787 99.2-24.32 152.32-24.32 23.68 0 42.667-18.987 42.667-42.667v-149.333c0-23.68-18.987-42.667-42.667-42.667-400.64 0-725.333 324.693-725.333 725.333 0 23.68 19.2 42.667 42.667 42.667h149.333c23.68 0 42.667-18.987 42.667-42.667 0-53.12 8.533-104.533 24.32-152.32 4.693-14.72 1.28-31.573-10.453-43.307l-93.867-94.293z" />
<glyph unicode="&#xe6d6;" d="M512 576c-68.48 0-134.4-10.667-196.267-30.72v-132.48c0-16.853-9.813-31.36-23.893-38.4-41.6-20.907-79.787-47.573-113.707-78.933-7.68-7.467-18.133-12.16-29.867-12.16s-22.4 4.693-30.080 12.587l-105.6 105.6c-7.893 7.893-12.587 18.56-12.587 30.293s4.693 22.4 12.587 30.293c129.92 123.52 305.92 199.253 499.413 199.253s369.493-75.733 499.413-199.253c7.893-7.68 12.587-18.56 12.587-30.293s-4.693-22.4-12.587-30.080l-105.6-105.6c-7.68-7.68-18.347-12.587-30.080-12.587-11.52 0-22.187 4.693-29.867 12.16-33.92 31.36-72.107 58.027-113.707 78.933-14.080 7.040-23.893 21.547-23.893 38.4v132.48c-61.867 19.84-127.787 30.507-196.267 30.507z" />
<glyph unicode="&#xe6d7;" d="M384 746.667v-85.333h280.96l-494.293-494.293 60.373-60.373 494.293 494.293v-280.96h85.333v426.667z" />
<glyph unicode="&#xe6d8;" d="M725.333 88.96l60.373 60.373-145.707 145.707-60.373-60.373 145.707-145.707zM320 618.667h149.333v-238.293l-231.040-231.040 60.373-60.373 256 256v273.707h149.333l-192 192-192-192z" />
<glyph unicode="&#xe6d9;" d="M835.627 661.333l-323.627-323.627-238.293 238.293h195.627v85.333h-341.333v-341.333h85.333v195.627l298.667-298.667 384 384z" />
<glyph unicode="&#xe6da;" d="M853.333 728.96l-60.373 60.373-494.293-494.293v280.96h-85.333v-426.667h426.667v85.333h-280.96z" />
<glyph unicode="&#xe6db;" d="M597.333 789.333l97.92-97.92-122.88-122.667 60.373-60.373 122.667 122.88 97.92-97.92v256zM426.667 789.333h-256v-256l97.92 97.92 200.747-200.96v-323.627h85.333v359.040l-225.92 225.707z" />
<glyph unicode="&#xe6dc;" d="M853.333 874.667h-682.667c-47.147 0-84.907-38.187-84.907-85.333l-0.427-768 170.667 170.667h597.333c47.147 0 85.333 38.187 85.333 85.333v512c0 47.147-38.187 85.333-85.333 85.333zM256 576h512v-85.333h-512v85.333zM597.333 362.667h-341.333v85.333h341.333v-85.333zM768 618.667h-512v85.333h512v-85.333z" />
<glyph unicode="&#xe6dd;" d="M213.333 405.333h597.333v85.333h-597.333v-85.333zM128 234.667h597.333v85.333h-597.333v-85.333zM298.667 661.333v-85.333h597.333v85.333h-597.333z" />
<glyph unicode="&#xe6de;" d="M938.24 789.333c0 47.147-37.76 85.333-84.907 85.333h-682.667c-47.147 0-85.333-38.187-85.333-85.333v-512c0-47.147 38.187-85.333 85.333-85.333h597.333l170.667-170.667-0.427 768zM768 362.667h-512v85.333h512v-85.333zM768 490.667h-512v85.333h512v-85.333zM768 618.667h-512v85.333h512v-85.333z" />
<glyph unicode="&#xe6df;" d="M853.333 960h-682.667v-85.333h682.667v85.333zM170.667-64h682.667v85.333h-682.667v-85.333zM853.333 789.333h-682.667c-47.147 0-85.333-38.187-85.333-85.333v-512c0-47.147 38.187-85.333 85.333-85.333h682.667c47.147 0 85.333 38.187 85.333 85.333v512c0 47.147-38.187 85.333-85.333 85.333zM512 672c52.907 0 96-43.093 96-96 0-53.12-43.093-96-96-96s-96 42.88-96 96c0 52.907 43.093 96 96 96zM725.333 234.667h-426.667v64c0 71.040 142.293 106.667 213.333 106.667s213.333-35.627 213.333-106.667v-64z" />
<glyph unicode="&#xe6e0;" d="M725.333 832h-42.667v-213.333h42.667v213.333zM640 746.667h-85.333v42.667h85.333v42.667h-128v-128h85.333v-42.667h-85.333v-42.667h128v128zM768 832v-213.333h42.667v85.333h85.333v128h-128zM853.333 746.667h-42.667v42.667h42.667v-42.667zM853.333 298.667c-53.12 0-104.32 8.533-152.32 24.32-14.72 4.693-31.573 1.28-43.307-10.453l-93.867-94.080c-120.747 61.44-219.52 160.213-281.173 280.96l93.867 94.080c11.733 11.733 15.147 28.587 10.453 43.307-15.787 48-24.32 99.413-24.32 152.533 0 23.68-18.987 42.667-42.667 42.667h-149.333c-23.68 0-42.667-18.987-42.667-42.667 0-400.64 324.693-725.333 725.333-725.333 23.68 0 42.667 18.987 42.667 42.667v149.333c0 23.68-18.987 42.667-42.667 42.667z" />
<glyph unicode="&#xe6e1;" d="M512 149.333c-47.147 0-85.333-38.187-85.333-85.333s38.187-85.333 85.333-85.333 85.333 38.187 85.333 85.333-38.187 85.333-85.333 85.333zM256 917.333c-47.147 0-85.333-38.187-85.333-85.333s38.187-85.333 85.333-85.333 85.333 38.187 85.333 85.333-38.187 85.333-85.333 85.333zM256 661.333c-47.147 0-85.333-38.187-85.333-85.333s38.187-85.333 85.333-85.333 85.333 38.187 85.333 85.333-38.187 85.333-85.333 85.333zM256 405.333c-47.147 0-85.333-38.187-85.333-85.333s38.187-85.333 85.333-85.333 85.333 38.187 85.333 85.333-38.187 85.333-85.333 85.333zM768 746.667c47.147 0 85.333 38.187 85.333 85.333s-38.187 85.333-85.333 85.333-85.333-38.187-85.333-85.333 38.187-85.333 85.333-85.333zM512 405.333c-47.147 0-85.333-38.187-85.333-85.333s38.187-85.333 85.333-85.333 85.333 38.187 85.333 85.333-38.187 85.333-85.333 85.333zM768 405.333c-47.147 0-85.333-38.187-85.333-85.333s38.187-85.333 85.333-85.333 85.333 38.187 85.333 85.333-38.187 85.333-85.333 85.333zM768 661.333c-47.147 0-85.333-38.187-85.333-85.333s38.187-85.333 85.333-85.333 85.333 38.187 85.333 85.333-38.187 85.333-85.333 85.333zM512 661.333c-47.147 0-85.333-38.187-85.333-85.333s38.187-85.333 85.333-85.333 85.333 38.187 85.333 85.333-38.187 85.333-85.333 85.333zM512 917.333c-47.147 0-85.333-38.187-85.333-85.333s38.187-85.333 85.333-85.333 85.333 38.187 85.333 85.333-38.187 85.333-85.333 85.333z" />
<glyph unicode="&#xe6e2;" d="M512 874.667c-235.733 0-426.667-190.933-426.667-426.667s190.933-426.667 426.667-426.667 426.667 190.933 426.667 426.667-190.933 426.667-426.667 426.667zM512 106.667c-188.587 0-341.333 152.747-341.333 341.333 0 78.933 27.093 151.253 71.893 209.067l478.507-478.507c-57.813-44.8-130.133-71.893-209.067-71.893zM781.44 238.933l-478.507 478.507c57.813 44.8 130.133 71.893 209.067 71.893 188.587 0 341.333-152.747 341.333-341.333 0-78.933-27.093-151.253-71.893-209.067z" />
<glyph unicode="&#xe6e3;" d="M853.333 789.333h-682.667c-47.147 0-84.907-38.187-84.907-85.333l-0.427-512c0-47.147 38.187-85.333 85.333-85.333h682.667c47.147 0 85.333 38.187 85.333 85.333v512c0 47.147-38.187 85.333-85.333 85.333zM853.333 618.667l-341.333-213.333-341.333 213.333v85.333l341.333-213.333 341.333 213.333v-85.333z" />
<glyph unicode="&#xe6e4;" d="M896 704h-85.333v-384h-554.667v-85.333c0-23.467 19.2-42.667 42.667-42.667h469.333l170.667-170.667v640c0 23.467-19.2 42.667-42.667 42.667zM725.333 448v384c0 23.467-19.2 42.667-42.667 42.667h-554.667c-23.467 0-42.667-19.2-42.667-42.667v-597.333l170.667 170.667h426.667c23.467 0 42.667 19.2 42.667 42.667z" />
<glyph unicode="&#xe6e5;" d="M384 832l-170.667-170.24h128v-299.093h85.333v299.093h128l-170.667 170.24zM682.667 234.24v299.093h-85.333v-299.093h-128l170.667-170.24 170.667 170.24h-128z" />
<glyph unicode="&#xe6e6;" d="M880.853 69.333l-698.667 698.667-54.187-54.4 118.613-118.613c-108.8-133.973-100.693-331.307 23.893-456.107 66.56-66.56 154.027-100.053 241.28-100.053 76.16 0 152.32 25.387 214.613 75.947l115.2-114.773 54.4 54.4-15.147 14.933zM512 124.373c-68.48 0-132.693 26.667-180.907 74.88-48.427 48.427-75.093 112.64-75.093 181.12 0 56.32 18.347 109.653 51.627 153.813l204.373-204.587v-205.227zM512 742.4v-195.413l309.547-309.547c58.24 126.080 35.84 280.32-68.267 384.427l-241.28 241.28-158.080-158.080 60.373-60.373 97.707 97.707z" />
<glyph unicode="&#xe6e7;" d="M753.28 621.653l-241.28 241.493-241.28-241.493c-133.333-133.333-133.333-349.44 0-482.773 66.56-66.56 154.027-100.053 241.28-100.053s174.72 33.28 241.28 100.053c133.333 133.333 133.333 349.44 0 482.773zM512 124.373c-68.48 0-132.693 26.667-180.907 75.093-48.427 48.213-75.093 112.427-75.093 180.907s26.667 132.693 75.093 181.12l180.907 180.907v-618.027z" />
<glyph unicode="&#xe6e8;" d="M810.667 874.667h-597.333c-47.147 0-85.333-38.187-85.333-85.333v-597.333c0-47.147 38.187-85.333 85.333-85.333h170.667l128-128 128 128h170.667c47.147 0 85.333 38.187 85.333 85.333v597.333c0 47.147-38.187 85.333-85.333 85.333zM554.667 192h-85.333v85.333h85.333v-85.333zM642.773 522.453l-38.187-39.253c-30.72-30.72-49.92-56.533-49.92-120.533h-85.333v21.333c0 47.147 19.2 89.813 49.92 120.747l53.12 53.76c15.36 15.36 24.96 36.693 24.96 60.16 0 47.147-38.187 85.333-85.333 85.333s-85.333-38.187-85.333-85.333h-85.333c0 94.293 76.373 170.667 170.667 170.667s170.667-76.373 170.667-170.667c0-37.547-15.147-71.467-39.893-96.213z" />
<glyph unicode="&#xe6e9;" d="M512 682.667c58.88 0 106.667-47.787 106.667-106.667 0-31.36-13.867-59.307-35.413-78.933l154.88-154.88c41.6 79.36 72.533 161.92 72.533 233.813 0 164.907-133.76 298.667-298.667 298.667-84.48 0-160.64-35.2-214.827-91.52l135.893-135.893c19.413 21.547 47.573 35.413 78.933 35.413zM698.667 273.067l-559.147 558.933-54.187-54.4 135.68-135.68c-4.907-21.12-7.68-43.093-7.68-65.92 0-224 298.667-554.667 298.667-554.667s71.253 78.933 144 185.6l142.933-142.933 54.4 54.4-154.667 154.667z" />
<glyph unicode="&#xe6ea;" d="M512 874.667c-164.907 0-298.667-133.76-298.667-298.667 0-224 298.667-554.667 298.667-554.667s298.667 330.667 298.667 554.667c0 164.907-133.76 298.667-298.667 298.667zM512 469.333c-58.88 0-106.667 47.787-106.667 106.667s47.787 106.667 106.667 106.667 106.667-47.787 106.667-106.667-47.787-106.667-106.667-106.667z" />
<glyph unicode="&#xe6eb;" d="M853.333 874.667h-682.667c-47.147 0-84.907-38.187-84.907-85.333l-0.427-768 170.667 170.667h597.333c47.147 0 85.333 38.187 85.333 85.333v512c0 47.147-38.187 85.333-85.333 85.333zM768 362.667h-512v85.333h512v-85.333zM768 490.667h-512v85.333h512v-85.333zM768 618.667h-512v85.333h512v-85.333z" />
<glyph unicode="&#xe6ec;" d="M853.333 874.667h-682.667c-47.147 0-85.333-38.187-85.333-85.333v-768l170.667 170.667h597.333c47.147 0 85.333 38.187 85.333 85.333v512c0 47.147-38.187 85.333-85.333 85.333z" />
<glyph unicode="&#xe6ed;" d="M810.24 746.667c0 47.147-37.76 85.333-84.907 85.333h-298.667l-99.84-99.84 483.84-483.84-0.427 498.347zM155.733 794.453l-54.187-54.187 111.787-112v-478.933c0-47.147 38.187-85.333 85.333-85.333h427.093c14.933 0 28.8 4.267 40.96 10.88l80.213-80.213 54.187 54.4-745.387 745.387z" />
<glyph unicode="&#xe6ee;" d="M282.667 499.413c61.44-120.747 160.213-219.52 281.173-280.96l93.867 94.080c11.733 11.733 28.587 15.147 43.307 10.453 47.787-15.787 99.2-24.32 152.32-24.32 23.68 0 42.667-18.987 42.667-42.667v-149.333c0-23.68-18.987-42.667-42.667-42.667-400.64 0-725.333 324.693-725.333 725.333 0 23.68 19.2 42.667 42.667 42.667h149.333c23.68 0 42.667-18.987 42.667-42.667 0-53.12 8.533-104.533 24.32-152.32 4.693-14.72 1.28-31.573-10.453-43.307l-93.867-94.293z" />
<glyph unicode="&#xe6ef;" d="M749.227 352.427c11.947 29.44 18.773 61.653 18.773 95.573 0 141.44-114.56 256-256 256-33.92 0-66.133-6.827-95.787-18.773l69.333-69.333c8.747 1.493 17.493 2.773 26.453 2.773 94.293 0 170.667-76.373 170.667-170.667 0-9.173-0.853-18.133-2.347-26.667l68.907-68.907zM512 789.333c188.587 0 341.333-152.747 341.333-341.333 0-57.813-14.933-111.787-40.32-159.36l62.72-62.72c39.68 64.64 62.933 140.587 62.933 222.080 0 235.733-191.147 426.667-426.667 426.667-81.493 0-157.44-23.253-222.080-62.933l62.293-62.293c47.573 25.387 101.973 39.893 159.787 39.893zM139.52 853.333l-54.187-54.4 89.813-89.813c-56.107-72.107-89.813-162.56-89.813-261.12 0-157.653 85.76-295.040 213.12-368.853l42.667 73.813c-101.76 58.88-170.453 168.96-170.453 295.040 0 74.88 24.32 144 65.28 200.32l61.227-61.227c-26.027-40.107-41.173-87.68-41.173-139.093 0-94.72 51.413-177.067 127.787-221.44l43.093 74.24c-50.987 29.653-85.547 84.053-85.547 147.2 0 27.52 7.253 53.12 18.773 76.16l67.413-67.413-0.853-8.747c0-47.147 38.187-85.333 85.333-85.333l8.747 0.853 320.853-320.853 54.4 54.4-756.48 756.267z" />
<glyph unicode="&#xe6f0;" d="M938.667 832h-853.333c-47.147 0-85.333-38.187-85.333-85.333v-597.333c0-47.147 38.187-85.333 85.333-85.333h853.333c47.147 0 84.907 38.187 84.907 85.333l0.427 597.333c0 47.147-38.187 85.333-85.333 85.333zM341.333 704c70.613 0 128-57.387 128-128 0-70.827-57.387-128-128-128s-128 57.173-128 128c0 70.613 57.387 128 128 128zM597.333 192h-512v42.667c0 85.333 170.667 132.267 256 132.267s256-46.933 256-132.267v-42.667zM761.6 362.667h69.973l64.427-85.333-85.12-85.12c-55.68 41.813-97.28 101.333-116.48 170.453-7.467 27.307-11.733 55.68-11.733 85.333s4.267 58.027 11.947 85.333c18.987 69.12 60.587 128.64 116.48 170.453l84.907-85.12-64.427-85.333h-69.973c-9.387-26.667-14.933-55.467-14.933-85.333s5.333-58.667 14.933-85.333z" />
<glyph unicode="&#xe6f1;" d="M896 618.667v42.667l-128-85.333-128 85.333v-42.667l128-85.333 128 85.333zM938.667 832h-853.333c-47.147 0-85.333-38.187-85.333-85.333v-597.333c0-47.147 38.187-85.333 85.333-85.333h853.333c47.147 0 84.907 38.187 84.907 85.333l0.427 597.333c0 47.147-38.187 85.333-85.333 85.333zM341.333 704c70.613 0 128-57.387 128-128 0-70.827-57.387-128-128-128s-128 57.173-128 128c0 70.613 57.387 128 128 128zM597.333 192h-512v42.667c0 85.333 170.667 132.267 256 132.267s256-46.933 256-132.267v-42.667zM938.667 448h-341.333v256h341.333v-256z" />
<glyph unicode="&#xe6f2;" d="M1011.413 248.747c-129.92 123.52-305.92 199.253-499.413 199.253s-369.493-75.733-499.413-199.253c-7.893-7.68-12.587-18.56-12.587-30.293s4.693-22.4 12.587-30.080l105.6-105.6c7.68-7.68 18.347-12.587 30.080-12.587 11.52 0 22.187 4.693 29.867 12.16 33.92 31.36 72.107 58.027 113.707 78.933 14.080 7.040 23.893 21.547 23.893 38.4v132.48c61.867 19.84 127.787 30.507 196.267 30.507s134.4-10.667 196.267-30.72v-132.48c0-16.853 9.813-31.36 23.893-38.4 41.6-20.907 80-47.573 113.707-78.933 7.68-7.467 18.133-12.16 29.867-12.16s22.4 4.693 30.293 12.587l105.6 105.6c7.68 7.68 12.587 18.347 12.587 30.080-0.213 11.947-4.907 22.827-12.8 30.507zM902.827 693.12l-60.373 60.373-151.893-151.893 60.373-60.373s147.2 150.187 151.893 151.893zM554.667 874.667h-85.333v-213.333h85.333v213.333zM273.067 541.227l60.373 60.373-151.893 151.893-60.373-60.373c4.693-1.707 151.893-151.893 151.893-151.893z" />
<glyph unicode="&#xe6f3;" d="M43.093 661.333l-0.427-426.667c0-47.147 38.187-85.333 85.333-85.333h768c47.147 0 85.333 38.187 85.333 85.333v426.667c0 47.147-38.187 85.333-85.333 85.333h-768c-47.147 0-84.907-38.187-84.907-85.333zM810.667 661.333v-426.667h-597.333v426.667h597.333z" />
<glyph unicode="&#xe6f4;" d="M725.333 916.907l-426.667 0.427c-47.147 0-84.907-38.187-84.907-85.333v-768c0-47.147 37.76-85.333 84.907-85.333h426.667c47.147 0 85.333 38.187 85.333 85.333v768c0 47.147-38.187 84.907-85.333 84.907zM725.333 149.333h-426.667v597.333h426.667v-597.333z" />
<glyph unicode="&#xe6f5;" d="M43.093 661.333l-0.427-426.667c0-47.147 38.187-85.333 85.333-85.333h768c47.147 0 85.333 38.187 85.333 85.333v426.667c0 47.147-38.187 85.333-85.333 85.333h-768c-47.147 0-84.907-38.187-84.907-85.333zM810.667 661.333v-426.667h-597.333v426.667h597.333z" />
<glyph unicode="&#xe6f6;" d="M725.333 916.907l-426.667 0.427c-47.147 0-84.907-38.187-84.907-85.333v-768c0-47.147 37.76-85.333 84.907-85.333h426.667c47.147 0 85.333 38.187 85.333 85.333v768c0 47.147-38.187 84.907-85.333 84.907zM725.333 149.333h-426.667v597.333h426.667v-597.333z" />
<glyph unicode="&#xe6f7;" d="M768 789.333l-170.667-170.667h128v-298.667c0-47.147-38.187-85.333-85.333-85.333s-85.333 38.187-85.333 85.333v298.667c0 94.080-76.587 170.667-170.667 170.667s-170.667-76.587-170.667-170.667v-298.667h-128l170.667-170.667 170.667 170.667h-128v298.667c0 47.147 38.187 85.333 85.333 85.333s85.333-38.187 85.333-85.333v-298.667c0-94.080 76.587-170.667 170.667-170.667s170.667 76.587 170.667 170.667v298.667h128l-170.667 170.667z" />
<glyph unicode="&#xe6f8;" d="M853.333 874.667h-682.667c-47.147 0-84.907-38.187-84.907-85.333l-0.427-768 170.667 170.667h597.333c47.147 0 85.333 38.187 85.333 85.333v512c0 47.147-38.187 85.333-85.333 85.333zM384 490.667h-85.333v85.333h85.333v-85.333zM554.667 490.667h-85.333v85.333h85.333v-85.333zM725.333 490.667h-85.333v85.333h85.333v-85.333z" />
<glyph unicode="&#xe6f9;" d="M789.333 704c-129.707 0-234.667-104.96-234.667-234.667 0-56.747 20.053-108.8 53.547-149.333h-192.64c33.493 40.533 53.547 92.587 53.547 149.333 0 129.707-104.96 234.667-234.667 234.667s-234.453-104.96-234.453-234.667 104.96-234.667 234.667-234.667h554.667c129.707 0 234.667 104.96 234.667 234.667s-104.96 234.667-234.667 234.667zM234.667 320c-82.56 0-149.333 66.773-149.333 149.333s66.773 149.333 149.333 149.333 149.333-66.773 149.333-149.333-66.773-149.333-149.333-149.333zM789.333 320c-82.56 0-149.333 66.773-149.333 149.333s66.773 149.333 149.333 149.333 149.333-66.773 149.333-149.333-66.773-149.333-149.333-149.333z" />
<glyph unicode="&#xe6fa;" d="M539.733 533.333c-35.2 99.413-129.707 170.667-241.067 170.667-141.44 0-256-114.56-256-256s114.56-256 256-256c111.36 0 205.867 71.253 241.067 170.667h185.6v-170.667h170.667v170.667h85.333v170.667h-441.6zM298.667 362.667c-47.147 0-85.333 38.187-85.333 85.333s38.187 85.333 85.333 85.333 85.333-38.187 85.333-85.333-38.187-85.333-85.333-85.333z" />
<glyph unicode="&#xe6fb;" d="M810.667 405.333h-256v-256h-85.333v256h-256v85.333h256v256h85.333v-256h256v-85.333z" />
<glyph unicode="&#xe6fc;" d="M810.667 832h-597.333c-47.147 0-85.333-38.187-85.333-85.333v-597.333c0-47.147 38.187-85.333 85.333-85.333h597.333c47.147 0 85.333 38.187 85.333 85.333v597.333c0 47.147-38.187 85.333-85.333 85.333zM725.333 405.333h-170.667v-170.667h-85.333v170.667h-170.667v85.333h170.667v170.667h85.333v-170.667h170.667v-85.333z" />
<glyph unicode="&#xe6fd;" d="M512 874.667c-235.733 0-426.667-190.933-426.667-426.667s190.933-426.667 426.667-426.667 426.667 190.933 426.667 426.667-190.933 426.667-426.667 426.667zM725.333 405.333h-170.667v-170.667h-85.333v170.667h-170.667v85.333h170.667v170.667h85.333v-170.667h170.667v-85.333z" />
<glyph unicode="&#xe6fe;" d="M554.667 661.333h-85.333v-170.667h-170.667v-85.333h170.667v-170.667h85.333v170.667h170.667v85.333h-170.667v170.667zM512 874.667c-235.733 0-426.667-190.933-426.667-426.667s190.933-426.667 426.667-426.667 426.667 190.933 426.667 426.667-190.933 426.667-426.667 426.667zM512 106.667c-188.16 0-341.333 153.173-341.333 341.333s153.173 341.333 341.333 341.333 341.333-153.173 341.333-341.333-153.173-341.333-341.333-341.333z" />
<glyph unicode="&#xe6ff;" d="M876.587 737.067l-59.093 71.68c-11.947 14.080-29.653 23.253-49.493 23.253h-512c-19.84 0-37.547-9.173-49.28-23.253l-59.093-71.68c-12.373-14.933-19.627-33.707-19.627-54.4v-533.333c0-47.147 38.187-85.333 85.333-85.333h597.333c47.147 0 85.333 38.187 85.333 85.333v533.333c0 20.693-7.253 39.467-19.413 54.4zM512 213.333l-234.667 234.667h149.333v85.333h170.667v-85.333h149.333l-234.667-234.667zM218.667 746.667l34.773 42.667h512l39.893-42.667h-586.667z" />
<glyph unicode="&#xe700;" d="M938.667 832h-640c-29.44 0-52.693-14.933-68.053-37.547l-230.613-346.24 230.613-346.24c15.36-22.613 38.613-37.973 68.053-37.973h640c47.147 0 85.333 38.187 85.333 85.333v597.333c0 47.147-38.187 85.333-85.333 85.333zM810.667 295.040l-60.373-60.373-152.96 152.96-152.96-152.96-60.373 60.373 152.96 152.96-152.96 152.96 60.373 60.373 152.96-152.96 152.96 152.96 60.373-60.373-152.96-152.96 152.96-152.96z" />
<glyph unicode="&#xe701;" d="M512 874.667c-235.733 0-426.667-190.933-426.667-426.667s190.933-426.667 426.667-426.667 426.667 190.933 426.667 426.667-190.933 426.667-426.667 426.667zM170.667 448c0 188.587 152.747 341.333 341.333 341.333 78.933 0 151.253-27.093 209.067-71.893l-478.507-478.507c-44.8 57.813-71.893 130.133-71.893 209.067zM512 106.667c-78.933 0-151.253 27.093-209.067 71.893l478.507 478.507c44.8-57.813 71.893-130.133 71.893-209.067 0-188.587-152.747-341.333-341.333-341.333z" />
<glyph unicode="&#xe702;" d="M810.667 686.293l-60.373 60.373-238.293-238.293-238.293 238.293-60.373-60.373 238.293-238.293-238.293-238.293 60.373-60.373 238.293 238.293 238.293-238.293 60.373 60.373-238.293 238.293z" />
<glyph unicode="&#xe703;" d="M682.667 917.333h-512c-47.147 0-85.333-38.187-85.333-85.333v-597.333h85.333v597.333h512v85.333zM810.667 746.667h-469.333c-47.147 0-85.333-38.187-85.333-85.333v-597.333c0-47.147 38.187-85.333 85.333-85.333h469.333c47.147 0 85.333 38.187 85.333 85.333v597.333c0 47.147-38.187 85.333-85.333 85.333zM810.667 64h-469.333v597.333h469.333v-597.333z" />
<glyph unicode="&#xe704;" d="M411.307 634.027c9.6 21.333 15.36 45.013 15.36 69.973 0 94.293-76.373 170.667-170.667 170.667s-170.667-76.373-170.667-170.667 76.373-170.667 170.667-170.667c24.96 0 48.64 5.76 69.973 15.36l100.693-100.693-100.693-100.693c-21.333 9.6-45.013 15.36-69.973 15.36-94.293 0-170.667-76.373-170.667-170.667s76.373-170.667 170.667-170.667 170.667 76.373 170.667 170.667c0 24.96-5.76 48.64-15.36 69.973l100.693 100.693 298.667-298.667h128v42.667l-527.36 527.36zM256 618.667c-47.147 0-85.333 38.187-85.333 85.333s38.187 85.333 85.333 85.333 85.333-38.187 85.333-85.333-38.187-85.333-85.333-85.333zM256 106.667c-47.147 0-85.333 38.187-85.333 85.333s38.187 85.333 85.333 85.333 85.333-38.187 85.333-85.333-38.187-85.333-85.333-85.333zM512 426.667c-11.733 0-21.333 9.6-21.333 21.333s9.6 21.333 21.333 21.333 21.333-9.6 21.333-21.333-9.6-21.333-21.333-21.333zM810.667 832l-256-256 85.333-85.333 298.667 298.667v42.667z" />
<glyph unicode="&#xe705;" d="M810.667 874.667h-178.56c-17.493 49.493-64.427 85.333-120.107 85.333s-102.613-35.84-120.107-85.333h-178.56c-47.147 0-85.333-38.187-85.333-85.333v-682.667c0-47.147 38.187-85.333 85.333-85.333h597.333c47.147 0 85.333 38.187 85.333 85.333v682.667c0 47.147-38.187 85.333-85.333 85.333zM512 874.667c23.467 0 42.667-18.987 42.667-42.667s-19.2-42.667-42.667-42.667-42.667 18.987-42.667 42.667 19.2 42.667 42.667 42.667zM810.667 106.667h-597.333v682.667h85.333v-128h426.667v128h85.333v-682.667z" />
<glyph unicode="&#xe706;" d="M128 224v-160h160l472.107 472.107-160 160-472.107-472.107zM883.413 659.413c16.64 16.64 16.64 43.733 0 60.373l-99.627 99.627c-16.64 16.64-43.733 16.64-60.373 0l-78.080-78.080 160-160 78.080 78.080z" />
<glyph unicode="&#xe707;" d="M938.24 618.667c0 30.72-16 57.387-40.107 72.533l-386.133 226.133-386.133-226.133c-24.107-15.147-40.533-41.813-40.533-72.533v-426.667c0-47.147 38.187-85.333 85.333-85.333h682.667c47.147 0 85.333 38.187 85.333 85.333l-0.427 426.667zM512 405.333l-352.427 220.373 352.427 206.293 352.427-206.293-352.427-220.373z" />
<glyph unicode="&#xe708;" d="M426.667 192h170.667v85.333h-170.667v-85.333zM128 704v-85.333h768v85.333h-768zM256 405.333h512v85.333h-512v-85.333z" />
<glyph unicode="&#xe709;" d="M614.4 704l-17.067 85.333h-384v-725.333h85.333v298.667h238.933l17.067-85.333h298.667v426.667z" />
<glyph unicode="&#xe70a;" d="M512 618.667v170.667l341.333-341.333-341.333-341.333v170.667h-341.333v341.333z" />
<glyph unicode="&#xe70b;" d="M196.053 666.24c29.867 30.507 59.733 57.813 73.173 52.267 21.12-8.747-0.427-44.373-12.8-65.067-10.667-17.92-122.027-165.76-122.027-269.227 0-54.613 20.267-99.84 57.387-127.147 32-23.68 74.027-30.933 112.64-19.627 45.653 13.44 83.2 59.52 130.56 117.973 51.627 63.573 120.747 146.773 174.080 146.773 69.547 0 70.4-43.093 75.093-76.587-161.707-27.733-229.76-156.8-229.76-229.547s61.44-132.053 136.747-132.053c69.333 0 183.253 56.747 200.107 260.267h104.747v106.667h-105.387c-6.4 70.4-46.507 178.987-171.947 178.987-96 0-178.56-81.493-210.56-121.387-24.747-30.933-87.68-105.6-97.493-116.267-10.88-12.587-28.8-35.84-47.573-35.84-18.987 0-30.507 35.627-15.573 82.133 14.933 46.72 59.733 122.027 78.933 149.973 33.493 48.64 55.253 82.133 55.253 139.947 0 93.867-69.973 123.307-107.093 123.307-56.32 0-105.387-42.667-116.267-53.547-15.147-15.36-27.947-27.947-37.333-39.467l75.093-72.533zM592.427 168.32c-13.227 0-31.36 11.093-31.36 30.933 0 25.6 30.933 93.867 122.667 117.973-13.227-114.987-61.44-148.907-91.307-148.907z" />
<glyph unicode="&#xe70c;" d="M810.667 832h-597.76c-47.147 0-84.48-38.187-84.48-85.333l-0.427-597.333c0-47.147 37.76-85.333 84.907-85.333h597.76c47.147 0 85.333 38.187 85.333 85.333v597.333c0 47.147-38.187 85.333-85.333 85.333zM810.667 320h-170.667c0-70.613-57.387-128-128-128s-128 57.387-128 128h-171.093v426.667h597.76v-426.667zM682.667 533.333h-85.333v128h-170.667v-128h-85.333l170.667-170.667 170.667 170.667z" />
<glyph unicode="&#xe70d;" d="M166.4 448c0 72.96 59.307 132.267 132.267 132.267h170.667v81.067h-170.667c-117.76 0-213.333-95.573-213.333-213.333s95.573-213.333 213.333-213.333h170.667v81.067h-170.667c-72.96 0-132.267 59.307-132.267 132.267zM341.333 405.333h341.333v85.333h-341.333v-85.333zM725.333 661.333h-170.667v-81.067h170.667c72.96 0 132.267-59.307 132.267-132.267s-59.307-132.267-132.267-132.267h-170.667v-81.067h170.667c117.76 0 213.333 95.573 213.333 213.333s-95.573 213.333-213.333 213.333z" />
<glyph unicode="&#xe70e;" d="M853.333 789.333h-682.667c-47.147 0-84.907-38.187-84.907-85.333l-0.427-512c0-47.147 38.187-85.333 85.333-85.333h682.667c47.147 0 85.333 38.187 85.333 85.333v512c0 47.147-38.187 85.333-85.333 85.333zM853.333 618.667l-341.333-213.333-341.333 213.333v85.333l341.333-213.333 341.333 213.333v-85.333z" />
<glyph unicode="&#xe70f;" d="M853.333 789.333h-682.667c-47.147 0-84.907-38.187-84.907-85.333l-0.427-512c0-47.147 38.187-85.333 85.333-85.333h682.667c47.147 0 85.333 38.187 85.333 85.333v512c0 47.147-38.187 85.333-85.333 85.333zM853.333 618.667l-341.333-213.333-341.333 213.333v85.333l341.333-213.333 341.333 213.333v-85.333z" />
<glyph unicode="&#xe710;" d="M784.853 507.733c-78.507 68.907-181.333 110.933-294.187 110.933-198.4 0-366.293-129.28-424.96-308.053l100.907-33.28c44.8 136.32 172.8 234.667 324.053 234.667 83.413 0 159.147-30.72 218.24-80.427l-154.24-154.24h384v384l-153.813-153.6z" />
<glyph unicode="&#xe711;" d="M810.667 405.333h-597.333v85.333h597.333v-85.333z" />
<glyph unicode="&#xe712;" d="M512 874.667c-235.733 0-426.667-190.933-426.667-426.667s190.933-426.667 426.667-426.667 426.667 190.933 426.667 426.667-190.933 426.667-426.667 426.667zM725.333 405.333h-426.667v85.333h426.667v-85.333z" />
<glyph unicode="&#xe713;" d="M298.667 490.667v-85.333h426.667v85.333h-426.667zM512 874.667c-235.733 0-426.667-190.933-426.667-426.667s190.933-426.667 426.667-426.667 426.667 190.933 426.667 426.667-190.933 426.667-426.667 426.667zM512 106.667c-188.16 0-341.333 153.173-341.333 341.333s153.173 341.333 341.333 341.333 341.333-153.173 341.333-341.333-153.173-341.333-341.333-341.333z" />
<glyph unicode="&#xe714;" d="M426.667 576v170.667l-298.667-298.667 298.667-298.667v174.933c213.333 0 362.667-68.267 469.333-217.6-42.667 213.333-170.667 426.667-469.333 469.333z" />
<glyph unicode="&#xe715;" d="M298.667 618.667v128l-298.667-298.667 298.667-298.667v128l-170.667 170.667 170.667 170.667zM554.667 576v170.667l-298.667-298.667 298.667-298.667v174.933c213.333 0 362.667-68.267 469.333-217.6-42.667 213.333-170.667 426.667-469.333 469.333z" />
<glyph unicode="&#xe716;" d="M671.147 832h-318.293l-224.853-224.853v-318.080l224.853-225.067h318.080l225.067 224.853v318.293l-224.853 224.853zM512 221.867c-30.507 0-55.467 24.747-55.467 55.467 0 30.507 24.96 55.467 55.467 55.467s55.467-24.747 55.467-55.467c0-30.72-24.96-55.467-55.467-55.467zM554.667 405.333h-85.333v256h85.333v-256z" />
<glyph unicode="&#xe717;" d="M725.333 832h-512c-47.147 0-85.333-38.187-85.333-85.333v-597.333c0-47.147 38.187-85.333 85.333-85.333h597.333c47.147 0 85.333 38.187 85.333 85.333v512l-170.667 170.667zM512 149.333c-70.613 0-128 57.387-128 128s57.387 128 128 128 128-57.387 128-128-57.387-128-128-128zM640 576h-426.667v170.667h426.667v-170.667z" />
<glyph unicode="&#xe718;" d="M128 746.667h85.333v85.333c-47.147 0-85.333-38.187-85.333-85.333zM128 405.333h85.333v85.333h-85.333v-85.333zM298.667 64h85.333v85.333h-85.333v-85.333zM128 576h85.333v85.333h-85.333v-85.333zM554.667 832h-85.333v-85.333h85.333v85.333zM810.667 832v-85.333h85.333c0 47.147-38.187 85.333-85.333 85.333zM213.333 64v85.333h-85.333c0-47.147 38.187-85.333 85.333-85.333zM128 234.667h85.333v85.333h-85.333v-85.333zM384 832h-85.333v-85.333h85.333v85.333zM469.333 64h85.333v85.333h-85.333v-85.333zM810.667 405.333h85.333v85.333h-85.333v-85.333zM810.667 64c47.147 0 85.333 38.187 85.333 85.333h-85.333v-85.333zM810.667 576h85.333v85.333h-85.333v-85.333zM810.667 234.667h85.333v85.333h-85.333v-85.333zM640 64h85.333v85.333h-85.333v-85.333zM640 746.667h85.333v85.333h-85.333v-85.333zM298.667 234.667h426.667v426.667h-426.667v-426.667zM384 576h256v-256h-256v256z" />
<glyph unicode="&#xe719;" d="M85.76 64l895.573 384-895.573 384-0.427-298.667 640-85.333-640-85.333z" />
<glyph unicode="&#xe71a;" d="M128 192h256v85.333h-256v-85.333zM128 704v-85.333h768v85.333h-768zM128 405.333h512v85.333h-512v-85.333z" />
<glyph unicode="&#xe71b;" d="M213.333 234.667v-85.333h597.333v85.333h-597.333zM405.333 413.867h213.333l38.4-93.867h89.6l-202.667 469.333h-64l-202.667-469.333h89.6l38.4 93.867zM512 704.853l79.787-214.187h-159.573l79.787 214.187z" />
<glyph unicode="&#xe71c;" d="M533.333 618.667c-112.853 0-215.68-42.027-294.4-110.933l-153.6 153.6v-384h384l-154.24 154.24c59.093 49.707 134.827 80.427 218.24 80.427 151.253 0 279.253-98.347 324.053-234.667l100.907 33.28c-58.667 178.773-226.56 308.053-424.96 308.053z" />
<glyph unicode="&#xe71d;" d="M938.667 715.947l-196.053 164.48-54.827-65.28 196.053-164.48 54.827 65.28zM336.213 815.36l-54.827 65.28-196.053-164.48 54.827-65.28 196.053 164.48zM533.333 618.667h-64v-256l202.453-121.813 32.213 52.693-170.667 101.12v224zM511.787 789.333c-212.267 0-383.787-171.947-383.787-384s171.52-384 383.787-384 384.213 171.947 384.213 384-171.947 384-384.213 384zM512 106.667c-164.907 0-298.667 133.76-298.667 298.667s133.76 298.667 298.667 298.667 298.667-133.76 298.667-298.667-133.547-298.667-298.667-298.667z" />
<glyph unicode="&#xe71e;" d="M938.667 714.667l-196.267 164.267-55.467-66.133 196.267-164.267 55.467 66.133zM334.933 814.933l-55.467 66.133-194.133-166.4 55.467-66.133 194.133 166.4zM533.333 618.667h-64v-256l202.667-121.6 32 53.333-170.667 100.267v224zM512 789.333c-213.333 0-384-172.8-384-384s170.667-384 384-384c211.2 0 384 172.8 384 384s-172.8 384-384 384zM512 106.667c-164.267 0-298.667 134.4-298.667 298.667s134.4 298.667 298.667 298.667 298.667-134.4 298.667-298.667c0-166.4-134.4-298.667-298.667-298.667z" />
<glyph unicode="&#xe71f;" d="M511.787 874.667c-235.733 0-426.453-190.933-426.453-426.667s190.72-426.667 426.453-426.667c235.733 0 426.88 190.933 426.88 426.667s-191.147 426.667-426.88 426.667zM512 106.667c-188.587 0-341.333 152.747-341.333 341.333s152.747 341.333 341.333 341.333 341.333-152.747 341.333-341.333-152.747-341.333-341.333-341.333zM533.333 661.333h-64v-256l223.787-134.4 32.213 52.48-192 113.92z" />
<glyph unicode="&#xe720;" d="M336.213 815.36l-54.827 65.28-196.053-164.48 54.827-65.28 196.053 164.48zM938.667 715.947l-196.053 164.48-54.827-65.28 196.053-164.48 54.827 65.28zM511.787 789.333c-212.267 0-383.787-171.947-383.787-384s171.52-384 383.787-384 384.213 171.947 384.213 384-171.947 384-384.213 384zM512 106.667c-164.907 0-298.667 133.76-298.667 298.667s133.76 298.667 298.667 298.667 298.667-133.76 298.667-298.667-133.547-298.667-298.667-298.667zM554.667 576h-85.333v-128h-128v-85.333h128v-128h85.333v128h128v85.333h-128v128z" />
<glyph unicode="&#xe721;" d="M554.667 576v234.667c0 35.413-28.587 64-64 64s-64-28.587-64-64v-157.013l333.867-333.867 135.467-42.453v85.333l-341.333 213.333zM128 734.933l212.693-212.693-255.36-159.573v-85.333l341.333 106.667v-234.667l-85.333-64v-64l149.333 42.667 149.333-42.667v64l-85.333 64v158.933l244.267-244.267 54.4 54.4-670.933 670.933-54.4-54.4z" />
<glyph unicode="&#xe722;" d="M896 277.333v85.333l-341.333 213.333v234.667c0 35.413-28.587 64-64 64s-64-28.587-64-64v-234.667l-341.333-213.333v-85.333l341.333 106.667v-234.667l-85.333-64v-64l149.333 42.667 149.333-42.667v64l-85.333 64v234.667l341.333-106.667z" />
<glyph unicode="&#xe723;" d="M298.667 234.667v-156.373c0-31.36 25.387-56.96 56.96-56.96h312.96c31.36 0 56.96 25.387 56.96 56.96v156.373h-426.88zM725.333 732.373c0 31.573-25.387 56.96-56.96 56.96h-71.040v85.333h-170.667v-85.333h-71.040c-31.573 0-56.96-25.387-56.96-56.96v-497.707h426.667v497.707z" />
<glyph unicode="&#xe724;" d="M725.333 732.373c0 31.573-25.387 56.96-56.96 56.96h-71.040v85.333h-170.667v-85.333h-71.040c-31.573 0-56.96-25.387-56.96-56.96v-412.373h426.667v412.373zM298.667 320v-241.707c0-31.36 25.387-56.96 56.96-56.96h312.96c31.36 0 56.96 25.387 56.96 56.96v241.707h-426.88z" />
<glyph unicode="&#xe725;" d="M725.333 732.373c0 31.573-25.387 56.96-56.96 56.96h-71.040v85.333h-170.667v-85.333h-71.040c-31.573 0-56.96-25.387-56.96-56.96v-327.040h426.667v327.040zM298.667 405.333v-327.040c0-31.36 25.387-56.96 56.96-56.96h312.96c31.36 0 56.96 25.387 56.96 56.96v327.040h-426.88z" />
<glyph unicode="&#xe726;" d="M725.333 732.373c0 31.573-25.387 56.96-56.96 56.96h-71.040v85.333h-170.667v-85.333h-71.040c-31.573 0-56.96-25.387-56.96-56.96v-241.707h426.667v241.707zM298.667 490.667v-412.373c0-31.36 25.387-56.96 56.96-56.96h312.96c31.36 0 56.96 25.387 56.96 56.96v412.373h-426.88z" />
<glyph unicode="&#xe727;" d="M725.333 732.373c0 31.573-25.387 56.96-56.96 56.96h-71.040v85.333h-170.667v-85.333h-71.040c-31.573 0-56.96-25.387-56.96-56.96v-156.373h426.667v156.373zM298.667 576v-497.707c0-31.36 25.387-56.96 56.96-56.96h312.96c31.36 0 56.96 25.387 56.96 56.96v497.707h-426.88z" />
<glyph unicode="&#xe728;" d="M725.333 732.373c0 31.573-25.387 56.96-56.96 56.96h-71.040v85.333h-170.667v-85.333h-71.040c-31.573 0-56.96-25.387-56.96-56.96v-113.707h426.667v113.707zM298.667 618.667v-540.373c0-31.36 25.387-56.96 56.96-56.96h312.96c31.36 0 56.96 25.387 56.96 56.96v540.373h-426.88z" />
<glyph unicode="&#xe729;" d="M668.373 789.333h-71.040v85.333h-170.667v-85.333h-71.040c-31.573 0-56.96-25.387-56.96-56.96v-654.293c0-31.36 25.387-56.96 56.96-56.96h312.96c31.36 0 56.96 25.387 56.96 56.96v654.293c-0.213 31.573-25.6 56.96-57.173 56.96zM554.667 192h-85.333v85.333h85.333v-85.333zM554.667 362.667h-85.333v213.333h85.333v-213.333z" />
<glyph unicode="&#xe72a;" d="M469.333 106.667v128h-170.667v-156.373c0-31.36 25.387-56.96 56.96-56.96h312.96c31.36 0 56.96 25.387 56.96 56.96v156.373h-187.733l-68.48-128zM668.373 789.333h-71.040v85.333h-170.667v-85.333h-71.040c-31.573 0-56.96-25.387-56.96-56.96v-497.707h170.667v106.667h-85.333l170.667 320v-234.667h85.333l-102.4-192h187.733v497.707c0 31.573-25.387 56.96-56.96 56.96z" />
<glyph unicode="&#xe72b;" d="M668.373 789.333h-71.040v85.333h-170.667v-85.333h-71.040c-31.573 0-56.96-25.387-56.96-56.96v-391.040h85.333l170.667 320v-234.667h85.333l-45.44-85.333h130.773v391.040c0 31.573-25.387 56.96-56.96 56.96zM469.333 106.667v234.667h-170.667v-263.040c0-31.36 25.387-56.96 56.96-56.96h312.96c31.36 0 56.96 25.387 56.96 56.96v263.040h-130.773l-125.44-234.667z" />
<glyph unicode="&#xe72c;" d="M617.173 384l-147.84-277.333v234.667h-85.333l22.827 42.667h-108.16v-305.707c0-31.36 25.387-56.96 56.96-56.96h312.96c31.36 0 56.96 25.387 56.96 56.96v305.707h-108.373zM668.373 789.333h-71.040v85.333h-170.667v-85.333h-71.040c-31.573 0-56.96-25.387-56.96-56.96v-348.373h108.16l147.84 277.333v-234.667h85.333l-22.827-42.667h108.16v348.373c0 31.573-25.387 56.96-56.96 56.96z" />
<glyph unicode="&#xe72d;" d="M668.373 789.333h-71.040v85.333h-170.667v-85.333h-71.040c-31.573 0-56.96-25.387-56.96-56.96v-241.707h164.907l91.093 170.667v-170.667h170.667v241.707c0 31.573-25.387 56.96-56.96 56.96zM554.667 426.667h85.333l-170.667-320v234.667h-85.333l79.573 149.333h-164.907v-412.373c0-31.36 25.387-56.96 56.96-56.96h312.96c31.36 0 56.96 25.387 56.96 56.96v412.373h-170.667v-64z" />
<glyph unicode="&#xe72e;" d="M668.373 789.333h-71.040v85.333h-170.667v-85.333h-71.040c-31.573 0-56.96-25.387-56.96-56.96v-156.373h210.56l45.44 85.333v-85.333h170.667v156.373c0 31.573-25.387 56.96-56.96 56.96zM554.667 426.667h85.333l-170.667-320v234.667h-85.333l125.227 234.667h-210.56v-497.707c0-31.36 25.387-56.96 56.96-56.96h312.96c31.36 0 56.96 25.387 56.96 56.96v497.707h-170.667v-149.333z" />
<glyph unicode="&#xe72f;" d="M668.373 789.333h-71.040v85.333h-170.667v-85.333h-71.040c-31.573 0-56.96-25.387-56.96-56.96v-113.707h233.173l22.827 42.667v-42.667h170.667v113.707c0 31.573-25.387 56.96-56.96 56.96zM554.667 426.667h85.333l-170.667-320v234.667h-85.333l147.84 277.333h-233.173v-540.373c0-31.36 25.387-56.96 56.96-56.96h312.96c31.36 0 56.96 25.387 56.96 56.96v540.373h-170.667v-192z" />
<glyph unicode="&#xe730;" d="M668.373 789.333h-71.040v85.333h-170.667v-85.333h-71.040c-31.573 0-56.96-25.387-56.96-56.96v-654.293c0-31.36 25.387-56.96 56.96-56.96h312.96c31.36 0 56.96 25.387 56.96 56.96v654.293c-0.213 31.573-25.6 56.96-57.173 56.96zM469.333 106.667v234.667h-85.333l170.667 320v-234.667h85.333l-170.667-320z" />
<glyph unicode="&#xe731;" d="M668.373 789.333h-71.040v85.333h-170.667v-85.333h-71.040c-31.573 0-56.96-25.387-56.96-56.96v-654.293c0-31.36 25.387-56.96 56.96-56.96h312.96c31.36 0 56.96 25.387 56.96 56.96v654.293c-0.213 31.573-25.6 56.96-57.173 56.96z" />
<glyph unicode="&#xe732;" d="M668.373 789.333h-71.040v85.333h-170.667v-85.333h-71.040c-31.573 0-56.96-25.387-56.96-56.96v-654.293c0-31.36 25.387-56.96 56.96-56.96h312.96c31.36 0 56.96 25.387 56.96 56.96v654.293c-0.213 31.573-25.6 56.96-57.173 56.96z" />
<glyph unicode="&#xe733;" d="M668.373 789.333h-71.040v85.333h-170.667v-85.333h-71.040c-31.573 0-56.96-25.387-56.96-56.96v-654.293c0-31.36 25.387-56.96 56.96-56.96h312.96c31.36 0 56.96 25.387 56.96 56.96v654.293c-0.213 31.573-25.6 56.96-57.173 56.96zM552.533 194.133h-81.067v81.067h81.067v-81.067zM610.133 418.56s-16.213-17.92-28.587-30.293c-20.693-20.693-35.413-48.853-35.413-68.267h-68.267c0 35.413 19.627 65.067 39.68 85.12l39.68 40.32c11.52 11.52 18.773 27.52 18.773 45.227 0 35.413-28.587 64-64 64s-64-28.587-64-64h-64c0 70.613 57.387 128 128 128s128-57.387 128-128c0-28.16-11.307-53.76-29.867-72.107z" />
<glyph unicode="&#xe734;" d="M755.413 631.253l-243.413 243.413h-42.667v-323.627l-195.627 195.627-60.373-60.373 238.293-238.293-238.293-238.293 60.373-60.373 195.627 195.627v-323.627h42.667l243.413 243.413-183.040 183.253 183.040 183.253zM554.667 711.253l80.213-80.213-80.213-80v160.213zM634.88 264.747l-80.213-80v160.427l80.213-80.427z" />
<glyph unicode="&#xe735;" d="M298.667 448l-85.333 85.333-85.333-85.333 85.333-85.333 85.333 85.333zM755.413 631.253l-243.413 243.413h-42.667v-323.627l-195.627 195.627-60.373-60.373 238.293-238.293-238.293-238.293 60.373-60.373 195.627 195.627v-323.627h42.667l243.413 243.413-183.040 183.253 183.040 183.253zM554.667 711.253l80.213-80.213-80.213-80v160.213zM634.88 264.747l-80.213-80v160.427l80.213-80.427zM810.667 533.333l-85.333-85.333 85.333-85.333 85.333 85.333-85.333 85.333z" />
<glyph unicode="&#xe736;" d="M554.667 707.627l80.213-80.213-68.267-68.267 60.373-60.373 128.64 128.64-243.627 243.627h-42.667v-214.613l85.333-85.333v136.533zM231.040 785.707l-60.373-60.373 280.96-280.96-238.293-238.293 60.373-60.373 195.627 195.627v-323.627h42.667l183.253 183.253 97.92-97.92 60.16 60.373-622.293 622.293zM554.667 181.12v160.213l80.213-80.213-80.213-80z" />
<glyph unicode="&#xe737;" d="M607.573 447.573l98.987-98.987c11.947 30.933 18.773 64.427 18.773 99.413 0 34.773-6.613 68.053-18.347 98.773l-99.413-99.2zM833.28 673.493l-53.973-53.973c26.667-51.413 42.027-109.653 42.027-171.733s-15.36-120.107-42.027-171.733l51.2-51.2c41.173 66.133 65.493 143.573 65.493 226.773 0 81.493-23.253 157.227-62.72 221.867zM670.080 631.253l-243.413 243.413h-42.667v-323.627l-195.627 195.627-60.373-60.373 238.293-238.293-238.293-238.293 60.373-60.373 195.627 195.627v-323.627h42.667l243.413 243.413-183.040 183.253 183.040 183.253zM469.333 711.253l80.213-80.213-80.213-80v160.213zM549.547 264.747l-80.213-80v160.427l80.213-80.427z" />
<glyph unicode="&#xe738;" d="M462.933 420.267h98.133l-49.067 155.733-49.067-155.733zM853.333 589.44v199.893h-199.893l-141.44 141.44-141.44-141.44h-199.893v-199.893l-141.44-141.44 141.44-141.44v-199.893h199.893l141.44-141.44 141.44 141.44h199.893v199.893l141.44 141.44-141.44 141.44zM610.133 277.333l-29.867 85.333h-136.533l-29.867-85.333h-81.067l136.533 384h85.333l136.533-384h-81.067z" />
<glyph unicode="&#xe739;" d="M853.333 589.44v199.893h-199.893l-141.44 141.44-141.44-141.44h-199.893v-199.893l-141.44-141.44 141.44-141.44v-199.893h199.893l141.44-141.44 141.44 141.44h199.893v199.893l141.44 141.44-141.44 141.44zM512 192c-141.44 0-256 114.56-256 256s114.56 256 256 256 256-114.56 256-256-114.56-256-256-256zM512 618.667c-94.293 0-170.667-76.373-170.667-170.667s76.373-170.667 170.667-170.667 170.667 76.373 170.667 170.667-76.373 170.667-170.667 170.667z" />
<glyph unicode="&#xe73a;" d="M853.333 306.56l141.44 141.44-141.44 141.44v199.893h-199.893l-141.44 141.44-141.44-141.44h-199.893v-199.893l-141.44-141.44 141.44-141.44v-199.893h199.893l141.44-141.44 141.44 141.44h199.893v199.893zM512 192c-141.44 0-256 114.56-256 256s114.56 256 256 256 256-114.56 256-256-114.56-256-256-256z" />
<glyph unicode="&#xe73b;" d="M853.333 306.56l141.44 141.44-141.44 141.44v199.893h-199.893l-141.44 141.44-141.44-141.44h-199.893v-199.893l-141.44-141.44 141.44-141.44v-199.893h199.893l141.44-141.44 141.44 141.44h199.893v199.893zM512 192v512c141.44 0 256-114.56 256-256s-114.56-256-256-256z" />
<glyph unicode="&#xe73c;" d="M554.667 872.533v-129.28c144.64-20.693 256-144.853 256-295.253 0-38.187-7.467-74.667-20.48-108.16l110.933-65.493c23.68 53.12 37.547 111.573 37.547 173.653 0 221.227-168.32 402.987-384 424.533zM512 149.333c-164.907 0-298.667 133.76-298.667 298.667 0 150.4 111.36 274.56 256 295.253v129.28c-215.893-21.333-384-203.307-384-424.533 0-235.733 190.72-426.667 426.453-426.667 141.227 0 266.027 68.907 343.68 174.507l-110.72 65.28c-54.613-68.053-138.453-111.787-232.747-111.787z" />
<glyph unicode="&#xe73d;" d="M298.667 743.040h426.667v-85.333h85.333v170.667c0 47.147-38.187 84.907-85.333 84.907l-426.667 0.427c-47.147 0-85.333-38.187-85.333-85.333v-170.667h85.333v85.333zM657.707 248.747l195.627 195.627-195.627 195.627-60.373-60.373 135.253-135.253-135.253-135.467 60.373-60.16zM426.667 308.907l-135.253 135.253 135.253 135.467-60.373 60.373-195.627-195.627 195.627-195.627 60.373 60.16zM725.333 145.707h-426.667v85.333h-85.333v-170.667c0-47.147 38.187-85.333 85.333-85.333h426.667c47.147 0 85.333 38.187 85.333 85.333v170.667h-85.333v-85.333z" />
<glyph unicode="&#xe73e;" d="M170.667 704h768v85.333h-768c-47.147 0-85.333-38.187-85.333-85.333v-469.333h-85.333v-128h597.333v128h-426.667v469.333zM981.333 618.667h-256c-23.467 0-42.667-19.2-42.667-42.667v-426.667c0-23.467 19.2-42.667 42.667-42.667h256c23.467 0 42.667 19.2 42.667 42.667v426.667c0 23.467-19.2 42.667-42.667 42.667zM938.667 234.667h-170.667v298.667h170.667v-298.667z" />
<glyph unicode="&#xe73f;" d="M896 832h-768c-47.147 0-85.333-38.187-85.333-85.333v-512c0-47.147 38.187-85.333 85.333-85.333h213.333v-85.333h341.333v85.333h213.333c47.147 0 84.907 38.187 84.907 85.333l0.427 512c0 47.147-38.187 85.333-85.333 85.333zM896 234.667h-768v512h768v-512zM810.667 618.667h-469.333v-85.333h469.333v85.333zM810.667 448h-469.333v-85.333h469.333v85.333zM298.667 618.667h-85.333v-85.333h85.333v85.333zM298.667 448h-85.333v-85.333h85.333v85.333z" />
<glyph unicode="&#xe740;" d="M512 618.667c-94.293 0-170.667-76.373-170.667-170.667s76.373-170.667 170.667-170.667 170.667 76.373 170.667 170.667-76.373 170.667-170.667 170.667zM893.44 490.667c-19.627 177.92-160.853 319.147-338.773 338.773v87.893h-85.333v-87.893c-177.92-19.627-319.147-160.853-338.773-338.773h-87.893v-85.333h87.893c19.627-177.92 160.853-319.147 338.773-338.773v-87.893h85.333v87.893c177.92 19.627 319.147 160.853 338.773 338.773h87.893v85.333h-87.893zM512 149.333c-164.907 0-298.667 133.76-298.667 298.667s133.76 298.667 298.667 298.667 298.667-133.76 298.667-298.667-133.76-298.667-298.667-298.667z" />
<glyph unicode="&#xe741;" d="M893.44 490.667c-19.627 177.92-160.853 319.147-338.773 338.773v87.893h-85.333v-87.893c-177.92-19.627-319.147-160.853-338.773-338.773h-87.893v-85.333h87.893c19.627-177.92 160.853-319.147 338.773-338.773v-87.893h85.333v87.893c177.92 19.627 319.147 160.853 338.773 338.773h87.893v85.333h-87.893zM512 149.333c-164.907 0-298.667 133.76-298.667 298.667s133.76 298.667 298.667 298.667 298.667-133.76 298.667-298.667-133.76-298.667-298.667-298.667z" />
<glyph unicode="&#xe742;" d="M893.44 490.667c-19.627 177.92-160.853 319.147-338.773 338.773v87.893h-85.333v-87.893c-48.213-5.333-93.44-19.84-134.613-41.387l64-64c34.987 14.507 73.173 22.613 113.28 22.613 164.907 0 298.667-133.76 298.667-298.667 0-40.107-8.107-78.293-22.4-113.28l64-64c21.547 41.173 35.84 86.4 41.173 134.613h87.893v85.333h-87.893zM128 777.6l86.827-86.827c-45.653-55.893-75.947-124.587-84.267-200.107h-87.893v-85.333h87.893c19.627-177.92 160.853-319.147 338.773-338.773v-87.893h85.333v87.893c75.52 8.32 144.213 38.827 200.107 84.48l86.827-87.040 54.4 54.187-713.6 713.813-54.4-54.4zM693.973 211.627c-50.347-38.827-113.28-62.293-181.973-62.293-164.907 0-298.667 133.76-298.667 298.667 0 68.693 23.467 131.627 62.293 181.973l418.347-418.347z" />
<glyph unicode="&#xe743;" d="M893.44 487.040c-19.627 177.92-160.853 319.147-338.773 338.773v87.893h-85.333v-87.893c-48.213-5.333-93.44-19.84-134.613-41.387l64-64c34.987 14.293 73.173 22.4 113.28 22.4 164.907 0 298.667-133.76 298.667-298.667 0-40.107-8.107-78.293-22.4-113.28l64-64c21.547 41.173 35.84 86.4 41.173 134.613h87.893v85.333h-87.893zM128 773.973l86.827-86.827c-45.653-55.893-76.16-124.587-84.48-200.107h-87.68v-85.333h87.893c19.627-177.92 160.853-319.147 338.773-338.773v-87.893h85.333v87.893c75.52 8.32 144.213 38.827 200.107 84.48l87.040-87.040 54.187 54.187-713.6 713.813-54.4-54.4zM693.973 208c-50.347-38.827-113.493-62.293-181.973-62.293-164.907 0-298.667 133.76-298.667 298.667 0 68.693 23.467 131.627 62.293 181.973l418.347-418.347z" />
<glyph unicode="&#xe744;" d="M893.44 487.040c-19.627 177.92-160.853 319.147-338.773 338.773v87.893h-85.333v-87.893c-177.92-19.627-319.147-160.853-338.773-338.773h-87.893v-85.333h87.893c19.627-177.92 160.853-319.147 338.773-338.773v-87.893h85.333v87.893c177.92 19.627 319.147 160.853 338.773 338.773h87.893v85.333h-87.893zM512 145.707c-164.907 0-298.667 133.76-298.667 298.667s133.76 298.667 298.667 298.667 298.667-133.76 298.667-298.667-133.76-298.667-298.667-298.667z" />
<glyph unicode="&#xe745;" d="M298.667 192h85.333v512h-85.333v-512zM469.333 21.333h85.333v853.333h-85.333v-853.333zM128 362.667h85.333v170.667h-85.333v-170.667zM640 192h85.333v512h-85.333v-512zM810.667 533.333v-170.667h85.333v170.667h-85.333z" />
<glyph unicode="&#xe746;" d="M85.333 21.333h853.333v853.333zM725.333 661.333l-640-640h640z" />
<glyph unicode="&#xe747;" d="M512.427 43.093l496.213 618.24c-19.2 14.507-210.133 170.667-496.64 170.667s-477.44-156.16-496.64-170.667l496.64-618.667 0.427 0.427zM150.827 492.587l361.173-449.92 0.427 0.427 360.96 449.493c-18.347 14.080-156.16 126.080-361.387 126.080-205.44 0-343.040-112-361.173-126.080z" />
<glyph unicode="&#xe748;" d="M853.333 871.040h-682.667c-47.147 0-85.333-38.187-85.333-85.333v-682.667c0-47.147 38.187-85.333 85.333-85.333h682.667c47.147 0 85.333 38.187 85.333 85.333v682.667c0 47.147-38.187 85.333-85.333 85.333zM853.333 103.040h-682.667v682.667h682.667v-682.667zM768 700.373h-213.333c-47.147 0-85.333-38.187-85.333-85.333v-97.067c-25.387-14.72-42.667-42.027-42.667-73.6 0-47.147 38.187-85.333 85.333-85.333s85.333 38.187 85.333 85.333c0 31.573-17.28 58.667-42.667 73.6v97.067h128v-341.333h-341.333v341.333h85.333v85.333h-170.667v-512h512v512z" />
<glyph unicode="&#xe749;" d="M170.667 789.333h298.667v85.333h-298.667c-47.147 0-85.333-38.187-85.333-85.333v-298.667h85.333v298.667zM426.667 405.333l-170.667-213.333h512l-128 170.667-86.613-115.627-126.72 158.293zM725.333 597.333c0 35.413-28.587 64-64 64s-64-28.587-64-64 28.587-64 64-64 64 28.587 64 64zM853.333 874.667h-298.667v-85.333h298.667v-298.667h85.333v298.667c0 47.147-38.187 85.333-85.333 85.333zM853.333 106.667h-298.667v-85.333h298.667c47.147 0 85.333 38.187 85.333 85.333v298.667h-85.333v-298.667zM170.667 405.333h-85.333v-298.667c0-47.147 38.187-85.333 85.333-85.333h298.667v85.333h-298.667v298.667z" />
<glyph unicode="&#xe74a;" d="M554.667 405.333v-341.333h341.333v341.333h-341.333zM128 64h341.333v341.333h-341.333v-341.333zM128 832v-341.333h341.333v341.333h-341.333zM710.613 888.107l-241.28-241.493 241.28-241.28 241.28 241.28-241.28 241.493z" />
<glyph unicode="&#xe74b;" d="M896 746.667h-768c-47.147 0-85.333-38.187-85.333-85.333v-426.667c0-47.147 38.187-85.333 85.333-85.333h768c47.147 0 85.333 38.187 85.333 85.333v426.667c0 47.147-38.187 85.333-85.333 85.333zM810.667 234.667h-597.333v426.667h597.333v-426.667zM426.667 277.333h170.667c23.68 0 42.667 19.2 42.667 42.667v128c0 23.467-18.987 42.667-42.667 42.667v42.667c0 47.147-38.187 85.333-85.333 85.333s-85.333-38.187-85.333-85.333v-42.667c-23.68 0-42.667-19.2-42.667-42.667v-128c0-23.467 18.987-42.667 42.667-42.667zM460.8 533.333c0 28.373 22.827 51.2 51.2 51.2s51.2-23.040 51.2-51.2v-42.667h-102.4v42.667z" />
<glyph unicode="&#xe74c;" d="M426.667 277.333h170.667c23.68 0 42.667 19.2 42.667 42.667v128c0 23.467-18.987 42.667-42.667 42.667v42.667c0 47.147-38.187 85.333-85.333 85.333s-85.333-38.187-85.333-85.333v-42.667c-23.68 0-42.667-19.2-42.667-42.667v-128c0-23.467 18.987-42.667 42.667-42.667zM460.8 533.333c0 28.373 22.827 51.2 51.2 51.2s51.2-23.040 51.2-51.2v-42.667h-102.4v42.667zM725.333 917.333h-426.667c-47.147 0-85.333-38.187-85.333-85.333v-768c0-47.147 38.187-85.333 85.333-85.333h426.667c47.147 0 85.333 38.187 85.333 85.333v768c0 47.147-38.187 85.333-85.333 85.333zM725.333 149.333h-426.667v597.333h426.667v-597.333z" />
<glyph unicode="&#xe74d;" d="M992.213 415.147l-109.653 109.653-60.373-60.373 94.507-94.507-241.28-241.28-482.773 482.773 241.28 241.28 89.387-89.387 60.373 60.373-104.533 104.533c-24.96 24.96-65.493 24.96-90.453 0l-271.573-271.573c-24.96-24.96-24.96-65.493 0-90.453l512.853-512.853c24.96-24.96 65.493-24.96 90.453 0l271.573 271.573c25.173 24.747 25.173 65.28 0.213 90.24zM361.173 85.973c-139.307 66.133-239.36 201.6-254.507 362.027h-64c21.76-262.827 241.493-469.333 509.867-469.333 9.6 0 18.773 0.853 28.373 1.493l-162.773 162.773-56.96-56.96zM682.667 576h213.333c23.68 0 42.667 19.2 42.667 42.667v170.667c0 23.467-18.987 42.667-42.667 42.667v21.333c0 58.88-47.787 106.667-106.667 106.667s-106.667-47.787-106.667-106.667v-21.333c-23.68 0-42.667-19.2-42.667-42.667v-170.667c0-23.467 18.987-42.667 42.667-42.667zM716.8 853.333c0 40.107 32.427 72.533 72.533 72.533s72.533-32.427 72.533-72.533v-21.333h-145.067v21.333z" />
<glyph unicode="&#xe74e;" d="M703.36 852.693c139.307-66.133 239.36-201.6 254.507-362.027h64c-21.76 262.827-241.493 469.333-509.867 469.333-9.6 0-18.773-0.853-28.373-1.493l162.773-162.773 56.96 56.96zM436.48 885.547c-24.96 24.96-65.493 24.96-90.453 0l-271.573-271.573c-24.96-24.96-24.96-65.493 0-90.453l512.853-512.853c24.96-24.96 65.493-24.96 90.453 0l271.573 271.573c24.96 24.96 24.96 65.493 0 90.453l-512.853 512.853zM632.747 55.893l-513.067 512.853 271.573 271.573 512.853-512.853-271.36-271.573zM320.64 43.307c-139.307 66.133-239.36 201.6-254.507 362.027h-64c21.76-262.827 241.493-469.333 509.867-469.333 9.6 0 18.773 0.853 28.373 1.493l-162.773 162.773-56.96-56.96z" />
<glyph unicode="&#xe74f;" d="M768 874.667h-341.333l-255.147-256-0.853-512c0-46.933 38.4-85.333 85.333-85.333h512c46.933 0 85.333 38.4 85.333 85.333v682.667c0 46.933-38.4 85.333-85.333 85.333zM512 618.667h-85.333v170.667h85.333v-170.667zM640 618.667h-85.333v170.667h85.333v-170.667zM768 618.667h-85.333v170.667h85.333v-170.667z" />
<glyph unicode="&#xe750;" d="M384 277.333h277.333c58.88 0 106.667 47.787 106.667 106.667s-47.787 106.667-106.667 106.667h-2.133c-10.453 72.32-72.107 128-147.2 128-59.733 0-110.933-35.413-134.827-86.187h-7.040c-64.213-6.827-114.133-61.227-114.133-127.147 0-70.613 57.387-128 128-128zM896 832h-768c-47.147 0-85.333-38.187-85.333-85.333v-597.333c0-47.147 38.187-85.333 85.333-85.333h768c47.147 0 85.333 38.187 85.333 85.333v597.333c0 47.147-38.187 85.333-85.333 85.333zM896 148.693h-768v598.613h768v-598.613z" />
<glyph unicode="&#xe751;" d="M85.333 21.333h853.333v853.333z" />
<glyph unicode="&#xe752;" d="M85.333 21.333h853.333v853.333zM512 448l-426.667-426.667h426.667z" />
<glyph unicode="&#xe753;" d="M85.333 21.333h853.333v853.333zM597.333 533.333l-512-512h512z" />
<glyph unicode="&#xe754;" d="M85.333 21.333h853.333v853.333zM725.333 661.333l-640-640h640z" />
<glyph unicode="&#xe755;" d="M85.333 21.333h853.333v853.333z" />
<glyph unicode="&#xe756;" d="M938.667 618.667v256l-853.333-853.333h682.667v597.333zM853.333 21.333h85.333v85.333h-85.333v-85.333zM853.333 533.333v-341.333h85.333v341.333h-85.333z" />
<glyph unicode="&#xe757;" d="M938.667 618.667v256l-853.333-853.333h682.667v597.333zM853.333 533.333v-341.333h85.333v341.333h-85.333zM512 21.333v426.667l-426.667-426.667h426.667zM853.333 21.333h85.333v85.333h-85.333v-85.333z" />
<glyph unicode="&#xe758;" d="M938.667 618.667v256l-853.333-853.333h682.667v597.333zM597.333 21.333v512l-512-512h512zM853.333 533.333v-341.333h85.333v341.333h-85.333zM853.333 21.333h85.333v85.333h-85.333v-85.333z" />
<glyph unicode="&#xe759;" d="M938.667 618.667v256l-853.333-853.333h682.667v597.333zM725.333 21.333v640l-640-640h640zM853.333 533.333v-341.333h85.333v341.333h-85.333zM853.333 21.333h85.333v85.333h-85.333v-85.333z" />
<glyph unicode="&#xe75a;" d="M853.333 192h85.333v341.333h-85.333v-341.333zM853.333 21.333h85.333v85.333h-85.333v-85.333zM85.333 21.333h682.667v597.333h170.667v256l-853.333-853.333z" />
<glyph unicode="&#xe75b;" d="M810.24 746.667c0 47.147-37.76 85.333-84.907 85.333h-298.667l-99.84-99.84 483.84-483.84-0.427 498.347zM155.733 794.453l-54.187-54.187 111.787-112v-478.933c0-47.147 38.187-85.333 85.333-85.333h427.093c14.933 0 28.8 4.267 40.96 10.88l80.213-80.213 54.187 54.4-745.387 745.387z" />
<glyph unicode="&#xe75c;" d="M853.333 668.587v-561.92h-561.92l561.92 561.92zM938.667 874.667l-853.333-853.333h853.333v853.333z" />
<glyph unicode="&#xe75d;" d="M896 917.333l-366.507-366.507 366.507-366.507v733.013zM203.733 768l-54.4-54.187 271.573-271.573-378.24-378.24h756.267l85.333-85.333 54.4 54.4-734.933 734.933z" />
<glyph unicode="&#xe75e;" d="M512.427 43.093l496.213 618.24c-19.2 14.507-210.133 170.667-496.64 170.667s-477.44-156.16-496.64-170.667l496.64-618.667 0.427 0.427z" />
<glyph unicode="&#xe75f;" d="M512.427 43.093l496.213 618.24c-19.2 14.507-210.133 170.667-496.64 170.667s-477.44-156.16-496.64-170.667l496.64-618.667 0.427 0.427zM284.587 325.973l227.413-283.307 0.213 0.213 227.2 283.093c-11.307 8.747-98.133 79.36-227.413 79.36s-216.107-70.613-227.413-79.36z" />
<glyph unicode="&#xe760;" d="M512.427 43.093l496.213 618.24c-19.2 14.507-210.133 170.667-496.64 170.667s-477.44-156.16-496.64-170.667l496.64-618.667 0.427 0.427zM204.373 426.027l307.627-383.36 0.213 0.427 307.413 382.933c-15.36 11.947-132.693 107.307-307.627 107.307s-292.267-95.36-307.627-107.307z" />
<glyph unicode="&#xe761;" d="M512.427 43.093l496.213 618.24c-19.2 14.507-210.133 170.667-496.64 170.667s-477.44-156.16-496.64-170.667l496.64-618.667 0.427 0.427zM150.827 492.587l361.173-449.92 0.427 0.427 360.96 449.493c-18.347 14.080-156.16 126.080-361.387 126.080-205.44 0-343.040-112-361.173-126.080z" />
<glyph unicode="&#xe762;" d="M512.427 43.093l496.213 618.24c-19.2 14.507-210.133 170.667-496.64 170.667s-477.44-156.16-496.64-170.667l496.64-618.667 0.427 0.427z" />
<glyph unicode="&#xe763;" d="M1008.64 661.333c-19.2 14.507-210.133 170.667-496.64 170.667-64.213 0-123.307-8.107-177.067-20.48l440.747-440.32 232.96 290.133zM139.733 898.347l-54.4-54.4 87.68-87.68c-91.307-42.027-147.627-87.467-157.653-95.147l496.64-618.453 0.427 0.427 166.4 207.36 141.44-141.44 54.4 54.4-734.933 734.933z" />
<glyph unicode="&#xe764;" d="M85.333 106.667h853.333v170.667h-853.333v-170.667zM170.667 234.667h85.333v-85.333h-85.333v85.333zM85.333 789.333v-170.667h853.333v170.667h-853.333zM256 661.333h-85.333v85.333h85.333v-85.333zM85.333 362.667h853.333v170.667h-853.333v-170.667zM170.667 490.667h85.333v-85.333h-85.333v85.333z" />
<glyph unicode="&#xe765;" d="M640 661.333v-170.667h42.667v-85.333h-128v341.333h85.333l-128 170.667-128-170.667h85.333v-341.333h-128v88.32c30.080 15.573 51.2 46.080 51.2 82.347 0 51.84-42.027 93.867-93.867 93.867s-93.867-42.027-93.867-93.867c0-36.267 21.12-66.773 51.2-82.347v-88.32c0-47.147 38.187-85.333 85.333-85.333h128v-130.133c-30.293-15.573-51.2-46.72-51.2-83.2 0-51.84 42.027-93.867 93.867-93.867s93.867 42.027 93.867 93.867c0 36.48-20.907 67.627-51.2 83.2v130.133h128c47.147 0 85.333 38.187 85.333 85.333v85.333h42.667v170.667h-170.667z" />
<glyph unicode="&#xe766;" d="M874.667 554.667c11.947 0 23.253-1.707 34.773-3.413l114.56 152.747c-142.72 107.093-320 170.667-512 170.667s-369.28-63.573-512-170.667l512-682.667 149.333 199.040v120.96c0 117.76 95.573 213.333 213.333 213.333zM981.333 277.333v64c0 58.88-47.787 106.667-106.667 106.667s-106.667-47.787-106.667-106.667v-64c-23.467 0-42.667-19.2-42.667-42.667v-170.667c0-23.467 19.2-42.667 42.667-42.667h213.333c23.467 0 42.667 19.2 42.667 42.667v170.667c0 23.467-19.2 42.667-42.667 42.667zM938.667 277.333h-128v64c0 35.413 28.587 64 64 64s64-28.587 64-64v-64z" />
<glyph unicode="&#xe767;" d="M512 490.667c-47.147 0-85.333-38.187-85.333-85.333s38.187-85.333 85.333-85.333 85.333 38.187 85.333 85.333-38.187 85.333-85.333 85.333zM768 405.333c0 141.44-114.56 256-256 256s-256-114.56-256-256c0-94.72 51.413-177.067 127.787-221.44l43.093 74.24c-50.987 29.653-85.547 84.053-85.547 147.2 0 94.293 76.373 170.667 170.667 170.667s170.667-76.373 170.667-170.667c0-63.147-34.56-117.547-85.547-146.987l43.093-74.24c76.373 44.16 127.787 126.507 127.787 221.227zM512 832c-235.733 0-426.667-190.933-426.667-426.667 0-157.653 85.76-295.040 213.12-368.853l42.667 73.813c-101.76 58.88-170.453 168.96-170.453 295.040 0 188.587 152.747 341.333 341.333 341.333s341.333-152.747 341.333-341.333c0-126.080-68.693-236.16-170.453-295.253l42.667-73.813c127.36 74.027 213.12 211.413 213.12 369.067 0 235.733-191.147 426.667-426.667 426.667z" />
<glyph unicode="&#xe768;" d="M704 704v-490.667c0-94.293-76.373-170.667-170.667-170.667s-170.667 76.373-170.667 170.667v533.333c0 58.88 47.787 106.667 106.667 106.667s106.667-47.787 106.667-106.667v-448c0-23.467-18.987-42.667-42.667-42.667s-42.667 19.2-42.667 42.667v405.333h-64v-405.333c0-58.88 47.787-106.667 106.667-106.667s106.667 47.787 106.667 106.667v448c0 94.293-76.373 170.667-170.667 170.667s-170.667-76.373-170.667-170.667v-533.333c0-129.707 105.173-234.667 234.667-234.667s234.667 104.96 234.667 234.667v490.667h-64z" />
<glyph unicode="&#xe769;" d="M503.467 494.933c-96.853 25.173-128 50.987-128 91.52 0 46.507 42.88 79.147 115.2 79.147 75.947 0 104.107-36.267 106.667-89.6h94.293c-2.773 73.6-47.787 140.587-136.96 162.56v93.44h-128v-92.16c-82.773-18.133-149.333-71.467-149.333-154.027 0-98.56 81.707-147.627 200.533-176.213 106.88-25.6 128-62.933 128-103.040 0-29.227-20.693-76.16-115.2-76.16-87.893 0-122.667 39.467-127.147 89.6h-94.080c5.333-93.44 75.093-145.707 157.227-163.413v-92.587h128v91.733c82.987 16 149.333 64 149.333 151.68 0 120.747-103.68 162.133-200.533 187.52z" />
<glyph unicode="&#xe76a;" d="M128 832v-768h768v768h-768zM469.333 149.333h-256v256h256v-256zM469.333 490.667h-256v256h256v-256zM810.667 149.333h-256v256h256v-256zM810.667 490.667h-256v256h256v-256z" />
<glyph unicode="&#xe76b;" d="M384 490.667h-85.333v-85.333h85.333v85.333zM554.667 320h-85.333v-85.333h85.333v85.333zM384 832h-85.333v-85.333h85.333v85.333zM554.667 490.667h-85.333v-85.333h85.333v85.333zM213.333 832h-85.333v-85.333h85.333v85.333zM554.667 661.333h-85.333v-85.333h85.333v85.333zM725.333 490.667h-85.333v-85.333h85.333v85.333zM554.667 832h-85.333v-85.333h85.333v85.333zM725.333 832h-85.333v-85.333h85.333v85.333zM810.667 405.333h85.333v85.333h-85.333v-85.333zM810.667 234.667h85.333v85.333h-85.333v-85.333zM213.333 661.333h-85.333v-85.333h85.333v85.333zM810.667 832v-85.333h85.333v85.333h-85.333zM810.667 576h85.333v85.333h-85.333v-85.333zM213.333 490.667h-85.333v-85.333h85.333v85.333zM128 64h768v85.333h-768v-85.333zM213.333 320h-85.333v-85.333h85.333v85.333z" />
<glyph unicode="&#xe76c;" d="M298.667 746.667h85.333v85.333h-85.333v-85.333zM298.667 405.333h85.333v85.333h-85.333v-85.333zM298.667 64h85.333v85.333h-85.333v-85.333zM469.333 234.667h85.333v85.333h-85.333v-85.333zM469.333 64h85.333v85.333h-85.333v-85.333zM128 64h85.333v85.333h-85.333v-85.333zM128 234.667h85.333v85.333h-85.333v-85.333zM128 405.333h85.333v85.333h-85.333v-85.333zM128 576h85.333v85.333h-85.333v-85.333zM128 746.667h85.333v85.333h-85.333v-85.333zM469.333 405.333h85.333v85.333h-85.333v-85.333zM810.667 234.667h85.333v85.333h-85.333v-85.333zM810.667 405.333h85.333v85.333h-85.333v-85.333zM810.667 64h85.333v85.333h-85.333v-85.333zM810.667 576h85.333v85.333h-85.333v-85.333zM469.333 576h85.333v85.333h-85.333v-85.333zM810.667 832v-85.333h85.333v85.333h-85.333zM469.333 746.667h85.333v85.333h-85.333v-85.333zM640 64h85.333v85.333h-85.333v-85.333zM640 405.333h85.333v85.333h-85.333v-85.333zM640 746.667h85.333v85.333h-85.333v-85.333z" />
<glyph unicode="&#xe76d;" d="M757.333 661.333l-160 160-426.667-426.667v-160h160l426.667 426.667zM883.413 787.413c16.64 16.64 16.64 43.733 0 60.373l-99.627 99.627c-16.64 16.64-43.733 16.64-60.373 0l-83.413-83.413 160-160 83.413 83.413zM0 106.667h1024v-170.667h-1024z" />
<glyph unicode="&#xe76e;" d="M128 64h85.333v85.333h-85.333v-85.333zM213.333 661.333h-85.333v-85.333h85.333v85.333zM128 234.667h85.333v85.333h-85.333v-85.333zM298.667 64h85.333v85.333h-85.333v-85.333zM213.333 832h-85.333v-85.333h85.333v85.333zM384 832h-85.333v-85.333h85.333v85.333zM725.333 832h-85.333v-85.333h85.333v85.333zM554.667 661.333h-85.333v-85.333h85.333v85.333zM554.667 832h-85.333v-85.333h85.333v85.333zM810.667 234.667h85.333v85.333h-85.333v-85.333zM469.333 64h85.333v85.333h-85.333v-85.333zM128 405.333h768v85.333h-768v-85.333zM810.667 832v-85.333h85.333v85.333h-85.333zM810.667 576h85.333v85.333h-85.333v-85.333zM469.333 234.667h85.333v85.333h-85.333v-85.333zM640 64h85.333v85.333h-85.333v-85.333zM810.667 64h85.333v85.333h-85.333v-85.333z" />
<glyph unicode="&#xe76f;" d="M128 64h85.333v85.333h-85.333v-85.333zM298.667 64h85.333v85.333h-85.333v-85.333zM213.333 661.333h-85.333v-85.333h85.333v85.333zM128 234.667h85.333v85.333h-85.333v-85.333zM384 832h-85.333v-85.333h85.333v85.333zM213.333 832h-85.333v-85.333h85.333v85.333zM725.333 832h-85.333v-85.333h85.333v85.333zM810.667 576h85.333v85.333h-85.333v-85.333zM810.667 832v-85.333h85.333v85.333h-85.333zM640 64h85.333v85.333h-85.333v-85.333zM554.667 832h-85.333v-341.333h-341.333v-85.333h341.333v-341.333h85.333v341.333h341.333v85.333h-341.333v341.333zM810.667 64h85.333v85.333h-85.333v-85.333zM810.667 234.667h85.333v85.333h-85.333v-85.333z" />
<glyph unicode="&#xe770;" d="M469.333 64h85.333v85.333h-85.333v-85.333zM469.333 234.667h85.333v85.333h-85.333v-85.333zM469.333 746.667h85.333v85.333h-85.333v-85.333zM469.333 576h85.333v85.333h-85.333v-85.333zM469.333 405.333h85.333v85.333h-85.333v-85.333zM298.667 64h85.333v85.333h-85.333v-85.333zM298.667 746.667h85.333v85.333h-85.333v-85.333zM298.667 405.333h85.333v85.333h-85.333v-85.333zM128 64h85.333v768h-85.333v-768zM810.667 576h85.333v85.333h-85.333v-85.333zM640 64h85.333v85.333h-85.333v-85.333zM810.667 234.667h85.333v85.333h-85.333v-85.333zM810.667 832v-85.333h85.333v85.333h-85.333zM810.667 405.333h85.333v85.333h-85.333v-85.333zM810.667 64h85.333v85.333h-85.333v-85.333zM640 405.333h85.333v85.333h-85.333v-85.333zM640 746.667h85.333v85.333h-85.333v-85.333z" />
<glyph unicode="&#xe771;" d="M554.667 661.333h-85.333v-85.333h85.333v85.333zM554.667 490.667h-85.333v-85.333h85.333v85.333zM725.333 490.667h-85.333v-85.333h85.333v85.333zM128 832v-768h768v768h-768zM810.667 149.333h-597.333v597.333h597.333v-597.333zM554.667 320h-85.333v-85.333h85.333v85.333zM384 490.667h-85.333v-85.333h85.333v85.333z" />
<glyph unicode="&#xe772;" d="M298.667 64h85.333v85.333h-85.333v-85.333zM128 746.667h85.333v85.333h-85.333v-85.333zM298.667 746.667h85.333v85.333h-85.333v-85.333zM298.667 405.333h85.333v85.333h-85.333v-85.333zM128 64h85.333v85.333h-85.333v-85.333zM469.333 64h85.333v85.333h-85.333v-85.333zM128 405.333h85.333v85.333h-85.333v-85.333zM128 234.667h85.333v85.333h-85.333v-85.333zM128 576h85.333v85.333h-85.333v-85.333zM469.333 234.667h85.333v85.333h-85.333v-85.333zM640 405.333h85.333v85.333h-85.333v-85.333zM810.667 832v-768h85.333v768h-85.333zM640 64h85.333v85.333h-85.333v-85.333zM640 746.667h85.333v85.333h-85.333v-85.333zM469.333 405.333h85.333v85.333h-85.333v-85.333zM469.333 746.667h85.333v85.333h-85.333v-85.333zM469.333 576h85.333v85.333h-85.333v-85.333z" />
<glyph unicode="&#xe773;" d="M640 64h85.333v85.333h-85.333v-85.333zM810.667 64h85.333v85.333h-85.333v-85.333zM298.667 64h85.333v85.333h-85.333v-85.333zM469.333 64h85.333v85.333h-85.333v-85.333zM810.667 234.667h85.333v85.333h-85.333v-85.333zM810.667 405.333h85.333v85.333h-85.333v-85.333zM128 832v-768h85.333v682.667h682.667v85.333h-768zM810.667 576h85.333v85.333h-85.333v-85.333z" />
<glyph unicode="&#xe774;" d="M298.667 64h85.333v85.333h-85.333v-85.333zM298.667 405.333h85.333v85.333h-85.333v-85.333zM469.333 405.333h85.333v85.333h-85.333v-85.333zM469.333 64h85.333v85.333h-85.333v-85.333zM128 234.667h85.333v85.333h-85.333v-85.333zM128 64h85.333v85.333h-85.333v-85.333zM128 405.333h85.333v85.333h-85.333v-85.333zM128 576h85.333v85.333h-85.333v-85.333zM469.333 234.667h85.333v85.333h-85.333v-85.333zM810.667 576h85.333v85.333h-85.333v-85.333zM810.667 405.333h85.333v85.333h-85.333v-85.333zM128 832v-85.333h768v85.333h-768zM810.667 234.667h85.333v85.333h-85.333v-85.333zM640 64h85.333v85.333h-85.333v-85.333zM469.333 576h85.333v85.333h-85.333v-85.333zM810.667 64h85.333v85.333h-85.333v-85.333zM640 405.333h85.333v85.333h-85.333v-85.333z" />
<glyph unicode="&#xe775;" d="M128 576h85.333v85.333h-85.333v-85.333zM128 746.667h85.333v85.333h-85.333v-85.333zM298.667 64h85.333v85.333h-85.333v-85.333zM298.667 405.333h85.333v85.333h-85.333v-85.333zM128 405.333h85.333v85.333h-85.333v-85.333zM128 64h85.333v85.333h-85.333v-85.333zM128 234.667h85.333v85.333h-85.333v-85.333zM298.667 746.667h85.333v85.333h-85.333v-85.333zM810.667 234.667h85.333v85.333h-85.333v-85.333zM469.333 64h85.333v768h-85.333v-768zM810.667 64h85.333v85.333h-85.333v-85.333zM810.667 405.333h85.333v85.333h-85.333v-85.333zM810.667 832v-85.333h85.333v85.333h-85.333zM810.667 576h85.333v85.333h-85.333v-85.333zM640 746.667h85.333v85.333h-85.333v-85.333zM640 64h85.333v85.333h-85.333v-85.333zM640 405.333h85.333v85.333h-85.333v-85.333z" />
<glyph unicode="&#xe776;" d="M298.667 320v-85.333h426.667v85.333h-426.667zM128 64h768v85.333h-768v-85.333zM128 405.333h768v85.333h-768v-85.333zM298.667 661.333v-85.333h426.667v85.333h-426.667zM128 832v-85.333h768v85.333h-768z" />
<glyph unicode="&#xe777;" d="M128 64h768v85.333h-768v-85.333zM128 234.667h768v85.333h-768v-85.333zM128 405.333h768v85.333h-768v-85.333zM128 576h768v85.333h-768v-85.333zM128 832v-85.333h768v85.333h-768z" />
<glyph unicode="&#xe778;" d="M640 320h-512v-85.333h512v85.333zM640 661.333h-512v-85.333h512v85.333zM128 405.333h768v85.333h-768v-85.333zM128 64h768v85.333h-768v-85.333zM128 832v-85.333h768v85.333h-768z" />
<glyph unicode="&#xe779;" d="M128 64h768v85.333h-768v-85.333zM384 234.667h512v85.333h-512v-85.333zM128 405.333h768v85.333h-768v-85.333zM384 576h512v85.333h-512v-85.333zM128 832v-85.333h768v85.333h-768z" />
<glyph unicode="&#xe77a;" d="M665.6 499.627c41.173 28.8 70.4 75.307 70.4 119.040 0 96.213-74.453 170.667-170.667 170.667h-266.667v-597.333h300.373c89.387 0 158.293 72.533 158.293 161.707 0 64.853-36.907 120.107-91.733 145.92zM426.667 682.667h128c35.413 0 64-28.587 64-64s-28.587-64-64-64h-128v128zM576 298.667h-149.333v128h149.333c35.413 0 64-28.587 64-64s-28.587-64-64-64z" />
<glyph unicode="&#xe77b;" d="M139.52 746.667l-54.187-54.4 297.387-297.387-105.387-245.547h128l66.987 156.16 241.493-241.493 54.187 54.4-628.48 628.267zM256 746.667v-7.68l120.32-120.32h102.187l-30.72-71.467 89.6-89.6 69.12 161.067h246.827v128h-597.333z" />
<glyph unicode="&#xe77c;" d="M706.56 578.56l-381.44 381.44-60.373-60.373 101.547-101.547-219.52-219.52c-24.96-24.96-24.96-65.493 0-90.453l234.667-234.667c12.373-12.587 28.8-18.773 45.227-18.773s32.853 6.187 45.227 18.773l234.667 234.667c24.96 24.96 24.96 65.493 0 90.453zM222.080 533.333l204.587 204.373 204.587-204.373h-409.173zM810.667 469.333s-85.333-92.373-85.333-149.333c0-47.147 38.187-85.333 85.333-85.333s85.333 38.187 85.333 85.333c0 56.96-85.333 149.333-85.333 149.333zM0 106.667h1024v-170.667h-1024z" />
<glyph unicode="&#xe77d;" d="M768 362.667c0 170.667-256 460.8-256 460.8s-56.747-64.427-116.693-150.187l366.293-366.293c4.053 17.92 6.4 36.48 6.4 55.68zM730.453 229.547l-505.6 505.6-54.187-54.4 141.653-141.653c-32.64-62.293-56.32-124.8-56.32-176.427 0-141.44 114.56-256 256-256 64.853 0 123.733 24.32 168.747 64l112.427-112.427 54.187 54.4-116.907 116.907z" />
<glyph unicode="&#xe77e;" d="M0 106.667h1024v-170.667h-1024zM469.333 832l-234.667-597.333h96l48 128h266.667l48-128h96l-234.667 597.333h-85.333zM410.667 448l101.333 270.293 101.333-270.293h-202.667z" />
<glyph unicode="&#xe77f;" d="M469.333 234.667h426.667v85.333h-426.667v-85.333zM128 448l170.667-170.667v341.333l-170.667-170.667zM128 64h768v85.333h-768v-85.333zM128 832v-85.333h768v85.333h-768zM469.333 576h426.667v85.333h-426.667v-85.333zM469.333 405.333h426.667v85.333h-426.667v-85.333z" />
<glyph unicode="&#xe780;" d="M128 64h768v85.333h-768v-85.333zM128 618.667v-341.333l170.667 170.667-170.667 170.667zM469.333 234.667h426.667v85.333h-426.667v-85.333zM128 832v-85.333h768v85.333h-768zM469.333 576h426.667v85.333h-426.667v-85.333zM469.333 405.333h426.667v85.333h-426.667v-85.333z" />
<glyph unicode="&#xe781;" d="M426.667 789.333v-128h94.507l-146.347-341.333h-118.827v-128h341.333v128h-94.507l146.347 341.333h118.827v128z" />
<glyph unicode="&#xe782;" d="M256 661.333h106.667l-149.333 149.333-149.333-149.333h106.667v-426.667h-106.667l149.333-149.333 149.333 149.333h-106.667v426.667zM426.667 746.667v-85.333h512v85.333h-512zM426.667 149.333h512v85.333h-512v-85.333zM426.667 405.333h512v85.333h-512v-85.333z" />
<glyph unicode="&#xe783;" d="M170.667 512c-35.413 0-64-28.587-64-64s28.587-64 64-64 64 28.587 64 64-28.587 64-64 64zM170.667 768c-35.413 0-64-28.587-64-64s28.587-64 64-64 64 28.587 64 64-28.587 64-64 64zM170.667 248.96c-31.36 0-56.96-25.387-56.96-56.96s25.6-56.96 56.96-56.96 56.96 25.387 56.96 56.96-25.6 56.96-56.96 56.96zM298.667 149.333h597.333v85.333h-597.333v-85.333zM298.667 405.333h597.333v85.333h-597.333v-85.333zM298.667 746.667v-85.333h597.333v85.333h-597.333z" />
<glyph unicode="&#xe784;" d="M85.333 234.667h85.333v-21.333h-42.667v-42.667h42.667v-21.333h-85.333v-42.667h128v170.667h-128v-42.667zM128 618.667h42.667v170.667h-85.333v-42.667h42.667v-128zM85.333 490.667h76.8l-76.8-89.6v-38.4h128v42.667h-76.8l76.8 89.6v38.4h-128v-42.667zM298.667 746.667v-85.333h597.333v85.333h-597.333zM298.667 149.333h597.333v85.333h-597.333v-85.333zM298.667 405.333h597.333v85.333h-597.333v-85.333z" />
<glyph unicode="&#xe785;" d="M768 789.333v42.667c0 23.467-19.2 42.667-42.667 42.667h-512c-23.467 0-42.667-19.2-42.667-42.667v-170.667c0-23.467 19.2-42.667 42.667-42.667h512c23.467 0 42.667 19.2 42.667 42.667v42.667h42.667v-170.667h-426.667v-469.333c0-23.467 19.2-42.667 42.667-42.667h85.333c23.467 0 42.667 19.2 42.667 42.667v384h341.333v341.333h-128z" />
<glyph unicode="&#xe786;" d="M256 234.667h128l85.333 170.667v256h-256v-256h128zM597.333 234.667h128l85.333 170.667v256h-256v-256h128z" />
<glyph unicode="&#xe787;" d="M384 789.333v-128h213.333v-512h128v512h213.333v128h-554.667zM128 448h128v-298.667h128v298.667h128v128h-384v-128z" />
<glyph unicode="&#xe788;" d="M426.667 149.333h170.667v128h-170.667v-128zM213.333 789.333v-128h213.333v-128h170.667v128h213.333v128h-597.333zM128 362.667h768v85.333h-768v-85.333z" />
<glyph unicode="&#xe789;" d="M768 789.333h-512v-85.333l277.333-256-277.333-256v-85.333h512v128h-298.667l213.333 213.333-213.333 213.333h298.667z" />
<glyph unicode="&#xe78a;" d="M384 533.333v-213.333h85.333v469.333h85.333v-469.333h85.333v469.333h85.333v85.333h-341.333c-94.293 0-170.667-76.373-170.667-170.667s76.373-170.667 170.667-170.667zM896 192l-170.667 170.667v-128h-512v-85.333h512v-128l170.667 170.667z" />
<glyph unicode="&#xe78b;" d="M512 234.667c141.44 0 256 114.56 256 256v341.333h-106.667v-341.333c0-82.56-66.773-149.333-149.333-149.333s-149.333 66.773-149.333 149.333v341.333h-106.667v-341.333c0-141.44 114.56-256 256-256zM213.333 149.333v-85.333h597.333v85.333h-597.333z" />
<glyph unicode="&#xe78c;" d="M426.667 533.333v-213.333h85.333v469.333h85.333v-469.333h85.333v469.333h85.333v85.333h-341.333c-94.293 0-170.667-76.373-170.667-170.667s76.373-170.667 170.667-170.667zM341.333 234.667v128l-170.667-170.667 170.667-170.667v128h512v85.333h-512z" />
<glyph unicode="&#xe78d;" d="M810.667 832h-597.333c-47.147 0-85.333-38.187-85.333-85.333v-597.333c0-47.147 38.187-85.333 85.333-85.333h597.333c47.147 0 85.333 38.187 85.333 85.333v597.333c0 47.147-38.187 85.333-85.333 85.333zM384 234.667h-85.333v298.667h85.333v-298.667zM554.667 234.667h-85.333v426.667h85.333v-426.667zM725.333 234.667h-85.333v170.667h85.333v-170.667z" />
<glyph unicode="&#xe78e;" d="M853.333 874.667h-682.667c-47.147 0-85.333-38.187-85.333-85.333v-512c0-47.147 38.187-85.333 85.333-85.333h597.333l170.667-170.667v768c0 47.147-38.187 85.333-85.333 85.333zM768 362.667h-512v85.333h512v-85.333zM768 490.667h-512v85.333h512v-85.333zM768 618.667h-512v85.333h512v-85.333z" />
<glyph unicode="&#xe78f;" d="M256 874.667c-47.147 0-84.907-38.187-84.907-85.333l-0.427-682.667c0-47.147 37.76-85.333 84.907-85.333h512.427c47.147 0 85.333 38.187 85.333 85.333v512l-256 256h-341.333zM554.667 576v234.667l234.667-234.667h-234.667z" />
<glyph unicode="&#xe790;" d="M511.787 874.667c-235.733 0-426.453-190.933-426.453-426.667s190.72-426.667 426.453-426.667c235.733 0 426.88 190.933 426.88 426.667s-191.147 426.667-426.88 426.667zM512 106.667c-188.587 0-341.333 152.747-341.333 341.333s152.747 341.333 341.333 341.333 341.333-152.747 341.333-341.333-152.747-341.333-341.333-341.333zM661.333 490.667c35.413 0 64 28.587 64 64s-28.587 64-64 64-64-28.587-64-64 28.587-64 64-64zM362.667 490.667c35.413 0 64 28.587 64 64s-28.587 64-64 64-64-28.587-64-64 28.587-64 64-64zM512 213.333c99.413 0 183.68 62.080 217.813 149.333h-435.627c34.133-87.253 118.4-149.333 217.813-149.333z" />
<glyph unicode="&#xe791;" d="M725.333 448h-213.333v-213.333h213.333v213.333zM682.667 917.333v-85.333h-341.333v85.333h-85.333v-85.333h-42.667c-47.147 0-84.907-38.187-84.907-85.333l-0.427-597.333c0-47.147 38.187-85.333 85.333-85.333h597.333c47.147 0 85.333 38.187 85.333 85.333v597.333c0 47.147-38.187 85.333-85.333 85.333h-42.667v85.333h-85.333zM810.667 149.333h-597.333v469.333h597.333v-469.333z" />
<glyph unicode="&#xe792;" d="M166.4 448c0 72.96 59.307 132.267 132.267 132.267h170.667v81.067h-170.667c-117.76 0-213.333-95.573-213.333-213.333s95.573-213.333 213.333-213.333h170.667v81.067h-170.667c-72.96 0-132.267 59.307-132.267 132.267zM341.333 405.333h341.333v85.333h-341.333v-85.333zM725.333 661.333h-170.667v-81.067h170.667c72.96 0 132.267-59.307 132.267-132.267s-59.307-132.267-132.267-132.267h-170.667v-81.067h170.667c117.76 0 213.333 95.573 213.333 213.333s-95.573 213.333-213.333 213.333z" />
<glyph unicode="&#xe793;" d="M896 149.333v597.333c0 47.147-38.187 85.333-85.333 85.333h-597.333c-47.147 0-85.333-38.187-85.333-85.333v-597.333c0-47.147 38.187-85.333 85.333-85.333h597.333c47.147 0 85.333 38.187 85.333 85.333zM362.667 384l106.667-128.213 149.333 192.213 192-256h-597.333l149.333 192z" />
<glyph unicode="&#xe794;" d="M725.333 88.96l60.373 60.373-145.707 145.707-60.373-60.373 145.707-145.707zM320 618.667h149.333v-238.293l-231.040-231.040 60.373-60.373 256 256v273.707h149.333l-192 192-192-192z" />
<glyph unicode="&#xe795;" d="M938.24 789.333c0 47.147-37.76 85.333-84.907 85.333h-682.667c-47.147 0-85.333-38.187-85.333-85.333v-512c0-47.147 38.187-85.333 85.333-85.333h597.333l170.667-170.667-0.427 768z" />
<glyph unicode="&#xe796;" d="M128 224v-160h160l472.107 472.107-160 160-472.107-472.107zM883.413 659.413c16.64 16.64 16.64 43.733 0 60.373l-99.627 99.627c-16.64 16.64-43.733 16.64-60.373 0l-78.080-78.080 160-160 78.080 78.080z" />
<glyph unicode="&#xe797;" d="M213.333 789.333v-85.333h597.333v85.333h-597.333zM213.333 362.667h170.667v-256h256v256h170.667l-298.667 298.667-298.667-298.667z" />
<glyph unicode="&#xe798;" d="M682.667 405.333h-128v426.667h-85.333v-426.667h-128l170.667-170.667 170.667 170.667zM170.667 149.333v-85.333h682.667v85.333h-682.667z" />
<glyph unicode="&#xe799;" d="M341.333 149.333h128v-170.667h85.333v170.667h128l-170.667 170.667-170.667-170.667zM682.667 746.667h-128v170.667h-85.333v-170.667h-128l170.667-170.667 170.667 170.667zM170.667 490.667v-85.333h682.667v85.333h-682.667z" />
<glyph unicode="&#xe79a;" d="M341.333 490.667h128v-426.667h85.333v426.667h128l-170.667 170.667-170.667-170.667zM170.667 832v-85.333h682.667v85.333h-682.667z" />
<glyph unicode="&#xe79b;" d="M170.667 149.333h256v85.333h-256v-85.333zM853.333 746.667h-682.667v-85.333h682.667v85.333zM725.333 490.667h-554.667v-85.333h565.333c47.147 0 85.333-38.187 85.333-85.333s-38.187-85.333-85.333-85.333h-96v85.333l-128-128 128-128v85.333h85.333c94.080 0 170.667 76.587 170.667 170.667s-76.587 170.667-170.667 170.667z" />
<glyph unicode="&#xe79c;" d="M320 192c-129.707 0-234.667 105.173-234.667 234.667s104.96 234.667 234.667 234.667h448c94.293 0 170.667-76.373 170.667-170.667s-76.373-170.667-170.667-170.667h-362.667c-58.88 0-106.667 47.787-106.667 106.667s47.787 106.667 106.667 106.667h320v-64h-320c-23.467 0-42.667-18.987-42.667-42.667s19.2-42.667 42.667-42.667h362.667c58.88 0 106.667 47.787 106.667 106.667s-47.787 106.667-106.667 106.667h-448c-94.293 0-170.667-76.373-170.667-170.667s76.373-170.667 170.667-170.667h405.333v-64h-405.333z" />
<glyph unicode="&#xe79d;" d="M825.813 531.84c-29.013 146.773-158.507 257.493-313.813 257.493-123.307 0-230.187-69.973-283.733-172.16-128.213-13.867-228.267-122.453-228.267-254.507 0-141.44 114.56-256 256-256h554.667c117.76 0 213.333 95.573 213.333 213.333 0 112.64-87.68 203.947-198.187 211.84z" />
<glyph unicode="&#xe79e;" d="M512 874.667c-235.733 0-426.667-190.933-426.667-426.667s190.933-426.667 426.667-426.667 426.667 190.933 426.667 426.667-190.933 426.667-426.667 426.667zM704 277.333h-362.667c-70.613 0-128 57.387-128 128s57.387 128 128 128l5.76-0.64c18.987 73.813 85.333 128.64 164.907 128.64 94.293 0 170.667-76.373 170.667-170.667h21.333c58.88 0 106.667-47.787 106.667-106.667s-47.787-106.667-106.667-106.667z" />
<glyph unicode="&#xe79f;" d="M825.813 531.84c-29.013 146.773-158.507 257.493-313.813 257.493-123.307 0-230.187-69.973-283.733-172.16-128.213-13.867-228.267-122.453-228.267-254.507 0-141.44 114.56-256 256-256h554.667c117.76 0 213.333 95.573 213.333 213.333 0 112.64-87.68 203.947-198.187 211.84zM426.667 234.667l-149.333 149.333 60.373 60.373 88.96-88.96 220.8 220.8 60.373-60.373-281.173-281.173z" />
<glyph unicode="&#xe7a0;" d="M825.813 531.84c-29.013 146.773-158.507 257.493-313.813 257.493-123.307 0-230.187-69.973-283.733-172.16-128.213-13.867-228.267-122.453-228.267-254.507 0-141.44 114.56-256 256-256h554.667c117.76 0 213.333 95.573 213.333 213.333 0 112.64-87.68 203.947-198.187 211.84zM725.333 405.333l-213.333-213.333-213.333 213.333h128v170.667h170.667v-170.667h128z" />
<glyph unicode="&#xe7a1;" d="M825.813 531.84c-29.013 146.773-158.507 257.493-313.813 257.493-62.933 0-121.6-18.56-171.093-49.92l62.293-62.293c32.64 16.853 69.547 26.88 108.8 26.88 129.707 0 234.667-104.96 234.667-234.667v-21.333h64c70.613 0 128-57.387 128-128 0-48.427-27.093-90.027-66.773-111.787l61.867-61.867c54.4 38.613 90.24 101.76 90.24 173.653 0 112.64-87.68 203.947-198.187 211.84zM128 734.933l117.333-116.907c-136.107-5.76-245.333-117.76-245.333-255.36 0-141.44 114.56-256 256-256h500.267l85.333-85.333 54.4 54.187-713.6 713.813-54.4-54.4zM329.6 533.333l341.333-341.333h-414.933c-94.293 0-170.667 76.373-170.667 170.667s76.373 170.667 170.667 170.667h73.6z" />
<glyph unicode="&#xe7a2;" d="M825.813 531.84c-29.013 146.773-158.507 257.493-313.813 257.493-123.307 0-230.187-69.973-283.733-172.16-128.213-13.867-228.267-122.453-228.267-254.507 0-141.44 114.56-256 256-256h554.667c117.76 0 213.333 95.573 213.333 213.333 0 112.64-87.68 203.947-198.187 211.84zM810.667 192h-554.667c-94.293 0-170.667 76.373-170.667 170.667s76.373 170.667 170.667 170.667h30.293c27.947 98.347 118.187 170.667 225.707 170.667 129.707 0 234.667-104.96 234.667-234.667v-21.333h64c70.613 0 128-57.387 128-128s-57.387-128-128-128z" />
<glyph unicode="&#xe7a3;" d="M825.813 531.84c-29.013 146.773-158.507 257.493-313.813 257.493-123.307 0-230.187-69.973-283.733-172.16-128.213-13.867-228.267-122.453-228.267-254.507 0-141.44 114.56-256 256-256h554.667c117.76 0 213.333 95.573 213.333 213.333 0 112.64-87.68 203.947-198.187 211.84zM597.333 405.333v-170.667h-170.667v170.667h-128l213.333 213.333 213.333-213.333h-128z" />
<glyph unicode="&#xe7a4;" d="M810.667 576h-170.667v256h-256v-256h-170.667l298.667-298.667 298.667 298.667zM213.333 192v-85.333h597.333v85.333h-597.333z" />
<glyph unicode="&#xe7a5;" d="M384 277.333h256v256h170.667l-298.667 298.667-298.667-298.667h170.667zM213.333 192h597.333v-85.333h-597.333z" />
<glyph unicode="&#xe7a6;" d="M426.667 789.333h-256c-47.147 0-84.907-38.187-84.907-85.333l-0.427-512c0-47.147 38.187-85.333 85.333-85.333h682.667c47.147 0 85.333 38.187 85.333 85.333v426.667c0 47.147-38.187 85.333-85.333 85.333h-341.333l-85.333 85.333z" />
<glyph unicode="&#xe7a7;" d="M853.333 704h-341.333l-85.333 85.333h-256c-47.147 0-84.907-38.187-84.907-85.333l-0.427-512c0-47.147 38.187-85.333 85.333-85.333h682.667c47.147 0 85.333 38.187 85.333 85.333v426.667c0 47.147-38.187 85.333-85.333 85.333zM853.333 192h-682.667v426.667h682.667v-426.667z" />
<glyph unicode="&#xe7a8;" d="M853.333 704h-341.333l-85.333 85.333h-256c-47.147 0-84.907-38.187-84.907-85.333l-0.427-512c0-47.147 38.187-85.333 85.333-85.333h682.667c47.147 0 85.333 38.187 85.333 85.333v426.667c0 47.147-38.187 85.333-85.333 85.333zM640 576c47.147 0 85.333-38.187 85.333-85.333s-38.187-85.333-85.333-85.333-85.333 38.187-85.333 85.333 38.187 85.333 85.333 85.333zM810.667 234.667h-341.333v42.667c0 56.96 113.707 85.333 170.667 85.333s170.667-28.373 170.667-85.333v-42.667z" />
<glyph unicode="&#xe7a9;" d="M896 832h-768c-47.147 0-85.333-38.187-85.333-85.333v-128h85.333v128h768v-597.333h-298.667v-85.333h298.667c47.147 0 85.333 38.187 85.333 85.333v597.333c0 47.147-38.187 85.333-85.333 85.333zM42.667 192v-128h128c0 70.613-57.387 128-128 128zM42.667 362.667v-85.333c117.76 0 213.333-95.573 213.333-213.333h85.333c0 164.907-133.76 298.667-298.667 298.667zM42.667 533.333v-85.333c212.053 0 384-171.947 384-384h85.333c0 259.2-210.133 469.333-469.333 469.333z" />
<glyph unicode="&#xe7aa;" d="M42.667 192v-128h128c0 70.613-57.387 128-128 128zM42.667 362.667v-85.333c117.76 0 213.333-95.573 213.333-213.333h85.333c0 164.907-133.76 298.667-298.667 298.667zM810.667 661.333h-597.333v-69.76c168.96-54.613 302.293-187.947 356.907-356.907h240.427v426.667zM42.667 533.333v-85.333c212.053 0 384-171.947 384-384h85.333c0 259.2-210.133 469.333-469.333 469.333zM896 832h-768c-47.147 0-85.333-38.187-85.333-85.333v-128h85.333v128h768v-597.333h-298.667v-85.333h298.667c47.147 0 85.333 38.187 85.333 85.333v597.333c0 47.147-38.187 85.333-85.333 85.333z" />
<glyph unicode="&#xe7ab;" d="M853.333 192c47.147 0 84.907 38.187 84.907 85.333l0.427 426.667c0 47.147-38.187 85.333-85.333 85.333h-682.667c-47.147 0-85.333-38.187-85.333-85.333v-426.667c0-47.147 38.187-85.333 85.333-85.333h-170.667v-85.333h1024v85.333h-170.667zM170.667 704h682.667v-426.667h-682.667v426.667z" />
<glyph unicode="&#xe7ac;" d="M896 874.667h-768c-47.147 0-85.333-38.187-85.333-85.333v-512c0-47.147 38.187-85.333 85.333-85.333h298.667l-85.333-128v-42.667h341.333v42.667l-85.333 128h298.667c47.147 0 85.333 38.187 85.333 85.333v512c0 47.147-38.187 85.333-85.333 85.333zM896 362.667h-768v426.667h768v-426.667z" />
<glyph unicode="&#xe7ad;" d="M896 874.667h-768c-47.147 0-85.333-38.187-85.333-85.333v-512c0-47.147 38.187-85.333 85.333-85.333h298.667v-85.333h-85.333v-85.333h341.333v85.333h-85.333v85.333h298.667c47.147 0 85.333 38.187 85.333 85.333v512c0 47.147-38.187 85.333-85.333 85.333zM896 277.333h-768v512h768v-512z" />
<glyph unicode="&#xe7ae;" d="M341.333-21.333h341.333v85.333h-341.333v-85.333zM682.667 916.907l-341.333 0.427c-47.147 0-85.333-38.187-85.333-85.333v-597.333c0-47.147 38.187-85.333 85.333-85.333h341.333c47.147 0 85.333 38.187 85.333 85.333v597.333c0 47.147-38.187 84.907-85.333 84.907zM682.667 320h-341.333v426.667h341.333v-426.667z" />
<glyph unicode="&#xe7af;" d="M640 640v234.667h-256v-234.667l128-128 128 128zM320 576h-234.667v-256h234.667l128 128-128 128zM384 256v-234.667h256v234.667l-128 128-128-128zM704 576l-128-128 128-128h234.667v256h-234.667z" />
<glyph unicode="&#xe7b0;" d="M512 917.333c-212.053 0-384-171.947-384-384v-298.667c0-70.613 57.387-128 128-128h128v341.333h-170.667v85.333c0 164.907 133.76 298.667 298.667 298.667s298.667-133.76 298.667-298.667v-85.333h-170.667v-341.333h128c70.613 0 128 57.387 128 128v298.667c0 212.053-171.947 384-384 384z" />
<glyph unicode="&#xe7b1;" d="M512 917.333c-212.053 0-384-171.947-384-384v-298.667c0-70.613 57.387-128 128-128h128v341.333h-170.667v85.333c0 164.907 133.76 298.667 298.667 298.667s298.667-133.76 298.667-298.667v-85.333h-170.667v-341.333h170.667v-42.667h-298.667v-85.333h256c70.613 0 128 57.387 128 128v426.667c0 212.053-171.947 384-384 384z" />
<glyph unicode="&#xe7b2;" d="M853.333 746.667h-682.667c-47.147 0-84.907-38.187-84.907-85.333l-0.427-426.667c0-47.147 38.187-85.333 85.333-85.333h682.667c47.147 0 85.333 38.187 85.333 85.333v426.667c0 47.147-38.187 85.333-85.333 85.333zM469.333 618.667h85.333v-85.333h-85.333v85.333zM469.333 490.667h85.333v-85.333h-85.333v85.333zM341.333 618.667h85.333v-85.333h-85.333v85.333zM341.333 490.667h85.333v-85.333h-85.333v85.333zM298.667 405.333h-85.333v85.333h85.333v-85.333zM298.667 533.333h-85.333v85.333h85.333v-85.333zM682.667 234.667h-341.333v85.333h341.333v-85.333zM682.667 405.333h-85.333v85.333h85.333v-85.333zM682.667 533.333h-85.333v85.333h85.333v-85.333zM810.667 405.333h-85.333v85.333h85.333v-85.333zM810.667 533.333h-85.333v85.333h85.333v-85.333z" />
<glyph unicode="&#xe7b3;" d="M661.333 512c35.413 0 64 28.587 64 64s-28.587 64-64 64-64-28.587-64-64 28.587-64 64-64zM362.667 512c35.413 0 64 28.587 64 64s-28.587 64-64 64-64-28.587-64-64 28.587-64 64-64zM512 213.333c111.36 0 205.867 71.253 241.067 170.667h-482.133c35.2-99.413 129.707-170.667 241.067-170.667zM511.787 896c-235.733 0-426.453-190.933-426.453-426.667s190.72-426.667 426.453-426.667c235.733 0 426.88 190.933 426.88 426.667s-191.147 426.667-426.88 426.667zM512 128c-188.587 0-341.333 152.747-341.333 341.333s152.747 341.333 341.333 341.333 341.333-152.747 341.333-341.333-152.747-341.333-341.333-341.333z" />
<glyph unicode="&#xe7b4;" d="M316.373 609.707l195.627-195.627 195.627 195.627 60.373-60.373-256-256-256 256z" />
<glyph unicode="&#xe7b5;" d="M657.707 263.040l-195.627 195.627 195.627 195.627-60.373 60.373-256-256 256-256z" />
<glyph unicode="&#xe7b6;" d="M366.293 257.707l195.627 195.627-195.627 195.627 60.373 60.373 256-256-256-256z" />
<glyph unicode="&#xe7b7;" d="M316.373 302.293l195.627 195.627 195.627-195.627 60.373 60.373-256 256-256-256z" />
<glyph unicode="&#xe7b8;" d="M896 490.667h-604.587l152.96 152.96-60.373 60.373-256-256 256-256 60.373 60.373-152.96 152.96h604.587z" />
<glyph unicode="&#xe7b9;" d="M512 600.96l195.627-195.627 60.373 60.373-256 256-256-256 60.373-60.373 195.627 195.627zM256 192h512v85.333h-512v-85.333z" />
<glyph unicode="&#xe7ba;" d="M256 533.333c-47.147 0-85.333-38.187-85.333-85.333s38.187-85.333 85.333-85.333 85.333 38.187 85.333 85.333-38.187 85.333-85.333 85.333zM768 533.333c-47.147 0-85.333-38.187-85.333-85.333s38.187-85.333 85.333-85.333 85.333 38.187 85.333 85.333-38.187 85.333-85.333 85.333zM512 533.333c-47.147 0-85.333-38.187-85.333-85.333s38.187-85.333 85.333-85.333 85.333 38.187 85.333 85.333-38.187 85.333-85.333 85.333z" />
<glyph unicode="&#xe7bb;" d="M853.333 832h-682.667c-47.147 0-84.907-38.187-84.907-85.333l-0.427-426.667c0-47.147 38.187-85.333 85.333-85.333h682.667c47.147 0 85.333 38.187 85.333 85.333v426.667c0 47.147-38.187 85.333-85.333 85.333zM469.333 704h85.333v-85.333h-85.333v85.333zM469.333 576h85.333v-85.333h-85.333v85.333zM341.333 704h85.333v-85.333h-85.333v85.333zM341.333 576h85.333v-85.333h-85.333v85.333zM298.667 490.667h-85.333v85.333h85.333v-85.333zM298.667 618.667h-85.333v85.333h85.333v-85.333zM682.667 320h-341.333v85.333h341.333v-85.333zM682.667 490.667h-85.333v85.333h85.333v-85.333zM682.667 618.667h-85.333v85.333h85.333v-85.333zM810.667 490.667h-85.333v85.333h85.333v-85.333zM810.667 618.667h-85.333v85.333h85.333v-85.333zM512-21.333l170.667 170.667h-341.333l170.667-170.667z" />
<glyph unicode="&#xe7bc;" d="M810.667 661.333v-170.667h-561.92l152.96 152.96-60.373 60.373-256-256 256-256 60.373 60.373-152.96 152.96h647.253v256z" />
<glyph unicode="&#xe7bd;" d="M494.293 643.627l152.96-152.96h-604.587v-85.333h604.587l-152.96-152.96 60.373-60.373 256 256-256 256-60.373-60.373zM853.333 704v-512h85.333v512h-85.333z" />
<glyph unicode="&#xe7be;" d="M512 320c70.613 0 127.573 57.387 127.573 128l0.427 256c0 70.827-57.173 128-128 128-70.613 0-128-57.173-128-128v-256c0-70.613 57.387-128 128-128zM738.133 448c0-128-108.16-217.6-226.133-217.6-117.76 0-226.133 89.6-226.133 217.6h-72.533c0-145.707 116.053-266.027 256-286.72v-139.947h85.333v139.947c139.947 20.693 256 141.013 256 286.72h-72.533z" />
<glyph unicode="&#xe7bf;" d="M853.333 192c46.933 0 85.333 38.4 85.333 85.333v426.667c0 46.933-38.4 85.333-85.333 85.333h-682.667c-46.933 0-85.333-38.4-85.333-85.333v-426.667c0-46.933 38.4-85.333 85.333-85.333h-170.667v-85.333h1024v85.333h-170.667zM170.667 704h682.667v-426.667h-682.667v426.667z" />
<glyph unicode="&#xe7c0;" d="M938.667 192v640h-853.333v-640h-85.333v-85.333h1024v85.333h-85.333zM597.333 192h-170.667v42.667h170.667v-42.667zM853.333 320h-682.667v426.667h682.667v-426.667z" />
<glyph unicode="&#xe7c1;" d="M853.333 192c47.147 0 84.907 38.187 84.907 85.333l0.427 469.333c0 47.147-38.187 85.333-85.333 85.333h-682.667c-47.147 0-85.333-38.187-85.333-85.333v-469.333c0-47.147 38.187-85.333 85.333-85.333h-170.667c0-47.147 38.187-85.333 85.333-85.333h853.333c47.147 0 85.333 38.187 85.333 85.333h-170.667zM170.667 746.667h682.667v-469.333h-682.667v469.333zM512 149.333c-23.467 0-42.667 19.2-42.667 42.667s19.2 42.667 42.667 42.667 42.667-19.2 42.667-42.667-19.2-42.667-42.667-42.667z" />
<glyph unicode="&#xe7c2;" d="M853.333 192v42.667c47.147 0 84.907 38.187 84.907 85.333l0.427 426.667c0 47.147-38.187 85.333-85.333 85.333h-682.667c-47.147 0-85.333-38.187-85.333-85.333v-426.667c0-47.147 38.187-85.333 85.333-85.333v-42.667h-170.667v-85.333h1024v85.333h-170.667zM170.667 746.667h682.667v-426.667h-682.667v426.667z" />
<glyph unicode="&#xe7c3;" d="M640 576h-256v-256h256v256zM554.667 405.333h-85.333v85.333h85.333v-85.333zM896 490.667v85.333h-85.333v85.333c0 47.147-38.187 85.333-85.333 85.333h-85.333v85.333h-85.333v-85.333h-85.333v85.333h-85.333v-85.333h-85.333c-47.147 0-85.333-38.187-85.333-85.333v-85.333h-85.333v-85.333h85.333v-85.333h-85.333v-85.333h85.333v-85.333c0-47.147 38.187-85.333 85.333-85.333h85.333v-85.333h85.333v85.333h85.333v-85.333h85.333v85.333h85.333c47.147 0 85.333 38.187 85.333 85.333v85.333h85.333v85.333h-85.333v85.333h85.333zM725.333 234.667h-426.667v426.667h426.667v-426.667z" />
<glyph unicode="&#xe7c4;" d="M554.667 914.347v-338.347h298.667c0 174.080-130.347 317.44-298.667 338.347zM170.667 320c0-188.587 152.747-341.333 341.333-341.333s341.333 152.747 341.333 341.333v170.667h-682.667v-170.667zM469.333 914.347c-168.32-20.907-298.667-164.267-298.667-338.347h298.667v338.347z" />
<glyph unicode="&#xe7c5;" d="M682.667 917.333h-341.333c-70.613 0-128-57.387-128-128v-682.667c0-70.613 57.387-128 128-128h341.333c70.613 0 128 57.387 128 128v682.667c0 70.613-57.387 128-128 128zM597.333 64h-170.667v42.667h170.667v-42.667zM736 192h-448v597.333h448v-597.333z" />
<glyph unicode="&#xe7c6;" d="M661.333 917.333h-341.333c-58.88 0-106.667-47.787-106.667-106.667v-725.333c0-58.88 47.787-106.667 106.667-106.667h341.333c58.88 0 106.667 47.787 106.667 106.667v725.333c0 58.88-47.787 106.667-106.667 106.667zM490.667 21.333c-35.413 0-64 28.587-64 64s28.587 64 64 64 64-28.587 64-64-28.587-64-64-64zM682.667 192h-384v597.333h384v-597.333z" />
<glyph unicode="&#xe7c7;" d="M170.667 704h768v85.333h-768c-47.147 0-85.333-38.187-85.333-85.333v-469.333h-85.333v-128h597.333v128h-426.667v469.333zM981.333 618.667h-256c-23.467 0-42.667-19.2-42.667-42.667v-426.667c0-23.467 19.2-42.667 42.667-42.667h256c23.467 0 42.667 19.2 42.667 42.667v426.667c0 23.467-19.2 42.667-42.667 42.667zM938.667 234.667h-170.667v298.667h170.667v-298.667z" />
<glyph unicode="&#xe7c8;" d="M938.667 704v85.333h-647.68l85.333-85.333h562.347zM81.92 889.813l-54.4-54.4 77.44-77.44c-11.947-14.72-19.627-33.493-19.627-53.973v-469.333h-85.333v-128h756.48l100.48-100.48 54.187 54.4-829.227 829.227zM170.667 692.267l457.813-457.6h-457.813v457.6zM981.333 618.667h-256c-23.467 0-42.667-19.2-42.667-42.667v-178.347l85.333-85.333v221.013h170.667v-298.667h-93.013l128-128h7.68c23.467 0 42.667 19.2 42.667 42.667v426.667c0 23.467-19.2 42.667-42.667 42.667z" />
<glyph unicode="&#xe7c9;" d="M512 917.333l-384-170.667v-256c0-237.013 163.627-458.027 384-512 220.373 53.973 384 274.987 384 512v256l-384 170.667zM512 448.427h298.667c-22.613-175.787-139.733-332.373-298.667-381.227v380.8h-298.667v243.2l298.667 132.693v-375.467z" />
<glyph unicode="&#xe7ca;" d="M852.907 789.333c0 47.147-37.76 85.333-84.907 85.333h-341.333l-256-256v-512c0-47.147 38.187-85.333 85.333-85.333h512.427c47.147 0 84.907 38.187 84.907 85.333l-0.427 682.667zM384 149.333h-85.333v85.333h85.333v-85.333zM725.333 149.333h-85.333v85.333h85.333v-85.333zM384 320h-85.333v170.667h85.333v-170.667zM554.667 149.333h-85.333v170.667h85.333v-170.667zM554.667 405.333h-85.333v85.333h85.333v-85.333zM725.333 320h-85.333v170.667h85.333v-170.667z" />
<glyph unicode="&#xe7cb;" d="M725.333 916.907l-426.667 0.427c-47.147 0-85.333-38.187-85.333-85.333v-768c0-47.147 38.187-85.333 85.333-85.333h426.667c47.147 0 85.333 38.187 85.333 85.333v768c0 47.147-38.187 84.907-85.333 84.907zM725.333 149.333h-426.667v597.333h426.667v-597.333z" />
<glyph unicode="&#xe7cc;" d="M725.333 874.667h-426.667c-47.147 0-85.333-38.187-85.333-85.333v-682.667c0-47.147 38.187-84.907 85.333-84.907l426.667-0.427c47.147 0 85.333 38.187 85.333 85.333v682.667c0 47.147-38.187 85.333-85.333 85.333zM512 789.333c47.147 0 85.333-38.187 85.333-85.333s-38.187-85.333-85.333-85.333-85.333 38.187-85.333 85.333 38.187 85.333 85.333 85.333zM512 106.667c-117.76 0-213.333 95.573-213.333 213.333s95.573 213.333 213.333 213.333 213.333-95.573 213.333-213.333-95.573-213.333-213.333-213.333zM512 448c-70.613 0-128-57.387-128-128s57.387-128 128-128 128 57.387 128 128-57.387 128-128 128z" />
<glyph unicode="&#xe7cd;" d="M896 789.333h-768c-47.147 0-85.333-38.187-85.333-85.333v-512c0-47.147 38.187-85.333 85.333-85.333h768c47.147 0 84.907 38.187 84.907 85.333l0.427 512c0 47.147-38.187 85.333-85.333 85.333zM810.667 192h-597.333v512h597.333v-512z" />
<glyph unicode="&#xe7ce;" d="M768 960h-512c-70.613 0-128-57.387-128-128v-768c0-70.613 57.387-128 128-128h512c70.613 0 128 57.387 128 128v768c0 70.613-57.387 128-128 128zM597.333 21.333h-170.667v42.667h170.667v-42.667zM821.333 149.333h-618.667v682.667h618.667v-682.667z" />
<glyph unicode="&#xe7cf;" d="M789.333 960h-597.333c-58.88 0-106.667-47.787-106.667-106.667v-810.667c0-58.88 47.787-106.667 106.667-106.667h597.333c58.88 0 106.667 47.787 106.667 106.667v810.667c0 58.88-47.787 106.667-106.667 106.667zM490.667-21.333c-35.413 0-64 28.587-64 64s28.587 64 64 64 64-28.587 64-64-28.587-64-64-64zM810.667 149.333h-640v682.667h640v-682.667z" />
<glyph unicode="&#xe7d0;" d="M896 832h-768c-47.147 0-85.333-38.187-85.333-85.333v-512c0-47.147 38.187-85.333 85.333-85.333h213.333v-85.333h341.333v85.333h213.333c47.147 0 84.907 38.187 84.907 85.333l0.427 512c0 47.147-38.187 85.333-85.333 85.333zM896 234.667h-768v512h768v-512z" />
<glyph unicode="&#xe7d1;" d="M853.333 448c0 108.587-50.773 205.227-129.92 267.733l-40.747 244.267h-341.333l-40.747-244.267c-79.147-62.507-129.92-159.147-129.92-267.733s50.773-205.227 129.92-267.733l40.747-244.267h341.333l40.747 244.267c79.147 62.507 129.92 159.147 129.92 267.733zM256 448c0 141.44 114.56 256 256 256s256-114.56 256-256-114.56-256-256-256-256 114.56-256 256z" />
<glyph unicode="&#xe7d2;" d="M170.667 704h-85.333v-597.333c0-47.147 38.187-85.333 85.333-85.333h597.333v85.333h-597.333v597.333zM853.333 874.667h-512c-47.147 0-85.333-38.187-85.333-85.333v-512c0-47.147 38.187-85.333 85.333-85.333h512c47.147 0 85.333 38.187 85.333 85.333v512c0 47.147-38.187 85.333-85.333 85.333zM810.667 490.667h-170.667v-170.667h-85.333v170.667h-170.667v85.333h170.667v170.667h85.333v-170.667h170.667v-85.333z" />
<glyph unicode="&#xe7d3;" d="M512 874.667c-235.307 0-426.667-191.36-426.667-426.667s191.36-426.667 426.667-426.667 426.667 191.36 426.667 426.667-191.36 426.667-426.667 426.667zM512 106.667c-188.16 0-341.333 153.173-341.333 341.333s153.173 341.333 341.333 341.333 341.333-153.173 341.333-341.333-153.173-341.333-341.333-341.333zM640 448c0-70.613-57.387-128-128-128s-128 57.387-128 128 57.387 128 128 128 128-57.387 128-128z" />
<glyph unicode="&#xe7d4;" d="M614.4 704l-17.067 85.333h-384v-725.333h85.333v298.667h238.933l17.067-85.333h298.667v426.667z" />
<glyph unicode="&#xe7d5;" d="M512 832v-395.733c-20.053 7.040-41.387 11.733-64 11.733-106.027 0-192-85.973-192-192s85.973-192 192-192c98.773 0 179.2 74.88 189.867 170.667h2.133v469.333h170.667v128h-298.667z" />
<glyph unicode="&#xe7d6;" d="M426.667 576c-23.467 0-42.667-19.2-42.667-42.667s19.2-42.667 42.667-42.667 42.667 19.2 42.667 42.667-19.2 42.667-42.667 42.667zM426.667 405.333c-23.467 0-42.667-19.2-42.667-42.667s19.2-42.667 42.667-42.667 42.667 19.2 42.667 42.667-19.2 42.667-42.667 42.667zM298.667 554.667c-11.733 0-21.333-9.6-21.333-21.333s9.6-21.333 21.333-21.333 21.333 9.6 21.333 21.333-9.6 21.333-21.333 21.333zM426.667 256c-11.733 0-21.333-9.6-21.333-21.333s9.6-21.333 21.333-21.333 21.333 9.6 21.333 21.333-9.6 21.333-21.333 21.333zM298.667 384c-11.733 0-21.333-9.6-21.333-21.333s9.6-21.333 21.333-21.333 21.333 9.6 21.333 21.333-9.6 21.333-21.333 21.333zM426.667 640c11.733 0 21.333 9.6 21.333 21.333s-9.6 21.333-21.333 21.333-21.333-9.6-21.333-21.333 9.6-21.333 21.333-21.333zM597.333 576c-23.467 0-42.667-19.2-42.667-42.667s19.2-42.667 42.667-42.667 42.667 19.2 42.667 42.667-19.2 42.667-42.667 42.667zM597.333 640c11.733 0 21.333 9.6 21.333 21.333s-9.6 21.333-21.333 21.333-21.333-9.6-21.333-21.333 9.6-21.333 21.333-21.333zM725.333 384c-11.733 0-21.333-9.6-21.333-21.333s9.6-21.333 21.333-21.333 21.333 9.6 21.333 21.333-9.6 21.333-21.333 21.333zM725.333 554.667c-11.733 0-21.333-9.6-21.333-21.333s9.6-21.333 21.333-21.333 21.333 9.6 21.333 21.333-9.6 21.333-21.333 21.333zM512 874.667c-235.733 0-426.667-190.933-426.667-426.667s190.933-426.667 426.667-426.667 426.667 190.933 426.667 426.667-190.933 426.667-426.667 426.667zM512 106.667c-188.587 0-341.333 152.747-341.333 341.333s152.747 341.333 341.333 341.333 341.333-152.747 341.333-341.333-152.747-341.333-341.333-341.333zM597.333 256c-11.733 0-21.333-9.6-21.333-21.333s9.6-21.333 21.333-21.333 21.333 9.6 21.333 21.333-9.6 21.333-21.333 21.333zM597.333 405.333c-23.467 0-42.667-19.2-42.667-42.667s19.2-42.667 42.667-42.667 42.667 19.2 42.667 42.667-19.2 42.667-42.667 42.667z" />
<glyph unicode="&#xe7d7;" d="M213.333 213.333c35.413 0 64 28.587 64 64s-28.587 64-64 64-64-28.587-64-64 28.587-64 64-64zM384 405.333c23.467 0 42.667 19.2 42.667 42.667s-19.2 42.667-42.667 42.667-42.667-19.2-42.667-42.667 19.2-42.667 42.667-42.667zM384 576c23.467 0 42.667 19.2 42.667 42.667s-19.2 42.667-42.667 42.667-42.667-19.2-42.667-42.667 19.2-42.667 42.667-42.667zM128 64h768v85.333h-768v-85.333zM213.333 554.667c35.413 0 64 28.587 64 64s-28.587 64-64 64-64-28.587-64-64 28.587-64 64-64zM213.333 384c35.413 0 64 28.587 64 64s-28.587 64-64 64-64-28.587-64-64 28.587-64 64-64zM384 234.667c23.467 0 42.667 19.2 42.667 42.667s-19.2 42.667-42.667 42.667-42.667-19.2-42.667-42.667 19.2-42.667 42.667-42.667zM725.333 256c11.733 0 21.333 9.6 21.333 21.333s-9.6 21.333-21.333 21.333-21.333-9.6-21.333-21.333 9.6-21.333 21.333-21.333zM128 832v-85.333h768v85.333h-768zM725.333 597.333c11.733 0 21.333 9.6 21.333 21.333s-9.6 21.333-21.333 21.333-21.333-9.6-21.333-21.333 9.6-21.333 21.333-21.333zM725.333 426.667c11.733 0 21.333 9.6 21.333 21.333s-9.6 21.333-21.333 21.333-21.333-9.6-21.333-21.333 9.6-21.333 21.333-21.333zM554.667 576c23.467 0 42.667 19.2 42.667 42.667s-19.2 42.667-42.667 42.667-42.667-19.2-42.667-42.667 19.2-42.667 42.667-42.667zM554.667 405.333c23.467 0 42.667 19.2 42.667 42.667s-19.2 42.667-42.667 42.667-42.667-19.2-42.667-42.667 19.2-42.667 42.667-42.667zM554.667 234.667c23.467 0 42.667 19.2 42.667 42.667s-19.2 42.667-42.667 42.667-42.667-19.2-42.667-42.667 19.2-42.667 42.667-42.667z" />
<glyph unicode="&#xe7d8;" d="M597.333 661.333c23.467 0 42.667 19.2 42.667 42.667s-19.2 42.667-42.667 42.667-42.667-19.2-42.667-42.667 19.2-42.667 42.667-42.667zM588.8 470.187c2.773-0.427 5.547-0.853 8.533-0.853 35.413 0 64 28.587 64 64s-28.587 64-64 64-64-28.587-64-64c0-2.987 0.427-5.76 0.853-8.747 3.84-28.16 26.24-50.56 54.613-54.4zM597.333 810.667c11.733 0 21.333 9.6 21.333 21.333s-9.6 21.333-21.333 21.333-21.333-9.6-21.333-21.333 9.6-21.333 21.333-21.333zM426.667 810.667c11.733 0 21.333 9.6 21.333 21.333s-9.6 21.333-21.333 21.333-21.333-9.6-21.333-21.333 9.6-21.333 21.333-21.333zM896 512c11.733 0 21.333 9.6 21.333 21.333s-9.6 21.333-21.333 21.333-21.333-9.6-21.333-21.333 9.6-21.333 21.333-21.333zM426.667 661.333c23.467 0 42.667 19.2 42.667 42.667s-19.2 42.667-42.667 42.667-42.667-19.2-42.667-42.667 19.2-42.667 42.667-42.667zM768 320c23.467 0 42.667 19.2 42.667 42.667s-19.2 42.667-42.667 42.667-42.667-19.2-42.667-42.667 19.2-42.667 42.667-42.667zM768 490.667c23.467 0 42.667 19.2 42.667 42.667s-19.2 42.667-42.667 42.667-42.667-19.2-42.667-42.667 19.2-42.667 42.667-42.667zM768 661.333c23.467 0 42.667 19.2 42.667 42.667s-19.2 42.667-42.667 42.667-42.667-19.2-42.667-42.667 19.2-42.667 42.667-42.667zM597.333 85.333c-11.733 0-21.333-9.6-21.333-21.333s9.6-21.333 21.333-21.333 21.333 9.6 21.333 21.333-9.6 21.333-21.333 21.333zM106.667 734.933l161.493-161.493c-4.053 1.28-7.893 2.56-12.16 2.56-23.467 0-42.667-19.2-42.667-42.667s19.2-42.667 42.667-42.667 42.667 19.2 42.667 42.667c0 4.267-1.28 8.107-2.347 12.16l119.893-119.893c-30.507-5.12-53.547-31.147-53.547-62.933 0-35.413 28.587-64 64-64 31.787 0 57.813 23.040 62.933 53.333l119.893-119.893c-3.84 1.28-7.893 2.56-12.16 2.56-23.467 0-42.667-19.2-42.667-42.667s19.2-42.667 42.667-42.667 42.667 19.2 42.667 42.667c0 4.267-1.28 8.107-2.347 12.16l161.28-161.493 54.4 54.4-692.267 692.267-54.4-54.4zM426.667 234.667c-23.467 0-42.667-19.2-42.667-42.667s19.2-42.667 42.667-42.667 42.667 19.2 42.667 42.667-19.2 42.667-42.667 42.667zM896 384c-11.733 0-21.333-9.6-21.333-21.333s9.6-21.333 21.333-21.333 21.333 9.6 21.333 21.333-9.6 21.333-21.333 21.333zM256 405.333c-23.467 0-42.667-19.2-42.667-42.667s19.2-42.667 42.667-42.667 42.667 19.2 42.667 42.667-19.2 42.667-42.667 42.667zM128 554.667c-11.733 0-21.333-9.6-21.333-21.333s9.6-21.333 21.333-21.333 21.333 9.6 21.333 21.333-9.6 21.333-21.333 21.333zM426.667 85.333c-11.733 0-21.333-9.6-21.333-21.333s9.6-21.333 21.333-21.333 21.333 9.6 21.333 21.333-9.6 21.333-21.333 21.333zM256 234.667c-23.467 0-42.667-19.2-42.667-42.667s19.2-42.667 42.667-42.667 42.667 19.2 42.667 42.667-19.2 42.667-42.667 42.667zM128 384c-11.733 0-21.333-9.6-21.333-21.333s9.6-21.333 21.333-21.333 21.333 9.6 21.333 21.333-9.6 21.333-21.333 21.333z" />
<glyph unicode="&#xe7d9;" d="M256 405.333c-23.467 0-42.667-19.2-42.667-42.667s19.2-42.667 42.667-42.667 42.667 19.2 42.667 42.667-19.2 42.667-42.667 42.667zM256 234.667c-23.467 0-42.667-19.2-42.667-42.667s19.2-42.667 42.667-42.667 42.667 19.2 42.667 42.667-19.2 42.667-42.667 42.667zM256 576c-23.467 0-42.667-19.2-42.667-42.667s19.2-42.667 42.667-42.667 42.667 19.2 42.667 42.667-19.2 42.667-42.667 42.667zM128 554.667c-11.733 0-21.333-9.6-21.333-21.333s9.6-21.333 21.333-21.333 21.333 9.6 21.333 21.333-9.6 21.333-21.333 21.333zM256 746.667c-23.467 0-42.667-19.2-42.667-42.667s19.2-42.667 42.667-42.667 42.667 19.2 42.667 42.667-19.2 42.667-42.667 42.667zM896 512c11.733 0 21.333 9.6 21.333 21.333s-9.6 21.333-21.333 21.333-21.333-9.6-21.333-21.333 9.6-21.333 21.333-21.333zM597.333 661.333c23.467 0 42.667 19.2 42.667 42.667s-19.2 42.667-42.667 42.667-42.667-19.2-42.667-42.667 19.2-42.667 42.667-42.667zM597.333 810.667c11.733 0 21.333 9.6 21.333 21.333s-9.6 21.333-21.333 21.333-21.333-9.6-21.333-21.333 9.6-21.333 21.333-21.333zM128 384c-11.733 0-21.333-9.6-21.333-21.333s9.6-21.333 21.333-21.333 21.333 9.6 21.333 21.333-9.6 21.333-21.333 21.333zM426.667 85.333c-11.733 0-21.333-9.6-21.333-21.333s9.6-21.333 21.333-21.333 21.333 9.6 21.333 21.333-9.6 21.333-21.333 21.333zM426.667 810.667c11.733 0 21.333 9.6 21.333 21.333s-9.6 21.333-21.333 21.333-21.333-9.6-21.333-21.333 9.6-21.333 21.333-21.333zM426.667 661.333c23.467 0 42.667 19.2 42.667 42.667s-19.2 42.667-42.667 42.667-42.667-19.2-42.667-42.667 19.2-42.667 42.667-42.667zM426.667 426.667c-35.413 0-64-28.587-64-64s28.587-64 64-64 64 28.587 64 64-28.587 64-64 64zM768 405.333c-23.467 0-42.667-19.2-42.667-42.667s19.2-42.667 42.667-42.667 42.667 19.2 42.667 42.667-19.2 42.667-42.667 42.667zM768 234.667c-23.467 0-42.667-19.2-42.667-42.667s19.2-42.667 42.667-42.667 42.667 19.2 42.667 42.667-19.2 42.667-42.667 42.667zM768 576c-23.467 0-42.667-19.2-42.667-42.667s19.2-42.667 42.667-42.667 42.667 19.2 42.667 42.667-19.2 42.667-42.667 42.667zM768 746.667c-23.467 0-42.667-19.2-42.667-42.667s19.2-42.667 42.667-42.667 42.667 19.2 42.667 42.667-19.2 42.667-42.667 42.667zM896 384c-11.733 0-21.333-9.6-21.333-21.333s9.6-21.333 21.333-21.333 21.333 9.6 21.333 21.333-9.6 21.333-21.333 21.333zM597.333 234.667c-23.467 0-42.667-19.2-42.667-42.667s19.2-42.667 42.667-42.667 42.667 19.2 42.667 42.667-19.2 42.667-42.667 42.667zM597.333 85.333c-11.733 0-21.333-9.6-21.333-21.333s9.6-21.333 21.333-21.333 21.333 9.6 21.333 21.333-9.6 21.333-21.333 21.333zM426.667 597.333c-35.413 0-64-28.587-64-64s28.587-64 64-64 64 28.587 64 64-28.587 64-64 64zM426.667 234.667c-23.467 0-42.667-19.2-42.667-42.667s19.2-42.667 42.667-42.667 42.667 19.2 42.667 42.667-19.2 42.667-42.667 42.667zM597.333 426.667c-35.413 0-64-28.587-64-64s28.587-64 64-64 64 28.587 64 64-28.587 64-64 64zM597.333 597.333c-35.413 0-64-28.587-64-64s28.587-64 64-64 64 28.587 64 64-28.587 64-64 64z" />
<glyph unicode="&#xe7da;" d="M938.667 448c0-235.641-191.025-426.667-426.667-426.667s-426.667 191.025-426.667 426.667c0 235.641 191.025 426.667 426.667 426.667s426.667-191.025 426.667-426.667z" />
<glyph unicode="&#xe7db;" d="M426.667 874.667c-77.867 0-150.613-21.12-213.333-57.6 127.36-73.813 213.333-211.2 213.333-369.067s-85.973-295.253-213.333-369.067c62.72-36.48 135.467-57.6 213.333-57.6 235.733 0 426.667 190.933 426.667 426.667s-190.933 426.667-426.667 426.667z" />
<glyph unicode="&#xe7dc;" d="M384 874.667c-44.587 0-87.68-6.827-128-19.627 173.013-54.4 298.667-216.107 298.667-407.040s-125.653-352.64-298.667-407.040c40.32-12.587 83.413-19.627 128-19.627 235.733 0 426.667 190.933 426.667 426.667s-190.933 426.667-426.667 426.667z" />
<glyph unicode="&#xe7dd;" d="M853.333 589.44v199.893h-199.893l-141.44 141.44-141.44-141.44h-199.893v-199.893l-141.44-141.44 141.44-141.44v-199.893h199.893l141.44-141.44 141.44 141.44h199.893v199.893l141.44 141.44-141.44 141.44zM512 192c-38.187 0-74.24 8.533-106.667 23.467 88.107 40.533 149.333 129.28 149.333 232.533s-61.227 192-149.333 232.533c32.427 14.933 68.48 23.467 106.667 23.467 141.44 0 256-114.56 256-256s-114.56-256-256-256z" />
<glyph unicode="&#xe7de;" d="M853.333 306.56l141.44 141.44-141.44 141.44v199.893h-199.893l-141.44 141.44-141.44-141.44h-199.893v-199.893l-141.44-141.44 141.44-141.44v-199.893h199.893l141.44-141.44 141.44 141.44h199.893v199.893zM512 192c-141.44 0-256 114.56-256 256s114.56 256 256 256 256-114.56 256-256-114.56-256-256-256z" />
<glyph unicode="&#xe7df;" d="M853.333 306.56l141.44 141.44-141.44 141.44v199.893h-199.893l-141.44 141.44-141.44-141.44h-199.893v-199.893l-141.44-141.44 141.44-141.44v-199.893h199.893l141.44-141.44 141.44 141.44h199.893v199.893zM512 192v512c141.44 0 256-114.56 256-256s-114.56-256-256-256z" />
<glyph unicode="&#xe7e0;" d="M853.333 589.44v199.893h-199.893l-141.44 141.44-141.44-141.44h-199.893v-199.893l-141.44-141.44 141.44-141.44v-199.893h199.893l141.44-141.44 141.44 141.44h199.893v199.893l141.44 141.44-141.44 141.44zM512 192c-141.44 0-256 114.56-256 256s114.56 256 256 256 256-114.56 256-256-114.56-256-256-256zM512 618.667c-94.293 0-170.667-76.373-170.667-170.667s76.373-170.667 170.667-170.667 170.667 76.373 170.667 170.667-76.373 170.667-170.667 170.667z" />
<glyph unicode="&#xe7e1;" d="M298.667 362.667c-70.613 0-128-57.387-128-128 0-55.893-49.28-85.333-85.333-85.333 39.253-52.053 106.453-85.333 170.667-85.333 94.293 0 170.667 76.373 170.667 170.667 0 70.613-57.387 128-128 128zM883.413 762.453l-56.96 56.96c-16.64 16.64-43.733 16.64-60.373 0l-382.080-382.080 117.333-117.333 382.080 382.080c16.853 16.853 16.853 43.733 0 60.373z" />
<glyph unicode="&#xe7e2;" d="M401.067 512l203.307 352.213c-29.653 6.613-60.587 10.453-92.373 10.453-102.4 0-196.053-36.053-269.653-96.213l156.373-270.72 2.347 4.267zM919.040 576c-39.253 124.8-134.4 224.427-255.787 270.507l-156.16-270.507h411.947zM930.133 533.333h-319.573l12.373-21.333 203.307-352c69.547 75.947 112.427 176.853 112.427 288 0 29.227-2.987 57.813-8.533 85.333zM364.16 448l-166.4 288c-69.547-75.947-112.427-176.853-112.427-288 0-29.227 2.987-57.813 8.533-85.333h319.573l-49.28 85.333zM104.96 320c39.253-124.8 134.4-224.427 255.787-270.507l156.16 270.507h-411.947zM585.813 320l-166.4-288.213c29.867-6.613 60.8-10.453 92.587-10.453 102.4 0 196.053 36.053 269.653 96.213l-156.373 270.72-39.467-68.267z" />
<glyph unicode="&#xe7e3;" d="M648.533 448c0-75.405-61.128-136.533-136.533-136.533s-136.533 61.128-136.533 136.533c0 75.405 61.128 136.533 136.533 136.533s136.533-61.128 136.533-136.533zM384 874.667l-78.080-85.333h-135.253c-47.147 0-85.333-38.187-85.333-85.333v-512c0-47.147 38.187-85.333 85.333-85.333h682.667c47.147 0 85.333 38.187 85.333 85.333v512c0 47.147-38.187 85.333-85.333 85.333h-135.253l-78.080 85.333h-256zM512 234.667c-117.76 0-213.333 95.573-213.333 213.333s95.573 213.333 213.333 213.333 213.333-95.573 213.333-213.333-95.573-213.333-213.333-213.333z" />
<glyph unicode="&#xe7e4;" d="M426.667 106.667h-213.333v-85.333h213.333v-85.333l128 128-128 128v-85.333zM597.333 106.667v-85.333h213.333v85.333h-213.333zM512 618.667c47.147 0 85.333 38.187 85.333 85.333s-38.187 85.333-85.333 85.333-85.12-38.187-85.12-85.333c0.213-47.147 37.973-85.333 85.12-85.333zM725.333 960h-426.667c-47.147 0-85.333-38.187-85.333-85.333v-597.333c0-47.147 38.187-85.333 85.333-85.333h426.667c47.147 0 85.333 38.187 85.333 85.333v597.333c0 47.147-38.187 85.333-85.333 85.333zM298.667 874.667h426.667v-448c0 71.040-142.293 106.667-213.333 106.667s-213.333-35.627-213.333-106.667v448z" />
<glyph unicode="&#xe7e5;" d="M426.667 106.667h-213.333v-85.333h213.333v-85.333l128 128-128 128v-85.333zM597.333 106.667v-85.333h213.333v85.333h-213.333zM725.333 960h-426.667c-47.147 0-85.333-38.187-85.333-85.333v-597.333c0-47.147 38.187-85.333 85.333-85.333h426.667c47.147 0 85.333 38.187 85.333 85.333v597.333c0 47.147-38.187 85.333-85.333 85.333zM511.787 704c-47.147 0-85.12 38.187-85.12 85.333s37.973 85.333 85.12 85.333 85.333-38.187 85.333-85.333-38.187-85.333-85.333-85.333z" />
<glyph unicode="&#xe7e6;" d="M597.333 746.667c0 47.147-38.187 85.333-85.333 85.333h-42.667v42.667c0 23.467-19.2 42.667-42.667 42.667h-170.667c-23.467 0-42.667-19.2-42.667-42.667v-42.667h-42.667c-47.147 0-85.333-38.187-85.333-85.333v-640c0-47.147 38.187-85.333 85.333-85.333h341.333c47.147 0 85.333 38.187 85.333 85.333h341.333v640h-341.333zM512 192h-85.333v85.333h85.333v-85.333zM512 576h-85.333v85.333h85.333v-85.333zM682.667 192h-85.333v85.333h85.333v-85.333zM682.667 576h-85.333v85.333h85.333v-85.333zM853.333 192h-85.333v85.333h85.333v-85.333zM853.333 576h-85.333v85.333h85.333v-85.333z" />
<glyph unicode="&#xe7e7;" d="M512 618.667c-94.293 0-170.667-76.373-170.667-170.667s76.373-170.667 170.667-170.667 170.667 76.373 170.667 170.667-76.373 170.667-170.667 170.667zM213.333 320h-85.333v-170.667c0-47.147 38.187-85.333 85.333-85.333h170.667v85.333h-170.667v170.667zM213.333 746.667h170.667v85.333h-170.667c-47.147 0-85.333-38.187-85.333-85.333v-170.667h85.333v170.667zM810.667 832h-170.667v-85.333h170.667v-170.667h85.333v170.667c0 47.147-38.187 85.333-85.333 85.333zM810.667 149.333h-170.667v-85.333h170.667c47.147 0 85.333 38.187 85.333 85.333v170.667h-85.333v-170.667z" />
<glyph unicode="&#xe7e8;" d="M213.333 320h-85.333v-170.667c0-47.147 38.187-85.333 85.333-85.333h170.667v85.333h-170.667v170.667zM213.333 746.667h170.667v85.333h-170.667c-47.147 0-85.333-38.187-85.333-85.333v-170.667h85.333v170.667zM810.667 832h-170.667v-85.333h170.667v-170.667h85.333v170.667c0 47.147-38.187 85.333-85.333 85.333zM810.667 149.333h-170.667v-85.333h170.667c47.147 0 85.333 38.187 85.333 85.333v170.667h-85.333v-170.667zM512 618.667c-94.293 0-170.667-76.373-170.667-170.667s76.373-170.667 170.667-170.667 170.667 76.373 170.667 170.667-76.373 170.667-170.667 170.667zM512 362.667c-47.147 0-85.333 38.187-85.333 85.333s38.187 85.333 85.333 85.333 85.333-38.187 85.333-85.333-38.187-85.333-85.333-85.333z" />
<glyph unicode="&#xe7e9;" d="M938.667 277.333v512c0 47.147-38.187 85.333-85.333 85.333h-512c-47.147 0-85.333-38.187-85.333-85.333v-512c0-47.147 38.187-85.333 85.333-85.333h512c47.147 0 85.333 38.187 85.333 85.333zM469.333 448l86.613-115.627 126.72 158.293 170.667-213.333h-512l128 170.667zM85.333 704v-597.333c0-47.147 38.187-85.333 85.333-85.333h597.333v85.333h-597.333v597.333h-85.333z" />
<glyph unicode="&#xe7ea;" d="M883.413 719.787l-99.627 99.627c-16.64 16.64-43.733 16.64-60.373 0l-133.333-133.333-81.707 81.92-60.373-60.373 60.587-60.587-380.587-380.373v-202.667h202.667l380.587 380.587 60.373-60.587 60.373 60.373-81.92 81.92 133.333 133.333c16.853 16.64 16.853 43.52 0 60.16zM295.253 149.333l-81.92 81.92 344.107 344.107 81.92-81.92-344.107-344.107z" />
<glyph unicode="&#xe7eb;" d="M512 832c-212.053 0-384-171.947-384-384s171.947-384 384-384c35.413 0 64 28.587 64 64 0 16.64-6.187 31.573-16.64 42.88-10.027 11.307-16 26.027-16 42.453 0 35.413 28.587 64 64 64h75.307c117.76 0 213.333 95.573 213.333 213.333 0 188.587-171.947 341.333-384 341.333zM277.333 448c-35.413 0-64 28.587-64 64s28.587 64 64 64 64-28.587 64-64-28.587-64-64-64zM405.333 618.667c-35.413 0-64 28.587-64 64s28.587 64 64 64 64-28.587 64-64-28.587-64-64-64zM618.667 618.667c-35.413 0-64 28.587-64 64s28.587 64 64 64 64-28.587 64-64-28.587-64-64-64zM746.667 448c-35.413 0-64 28.587-64 64s28.587 64 64 64 64-28.587 64-64-28.587-64-64-64z" />
<glyph unicode="&#xe7ec;" d="M426.667 832h-213.333c-47.147 0-85.333-38.187-85.333-85.333v-597.333c0-47.147 38.187-85.333 85.333-85.333h213.333v-85.333h85.333v938.667h-85.333v-85.333zM426.667 192h-213.333l213.333 256v-256zM810.667 832h-213.333v-85.333h213.333v-554.667l-213.333 256v-384h213.333c47.147 0 85.333 38.187 85.333 85.333v597.333c0 47.147-38.187 85.333-85.333 85.333z" />
<glyph unicode="&#xe7ed;" d="M554.667 661.333h-85.333v-170.667h-170.667v-85.333h170.667v-170.667h85.333v170.667h170.667v85.333h-170.667v170.667zM512 874.667c-235.307 0-426.667-191.36-426.667-426.667s191.36-426.667 426.667-426.667 426.667 191.36 426.667 426.667-191.36 426.667-426.667 426.667zM512 106.667c-188.16 0-341.333 153.173-341.333 341.333s153.173 341.333 341.333 341.333 341.333-153.173 341.333-341.333-153.173-341.333-341.333-341.333z" />
<glyph unicode="&#xe7ee;" d="M682.667 618.667h-85.333v-128h-128v-85.333h128v-128h85.333v128h128v85.333h-128zM85.333 448c0 119.040 70.187 221.653 171.093 269.653v91.947c-149.12-52.48-256.427-194.56-256.427-361.6s107.307-309.12 256.427-361.6v91.947c-100.907 48-171.093 150.613-171.093 269.653zM640 832c-211.84 0-384-172.16-384-384s172.16-384 384-384 384 172.16 384 384-172.16 384-384 384zM640 149.333c-164.693 0-298.667 133.973-298.667 298.667s133.973 298.667 298.667 298.667 298.667-133.973 298.667-298.667-133.973-298.667-298.667-298.667z" />
<glyph unicode="&#xe7ef;" d="M725.333 320h85.333v341.333c0 47.147-38.187 85.333-85.333 85.333h-341.333v-85.333h341.333v-341.333zM298.667 234.667v682.667h-85.333v-170.667h-170.667v-85.333h170.667v-426.667c0-47.147 38.187-85.333 85.333-85.333h426.667v-170.667h85.333v170.667h170.667v85.333h-682.667z" />
<glyph unicode="&#xe7f0;" d="M810.667 789.333h-597.333c-47.147 0-85.333-38.187-85.333-85.333v-512c0-47.147 38.187-85.333 85.333-85.333h597.333c47.147 0 85.333 38.187 85.333 85.333v512c0 47.147-38.187 85.333-85.333 85.333zM810.667 192h-597.333v512h597.333v-512z" />
<glyph unicode="&#xe7f1;" d="M810.667 746.667h-597.333c-47.147 0-85.333-38.187-85.333-85.333v-426.667c0-47.147 38.187-85.333 85.333-85.333h597.333c47.147 0 85.333 38.187 85.333 85.333v426.667c0 47.147-38.187 85.333-85.333 85.333zM810.667 234.667h-597.333v426.667h597.333v-426.667z" />
<glyph unicode="&#xe7f2;" d="M810.667 661.333h-597.333c-47.147 0-85.333-38.187-85.333-85.333v-256c0-47.147 38.187-85.333 85.333-85.333h597.333c47.147 0 85.333 38.187 85.333 85.333v256c0 47.147-38.187 85.333-85.333 85.333zM810.667 320h-597.333v256h597.333v-256z" />
<glyph unicode="&#xe7f3;" d="M810.667 704h-597.333c-47.147 0-85.333-38.187-85.333-85.333v-341.333c0-47.147 38.187-85.333 85.333-85.333h597.333c47.147 0 85.333 38.187 85.333 85.333v341.333c0 47.147-38.187 85.333-85.333 85.333zM810.667 277.333h-597.333v341.333h597.333v-341.333z" />
<glyph unicode="&#xe7f4;" d="M810.667 832h-597.333c-47.147 0-85.333-38.187-85.333-85.333v-597.333c0-47.147 38.187-85.333 85.333-85.333h597.333c47.147 0 85.333 38.187 85.333 85.333v597.333c0 47.147-38.187 85.333-85.333 85.333zM810.667 149.333h-597.333v597.333h597.333v-597.333z" />
<glyph unicode="&#xe7f5;" d="M128 746.667v-170.667h85.333v170.667h170.667v85.333h-170.667c-47.147 0-85.333-38.187-85.333-85.333zM213.333 320h-85.333v-170.667c0-47.147 38.187-85.333 85.333-85.333h170.667v85.333h-170.667v170.667zM810.667 149.333h-170.667v-85.333h170.667c47.147 0 85.333 38.187 85.333 85.333v170.667h-85.333v-170.667zM810.667 832h-170.667v-85.333h170.667v-170.667h85.333v170.667c0 47.147-38.187 85.333-85.333 85.333z" />
<glyph unicode="&#xe7f6;" d="M810.667 746.667h-597.333c-47.147 0-85.333-38.187-85.333-85.333v-426.667c0-47.147 38.187-85.333 85.333-85.333h597.333c47.147 0 85.333 38.187 85.333 85.333v426.667c0 47.147-38.187 85.333-85.333 85.333zM810.667 234.667h-597.333v426.667h597.333v-426.667z" />
<glyph unicode="&#xe7f7;" d="M810.667 832h-597.333c-47.147 0-85.333-38.187-85.333-85.333v-597.333c0-47.147 38.187-85.333 85.333-85.333h597.333c47.147 0 85.333 38.187 85.333 85.333v597.333c0 47.147-38.187 85.333-85.333 85.333zM810.667 149.333h-597.333v597.333h597.333v-597.333zM595.84 435.84l-117.333-151.040-83.84 100.693-117.333-150.827h469.333l-150.827 201.173z" />
<glyph unicode="&#xe7f8;" d="M725.333 832h-426.667c-47.147 0-85.333-38.187-85.333-85.333v-597.333c0-47.147 38.187-85.333 85.333-85.333h426.667c47.147 0 85.333 38.187 85.333 85.333v597.333c0 47.147-38.187 85.333-85.333 85.333zM725.333 149.333h-426.667v597.333h426.667v-597.333z" />
<glyph unicode="&#xe7f9;" d="M768 789.333h-512c-47.147 0-85.333-38.187-85.333-85.333v-512c0-47.147 38.187-85.333 85.333-85.333h512c47.147 0 85.333 38.187 85.333 85.333v512c0 47.147-38.187 85.333-85.333 85.333zM768 192h-512v512h512v-512z" />
<glyph unicode="&#xe7fa;" d="M85.333 298.667v-85.333h853.333v85.333h-853.333zM85.333 512v-85.333h853.333v85.333h-853.333zM85.333 725.333v-85.333h853.333v85.333h-853.333z" />
<glyph unicode="&#xe7fb;" d="M128 789.333l384-682.667 384 682.667h-768zM272 704h480l-240-426.667-240 426.667z" />
<glyph unicode="&#xe7fc;" d="M128 224v-160h160l472.107 472.107-160 160-472.107-472.107zM883.413 659.413c16.64 16.64 16.64 43.733 0 60.373l-99.627 99.627c-16.64 16.64-43.733 16.64-60.373 0l-78.080-78.080 160-160 78.080 78.080z" />
<glyph unicode="&#xe7fd;" d="M640 234.667v-85.333h85.333v85.333h85.333v85.333h-85.333v85.333h-85.333v-85.333h-85.333v-85.333h85.333zM853.333 874.667h-682.667c-47.147 0-85.333-38.187-85.333-85.333v-682.667c0-47.147 38.187-85.333 85.333-85.333h682.667c47.147 0 85.333 38.187 85.333 85.333v682.667c0 47.147-38.187 85.333-85.333 85.333zM213.333 746.667h256v-85.333h-256v85.333zM853.333 106.667h-682.667l682.667 682.667v-682.667z" />
<glyph unicode="&#xe7fe;" d="M170.667 490.667v-85.333h341.333v85.333h-341.333zM810.667 192h-85.333v453.333l-128-43.733v72.533l200.533 72.533h12.8v-554.667z" />
<glyph unicode="&#xe7ff;" d="M641.92 264.96l122.24 130.773c16 16.853 30.72 33.493 44.373 50.133 13.44 16.64 25.173 33.28 34.987 49.707 9.813 16.64 17.493 33.067 22.827 49.707 5.547 16.64 8.32 33.493 8.32 50.56 0 22.827-3.84 43.52-11.52 62.293-7.68 18.56-18.773 34.56-33.493 47.573s-32.64 23.040-53.973 30.293c-21.333 7.040-45.653 10.667-72.96 10.667-29.44 0-55.893-4.48-78.933-13.653s-42.453-21.547-58.24-37.333-27.733-34.347-35.84-55.467c-7.68-20.053-11.52-41.6-11.947-64.213h91.307c0.213 13.227 1.92 25.813 5.547 37.12 3.84 12.373 9.6 23.040 17.28 32s17.28 15.787 28.8 20.907c11.733 4.907 25.387 7.467 41.173 7.467 13.013 0 24.533-2.133 34.56-6.613s18.56-10.453 25.387-18.133c6.827-7.68 12.16-17.067 15.787-27.52 3.627-10.667 5.333-22.187 5.333-34.773 0-9.173-1.28-18.56-3.627-27.733s-6.4-19.2-12.373-29.867c-5.973-10.667-13.867-22.4-23.68-35.413-9.813-12.8-22.4-27.52-37.333-44.16l-178.133-194.347v-62.933h368.213v72.96h-254.080zM85.333 490.667v-85.333h341.333v85.333h-341.333z" />
<glyph unicode="&#xe800;" d="M426.667 661.333h-85.333v-170.667h-170.667v-85.333h170.667v-170.667h85.333v170.667h170.667v85.333h-170.667v170.667zM853.333 192h-85.333v453.333l-128-43.733v72.533l200.533 72.533h12.8v-554.667z" />
<glyph unicode="&#xe801;" d="M684.587 264.96l122.24 130.773c16 16.853 30.72 33.493 44.373 50.133 13.44 16.64 25.173 33.28 34.987 49.707 9.813 16.64 17.493 33.067 22.827 49.707 5.547 16.64 8.32 33.493 8.32 50.56 0 22.827-3.84 43.52-11.52 62.293-7.68 18.56-18.773 34.56-33.493 47.573s-32.64 23.040-53.973 30.293c-21.333 7.040-45.653 10.667-72.96 10.667-29.44 0-55.893-4.48-78.933-13.653s-42.453-21.547-58.24-37.333-27.733-34.347-35.84-55.467c-7.68-20.053-11.52-41.6-11.947-64.213h91.307c0.213 13.227 1.92 25.813 5.547 37.12 3.84 12.373 9.6 23.040 17.28 32s17.28 15.787 28.8 20.907c11.733 4.907 25.387 7.467 41.173 7.467 13.013 0 24.533-2.133 34.56-6.613s18.56-10.453 25.387-18.133c6.827-7.68 12.16-17.067 15.787-27.52 3.627-10.667 5.333-22.187 5.333-34.773 0-9.173-1.28-18.56-3.627-27.733s-6.4-19.2-12.373-29.867c-5.973-10.667-13.867-22.4-23.68-35.413-9.813-12.8-22.4-27.52-37.333-44.16l-178.133-194.347v-62.933h368.213v72.96h-254.080zM341.333 661.333h-85.333v-170.667h-170.667v-85.333h170.667v-170.667h85.333v170.667h170.667v85.333h-170.667v170.667z" />
<glyph unicode="&#xe802;" d="M688.64 426.667c0-42.667-4.267-78.933-12.587-108.8s-20.267-53.973-35.627-72.747c-15.36-18.56-33.92-32.213-55.467-40.533s-45.653-12.587-72.32-12.587c-26.453 0-50.56 4.267-72.32 12.587s-40.32 21.973-55.893 40.533c-15.573 18.56-27.733 42.88-36.053 72.747-8.533 29.867-12.8 66.133-12.8 108.8v87.040c0 42.667 4.267 78.933 12.587 108.587s20.267 53.76 35.84 72.107c15.36 18.347 33.92 31.787 55.68 39.893s45.867 12.16 72.32 12.16c26.667 0 50.987-4.053 72.747-12.16s40.32-21.547 55.893-39.893c15.36-18.347 27.307-42.453 35.84-72.107 8.32-29.653 12.587-65.92 12.587-108.587v-87.040zM598.613 527.573c0 27.52-1.92 50.56-5.76 69.12s-9.387 33.707-16.853 45.227c-7.467 11.52-16.427 19.84-27.307 24.747-10.667 5.12-23.040 7.68-36.907 7.68s-26.24-2.56-36.907-7.68c-10.88-5.12-19.84-13.44-27.307-24.747-7.467-11.52-13.013-26.667-16.853-45.227s-5.76-41.813-5.76-69.12v-113.92c0-27.093 1.92-50.347 5.973-69.333s9.6-34.56 17.067-46.293c7.467-11.947 16.64-20.48 27.52-26.027 10.88-5.333 23.253-8.107 37.12-8.107 14.080 0 26.453 2.773 37.12 8.107s19.627 14.080 26.88 26.027c7.253 11.947 12.8 27.307 16.427 46.293s5.547 42.24 5.547 69.333v113.92z" />
<glyph unicode="&#xe803;" d="M681.173 521.173l-117.333-151.040-83.84 100.693-117.333-150.827h469.333l-150.827 201.173zM128 746.667h-85.333v-682.667c0-47.147 38.187-85.333 85.333-85.333h682.667v85.333h-682.667v682.667zM896 917.333h-597.333c-47.147 0-85.333-38.187-85.333-85.333v-597.333c0-47.147 38.187-85.333 85.333-85.333h597.333c47.147 0 85.333 38.187 85.333 85.333v597.333c0 47.147-38.187 85.333-85.333 85.333zM896 234.667h-597.333v597.333h597.333v-597.333z" />
<glyph unicode="&#xe804;" d="M128 746.667h-85.333v-682.667c0-47.147 38.187-85.333 85.333-85.333h682.667v85.333h-682.667v682.667zM597.333 320h85.333v426.667h-170.667v-85.333h85.333v-341.333zM896 917.333h-597.333c-47.147 0-85.333-38.187-85.333-85.333v-597.333c0-47.147 38.187-85.333 85.333-85.333h597.333c47.147 0 85.333 38.187 85.333 85.333v597.333c0 47.147-38.187 85.333-85.333 85.333zM896 234.667h-597.333v597.333h597.333v-597.333z" />
<glyph unicode="&#xe805;" d="M128 746.667h-85.333v-682.667c0-47.147 38.187-85.333 85.333-85.333h682.667v85.333h-682.667v682.667zM896 917.333h-597.333c-47.147 0-85.333-38.187-85.333-85.333v-597.333c0-47.147 38.187-85.333 85.333-85.333h597.333c47.147 0 85.333 38.187 85.333 85.333v597.333c0 47.147-38.187 85.333-85.333 85.333zM896 234.667h-597.333v597.333h597.333v-597.333zM725.333 405.333h-170.667v85.333h85.333c47.147 0 85.333 38.187 85.333 85.333v85.333c0 47.147-38.187 85.333-85.333 85.333h-170.667v-85.333h170.667v-85.333h-85.333c-47.147 0-85.333-38.187-85.333-85.333v-170.667h256v85.333z" />
<glyph unicode="&#xe806;" d="M896 917.333h-597.333c-47.147 0-85.333-38.187-85.333-85.333v-597.333c0-47.147 38.187-85.333 85.333-85.333h597.333c47.147 0 85.333 38.187 85.333 85.333v597.333c0 47.147-38.187 85.333-85.333 85.333zM896 234.667h-597.333v597.333h597.333v-597.333zM128 746.667h-85.333v-682.667c0-47.147 38.187-85.333 85.333-85.333h682.667v85.333h-682.667v682.667zM725.333 405.333v64c0 35.413-28.587 64-64 64 35.413 0 64 28.587 64 64v64c0 47.147-38.187 85.333-85.333 85.333h-170.667v-85.333h170.667v-85.333h-85.333v-85.333h85.333v-85.333h-170.667v-85.333h170.667c47.147 0 85.333 38.187 85.333 85.333z" />
<glyph unicode="&#xe807;" d="M128 746.667h-85.333v-682.667c0-47.147 38.187-85.333 85.333-85.333h682.667v85.333h-682.667v682.667zM640 320h85.333v426.667h-85.333v-170.667h-85.333v170.667h-85.333v-256h170.667v-170.667zM896 917.333h-597.333c-47.147 0-85.333-38.187-85.333-85.333v-597.333c0-47.147 38.187-85.333 85.333-85.333h597.333c47.147 0 85.333 38.187 85.333 85.333v597.333c0 47.147-38.187 85.333-85.333 85.333zM896 234.667h-597.333v597.333h597.333v-597.333z" />
<glyph unicode="&#xe808;" d="M896 917.333h-597.333c-47.147 0-85.333-38.187-85.333-85.333v-597.333c0-47.147 38.187-85.333 85.333-85.333h597.333c47.147 0 85.333 38.187 85.333 85.333v597.333c0 47.147-38.187 85.333-85.333 85.333zM896 234.667h-597.333v597.333h597.333v-597.333zM128 746.667h-85.333v-682.667c0-47.147 38.187-85.333 85.333-85.333h682.667v85.333h-682.667v682.667zM725.333 405.333v85.333c0 47.147-38.187 85.333-85.333 85.333h-85.333v85.333h170.667v85.333h-256v-256h170.667v-85.333h-170.667v-85.333h170.667c47.147 0 85.333 38.187 85.333 85.333z" />
<glyph unicode="&#xe809;" d="M128 746.667h-85.333v-682.667c0-47.147 38.187-85.333 85.333-85.333h682.667v85.333h-682.667v682.667zM896 917.333h-597.333c-47.147 0-85.333-38.187-85.333-85.333v-597.333c0-47.147 38.187-85.333 85.333-85.333h597.333c47.147 0 85.333 38.187 85.333 85.333v597.333c0 47.147-38.187 85.333-85.333 85.333zM896 234.667h-597.333v597.333h597.333v-597.333zM554.667 320h85.333c47.147 0 85.333 38.187 85.333 85.333v85.333c0 47.147-38.187 85.333-85.333 85.333h-85.333v85.333h170.667v85.333h-170.667c-47.147 0-85.333-38.187-85.333-85.333v-256c0-47.147 38.187-85.333 85.333-85.333zM554.667 490.667h85.333v-85.333h-85.333v85.333z" />
<glyph unicode="&#xe80a;" d="M128 746.667h-85.333v-682.667c0-47.147 38.187-85.333 85.333-85.333h682.667v85.333h-682.667v682.667zM896 917.333h-597.333c-47.147 0-85.333-38.187-85.333-85.333v-597.333c0-47.147 38.187-85.333 85.333-85.333h597.333c47.147 0 85.333 38.187 85.333 85.333v597.333c0 47.147-38.187 85.333-85.333 85.333zM896 234.667h-597.333v597.333h597.333v-597.333zM554.667 320l170.667 341.333v85.333h-256v-85.333h170.667l-170.667-341.333h85.333z" />
<glyph unicode="&#xe80b;" d="M128 746.667h-85.333v-682.667c0-47.147 38.187-85.333 85.333-85.333h682.667v85.333h-682.667v682.667zM896 917.333h-597.333c-47.147 0-85.333-38.187-85.333-85.333v-597.333c0-47.147 38.187-85.333 85.333-85.333h597.333c47.147 0 85.333 38.187 85.333 85.333v597.333c0 47.147-38.187 85.333-85.333 85.333zM896 234.667h-597.333v597.333h597.333v-597.333zM554.667 320h85.333c47.147 0 85.333 38.187 85.333 85.333v64c0 35.413-28.587 64-64 64 35.413 0 64 28.587 64 64v64c0 47.147-38.187 85.333-85.333 85.333h-85.333c-47.147 0-85.333-38.187-85.333-85.333v-64c0-35.413 28.587-64 64-64-35.413 0-64-28.587-64-64v-64c0-47.147 38.187-85.333 85.333-85.333zM554.667 661.333h85.333v-85.333h-85.333v85.333zM554.667 490.667h85.333v-85.333h-85.333v85.333z" />
<glyph unicode="&#xe80c;" d="M128 746.667h-85.333v-682.667c0-47.147 38.187-85.333 85.333-85.333h682.667v85.333h-682.667v682.667zM896 917.333h-597.333c-47.147 0-85.333-38.187-85.333-85.333v-597.333c0-47.147 38.187-85.333 85.333-85.333h597.333c47.147 0 85.333 38.187 85.333 85.333v597.333c0 47.147-38.187 85.333-85.333 85.333zM896 234.667h-597.333v597.333h597.333v-597.333zM640 746.667h-85.333c-47.147 0-85.333-38.187-85.333-85.333v-85.333c0-47.147 38.187-85.333 85.333-85.333h85.333v-85.333h-170.667v-85.333h170.667c47.147 0 85.333 38.187 85.333 85.333v256c0 47.147-38.187 85.333-85.333 85.333zM640 576h-85.333v85.333h85.333v-85.333z" />
<glyph unicode="&#xe80d;" d="M128 746.667h-85.333v-682.667c0-47.147 38.187-85.333 85.333-85.333h682.667v85.333h-682.667v682.667zM597.333 448v170.667c0 47.147-38.187 85.333-85.333 85.333h-42.667c-47.147 0-85.333-38.187-85.333-85.333v-42.667c0-47.147 38.187-85.333 85.333-85.333h42.667v-42.667h-128v-85.333h128c47.147 0 85.333 38.187 85.333 85.333zM469.333 576v42.667h42.667v-42.667h-42.667zM896 917.333h-597.333c-47.147 0-85.333-38.187-85.333-85.333v-597.333c0-47.147 38.187-85.333 85.333-85.333h597.333c47.147 0 85.333 38.187 85.333 85.333v597.333c0 47.147-38.187 85.333-85.333 85.333zM896 576h-85.333v85.333h-85.333v-85.333h-85.333v-85.333h85.333v-85.333h85.333v85.333h85.333v-256h-597.333v597.333h597.333v-256z" />
<glyph unicode="&#xe80e;" d="M810.667 832h-597.333c-47.147 0-85.333-38.187-85.333-85.333v-597.333c0-47.147 38.187-85.333 85.333-85.333h597.333c47.147 0 85.333 38.187 85.333 85.333v597.333c0 47.147-38.187 85.333-85.333 85.333zM810.667 149.333l-298.667 341.333v-341.333h-298.667l298.667 341.333v256h298.667v-597.333z" />
<glyph unicode="&#xe80f;" d="M213.333 320h-85.333v-170.667c0-47.147 38.187-85.333 85.333-85.333h170.667v85.333h-170.667v170.667zM213.333 746.667h170.667v85.333h-170.667c-47.147 0-85.333-38.187-85.333-85.333v-170.667h85.333v170.667zM810.667 832h-170.667v-85.333h170.667v-170.667h85.333v170.667c0 47.147-38.187 85.333-85.333 85.333zM810.667 149.333h-170.667v-85.333h170.667c47.147 0 85.333 38.187 85.333 85.333v170.667h-85.333v-170.667zM512 576c-70.613 0-128-57.387-128-128s57.387-128 128-128 128 57.387 128 128-57.387 128-128 128z" />
<glyph unicode="&#xe810;" d="M825.813 531.84c-29.013 146.773-158.507 257.493-313.813 257.493-123.307 0-229.973-69.973-283.52-172.16-128.427-13.653-228.48-122.453-228.48-254.507 0-141.44 114.56-256 256-256h554.667c117.76 0 213.333 95.573 213.333 213.333 0 112.64-87.467 203.947-198.187 211.84zM810.667 192h-554.667c-94.080 0-170.667 76.587-170.667 170.667s76.587 170.667 170.667 170.667 170.667-76.587 170.667-170.667h85.333c0 117.76-79.573 216.533-187.733 246.4 42.88 57.387 110.933 94.933 187.733 94.933 129.493 0 234.667-105.173 234.667-234.667v-21.333h64c70.613 0 128-57.387 128-128s-57.387-128-128-128z" />
<glyph unicode="&#xe811;" d="M853.333 789.333h-170.667l-170.667 170.667-170.667-170.667h-170.667c-47.147 0-85.333-38.187-85.333-85.333v-597.333c0-47.147 38.187-85.333 85.333-85.333h682.667c47.147 0 85.333 38.187 85.333 85.333v597.333c0 47.147-38.187 85.333-85.333 85.333zM853.333 106.667h-682.667v597.333h192.64l150.187 149.333 148.48-149.333h191.36v-597.333zM768 618.667h-512v-426.667h512z" />
<glyph unicode="&#xe812;" d="M597.333 704l-160-213.333 121.6-162.133-68.267-51.2c-72.107 96-192 256-192 256l-256-341.333h938.667l-384 512z" />
<glyph unicode="&#xe813;" d="M128 746.667h-85.333v-682.667c0-47.147 38.187-85.333 85.333-85.333h682.667v85.333h-682.667v682.667zM896 917.333h-597.333c-47.147 0-85.333-38.187-85.333-85.333v-597.333c0-47.147 38.187-85.333 85.333-85.333h597.333c47.147 0 85.333 38.187 85.333 85.333v597.333c0 47.147-38.187 85.333-85.333 85.333zM896 234.667h-597.333v597.333h597.333v-597.333z" />
<glyph unicode="&#xe814;" d="M469.333 786.347v86.187c-85.76-8.533-163.84-42.667-227.2-94.293l60.8-60.8c47.36 36.48 104.107 61.227 166.4 68.907zM781.867 778.24c-63.147 51.627-141.44 85.76-227.2 94.293v-86.187c62.293-7.893 119.040-32.427 166.4-69.12l60.8 61.013zM850.347 490.667h86.187c-8.533 85.76-42.667 163.84-94.293 227.2l-60.8-60.8c36.48-47.36 61.227-104.107 68.907-166.4zM242.773 657.067l-60.8 60.8c-51.84-63.36-85.973-141.44-94.507-227.2h86.187c7.893 62.293 32.427 119.040 69.12 166.4zM173.653 405.333h-86.187c8.533-85.76 42.667-163.84 94.293-227.2l60.8 60.8c-36.48 47.36-61.013 104.32-68.907 166.4zM640 448c0 70.613-57.387 128-128 128s-128-57.387-128-128 57.387-128 128-128 128 57.387 128 128zM781.227 239.147l60.8-60.8c51.84 63.147 85.973 141.227 94.507 226.987h-86.187c-7.68-62.080-32.427-119.040-69.12-166.187zM554.667 109.653v-86.187c85.76 8.533 163.84 42.667 227.2 94.293l-60.8 60.8c-47.36-36.48-104.107-61.013-166.4-68.907zM242.133 117.76c63.36-51.627 141.44-85.76 227.2-94.293v86.187c-62.293 7.893-119.040 32.427-166.4 69.12l-60.8-61.013z" />
<glyph unicode="&#xe815;" d="M797.653 430.933c-11.947 6.827-24.32 12.373-36.693 17.067 12.373 4.693 24.747 10.24 36.693 17.067 81.92 47.36 127.573 133.333 127.787 221.653-76.587 43.947-173.867 47.36-255.787 0-11.947-6.827-22.827-14.72-33.28-23.253 2.133 13.44 3.627 26.667 3.627 40.533 0 94.72-51.627 177.28-128 221.44-76.373-44.16-128-126.72-128-221.44 0-13.867 1.28-27.093 3.413-40.32-10.453 8.32-21.333 16.213-33.28 23.253-81.92 47.36-179.2 43.947-255.787 0 0.213-88.32 45.867-174.293 127.787-221.653 11.947-6.827 24.32-12.373 36.693-17.067-12.373-4.693-24.747-10.24-36.693-17.067-81.92-47.36-127.573-133.333-127.787-221.653 76.587-43.947 173.867-47.36 255.787 0 11.947 6.827 22.827 14.72 33.28 23.253-1.92-13.653-3.413-26.88-3.413-40.747 0-94.72 51.627-177.28 128-221.44 76.373 44.373 128 126.72 128 221.44 0 13.867-1.493 27.093-3.413 40.32 10.453-8.32 21.333-16.213 33.28-23.253 81.92-47.36 179.2-43.947 255.787 0-0.213 88.533-45.867 174.507-128 221.867zM512 277.333c-94.293 0-170.667 76.373-170.667 170.667s76.373 170.667 170.667 170.667 170.667-76.373 170.667-170.667-76.373-170.667-170.667-170.667z" />
<glyph unicode="&#xe816;" d="M298.667 490.667h-256v-85.333h256v85.333zM391.253 629.12l-90.453 90.453-60.373-60.373 90.453-90.453 60.373 60.373zM554.667 917.333h-85.333v-256h85.333v256zM783.573 659.2l-60.373 60.373-90.453-90.453 60.373-60.373 90.453 90.453zM725.333 490.667v-85.333h256v85.333h-256zM512 576c-70.613 0-128-57.387-128-128s57.387-128 128-128 128 57.387 128 128-57.387 128-128 128zM632.747 266.88l90.453-90.453 60.373 60.373-90.453 90.453-60.373-60.373zM240.427 236.8l60.373-60.373 90.453 90.453-60.373 60.373-90.453-90.453zM469.333-21.333h85.333v256h-85.333v-256z" />
<glyph unicode="&#xe817;" d="M128 874.667v-512h128v-384l298.667 512h-170.667l170.667 384h-426.667zM810.667 874.667h-85.333l-136.533-384h81.067l29.867 85.333h136.533l29.867-85.333h81.067l-136.533 384zM718.933 633.6l49.067 155.733 49.067-155.733h-98.133z" />
<glyph unicode="&#xe818;" d="M139.733 832l-54.4-54.4 213.333-213.333v-158.933h128v-384l152.96 262.187 176.64-176.853 54.4 54.187-670.933 671.147zM725.333 533.333h-170.667l170.667 341.333h-426.667v-93.013l360.96-360.96 65.707 112.64z" />
<glyph unicode="&#xe819;" d="M298.667 874.667v-469.333h128v-384l298.667 512h-170.667l170.667 341.333z" />
<glyph unicode="&#xe81a;" d="M640 64h85.333v85.333h-85.333v-85.333zM810.667 576h85.333v85.333h-85.333v-85.333zM128 746.667v-597.333c0-47.147 38.187-85.333 85.333-85.333h170.667v85.333h-170.667v597.333h170.667v85.333h-170.667c-47.147 0-85.333-38.187-85.333-85.333zM810.667 832v-85.333h85.333c0 47.147-38.187 85.333-85.333 85.333zM469.333-21.333h85.333v938.667h-85.333v-938.667zM810.667 234.667h85.333v85.333h-85.333v-85.333zM640 746.667h85.333v85.333h-85.333v-85.333zM810.667 405.333h85.333v85.333h-85.333v-85.333zM810.667 64c47.147 0 85.333 38.187 85.333 85.333h-85.333v-85.333z" />
<glyph unicode="&#xe81b;" d="M469.333 576h85.333v-85.333h-85.333zM384 490.667h85.333v-85.333h-85.333zM554.667 490.667h85.333v-85.333h-85.333zM640 576h85.333v-85.333h-85.333zM298.667 576h85.333v-85.333h-85.333zM810.667 832h-597.333c-46.933 0-85.333-38.4-85.333-85.333v-597.333c0-46.933 38.4-85.333 85.333-85.333h597.333c46.933 0 85.333 38.4 85.333 85.333v597.333c0 46.933-38.4 85.333-85.333 85.333zM384 192h-85.333v85.333h85.333v-85.333zM554.667 192h-85.333v85.333h85.333v-85.333zM725.333 192h-85.333v85.333h85.333v-85.333zM810.667 490.667h-85.333v-85.333h85.333v-85.333h-85.333v85.333h-85.333v-85.333h-85.333v85.333h-85.333v-85.333h-85.333v85.333h-85.333v-85.333h-85.333v85.333h85.333v85.333h-85.333v256h597.333v-256z" />
<glyph unicode="&#xe81c;" d="M426.667 448c-47.147 0-85.333-38.187-85.333-85.333s38.187-85.333 85.333-85.333 85.333 38.187 85.333 85.333-38.187 85.333-85.333 85.333zM256 618.667c-47.147 0-85.333-38.187-85.333-85.333s38.187-85.333 85.333-85.333 85.333 38.187 85.333 85.333-38.187 85.333-85.333 85.333zM256 277.333c-47.147 0-85.333-38.187-85.333-85.333s38.187-85.333 85.333-85.333 85.333 38.187 85.333 85.333-38.187 85.333-85.333 85.333zM768 618.667c47.147 0 85.333 38.187 85.333 85.333s-38.187 85.333-85.333 85.333-85.333-38.187-85.333-85.333 38.187-85.333 85.333-85.333zM597.333 277.333c-47.147 0-85.333-38.187-85.333-85.333s38.187-85.333 85.333-85.333 85.333 38.187 85.333 85.333-38.187 85.333-85.333 85.333zM768 448c-47.147 0-85.333-38.187-85.333-85.333s38.187-85.333 85.333-85.333 85.333 38.187 85.333 85.333-38.187 85.333-85.333 85.333zM597.333 618.667c-47.147 0-85.333-38.187-85.333-85.333s38.187-85.333 85.333-85.333 85.333 38.187 85.333 85.333-38.187 85.333-85.333 85.333zM426.667 789.333c-47.147 0-85.333-38.187-85.333-85.333s38.187-85.333 85.333-85.333 85.333 38.187 85.333 85.333-38.187 85.333-85.333 85.333z" />
<glyph unicode="&#xe81d;" d="M341.333 789.333v-62.080l85.333-85.333v147.413h170.667v-170.667h-147.413l85.333-85.333h62.080v-62.080l85.333-85.333v147.413h170.667v-170.667h-147.413l85.333-85.333h62.080v-62.080l85.333-85.333v659.413c0 47.147-38.187 85.333-85.333 85.333h-659.413l85.333-85.333h62.080zM682.667 789.333h170.667v-170.667h-170.667v170.667zM54.4 905.6l-54.4-54.187 85.333-85.333v-659.413c0-47.147 38.187-85.333 85.333-85.333h659.413l85.333-85.333 54.187 54.4-915.2 915.2zM426.667 424.747l62.080-62.080h-62.080v62.080zM170.667 680.747l62.080-62.080h-62.080v62.080zM341.333 106.667h-170.667v170.667h170.667v-170.667zM341.333 362.667h-170.667v170.667h147.413l23.253-23.253v-147.413zM597.333 106.667h-170.667v170.667h147.413l23.253-23.253v-147.413zM682.667 106.667v62.080l62.080-62.080h-62.080z" />
<glyph unicode="&#xe81e;" d="M853.333 874.667h-682.667c-47.147 0-85.333-38.187-85.333-85.333v-682.667c0-47.147 38.187-85.333 85.333-85.333h682.667c47.147 0 85.333 38.187 85.333 85.333v682.667c0 47.147-38.187 85.333-85.333 85.333zM341.333 106.667h-170.667v170.667h170.667v-170.667zM341.333 362.667h-170.667v170.667h170.667v-170.667zM341.333 618.667h-170.667v170.667h170.667v-170.667zM597.333 106.667h-170.667v170.667h170.667v-170.667zM597.333 362.667h-170.667v170.667h170.667v-170.667zM597.333 618.667h-170.667v170.667h170.667v-170.667zM853.333 106.667h-170.667v170.667h170.667v-170.667zM853.333 362.667h-170.667v170.667h170.667v-170.667zM853.333 618.667h-170.667v170.667h170.667v-170.667z" />
<glyph unicode="&#xe81f;" d="M768 234.667l-628.48 628.267-54.187-54.187 170.667-170.667v-147.413h-85.333v170.667h-85.333v-426.667h85.333v170.667h85.333v-170.667h85.333v318.080l42.667-42.667v-275.413h170.667c28.587 0 53.547 14.080 69.12 35.627l270.293-270.293 54.187 54.4-180.267 180.267zM554.667 320h-85.333v104.747l85.333-85.333v-19.413zM768 405.333h42.667l34.987-139.52 30.933-31.147h62.080l-50.773 178.133c29.867 13.227 50.773 43.093 50.773 77.867v85.333c0 47.147-38.187 85.333-85.333 85.333h-170.667v-232.747l85.333-85.333v62.080zM768 576h85.333v-85.333h-85.333v85.333zM640 471.253v104.747c0 47.147-38.187 85.333-85.333 85.333h-104.747l190.080-190.080z" />
<glyph unicode="&#xe820;" d="M256 490.667h-85.333v170.667h-85.333v-426.667h85.333v170.667h85.333v-170.667h85.333v426.667h-85.333v-170.667zM554.667 661.333h-170.667v-426.667h170.667c47.147 0 85.333 38.187 85.333 85.333v256c0 47.147-38.187 85.333-85.333 85.333zM554.667 320h-85.333v256h85.333v-256zM938.667 490.667v85.333c0 47.147-38.187 85.333-85.333 85.333h-170.667v-426.667h85.333v170.667h42.667l42.667-170.667h85.333l-50.773 178.133c29.867 13.227 50.773 43.093 50.773 77.867zM853.333 490.667h-85.333v85.333h85.333v-85.333z" />
<glyph unicode="&#xe821;" d="M725.333 704c-141.44 0-256-114.56-256-256s114.56-256 256-256 256 114.56 256 256-114.56 256-256 256zM213.333 618.667c-94.293 0-170.667-76.373-170.667-170.667s76.373-170.667 170.667-170.667 170.667 76.373 170.667 170.667-76.373 170.667-170.667 170.667zM213.333 362.667c-47.147 0-85.333 38.187-85.333 85.333s38.187 85.333 85.333 85.333 85.333-38.187 85.333-85.333-38.187-85.333-85.333-85.333z" />
<glyph unicode="&#xe822;" d="M213.333 618.667c-94.293 0-170.667-76.373-170.667-170.667s76.373-170.667 170.667-170.667 170.667 76.373 170.667 170.667-76.373 170.667-170.667 170.667zM725.333 704c-141.44 0-256-114.56-256-256s114.56-256 256-256 256 114.56 256 256-114.56 256-256 256zM725.333 277.333c-94.293 0-170.667 76.373-170.667 170.667s76.373 170.667 170.667 170.667 170.667-76.373 170.667-170.667-76.373-170.667-170.667-170.667z" />
<glyph unicode="&#xe823;" d="M756.48 447.147l169.813 169.813c16.64 16.64 16.64 43.733 0 60.373l-184.96 184.96c-16.64 16.64-43.733 16.64-60.373 0l-169.813-169.813-169.813 169.6c-8.32 8.32-19.2 12.587-30.080 12.587s-21.76-4.267-30.080-12.587l-185.173-184.96c-16.64-16.64-16.64-43.733 0-60.373l169.813-169.813-169.813-169.6c-16.64-16.64-16.64-43.733 0-60.373l184.96-184.96c16.64-16.64 43.733-16.64 60.373 0l169.813 169.813 169.813-169.813c8.32-8.32 19.2-12.587 30.080-12.587s21.76 4.267 30.080 12.587l184.96 184.96c16.64 16.64 16.64 43.733 0 60.373l-169.6 169.813zM512 576c23.467 0 42.667-19.2 42.667-42.667s-19.2-42.667-42.667-42.667-42.667 19.2-42.667 42.667 19.2 42.667 42.667 42.667zM311.040 492.373l-154.667 154.667 154.88 154.88 154.667-154.667-154.88-154.88zM426.667 405.333c-23.467 0-42.667 19.2-42.667 42.667s19.2 42.667 42.667 42.667 42.667-19.2 42.667-42.667-19.2-42.667-42.667-42.667zM512 320c-23.467 0-42.667 19.2-42.667 42.667s19.2 42.667 42.667 42.667 42.667-19.2 42.667-42.667-19.2-42.667-42.667-42.667zM597.333 490.667c23.467 0 42.667-19.2 42.667-42.667s-19.2-42.667-42.667-42.667-42.667 19.2-42.667 42.667 19.2 42.667 42.667 42.667zM711.040 92.373l-154.667 154.667 154.88 154.88 154.667-154.667-154.88-154.88z" />
<glyph unicode="&#xe824;" d="M896 149.333v597.333c0 47.147-38.187 85.333-85.333 85.333h-597.333c-47.147 0-85.333-38.187-85.333-85.333v-597.333c0-47.147 38.187-85.333 85.333-85.333h597.333c47.147 0 85.333 38.187 85.333 85.333zM362.667 384l106.667-128.213 149.333 192.213 192-256h-597.333l149.333 192z" />
<glyph unicode="&#xe825;" d="M682.667 533.333h-85.333v-85.333h85.333v85.333zM682.667 362.667h-85.333v-85.333h85.333v85.333zM341.333 533.333h-85.333v-85.333h85.333v85.333zM512 533.333h-85.333v-85.333h85.333v85.333zM853.333 789.333h-682.667c-47.147 0-85.333-38.187-85.333-85.333v-512c0-47.147 38.187-85.333 85.333-85.333h682.667c47.147 0 85.333 38.187 85.333 85.333v512c0 47.147-38.187 85.333-85.333 85.333zM853.333 192h-682.667v512h682.667v-512z" />
<glyph unicode="&#xe826;" d="M810.667 832h-597.333c-47.147 0-85.333-38.187-85.333-85.333v-597.333c0-47.147 38.187-85.333 85.333-85.333h597.333c47.147 0 85.333 38.187 85.333 85.333v597.333c0 47.147-38.187 85.333-85.333 85.333zM234.667 640h85.333v85.333h64v-85.333h85.333v-64h-85.333v-85.333h-64v85.333h-85.333v64zM810.667 149.333h-597.333l597.333 597.333v-597.333zM725.333 234.667v64h-213.333v-64h213.333z" />
<glyph unicode="&#xe827;" d="M597.333 704l-160-213.333 121.6-162.133-68.267-51.2c-72.107 96-192 256-192 256l-256-341.333h938.667l-384 512z" />
<glyph unicode="&#xe828;" d="M256 832h-128v-128c70.613 0 128 57.387 128 128zM597.333 832h-85.333c0-212.053-171.947-384-384-384v-85.333c259.2 0 469.333 210.133 469.333 469.333zM426.667 832h-85.333c0-117.76-95.573-213.333-213.333-213.333v-85.333c164.907 0 298.667 133.76 298.667 298.667zM426.667 64h85.333c0 212.053 171.947 384 384 384v85.333c-259.2 0-469.333-210.133-469.333-469.333zM768 64h128v128c-70.613 0-128-57.387-128-128zM597.333 64h85.333c0 117.76 95.573 213.333 213.333 213.333v85.333c-164.907 0-298.667-133.76-298.667-298.667z" />
<glyph unicode="&#xe829;" d="M426.667 832h-85.333c0-15.573-1.92-30.72-5.12-45.44l68.053-68.053c14.293 35.2 22.4 73.387 22.4 113.493zM128 777.6l121.173-121.173c-34.56-23.68-76.16-37.76-121.173-37.76v-85.333c68.693 0 131.627 23.467 181.973 62.293l60.8-60.8c-65.92-54.187-150.613-86.827-242.773-86.827v-85.333c115.84 0 221.653 42.027 303.36 111.573l106.88-106.88c-69.547-81.707-111.573-187.52-111.573-303.36h85.333c0 92.16 32.64 176.853 86.827 242.987l60.8-60.8c-38.827-50.56-62.293-113.493-62.293-182.187h85.333c0 45.013 14.080 86.613 37.973 121.173l121.173-121.173 54.187 54.4-713.6 713.6-54.4-54.4zM597.333 832h-85.333c0-64-16-124.373-43.733-177.493l62.507-62.507c42.027 70.4 66.56 152.107 66.56 240zM850.56 272.213c14.72 3.2 29.867 5.12 45.44 5.12v85.333c-40.107 0-78.293-8.107-113.28-22.4l67.84-68.053zM656 466.773l62.507-62.507c53.12 27.733 113.493 43.733 177.493 43.733v85.333c-87.893 0-169.6-24.533-240-66.56z" />
<glyph unicode="&#xe82a;" d="M512 874.667c-235.733 0-426.667-190.933-426.667-426.667s190.933-426.667 426.667-426.667 426.667 190.933 426.667 426.667-190.933 426.667-426.667 426.667z" />
<glyph unicode="&#xe82b;" d="M512 533.333c-164.693 0-298.667-133.973-298.667-298.667h85.333c0 117.547 95.787 213.333 213.333 213.333s213.333-95.787 213.333-213.333h85.333c0 164.693-133.973 298.667-298.667 298.667zM512 704c-258.773 0-469.333-210.56-469.333-469.333h85.333c0 211.627 172.373 384 384 384s384-172.373 384-384h85.333c0 258.773-210.56 469.333-469.333 469.333z" />
<glyph unicode="&#xe82c;" d="M810.88 832h-597.333c-47.147 0-85.333-38.187-85.333-85.333v-597.333c0-47.147 38.187-85.333 85.333-85.333h597.333c47.147 0 85.333 38.187 85.333 85.333v597.333c0 47.147-38.187 85.333-85.333 85.333zM640.213 512c0-35.413-28.587-64-64-64 35.413 0 64-28.587 64-64v-64c0-47.147-38.187-85.333-85.333-85.333h-170.667v85.333h170.667v85.333h-85.333v85.333h85.333v85.333h-170.667v85.333h170.667c47.147 0 85.333-38.187 85.333-85.333v-64z" />
<glyph unicode="&#xe82d;" d="M810.667 832h-597.333c-47.147 0-85.333-38.187-85.333-85.333v-597.333c0-47.147 38.187-85.333 85.333-85.333h597.333c47.147 0 85.333 38.187 85.333 85.333v597.333c0 47.147-38.187 85.333-85.333 85.333zM640 234.667h-85.333v170.667h-170.667v256h85.333v-170.667h85.333v170.667h85.333v-426.667z" />
<glyph unicode="&#xe82e;" d="M810.667 832h-597.333c-47.147 0-85.333-38.187-85.333-85.333v-597.333c0-47.147 38.187-85.333 85.333-85.333h597.333c47.147 0 85.333 38.187 85.333 85.333v597.333c0 47.147-38.187 85.333-85.333 85.333zM640 576h-170.667v-85.333h85.333c47.147 0 85.333-38.187 85.333-85.333v-85.333c0-47.147-38.187-85.333-85.333-85.333h-170.667v85.333h170.667v85.333h-170.667v256h256v-85.333z" />
<glyph unicode="&#xe82f;" d="M469.333 320h85.333v85.333h-85.333v-85.333zM810.667 832h-597.333c-47.147 0-85.333-38.187-85.333-85.333v-597.333c0-47.147 38.187-85.333 85.333-85.333h597.333c47.147 0 85.333 38.187 85.333 85.333v597.333c0 47.147-38.187 85.333-85.333 85.333zM640 576h-170.667v-85.333h85.333c47.147 0 85.333-38.187 85.333-85.333v-85.333c0-47.147-38.187-85.333-85.333-85.333h-85.333c-47.147 0-85.333 38.187-85.333 85.333v256c0 47.147 38.187 85.333 85.333 85.333h170.667v-85.333z" />
<glyph unicode="&#xe830;" d="M810.667 832h-597.333c-47.147 0-85.333-38.187-85.333-85.333v-597.333c0-47.147 38.187-85.333 85.333-85.333h597.333c47.147 0 85.333 38.187 85.333 85.333v597.333c0 47.147-38.187 85.333-85.333 85.333zM597.333 234.667h-85.333v341.333h-85.333v85.333h170.667v-426.667z" />
<glyph unicode="&#xe831;" d="M810.667 832h-597.333c-47.147 0-85.333-38.187-85.333-85.333v-597.333c0-47.147 38.187-85.333 85.333-85.333h597.333c47.147 0 85.333 38.187 85.333 85.333v597.333c0 47.147-38.187 85.333-85.333 85.333zM640 490.667c0-47.147-38.187-85.333-85.333-85.333h-85.333v-85.333h170.667v-85.333h-256v170.667c0 47.147 38.187 85.333 85.333 85.333h85.333v85.333h-170.667v85.333h170.667c47.147 0 85.333-38.187 85.333-85.333v-85.333z" />
<glyph unicode="&#xe832;" d="M554.667 661.333h-85.333v-170.667h-170.667v-85.333h170.667v-170.667h85.333v170.667h170.667v85.333h-170.667v170.667zM512 874.667c-235.307 0-426.667-191.36-426.667-426.667s191.36-426.667 426.667-426.667h341.333c47.147 0 85.333 38.187 85.333 85.333v341.333c0 235.307-191.36 426.667-426.667 426.667zM512 106.667c-188.16 0-341.333 153.173-341.333 341.333s153.173 341.333 341.333 341.333 341.333-153.173 341.333-341.333-153.173-341.333-341.333-341.333z" />
<glyph unicode="&#xe833;" d="M768 789.333l85.333-170.667h-128l-85.333 170.667h-85.333l85.333-170.667h-128l-85.333 170.667h-85.333l85.333-170.667h-128l-85.333 170.667h-42.667c-47.147 0-84.907-38.187-84.907-85.333l-0.427-512c0-47.147 38.187-85.333 85.333-85.333h682.667c47.147 0 85.333 38.187 85.333 85.333v597.333h-170.667z" />
<glyph unicode="&#xe834;" d="M554.667 272.213c148.267 17.493 263.253 143.36 263.253 296.32 0 164.907-133.76 298.667-298.667 298.667s-298.667-133.76-298.667-298.667c0-147.84 107.52-270.293 248.747-294.187v-167.68h-256v-85.333h597.333v85.333h-256v165.547z" />
<glyph unicode="&#xe835;" d="M945.92 568.747c0 164.907-133.76 298.667-298.667 298.667s-298.667-133.76-298.667-298.667c0-147.84 107.52-270.293 248.747-294.187v-167.893h-341.333v128h42.667v170.667c0 23.467-19.2 42.667-42.667 42.667h-128c-23.467 0-42.667-19.2-42.667-42.667v-170.667h42.667v-213.333h682.667v85.333h-128v165.547c148.267 17.493 263.253 143.573 263.253 296.533zM192 490.667c35.413 0 64 28.587 64 64s-28.587 64-64 64-64-28.587-64-64 28.587-64 64-64z" />
<glyph unicode="&#xe836;" d="M657.707 643.627l-60.373 60.373-256-256 256-256 60.373 60.373-195.627 195.627z" />
<glyph unicode="&#xe837;" d="M426.667 704l-60.373-60.373 195.627-195.627-195.627-195.627 60.373-60.373 256 256z" />
<glyph unicode="&#xe838;" d="M512 832c-212.053 0-384-171.947-384-384s171.947-384 384-384c35.413 0 64 28.587 64 64 0 16.64-6.187 31.573-16.64 42.88-10.027 11.307-16 26.027-16 42.453 0 35.413 28.587 64 64 64h75.307c117.76 0 213.333 95.573 213.333 213.333 0 188.587-171.947 341.333-384 341.333zM277.333 448c-35.413 0-64 28.587-64 64s28.587 64 64 64 64-28.587 64-64-28.587-64-64-64zM405.333 618.667c-35.413 0-64 28.587-64 64s28.587 64 64 64 64-28.587 64-64-28.587-64-64-64zM618.667 618.667c-35.413 0-64 28.587-64 64s28.587 64 64 64 64-28.587 64-64-28.587-64-64-64zM746.667 448c-35.413 0-64 28.587-64 64s28.587 64 64 64 64-28.587 64-64-28.587-64-64-64z" />
<glyph unicode="&#xe839;" d="M981.333 192v512c0 47.147-38.187 85.333-85.333 85.333h-768c-47.147 0-85.333-38.187-85.333-85.333v-512c0-47.147 38.187-85.333 85.333-85.333h768c47.147 0 85.333 38.187 85.333 85.333zM362.667 426.667l106.667-128.213 149.333 192.213 192-256h-597.333l149.333 192z" />
<glyph unicode="&#xe83a;" d="M512 874.667c-235.733 0-426.667-190.933-426.667-426.667s190.933-426.667 426.667-426.667 426.667 190.933 426.667 426.667-190.933 426.667-426.667 426.667zM512 106.667c-188.16 0-341.333 153.173-341.333 341.333s153.173 341.333 341.333 341.333 341.333-153.173 341.333-341.333-153.173-341.333-341.333-341.333z" />
<glyph unicode="&#xe83b;" d="M853.333 680.747v-465.493c-110.72 32.853-225.28 49.493-341.333 49.493s-230.4-16.64-341.333-49.493v465.493c110.72-32.853 225.28-49.493 341.333-49.493s230.4 16.64 341.333 49.493zM914.347 789.333c-4.053 0-8.533-0.853-13.227-2.56-125.44-46.72-257.28-70.187-389.12-70.187s-263.68 23.467-389.12 70.187c-4.693 1.707-9.173 2.56-13.44 2.56-14.080 0-24.107-10.027-24.107-26.667v-629.333c0.213-16.64 10.027-26.667 24.107-26.667 4.053 0 8.533 0.853 13.227 2.56 125.44 46.72 257.28 70.187 389.12 70.187s263.68-23.467 389.12-70.187c4.693-1.707 9.173-2.56 13.227-2.56 14.080 0 24.32 10.027 24.107 26.667v629.333c0.427 16.64-9.813 26.667-23.893 26.667z" />
<glyph unicode="&#xe83c;" d="M850.773 58.88c-46.72 125.44-70.187 257.28-70.187 389.12s23.467 263.68 70.187 389.12c1.707 4.693 2.56 9.173 2.56 13.44 0 14.080-10.027 24.107-26.667 24.107h-629.333c-16.64-0.213-26.667-10.027-26.667-24.107 0-4.053 0.853-8.533 2.56-13.227 46.72-125.44 70.187-257.28 70.187-389.12s-23.467-263.68-70.187-389.12c-1.707-4.907-2.56-9.387-2.56-13.653 0-14.080 10.027-24.107 26.667-24.107h629.333c16.64 0 26.667 10.24 26.667 24.32 0 4.053-0.853 8.533-2.56 13.227zM279.253 106.667c32.853 110.72 49.493 225.28 49.493 341.333s-16.64 230.4-49.493 341.333h465.493c-32.853-110.72-49.493-225.28-49.493-341.333s16.64-230.4 49.493-341.333h-465.493z" />
<glyph unicode="&#xe83d;" d="M512 704c104.533 0 200.96-8.32 311.040-27.093 20.053-76.16 30.293-153.173 30.293-228.907s-10.24-152.747-30.293-228.907c-110.080-18.773-206.507-27.093-311.040-27.093s-200.96 8.32-311.040 27.093c-20.053 76.16-30.293 153.173-30.293 228.907s10.24 152.747 30.293 228.907c110.080 18.773 206.507 27.093 311.040 27.093zM512 789.333c-116.48 0-222.933-10.24-339.413-30.72l-39.467-7.040-10.667-38.187c-24.747-88.32-37.12-176.853-37.12-265.387s12.373-177.067 37.12-265.387l10.667-38.187 39.467-7.040c116.48-20.48 222.933-30.72 339.413-30.72s222.933 10.24 339.413 30.72l39.467 7.040 10.667 38.187c24.747 88.32 37.12 176.853 37.12 265.387s-12.373 177.067-37.12 265.387l-10.667 38.187-39.467 7.040c-116.48 20.48-222.933 30.72-339.413 30.72z" />
<glyph unicode="&#xe83e;" d="M896 149.333v597.333c0 47.147-38.187 85.333-85.333 85.333h-597.333c-47.147 0-85.333-38.187-85.333-85.333v-597.333c0-47.147 38.187-85.333 85.333-85.333h597.333c47.147 0 85.333 38.187 85.333 85.333zM362.667 384l106.667-128.213 149.333 192.213 192-256h-597.333l149.333 192z" />
<glyph unicode="&#xe83f;" d="M768 874.667h-512c-47.147 0-85.333-38.187-85.333-85.333v-682.667c0-47.147 38.187-85.333 85.333-85.333h512c47.147 0 85.333 38.187 85.333 85.333v682.667c0 47.147-38.187 85.333-85.333 85.333zM256 789.333h213.333v-341.333l-106.667 64-106.667-64v341.333zM256 149.333l128 164.48 91.52-109.867 128 164.907 164.48-219.52h-512z" />
<glyph unicode="&#xe840;" d="M648.533 448c0-75.405-61.128-136.533-136.533-136.533s-136.533 61.128-136.533 136.533c0 75.405 61.128 136.533 136.533 136.533s136.533-61.128 136.533-136.533zM384 874.667l-78.080-85.333h-135.253c-47.147 0-85.333-38.187-85.333-85.333v-512c0-47.147 38.187-85.333 85.333-85.333h682.667c47.147 0 85.333 38.187 85.333 85.333v512c0 47.147-38.187 85.333-85.333 85.333h-135.253l-78.080 85.333h-256zM512 234.667c-117.76 0-213.333 95.573-213.333 213.333s95.573 213.333 213.333 213.333 213.333-95.573 213.333-213.333-95.573-213.333-213.333-213.333z" />
<glyph unicode="&#xe841;" d="M938.667 277.333v512c0 47.147-38.187 85.333-85.333 85.333h-512c-47.147 0-85.333-38.187-85.333-85.333v-512c0-47.147 38.187-85.333 85.333-85.333h512c47.147 0 85.333 38.187 85.333 85.333zM469.333 448l86.613-115.627 126.72 158.293 170.667-213.333h-512l128 170.667zM85.333 704v-597.333c0-47.147 38.187-85.333 85.333-85.333h597.333v85.333h-597.333v597.333h-85.333z" />
<glyph unicode="&#xe842;" d="M512 437.333c52.907 0 96 42.88 96 96 0 52.907-43.093 96-96 96s-96-43.093-96-96c0-53.12 43.093-96 96-96zM704 266.667c0 64-128 96-192 96s-192-32-192-96v-32h384v32zM810.667 832h-597.333c-47.147 0-85.333-38.187-85.333-85.333v-597.333c0-47.147 38.187-85.333 85.333-85.333h597.333c47.147 0 85.333 38.187 85.333 85.333v597.333c0 47.147-38.187 85.333-85.333 85.333zM810.667 149.333h-597.333v597.333h597.333v-597.333z" />
<glyph unicode="&#xe843;" d="M512 768c-213.333 0-395.52-132.693-469.333-320 73.813-187.307 256-320 469.333-320s395.52 132.693 469.333 320c-73.813 187.307-255.787 320-469.333 320zM512 234.667c-117.76 0-213.333 95.573-213.333 213.333s95.573 213.333 213.333 213.333 213.333-95.573 213.333-213.333-95.573-213.333-213.333-213.333zM512 576c-70.613 0-128-57.387-128-128s57.387-128 128-128 128 57.387 128 128-57.387 128-128 128z" />
<glyph unicode="&#xe844;" d="M303.36 596.267l-60.373 60.373c-38.4-49.493-62.080-106.667-69.333-165.973h86.187c6.187 37.333 20.693 73.387 43.52 105.6zM259.84 405.333h-86.187c7.253-59.307 30.933-116.48 69.333-165.973l60.373 60.373c-22.827 32.213-37.333 68.267-43.52 105.6zM302.933 178.56c49.493-38.613 107.093-61.44 166.4-68.693v86.187c-37.333 6.187-73.173 20.907-105.173 43.733l-61.227-61.227zM554.667 786.347v130.987l-194.133-194.133 194.133-189.867v166.827c120.96-20.267 213.333-125.44 213.333-252.16s-92.373-231.893-213.333-252.16v-86.187c168.32 21.12 298.667 164.267 298.667 338.347s-130.347 317.227-298.667 338.347z" />
<glyph unicode="&#xe845;" d="M663.467 723.2l-194.133 194.133v-130.987c-168.32-20.907-298.667-164.267-298.667-338.347s130.347-317.44 298.667-338.347v86.187c-120.96 20.267-213.333 125.44-213.333 252.16s92.373 231.893 213.333 252.16v-166.827l194.133 189.867zM850.347 490.667c-7.253 59.307-30.933 116.48-69.333 165.973l-60.373-60.373c22.827-32.213 37.333-68.267 43.52-105.6h86.187zM554.667 196.053v-86.4c59.307 7.253 116.907 30.293 166.4 68.693l-61.227 61.227c-32-22.613-67.84-37.12-105.173-43.52zM720.64 299.733l60.373-60.373c38.4 49.493 62.080 106.667 69.333 165.973h-86.187c-6.187-37.333-20.693-73.387-43.52-105.6z" />
<glyph unicode="&#xe846;" d="M426.667 618.667v-341.333l213.333 170.667-213.333 170.667zM810.667 832h-597.333c-47.147 0-85.333-38.187-85.333-85.333v-597.333c0-47.147 38.187-85.333 85.333-85.333h597.333c47.147 0 85.333 38.187 85.333 85.333v597.333c0 47.147-38.187 85.333-85.333 85.333zM810.667 149.333h-597.333v597.333h597.333v-597.333z" />
<glyph unicode="&#xe847;" d="M896 704h-768c-47.147 0-85.333-38.187-85.333-85.333v-341.333c0-47.147 38.187-85.333 85.333-85.333h768c47.147 0 85.333 38.187 85.333 85.333v341.333c0 47.147-38.187 85.333-85.333 85.333zM896 277.333h-768v341.333h85.333v-170.667h85.333v170.667h85.333v-170.667h85.333v170.667h85.333v-170.667h85.333v170.667h85.333v-170.667h85.333v170.667h85.333v-341.333z" />
<glyph unicode="&#xe848;" d="M107.947 121.387l57.387-23.68v385.067l-103.467-249.813c-17.92-43.307 2.773-93.44 46.080-111.573zM939.947 279.68l-211.627 510.507c-13.227 32-44.373 51.84-77.013 52.48-11.307 0.213-22.827-1.92-34.133-6.4l-314.24-130.133c-32-13.227-51.627-44.16-52.48-76.8-0.213-11.52 1.707-23.040 6.4-34.347l211.413-510.507c13.44-32.427 44.8-52.053 78.080-52.48 11.093 0 22.187 1.92 33.067 6.4l314.24 130.133c43.307 17.92 64.213 67.84 46.293 111.147zM336 586.667c-23.467 0-42.667 19.2-42.667 42.667s19.2 42.667 42.667 42.667 42.667-19.2 42.667-42.667-19.2-42.667-42.667-42.667zM250.667 117.333c0-46.933 38.4-85.333 85.333-85.333h62.080l-147.413 355.84v-270.507z" />
<glyph unicode="&#xe849;" d="M853.333 789.333h-135.253l-78.080 85.333h-256l-78.080-85.333h-135.253c-47.147 0-85.333-38.187-85.333-85.333v-512c0-47.147 38.187-85.333 85.333-85.333h682.667c47.147 0 85.333 38.187 85.333 85.333v512c0 47.147-38.187 85.333-85.333 85.333zM640 298.667v106.667h-256v-106.667l-149.333 149.333 149.333 149.333v-106.667h256v106.667l149.333-149.333-149.333-149.333z" />
<glyph unicode="&#xe84a;" d="M768 554.667v149.333c0 23.467-18.987 42.667-42.667 42.667h-597.333c-23.68 0-42.667-19.2-42.667-42.667v-512c0-23.467 18.987-42.667 42.667-42.667h597.333c23.68 0 42.667 19.2 42.667 42.667v149.333l170.667-170.667v554.667l-170.667-170.667zM554.667 298.667v106.667h-256v-106.667l-149.333 149.333 149.333 149.333v-106.667h256v106.667l149.333-149.333-149.333-149.333z" />
<glyph unicode="&#xe84b;" d="M511.787 874.667c-235.733 0-426.453-190.933-426.453-426.667s190.72-426.667 426.453-426.667c235.733 0 426.88 190.933 426.88 426.667s-191.147 426.667-426.88 426.667zM512 106.667c-188.587 0-341.333 152.747-341.333 341.333s152.747 341.333 341.333 341.333 341.333-152.747 341.333-341.333-152.747-341.333-341.333-341.333zM661.333 490.667c35.413 0 64 28.587 64 64s-28.587 64-64 64-64-28.587-64-64 28.587-64 64-64zM362.667 490.667c35.413 0 64 28.587 64 64s-28.587 64-64 64-64-28.587-64-64 28.587-64 64-64zM512 213.333c99.413 0 183.68 62.080 217.813 149.333h-435.627c34.133-87.253 118.4-149.333 217.813-149.333z" />
<glyph unicode="&#xe84c;" d="M832.427 828.8l-701.227-701.227c3.84-14.72 11.307-27.947 21.76-38.4l0.213-0.213c10.453-10.453 23.68-17.92 38.4-21.76l701.227 701.227c-7.893 29.44-30.933 52.48-60.373 60.373zM506.88 832l-378.88-378.88v-120.747l499.627 499.627h-120.747zM213.333 832c-46.933 0-85.333-38.4-85.333-85.333v-85.547l170.88 170.88h-85.547zM810.667 64c23.467 0 44.8 9.6 60.16 24.96 15.573 15.573 25.173 36.907 25.173 60.373v85.547l-170.88-170.88h85.547zM396.373 64h120.747l378.88 378.88v120.747l-499.627-499.627z" />
<glyph unicode="&#xe84d;" d="M693.12 629.12c-50.133 49.92-115.627 74.88-181.12 74.88v-256l-181.12-181.12c100.053-100.053 261.973-100.053 362.027 0s100.053 262.187 0.213 362.24zM512 874.667c-235.733 0-426.667-190.933-426.667-426.667s190.933-426.667 426.667-426.667 426.667 191.147 426.667 426.667c0 235.733-190.933 426.667-426.667 426.667zM512 106.667c-188.587 0-341.333 152.747-341.333 341.333s152.747 341.333 341.333 341.333 341.333-152.747 341.333-341.333-152.747-341.333-341.333-341.333z" />
<glyph unicode="&#xe84e;" d="M640 917.333h-256v-85.333h256v85.333zM469.333 362.667h85.333v256h-85.333v-256zM811.733 644.907l60.8 60.8c-18.347 21.973-38.4 42.027-60.373 60.373l-60.8-60.8c-65.493 52.48-148.907 84.053-239.573 84.053-212.267 0-383.787-171.947-383.787-384s171.52-384 383.787-384 384.213 171.947 384.213 384c0 90.667-31.573 173.867-84.267 239.573zM512 106.667c-164.907 0-298.667 133.76-298.667 298.667s133.76 298.667 298.667 298.667 298.667-133.76 298.667-298.667-133.76-298.667-298.667-298.667z" />
<glyph unicode="&#xe84f;" d="M495.36 406.4c-6.827 10.24-15.573 19.627-26.24 27.947-10.88 8.32-23.893 14.933-39.467 20.267 13.013 5.76 24.32 13.013 34.133 21.333 9.813 8.533 17.92 17.493 24.32 27.093s11.307 19.627 14.72 30.080c3.2 10.453 4.907 20.693 4.907 30.933 0 23.68-4.053 44.373-11.733 62.507-7.893 17.92-18.987 33.067-33.28 45.013s-31.36 21.12-51.413 27.307c-20.053 6.187-42.027 9.173-66.133 9.173-23.467 0-45.013-3.413-64.853-10.453s-36.907-16.64-51.2-29.013c-14.293-12.373-25.387-27.093-33.493-43.947s-11.947-35.413-11.947-55.253h84.48c0 10.88 1.92 20.693 5.973 29.44s9.387 16.213 16.427 22.187c7.040 6.187 15.147 10.88 24.747 14.293s19.84 5.12 30.933 5.12c26.027 0 45.227-6.613 58.027-20.053 12.587-13.44 18.987-32 18.987-56.107 0-11.52-1.707-22.187-5.12-31.573-3.413-9.6-8.747-17.707-16-24.32-7.253-6.827-16.213-11.947-26.88-15.787s-23.253-5.76-37.973-5.76h-50.133v-66.773h50.133c14.293 0 27.307-1.707 38.827-4.907s21.333-8.32 29.44-15.147c8.107-6.827 14.293-15.573 18.773-26.027s6.613-22.827 6.613-37.333c0-26.453-7.467-46.72-22.613-60.587s-35.627-20.907-61.867-20.907c-12.587 0-23.893 1.707-34.133 5.333s-18.987 8.747-26.027 15.36c-7.253 6.613-12.8 14.507-16.64 23.893-4.053 9.173-5.973 19.413-5.973 30.72h-85.12c0-23.467 4.48-44.16 13.653-61.867 8.96-17.92 21.12-32.853 36.48-44.8s33.067-20.907 53.12-26.88c20.053-5.973 41.173-8.96 63.147-8.96 24.107 0 46.507 3.413 67.413 9.813 20.693 6.613 38.827 16.213 53.973 28.8s27.093 28.16 35.627 46.72c8.533 18.56 12.8 39.68 12.8 63.36 0 12.587-1.493 24.747-4.693 36.48-3.2 11.947-8.107 23.040-14.72 33.28zM890.667 347.093c-6.187 12.16-15.147 22.613-26.88 31.573s-26.24 16.427-43.093 22.613c-17.067 6.187-36.267 11.52-57.6 16-14.933 3.2-27.093 6.4-36.907 9.813-9.813 3.2-17.707 6.827-23.467 10.667s-9.813 8.32-12.16 13.013c-2.347 4.693-3.413 10.24-3.413 16.427s1.28 11.947 3.84 17.707c2.56 5.547 6.4 10.453 11.52 14.72s11.52 7.68 19.413 10.24c7.68 2.56 16.853 3.84 27.307 3.84 10.667 0 20.053-1.493 28.16-4.693 8.107-2.987 14.933-7.253 20.267-12.587 5.547-5.333 9.6-11.307 12.373-17.92 2.773-6.827 4.053-13.653 4.053-20.693h83.2c0 16.64-3.413 32.213-10.027 46.507-6.827 14.293-16.427 26.88-29.227 37.547s-28.373 18.987-46.72 24.96c-18.56 6.187-39.253 9.173-62.507 9.173-21.973 0-41.813-2.987-59.307-8.96-17.707-5.973-32.64-14.293-45.227-24.533-12.373-10.24-21.973-22.187-28.587-35.84s-10.027-27.947-10.027-42.88c0-15.573 3.2-29.227 9.813-41.173 6.4-11.947 15.573-22.187 27.307-30.933s25.6-16.213 42.027-22.4c16.213-6.187 34.347-11.307 54.187-15.36 16.64-3.413 30.080-7.040 40.533-10.88s18.347-8.107 24.107-12.587c5.76-4.48 9.6-9.173 11.52-14.293s2.987-10.667 2.987-16.64c0-13.44-5.76-24.32-17.067-32.64-11.52-8.32-28.16-12.587-49.92-12.587-9.387 0-18.56 1.067-27.307 3.2-8.96 2.133-16.853 5.547-23.893 10.453-7.040 4.693-12.8 11.093-17.493 18.773-4.48 7.68-7.253 17.28-7.893 28.8h-80.853c0-15.36 3.413-30.293 10.027-45.013s16.64-27.947 29.867-39.467c13.227-11.733 29.653-21.12 49.067-28.16 19.413-7.253 42.027-10.88 67.2-10.88 22.613 0 43.093 2.773 61.653 8.107 18.56 5.547 34.347 13.227 47.36 23.040 13.227 10.027 23.253 21.76 30.293 35.413s10.667 28.8 10.667 45.227c0 16.853-3.2 31.147-9.173 43.307z" />
<glyph unicode="&#xe850;" d="M0 630.827v-71.893l128 42.667v-409.6h85.333v512h-10.88l-202.453-73.173zM1014.827 347.093c-6.187 12.16-15.147 22.613-26.88 31.573s-26.24 16.427-43.093 22.613c-17.067 6.187-36.267 11.52-57.6 16-14.933 3.2-27.093 6.4-36.907 9.813-9.813 3.2-17.707 6.827-23.467 10.667s-9.813 8.32-12.16 13.013c-2.347 4.693-3.413 10.24-3.413 16.427s1.28 11.947 3.84 17.707c2.56 5.547 6.4 10.453 11.52 14.72s11.52 7.68 19.413 10.24c7.68 2.56 16.853 3.84 27.307 3.84 10.667 0 20.053-1.493 28.16-4.693 8.107-2.987 14.933-7.253 20.267-12.587 5.547-5.333 9.6-11.307 12.373-17.92 2.773-6.827 4.053-13.653 4.053-20.693h83.2c0 16.64-3.413 32.213-10.027 46.507s-16.427 26.88-29.227 37.547c-12.8 10.667-28.373 18.987-46.72 24.96-18.56 6.187-39.253 9.173-62.293 9.173-21.973 0-41.813-2.987-59.307-8.96-17.707-5.973-32.64-14.293-45.227-24.533-12.373-10.24-21.973-22.187-28.587-35.84s-10.027-27.947-10.027-42.88c0-15.573 3.2-29.227 9.813-41.173 6.4-11.947 15.573-22.187 27.307-30.933s25.6-16.213 42.027-22.4c16.213-6.187 34.347-11.307 54.187-15.36 16.64-3.413 30.080-7.040 40.533-10.88s18.347-8.107 24.107-12.587c5.76-4.48 9.6-9.173 11.52-14.293s2.987-10.667 2.987-16.64c0-13.44-5.76-24.32-17.067-32.64-11.52-8.32-28.16-12.587-49.92-12.587-9.387 0-18.56 1.067-27.307 3.2-8.96 2.133-16.853 5.547-23.893 10.453-7.040 4.693-12.8 11.093-17.493 18.773-4.48 7.68-7.253 17.28-7.893 28.8h-80.853c0-15.36 3.413-30.293 10.027-45.013s16.64-27.947 29.867-39.467c13.227-11.733 29.653-21.12 49.067-28.16 19.413-7.253 42.027-10.88 67.2-10.88 22.613 0 43.093 2.773 61.653 8.107 18.56 5.547 34.347 13.227 47.36 23.040 13.227 10.027 23.253 21.76 30.293 35.413s10.667 28.8 10.667 45.227c-0.213 16.853-3.2 31.147-9.387 43.307zM589.653 659.413c-14.507 17.28-32 29.653-52.267 37.333-20.48 7.68-43.093 11.52-68.267 11.52-24.747 0-47.36-3.84-67.84-11.52s-37.973-20.053-52.267-37.333c-14.507-17.28-25.6-39.893-33.493-67.627-7.893-27.947-11.733-61.867-11.733-101.973v-81.707c0-40.107 4.053-74.24 11.947-102.187 8.107-27.947 19.413-50.773 33.92-68.267 14.72-17.493 32.213-30.293 52.48-38.187 20.48-7.893 43.093-11.733 67.84-11.733 24.96 0 47.787 4.053 68.053 11.733 20.267 7.893 37.547 20.48 52.053 38.187 14.293 17.493 25.6 40.32 33.493 68.267s11.733 62.080 11.733 102.187v81.707c0 40.107-4.053 74.027-11.733 101.973-8.107 27.733-19.413 50.347-33.92 67.627zM550.613 395.733c0-25.6-1.707-47.147-5.12-65.067s-8.747-32.427-15.573-43.52-15.36-19.2-25.173-24.32c-10.027-5.12-21.547-7.68-34.773-7.68-13.013 0-24.533 2.56-34.773 7.68s-18.773 13.227-25.813 24.32c-7.040 11.093-12.373 25.6-16 43.52s-5.547 39.467-5.547 65.067v106.88c0 25.813 1.707 47.36 5.333 64.853s8.96 31.573 15.787 42.453c7.040 10.88 15.573 18.56 25.6 23.253s21.547 7.040 34.56 7.040c13.013 0 24.533-2.347 34.56-7.040s18.56-12.587 25.6-23.253c7.040-10.88 12.16-24.96 15.787-42.453s5.333-39.253 5.333-64.853v-106.88z" />
<glyph unicode="&#xe851;" d="M512 789.333c-94.293 0-170.667-76.373-170.667-170.667 0-94.080 76.373-170.667 170.667-170.667s170.667 76.587 170.667 170.667c0 94.293-76.373 170.667-170.667 170.667zM512 362.667c-113.707 0-341.333-56.96-341.333-170.667v-85.333h682.667v85.333c0 113.707-227.627 170.667-341.333 170.667z" />
<glyph unicode="&#xe852;" d="M812.16 765.867l-60.8-60.8c-65.493 52.693-148.907 84.267-239.573 84.267-78.080 0-150.4-23.467-210.987-63.36l62.080-62.080c43.947 25.387 94.72 40.107 149.12 40.107 164.907 0 298.667-133.76 298.667-298.667 0-54.4-14.72-105.173-40.107-149.12l62.080-62.080c39.893 60.587 63.36 133.12 63.36 211.2 0 90.667-31.573 173.867-84.267 239.573l60.8 60.8-60.373 60.16zM640 917.333h-256v-85.333h256v85.333zM469.333 557.44l85.333-85.333v146.56h-85.333v-61.227zM128.853 789.333l-54.4-54.187 117.547-117.547c-40.32-60.8-64-133.76-64-212.267 0-212.053 171.52-384 383.787-384 78.507 0 151.467 23.68 212.267 64l106.667-106.667 54.187 54.4-756.053 756.267zM512 106.667c-164.907 0-298.667 133.76-298.667 298.667 0 54.827 14.933 106.027 40.747 150.187l408.107-408.107c-44.16-25.813-95.36-40.747-150.187-40.747z" />
<glyph unicode="&#xe853;" d="M512 874.667c-235.733 0-426.667-190.933-426.667-426.667s190.933-426.667 426.667-426.667 426.667 190.933 426.667 426.667-190.933 426.667-426.667 426.667zM469.333 109.653c-168.32 20.907-298.667 164.267-298.667 338.347s130.347 317.44 298.667 338.347v-676.693zM554.667 786.347c43.947-5.547 85.333-19.2 122.453-39.68h-122.453v39.68zM554.667 661.333h223.573c10.667-13.44 20.48-27.733 29.013-42.667h-252.587v42.667zM554.667 533.333h287.573c3.627-13.867 6.4-28.16 8.32-42.667h-295.893v42.667zM554.667 109.653v39.68h122.453c-37.12-20.48-78.507-34.133-122.453-39.68zM778.24 234.667h-223.573v42.667h252.587c-8.533-14.933-18.347-29.227-29.013-42.667zM842.24 362.667h-287.573v42.667h295.68c-1.707-14.507-4.693-28.8-8.107-42.667z" />
<glyph unicode="&#xe854;" d="M938.667 192v85.333h-597.333v512h85.333l-128 128-128-128h85.333v-85.333h-170.667v-85.333h170.667v-341.333c0-47.147 38.187-85.333 85.333-85.333h341.333v-85.333h-85.333l128-128 128 128h-85.333v85.333h170.667zM426.667 618.667h256v-256h85.333v256c0 47.147-38.187 85.333-85.333 85.333h-256v-85.333z" />
<glyph unicode="&#xe855;" d="M128 234.667v-85.333h256v85.333h-256zM128 746.667v-85.333h426.667v85.333h-426.667zM554.667 64v85.333h341.333v85.333h-341.333v85.333h-85.333v-256h85.333zM298.667 576v-85.333h-170.667v-85.333h170.667v-85.333h85.333v256h-85.333zM896 405.333v85.333h-426.667v-85.333h426.667zM640 576h85.333v85.333h170.667v85.333h-170.667v85.333h-85.333v-256z" />
<glyph unicode="&#xe856;" d="M292.267 420.267h98.133l-49.067 155.733-49.067-155.733zM938.667 661.333l-51.413-268.373-63.787 268.373h-68.267l-63.573-268.373-51.627 268.373h-32.427c-62.507 77.867-158.507 128-266.24 128-188.587 0-341.333-152.747-341.333-341.333s152.747-341.333 341.333-341.333c133.76 0 249.173 77.013 305.28 189.013l4.053-18.347h74.667l64 260.267 64-260.267h74.667l87.467 384h-76.8zM439.467 277.333l-29.867 85.333h-136.533l-29.867-85.333h-81.067l136.533 384h85.333l136.533-384h-81.067z" />
<glyph unicode="&#xe857;" d="M825.813 531.84c-29.013 146.773-158.507 257.493-313.813 257.493-123.307 0-230.187-69.973-283.733-172.16-128.213-13.867-228.267-122.453-228.267-254.507 0-141.44 114.56-256 256-256h554.667c117.76 0 213.333 95.573 213.333 213.333 0 112.64-87.68 203.947-198.187 211.84z" />
<glyph unicode="&#xe858;" d="M151.467 169.173l60.373-60.373 76.587 76.587-60.373 60.373-76.587-76.587zM469.333 2.133h85.333v125.867h-85.333v-125.867zM170.667 512h-128v-85.333h128v85.333zM640 690.773v205.227h-256v-205.227c-76.373-44.373-128-126.72-128-221.44 0-141.44 114.56-256 256-256s256 114.56 256 256c0 94.72-51.627 177.28-128 221.44zM853.333 512v-85.333h128v85.333h-128zM735.787 185.387l76.587-76.587 60.373 60.373-76.587 76.587-60.373-60.373z" />
<glyph unicode="&#xe859;" d="M213.333 341.333h597.333v256h-597.333v-256zM469.333 936.533v-125.867h85.333v125.867h-85.333zM812.16 829.867l-76.587-76.587 60.373-60.373 76.587 76.587-60.373 60.373zM554.667 2.133v125.867h-85.333v-125.867h85.333zM872.533 169.173l-76.587 76.587-60.373-60.373 76.587-76.587 60.373 60.373zM151.467 769.493l76.587-76.587 60.373 60.373-76.587 76.587-60.373-60.373zM211.84 108.8l76.587 76.587-60.373 60.373-76.587-76.587 60.373-60.373z" />
<glyph unicode="&#xe85a;" d="M288.213 753.28l-76.373 76.587-60.373-60.373 76.587-76.587 60.16 60.373zM170.667 512h-128v-85.333h128v85.333zM554.667 936.533h-85.333v-125.867h85.333v125.867zM872.533 769.493l-60.373 60.373-76.587-76.587 60.373-60.373 76.587 76.587zM735.787 185.387l76.587-76.587 60.373 60.373-76.587 76.587-60.373-60.373zM853.333 512v-85.333h128v85.333h-128zM512 725.333c-141.44 0-256-114.56-256-256s114.56-256 256-256 256 114.56 256 256-114.56 256-256 256zM469.333 2.133h85.333v125.867h-85.333v-125.867zM151.467 169.173l60.373-60.373 76.587 76.587-60.373 60.373-76.587-76.587z" />
<glyph unicode="&#xe85b;" d="M810.667 917.333h-597.333c-47.147 0-84.907-38.187-84.907-85.333l-0.427-551.893c0-29.44 14.933-55.467 37.547-70.827l346.24-230.613 346.24 230.613c22.613 15.36 37.547 41.387 37.547 70.827l0.427 551.893c0 47.147-38.187 85.333-85.333 85.333zM426.667 277.333l-213.333 213.333 60.373 60.373 152.96-152.96 323.627 323.627 60.373-60.373-384-384z" />
<glyph unicode="&#xe85c;" d="M926.080 478.080l-384 384c-16.64 16.64-43.733 16.64-60.16 0l-384-384c-16.64-16.64-16.64-43.733 0-60.373l384-384c16.64-16.64 43.733-16.64 60.373 0l384 384c16.64 16.853 16.64 43.733-0.213 60.373zM597.333 341.333v106.667h-170.667v-128h-85.333v170.667c0 23.68 18.987 42.667 42.667 42.667h213.333v106.667l149.333-149.333-149.333-149.333z" />
<glyph unicode="&#xe85d;" d="M682.667 755.2c42.24 0 76.8 34.347 76.8 76.8s-34.56 76.8-76.8 76.8c-42.453 0-76.8-34.347-76.8-76.8s34.347-76.8 76.8-76.8zM810.667 448c-117.76 0-213.333-95.573-213.333-213.333s95.573-213.333 213.333-213.333 213.333 95.573 213.333 213.333-95.573 213.333-213.333 213.333zM810.667 85.333c-82.56 0-149.333 66.773-149.333 149.333s66.773 149.333 149.333 149.333 149.333-66.773 149.333-149.333-66.773-149.333-149.333-149.333zM631.467 533.333h179.2v76.8h-136.533l-82.56 139.307c-12.587 21.333-35.84 35.627-62.507 35.627-20.053 0-38.187-8.107-51.2-21.333l-157.867-157.653c-13.227-13.227-21.333-31.36-21.333-51.413 0-26.88 14.293-49.493 36.267-62.72l142.933-86.613v-213.333h76.8v276.48l-96 71.253 98.987 99.413 73.813-105.813zM213.333 448c-117.76 0-213.333-95.573-213.333-213.333s95.573-213.333 213.333-213.333 213.333 95.573 213.333 213.333-95.573 213.333-213.333 213.333zM213.333 85.333c-82.56 0-149.333 66.773-149.333 149.333s66.773 149.333 149.333 149.333 149.333-66.773 149.333-149.333-66.773-149.333-149.333-149.333z" />
<glyph unicode="&#xe85e;" d="M170.667 277.333c0-37.76 16.64-71.253 42.667-94.72v-75.947c0-23.467 19.2-42.667 42.667-42.667h42.667c23.68 0 42.667 19.2 42.667 42.667v42.667h341.333v-42.667c0-23.467 18.987-42.667 42.667-42.667h42.667c23.467 0 42.667 19.2 42.667 42.667v75.947c26.027 23.467 42.667 56.96 42.667 94.72v426.667c0 149.333-152.747 170.667-341.333 170.667s-341.333-21.333-341.333-170.667v-426.667zM320 234.667c-35.413 0-64 28.587-64 64s28.587 64 64 64 64-28.587 64-64-28.587-64-64-64zM704 234.667c-35.413 0-64 28.587-64 64s28.587 64 64 64 64-28.587 64-64-28.587-64-64-64zM768 490.667h-512v213.333h512v-213.333z" />
<glyph unicode="&#xe85f;" d="M807.253 703.573c-8.747 25.173-32.64 43.093-60.587 43.093h-469.333c-27.947 0-51.84-17.92-60.587-43.093l-88.747-255.573v-341.333c0-23.467 19.2-42.667 42.667-42.667h42.667c23.68 0 42.667 19.2 42.667 42.667v42.667h512v-42.667c0-23.467 19.2-42.667 42.667-42.667h42.667c23.68 0 42.667 19.2 42.667 42.667v341.333l-88.747 255.573zM277.333 277.333c-35.413 0-64 28.587-64 64s28.587 64 64 64 64-28.587 64-64-28.587-64-64-64zM746.667 277.333c-35.413 0-64 28.587-64 64s28.587 64 64 64 64-28.587 64-64-28.587-64-64-64zM213.333 490.667l64 192h469.333l64-192h-597.333z" />
<glyph unicode="&#xe860;" d="M853.333 64c-59.307 0-118.613 20.053-170.667 56.533-104.107-72.96-237.227-72.96-341.333 0-52.053-36.48-111.36-56.533-170.667-56.533h-85.333v-85.333h85.333c58.667 0 116.907 14.72 170.667 42.453 107.52-55.253 233.813-55.253 341.333 0 53.76-27.52 112-42.453 170.667-42.453h85.333v85.333h-85.333zM168.32 149.333h2.347c68.267 0 129.067 37.547 170.667 85.333 41.6-47.787 102.4-85.333 170.667-85.333s129.067 37.547 170.667 85.333c41.813-47.787 102.187-85.333 170.667-85.333h2.347l80.853 285.227c3.627 10.88 2.56 22.827-2.56 33.067-5.333 10.24-14.507 17.92-25.6 21.12l-55.040 18.133v197.12c0 47.147-38.187 85.333-85.333 85.333h-128v128h-256v-128h-128c-47.147 0-85.333-38.187-85.333-85.333v-197.12l-54.827-17.92c-11.093-3.413-20.267-10.88-25.6-21.12s-6.187-22.187-2.56-33.067l80.64-285.44zM256 704h512v-169.173l-256 83.84-256-83.84v169.173z" />
<glyph unicode="&#xe861;" d="M512 874.667c-188.587 0-341.333-21.333-341.333-170.667v-405.333c0-82.56 66.987-149.333 149.333-149.333l-64-64v-21.333h512v21.333l-64 64c82.56 0 149.333 66.773 149.333 149.333v405.333c0 149.333-152.747 170.667-341.333 170.667zM320 234.667c-35.413 0-64 28.587-64 64s28.587 64 64 64 64-28.587 64-64-28.587-64-64-64zM469.333 490.667h-213.333v213.333h213.333v-213.333zM704 234.667c-35.413 0-64 28.587-64 64s28.587 64 64 64 64-28.587 64-64-28.587-64-64-64zM768 490.667h-213.333v213.333h213.333v-213.333z" />
<glyph unicode="&#xe862;" d="M170.667 298.667c0-82.56 66.987-149.333 149.333-149.333l-64-64v-21.333h512v21.333l-64 64c82.56 0 149.333 66.773 149.333 149.333v448c0 149.333-152.747 170.667-341.333 170.667s-341.333-21.333-341.333-170.667v-448zM512 234.667c-47.147 0-85.333 38.187-85.333 85.333s38.187 85.333 85.333 85.333 85.333-38.187 85.333-85.333-38.187-85.333-85.333-85.333zM768 533.333h-512v213.333h512v-213.333z" />
<glyph unicode="&#xe863;" d="M512 874.667c-188.587 0-341.333-21.333-341.333-170.667v-405.333c0-82.56 66.987-149.333 149.333-149.333l-64-64v-21.333h512v21.333l-64 64c82.56 0 149.333 66.773 149.333 149.333v405.333c0 149.333-152.747 170.667-341.333 170.667zM320 234.667c-35.413 0-64 28.587-64 64s28.587 64 64 64 64-28.587 64-64-28.587-64-64-64zM469.333 490.667h-213.333v213.333h213.333v-213.333zM704 234.667c-35.413 0-64 28.587-64 64s28.587 64 64 64 64-28.587 64-64-28.587-64-64-64zM768 490.667h-213.333v213.333h213.333v-213.333z" />
<glyph unicode="&#xe864;" d="M597.333 797.867c42.24 0 76.8 34.347 76.8 76.8s-34.56 76.8-76.8 76.8c-42.453 0-76.8-34.347-76.8-76.8s34.347-76.8 76.8-76.8zM602.453 533.333h208.213v76.8h-154.667l-85.333 142.080c-12.587 21.333-35.84 35.413-62.293 35.413-7.253 0-14.293-1.067-20.907-2.987l-231.467-72.107v-221.867h76.8v156.373l89.813 27.947-166.613-653.653h76.8l122.453 346.027 99.413-132.693v-213.333h76.8v273.28l-106.24 193.707 31.36 122.453 45.867-77.44z" />
<glyph unicode="&#xe865;" d="M896 277.333v85.333l-341.333 213.333v234.667c0 35.413-28.587 64-64 64s-64-28.587-64-64v-234.667l-341.333-213.333v-85.333l341.333 106.667v-234.667l-85.333-64v-64l149.333 42.667 149.333-42.667v64l-85.333 64v234.667l341.333-106.667z" />
<glyph unicode="&#xe866;" d="M298.667 405.333c70.613 0 128 57.387 128 128s-57.387 128-128 128-128-57.387-128-128 57.387-128 128-128zM810.667 661.333h-341.333v-298.667h-341.333v384h-85.333v-640h85.333v128h768v-128h85.333v384c0 94.293-76.373 170.667-170.667 170.667z" />
<glyph unicode="&#xe867;" d="M511.787 168.96l-314.667 244.693-69.12-53.76 384-298.667 384 298.667-69.547 53.973-314.667-244.907zM512 277.333l384 298.667-384 298.667-384-298.667 69.547-53.973 314.453-244.693z" />
<glyph unicode="&#xe868;" d="M845.227 320.427l50.773 39.467-60.8 60.8-50.773-39.467 60.8-60.8zM826.24 521.6l69.76 54.4-384 298.667-124.373-96.64 336-336 102.613 79.573zM139.733 917.333l-54.4-54.4 180.053-180.053-137.387-106.88 69.547-53.973 314.453-244.693 89.387 69.547 60.8-60.8-150.613-117.12-314.453 244.693-69.12-53.76 384-298.667 210.987 164.267 161.493-161.493 54.187 54.4-798.933 798.933z" />
<glyph unicode="&#xe869;" d="M896 277.333v85.333l-341.333 213.333v234.667c0 35.413-28.587 64-64 64s-64-28.587-64-64v-234.667l-341.333-213.333v-85.333l341.333 106.667v-234.667l-85.333-64v-64l149.333 42.667 149.333-42.667v64l-85.333 64v234.667l341.333-106.667z" />
<glyph unicode="&#xe86a;" d="M469.333 234.667h85.333v42.667h42.667c23.467 0 42.667 19.2 42.667 42.667v128c0 23.467-19.2 42.667-42.667 42.667h-128v42.667h170.667v85.333h-85.333v42.667h-85.333v-42.667h-42.667c-23.467 0-42.667-19.2-42.667-42.667v-128c0-23.467 19.2-42.667 42.667-42.667h128v-42.667h-170.667v-85.333h85.333v-42.667zM853.333 789.333h-682.667c-47.147 0-84.907-38.187-84.907-85.333l-0.427-512c0-47.147 38.187-85.333 85.333-85.333h682.667c47.147 0 85.333 38.187 85.333 85.333v512c0 47.147-38.187 85.333-85.333 85.333zM853.333 192h-682.667v512h682.667v-512z" />
<glyph unicode="&#xe86b;" d="M853.333 448c0 47.147 38.187 85.333 85.333 85.333v170.667c0 47.147-38.187 85.333-85.333 85.333h-682.667c-47.147 0-84.907-38.187-84.907-85.333l-0.213-170.667c47.147-0.213 85.12-38.4 85.12-85.333 0-47.147-38.187-85.333-85.12-85.333l-0.213-170.667c0-47.147 38.187-85.333 85.333-85.333h682.667c47.147 0 85.333 38.187 85.333 85.333v170.667c-47.147 0-85.333 38.187-85.333 85.333zM664.747 243.2l-152.747 98.133-152.747-98.133 46.080 175.573-140.373 114.773 181.12 10.667 65.92 168.32 65.92-168.32 181.12-10.667-140.373-114.773 46.080-175.573z" />
<glyph unicode="&#xe86c;" d="M469.333 405.333v-256h-213.333v-85.333h512v85.333h-213.333v256l341.333 341.333v85.333h-768v-85.333l341.333-341.333zM320 661.333l-85.333 85.333h554.667l-85.333-85.333h-384z" />
<glyph unicode="&#xe86d;" d="M853.333 832h-682.667v-426.667c0-94.293 76.373-170.667 170.667-170.667h256c94.293 0 170.667 76.373 170.667 170.667v128h85.333c47.147 0 85.333 38.187 85.333 85.333v128c0 47.147-38.187 85.333-85.333 85.333zM853.333 618.667h-85.333v128h85.333v-128zM85.333 64h768v85.333h-768v-85.333z" />
<glyph unicode="&#xe86e;" d="M725.333 746.667c35.413 0 64 28.587 64 64 0 42.667-64 115.2-64 115.2s-64-72.533-64-115.2c0-35.413 28.587-64 64-64zM512 746.667c35.413 0 64 28.587 64 64 0 42.667-64 115.2-64 115.2s-64-72.533-64-115.2c0-35.413 28.587-64 64-64zM298.667 746.667c35.413 0 64 28.587 64 64 0 42.667-64 115.2-64 115.2s-64-72.533-64-115.2c0-35.413 28.587-64 64-64zM807.253 618.24c-8.747 25.173-32.64 43.093-60.587 43.093h-469.333c-27.947 0-51.84-17.92-60.587-43.093l-88.747-255.573v-341.333c0-23.467 19.2-42.667 42.667-42.667h42.667c23.68 0 42.667 19.2 42.667 42.667v42.667h512v-42.667c0-23.467 19.2-42.667 42.667-42.667h42.667c23.68 0 42.667 19.2 42.667 42.667v341.333l-88.747 255.573zM277.333 192c-35.413 0-64 28.587-64 64s28.587 64 64 64 64-28.587 64-64-28.587-64-64-64zM746.667 192c-35.413 0-64 28.587-64 64s28.587 64 64 64 64-28.587 64-64-28.587-64-64-64zM213.333 405.333l64 192h469.333l64-192h-597.333z" />
<glyph unicode="&#xe86f;" d="M810.667 661.333v128h-597.333v-128h-128v-554.667h341.333v170.667h170.667v-170.667h341.333v554.667h-128zM469.333 533.333h-85.333v-42.667h85.333v-42.667h-128v128h85.333v42.667h-85.333v42.667h128v-128zM682.667 448h-42.667v85.333h-85.333v128h42.667v-85.333h42.667v85.333h42.667v-213.333z" />
<glyph unicode="&#xe870;" d="M128 874.667l85.973-778.027c4.907-42.453 40.96-75.307 84.693-75.307h426.667c43.733 0 79.787 32.853 84.693 75.307l85.973 778.027h-768zM512 149.333c-70.613 0-128 57.387-128 128 0 85.333 128 230.4 128 230.4s128-145.067 128-230.4c0-70.613-57.387-128-128-128zM781.867 618.667h-539.733l-18.773 170.667h577.493l-18.987-170.667z" />
<glyph unicode="&#xe871;" d="M512 21.333c212.053 0 384 171.947 384 384-212.053 0-384-171.947-384-384zM239.147 522.667c0-58.88 47.787-106.667 106.667-106.667 22.4 0 43.307 7.040 60.373 18.773l-0.853-8.107c0-58.88 47.787-106.667 106.667-106.667s106.667 47.787 106.667 106.667l-0.853 8.107c17.28-11.947 37.973-18.773 60.373-18.773 58.88 0 106.667 47.787 106.667 106.667 0 42.453-24.96 78.933-61.013 96 35.84 17.067 61.013 53.547 61.013 96 0 58.88-47.787 106.667-106.667 106.667-22.4 0-43.307-7.040-60.373-18.773l0.853 8.107c0 58.88-47.787 106.667-106.667 106.667s-106.667-47.787-106.667-106.667l0.853-8.107c-17.28 11.947-37.973 18.773-60.373 18.773-58.88 0-106.667-47.787-106.667-106.667 0-42.453 24.96-78.933 61.013-96-36.053-17.067-61.013-53.547-61.013-96zM512 725.333c58.88 0 106.667-47.787 106.667-106.667s-47.787-106.667-106.667-106.667-106.667 47.787-106.667 106.667 47.787 106.667 106.667 106.667zM128 405.333c0-212.053 171.947-384 384-384 0 212.053-171.947 384-384 384z" />
<glyph unicode="&#xe872;" d="M843.52 651.52l0.64 0.64-158.933 158.507-45.227-45.227 90.027-90.027c-40.107-15.36-68.693-53.973-68.693-99.413 0-58.88 47.787-106.667 106.667-106.667 15.147 0 29.653 3.2 42.667 8.96v-307.627c0-23.467-19.2-42.667-42.667-42.667s-42.667 19.2-42.667 42.667v192c0 47.147-38.187 85.333-85.333 85.333h-42.667v298.667c0 47.147-38.187 85.333-85.333 85.333h-256c-47.147 0-85.333-38.187-85.333-85.333v-682.667h426.667v320h64v-213.333c0-58.88 47.787-106.667 106.667-106.667s106.667 47.787 106.667 106.667v405.333c0 29.44-11.947 56.107-31.147 75.52zM512 533.333h-256v213.333h256v-213.333zM768 533.333c-23.467 0-42.667 19.2-42.667 42.667s19.2 42.667 42.667 42.667 42.667-19.2 42.667-42.667-19.2-42.667-42.667-42.667z" />
<glyph unicode="&#xe873;" d="M298.667 192c-47.147 0-84.907-38.187-84.907-85.333s37.76-85.333 84.907-85.333 85.333 38.187 85.333 85.333-38.187 85.333-85.333 85.333zM42.667 874.667v-85.333h85.333l153.387-323.627-57.6-104.533c-6.613-12.373-10.453-26.24-10.453-41.173 0-47.147 38.187-85.333 85.333-85.333h512v85.333h-493.867c-5.973 0-10.667 4.693-10.667 10.667 0 1.92 0.427 3.627 1.28 5.12l38.187 69.547h317.867c32 0 59.947 17.707 74.667 43.947l152.533 276.907c3.413 5.973 5.333 13.013 5.333 20.48 0 23.68-19.2 42.667-42.667 42.667h-630.827l-40.533 85.333h-139.307zM725.333 192c-47.147 0-84.907-38.187-84.907-85.333s37.76-85.333 84.907-85.333 85.333 38.187 85.333 85.333-38.187 85.333-85.333 85.333z" />
<glyph unicode="&#xe874;" d="M810.667 832h-597.333c-47.147 0-84.907-38.187-84.907-85.333l-0.427-597.333c0-47.147 38.187-85.333 85.333-85.333h597.333c47.147 0 85.333 38.187 85.333 85.333v597.333c0 47.147-38.187 85.333-85.333 85.333zM768 362.667h-170.667v-170.667h-170.667v170.667h-170.667v170.667h170.667v170.667h170.667v-170.667h170.667v-170.667z" />
<glyph unicode="&#xe875;" d="M298.667 405.333c70.613 0 128 57.387 128 128s-57.387 128-128 128-128-57.387-128-128 57.387-128 128-128zM810.667 661.333h-341.333v-298.667h-341.333v384h-85.333v-640h85.333v128h768v-128h85.333v384c0 94.293-76.373 170.667-170.667 170.667z" />
<glyph unicode="&#xe876;" d="M391.253 241.92c66.56-66.56 174.72-66.56 241.28 0s66.56 174.72 0 241.28l-241.28-241.28zM768 874.24l-512 0.427c-47.147 0-85.333-38.187-85.333-85.333v-682.667c0-47.147 38.187-85.333 85.333-85.333h512c47.147 0 85.333 38.187 85.333 85.333v682.667c0 47.147-38.187 84.907-85.333 84.907zM426.667 789.333c23.467 0 42.667-19.2 42.667-42.667s-19.2-42.667-42.667-42.667-42.667 19.2-42.667 42.667 19.2 42.667 42.667 42.667zM298.667 789.333c23.467 0 42.667-19.2 42.667-42.667s-19.2-42.667-42.667-42.667-42.667 19.2-42.667 42.667 19.2 42.667 42.667 42.667zM512 106.667c-141.44 0-256 114.56-256 256s114.56 256 256 256 256-114.56 256-256-114.56-256-256-256z" />
<glyph unicode="&#xe877;" d="M512 467.413c-100.907 93.653-235.52 151.253-384 151.253v-469.333c148.48 0 283.093-57.6 384-151.253 100.907 93.653 235.52 151.253 384 151.253v469.333c-148.48 0-283.093-57.6-384-151.253zM512 618.667c70.613 0 128 57.387 128 128s-57.387 128-128 128-128-57.387-128-128 57.387-128 128-128z" />
<glyph unicode="&#xe878;" d="M810.667 704h-85.333c0 117.76-95.573 213.333-213.333 213.333s-213.333-95.573-213.333-213.333h-85.333c-47.147 0-84.907-38.187-84.907-85.333l-0.427-512c0-47.147 38.187-85.333 85.333-85.333h597.333c47.147 0 85.333 38.187 85.333 85.333v512c0 47.147-38.187 85.333-85.333 85.333zM512 832c70.613 0 128-57.387 128-128h-256c0 70.613 57.387 128 128 128zM512 405.333c-117.76 0-213.333 95.573-213.333 213.333h85.333c0-70.613 57.387-128 128-128s128 57.387 128 128h85.333c0-117.76-95.573-213.333-213.333-213.333z" />
<glyph unicode="&#xe879;" d="M768 832v-85.333h-85.333v85.333h-341.333v-85.333h-85.333v85.333h-85.333v-768h85.333v85.333h85.333v-85.333h341.333v85.333h85.333v-85.333h85.333v768h-85.333zM341.333 234.667h-85.333v85.333h85.333v-85.333zM341.333 405.333h-85.333v85.333h85.333v-85.333zM341.333 576h-85.333v85.333h85.333v-85.333zM768 234.667h-85.333v85.333h85.333v-85.333zM768 405.333h-85.333v85.333h85.333v-85.333zM768 576h-85.333v85.333h85.333v-85.333z" />
<glyph unicode="&#xe87a;" d="M913.493 465.92l-383.787 383.787c-15.573 15.36-36.907 24.96-60.373 24.96h-298.667c-47.147 0-85.333-38.187-85.333-85.333v-298.667c0-23.68 9.6-45.013 25.173-60.373l384-384c15.36-15.36 36.693-24.96 60.16-24.96s45.013 9.6 60.373 24.96l298.667 298.667c15.36 15.573 24.96 36.907 24.96 60.373 0 23.68-9.6 45.013-25.173 60.587zM234.667 661.333c-35.413 0-64 28.587-64 64s28.587 64 64 64 64-28.587 64-64-28.587-64-64-64z" />
<glyph unicode="&#xe87b;" d="M554.667 832h-298.667v-768h170.667v256h128c141.44 0 256 114.56 256 256s-114.56 256-256 256zM563.2 490.667h-136.533v170.667h136.533c47.147 0 85.333-38.187 85.333-85.333s-38.187-85.333-85.333-85.333z" />
<glyph unicode="&#xe87c;" d="M896 746.667h-112.853l48.853 134.187-100.267 36.48-62.080-170.667h-541.653v-85.333l85.333-256-85.333-256v-85.333h768v85.333l-85.333 256 85.333 256v85.333zM682.667 362.667h-128v-128h-85.333v128h-128v85.333h128v128h85.333v-128h128v-85.333z" />
<glyph unicode="&#xe87d;" d="M282.667 499.413c61.44-120.747 160.213-219.52 281.173-280.96l93.867 94.080c11.733 11.733 28.587 15.147 43.307 10.453 47.787-15.787 99.2-24.32 152.32-24.32 23.68 0 42.667-18.987 42.667-42.667v-149.333c0-23.68-18.987-42.667-42.667-42.667-400.64 0-725.333 324.693-725.333 725.333 0 23.68 19.2 42.667 42.667 42.667h149.333c23.68 0 42.667-18.987 42.667-42.667 0-53.12 8.533-104.533 24.32-152.32 4.693-14.72 1.28-31.573-10.453-43.307l-93.867-94.293z" />
<glyph unicode="&#xe87e;" d="M512 874.667c-152.107 0-289.067-65.92-383.573-170.667l383.573-682.667 383.787 682.453c-94.507 104.96-231.467 170.88-383.787 170.88zM298.667 661.333c0 47.147 38.187 85.333 85.333 85.333s85.333-38.187 85.333-85.333-38.187-85.333-85.333-85.333-85.333 38.187-85.333 85.333zM512 320c-47.147 0-85.333 38.187-85.333 85.333s38.187 85.333 85.333 85.333 85.333-38.187 85.333-85.333-38.187-85.333-85.333-85.333z" />
<glyph unicode="&#xe87f;" d="M853.333 448c0 47.147 38.187 85.333 85.333 85.333v170.667c0 47.147-38.187 85.333-85.333 85.333h-682.667c-47.147 0-84.907-38.187-84.907-85.333l-0.213-170.667c47.147-0.213 85.12-38.4 85.12-85.333 0-47.147-38.187-85.333-85.12-85.333l-0.213-170.667c0-47.147 38.187-85.333 85.333-85.333h682.667c47.147 0 85.333 38.187 85.333 85.333v170.667c-47.147 0-85.333 38.187-85.333 85.333zM664.747 243.2l-152.747 98.133-152.747-98.133 46.080 175.573-140.373 114.773 181.12 10.667 65.92 168.32 65.92-168.32 181.12-10.667-140.373-114.773 46.080-175.573z" />
<glyph unicode="&#xe880;" d="M853.333 789.333h-682.667c-47.147 0-84.907-38.187-84.907-85.333l-0.427-512c0-47.147 38.187-85.333 85.333-85.333h682.667c47.147 0 85.333 38.187 85.333 85.333v512c0 47.147-38.187 85.333-85.333 85.333zM853.333 618.667l-341.333-213.333-341.333 213.333v85.333l341.333-213.333 341.333 213.333v-85.333z" />
<glyph unicode="&#xe881;" d="M810.667 618.667h-597.333c-70.613 0-128-57.387-128-128v-256h170.667v-170.667h512v170.667h170.667v256c0 70.613-57.387 128-128 128zM682.667 149.333h-341.333v213.333h341.333v-213.333zM810.667 448c-23.68 0-42.667 18.987-42.667 42.667s18.987 42.667 42.667 42.667c23.68 0 42.667-18.987 42.667-42.667s-18.987-42.667-42.667-42.667zM768 832h-512v-170.667h512v170.667z" />
<glyph unicode="&#xe882;" d="M345.6 390.613l120.747 120.747-299.307 299.307c-66.56-66.56-66.56-174.72 0-241.28l178.56-178.773zM635.093 468.053c65.067-30.507 157.013-8.96 224.853 58.88 81.707 81.707 97.28 198.4 34.773 260.907-62.72 62.507-179.627 46.933-261.12-34.773-67.84-67.84-89.173-159.787-58.88-224.853-94.933-94.72-416.64-416.427-416.64-416.427l60.373-60.373 293.547 293.547 293.547-293.547 60.373 60.373-293.547 293.547 62.72 62.72z" />
<glyph unicode="&#xe883;" d="M648.533 448c0-75.405-61.128-136.533-136.533-136.533s-136.533 61.128-136.533 136.533c0 75.405 61.128 136.533 136.533 136.533s136.533-61.128 136.533-136.533zM384 874.667l-78.080-85.333h-135.253c-47.147 0-85.333-38.187-85.333-85.333v-512c0-47.147 38.187-85.333 85.333-85.333h682.667c47.147 0 85.333 38.187 85.333 85.333v512c0 47.147-38.187 85.333-85.333 85.333h-135.253l-78.080 85.333h-256zM512 234.667c-117.76 0-213.333 95.573-213.333 213.333s95.573 213.333 213.333 213.333 213.333-95.573 213.333-213.333-95.573-213.333-213.333-213.333z" />
<glyph unicode="&#xe884;" d="M853.333 618.667h-128v170.667h-597.333c-47.147 0-85.333-38.187-85.333-85.333v-469.333h85.333c0-70.613 57.387-128 128-128s128 57.387 128 128h256c0-70.613 57.387-128 128-128s128 57.387 128 128h85.333v213.333l-128 170.667zM256 170.667c-35.413 0-64 28.587-64 64s28.587 64 64 64 64-28.587 64-64-28.587-64-64-64zM832 554.667l83.84-106.667h-190.507v106.667h106.667zM768 170.667c-35.413 0-64 28.587-64 64s28.587 64 64 64 64-28.587 64-64-28.587-64-64-64z" />
<glyph unicode="&#xe885;" d="M807.253 703.573c-8.747 25.173-32.64 43.093-60.587 43.093h-106.667v85.333h-256v-85.333h-106.667c-27.947 0-51.84-17.92-60.587-43.093l-88.747-255.573v-341.333c0-23.467 19.2-42.667 42.667-42.667h42.667c23.68 0 42.667 19.2 42.667 42.667v42.667h512v-42.667c0-23.467 19.2-42.667 42.667-42.667h42.667c23.68 0 42.667 19.2 42.667 42.667v341.333l-88.747 255.573zM277.333 277.333c-35.413 0-64 28.587-64 64s28.587 64 64 64 64-28.587 64-64-28.587-64-64-64zM746.667 277.333c-35.413 0-64 28.587-64 64s28.587 64 64 64 64-28.587 64-64-28.587-64-64-64zM213.333 490.667l64 192h469.333l64-192h-597.333z" />
<glyph unicode="&#xe886;" d="M810.667 874.667h-597.333c-47.147 0-85.333-38.187-85.333-85.333v-597.333c0-47.147 38.187-85.333 85.333-85.333h170.667l128-128 128 128h170.667c47.147 0 85.333 38.187 85.333 85.333v597.333c0 47.147-38.187 85.333-85.333 85.333zM512 733.867c63.573 0 115.2-51.627 115.2-115.2s-51.627-115.2-115.2-115.2c-63.573 0-115.2 51.627-115.2 115.2s51.627 115.2 115.2 115.2zM768 277.333h-512v38.4c0 85.333 170.667 132.267 256 132.267s256-46.933 256-132.267v-38.4z" />
<glyph unicode="&#xe887;" d="M874.667 832c-2.347 0-4.48-0.213-6.613-1.067l-228.053-88.533-256 89.6-240.427-81.067c-8.96-2.987-15.573-10.667-15.573-20.48v-645.12c0-11.733 9.6-21.333 21.333-21.333 2.347 0 4.48 0.213 6.613 1.067l228.053 88.533 256-89.6 240.64 80.853c8.96 3.2 15.36 10.88 15.36 20.693v645.12c0 11.733-9.6 21.333-21.333 21.333zM640 149.333l-256 89.813v507.52l256-89.813v-507.52z" />
<glyph unicode="&#xe888;" d="M512 618.667c-94.293 0-170.667-76.373-170.667-170.667s76.373-170.667 170.667-170.667 170.667 76.373 170.667 170.667-76.373 170.667-170.667 170.667zM893.44 490.667c-19.627 177.92-160.853 319.147-338.773 338.773v87.893h-85.333v-87.893c-177.92-19.627-319.147-160.853-338.773-338.773h-87.893v-85.333h87.893c19.627-177.92 160.853-319.147 338.773-338.773v-87.893h85.333v87.893c177.92 19.627 319.147 160.853 338.773 338.773h87.893v85.333h-87.893zM512 149.333c-164.907 0-298.667 133.76-298.667 298.667s133.76 298.667 298.667 298.667 298.667-133.76 298.667-298.667-133.76-298.667-298.667-298.667z" />
<glyph unicode="&#xe889;" d="M512 874.667l-320-780.587 30.080-30.080 289.92 128 289.92-128 30.080 30.080z" />
<glyph unicode="&#xe88a;" d="M768 618.667c0 141.44-114.56 256-256 256s-256-114.56-256-256c0-192 256-469.333 256-469.333s256 277.333 256 469.333zM426.667 618.667c0 47.147 38.187 85.333 85.333 85.333s85.333-38.187 85.333-85.333-38.187-85.333-85.333-85.333-85.333 38.187-85.333 85.333zM213.333 106.667v-85.333h597.333v85.333h-597.333z" />
<glyph unicode="&#xe88b;" d="M512 874.667c-164.907 0-298.667-133.76-298.667-298.667 0-224 298.667-554.667 298.667-554.667s298.667 330.667 298.667 554.667c0 164.907-133.76 298.667-298.667 298.667zM512 469.333c-58.88 0-106.667 47.787-106.667 106.667s47.787 106.667 106.667 106.667 106.667-47.787 106.667-106.667-47.787-106.667-106.667-106.667z" />
<glyph unicode="&#xe88c;" d="M853.333 874.667h-682.667c-47.147 0-84.907-38.187-84.907-85.333l-0.427-768 170.667 170.667h597.333c47.147 0 85.333 38.187 85.333 85.333v512c0 47.147-38.187 85.333-85.333 85.333zM256 362.667v105.6l293.547 293.547c8.32 8.32 21.76 8.32 30.080 0l75.52-75.52c8.32-8.32 8.32-21.76 0-30.080l-293.547-293.547h-105.6zM768 362.667h-320l85.333 85.333h234.667v-85.333z" />
<glyph unicode="&#xe88d;" d="M345.6 390.613l120.747 120.747-299.307 299.307c-66.56-66.56-66.56-174.72 0-241.28l178.56-178.773zM635.093 468.053c65.067-30.507 157.013-8.96 224.853 58.88 81.707 81.707 97.28 198.4 34.773 260.907-62.72 62.507-179.627 46.933-261.12-34.773-67.84-67.84-89.173-159.787-58.88-224.853-94.933-94.72-416.64-416.427-416.64-416.427l60.373-60.373 293.547 293.547 293.547-293.547 60.373 60.373-293.547 293.547 62.72 62.72z" />
<glyph unicode="&#xe88e;" d="M810.667 832h-597.333c-47.147 0-85.333-38.187-85.333-85.333v-597.333c0-47.147 38.187-85.333 85.333-85.333h597.333c47.147 0 85.333 38.187 85.333 85.333v597.333c0 47.147-38.187 85.333-85.333 85.333zM213.333 747.093h128c0-70.613-57.387-128.427-128-128.427v128.427zM213.333 448v85.333c117.76 0 213.333 96 213.333 213.76h85.333c0-164.907-133.76-299.093-298.667-299.093zM213.333 192l149.333 192 106.667-128.213 149.333 192.213 192-256h-597.333z" />
<glyph unicode="&#xe88f;" d="M853.333 789.333h-682.667v-85.333h682.667v85.333zM896 362.667v85.333l-42.667 213.333h-682.667l-42.667-213.333v-85.333h42.667v-256h426.667v256h170.667v-256h85.333v256h42.667zM512 192h-256v170.667h256v-170.667z" />
<glyph unicode="&#xe890;" d="M597.333 704l-160-213.333 121.6-162.133-68.267-51.2c-72.107 96-192 256-192 256l-256-341.333h938.667l-384 512z" />
<glyph unicode="&#xe891;" d="M853.333 533.333h-128v48.64c73.6 18.987 128 85.12 128 164.693h-128v42.667c0 23.467-18.987 42.667-42.667 42.667h-341.333c-23.467 0-42.667-19.2-42.667-42.667v-42.667h-128c0-79.36 54.613-145.707 128-164.693v-48.64h-128c0-79.36 54.613-145.707 128-164.693v-48.64h-128c0-79.36 54.613-145.707 128-164.693v-48.64c0-23.467 19.2-42.667 42.667-42.667h341.333c23.68 0 42.667 19.2 42.667 42.667v48.64c73.6 18.987 128 85.12 128 164.693h-128v48.64c73.6 18.987 128 85.333 128 164.693zM512 149.333c-47.147 0-85.333 38.187-85.333 85.333s38.187 85.333 85.333 85.333 85.333-38.187 85.333-85.333-38.187-85.333-85.333-85.333zM512 362.667c-47.147 0-85.333 38.187-85.333 85.333s38.187 85.333 85.333 85.333 85.333-38.187 85.333-85.333-38.187-85.333-85.333-85.333zM512 576c-47.147 0-85.333 38.187-85.333 85.333s38.187 85.333 85.333 85.333 85.333-38.187 85.333-85.333-38.187-85.333-85.333-85.333z" />
<glyph unicode="&#xe892;" d="M170.667 618.667h170.667v170.667h-170.667v-170.667zM426.667 106.667h170.667v170.667h-170.667v-170.667zM170.667 106.667h170.667v170.667h-170.667v-170.667zM170.667 362.667h170.667v170.667h-170.667v-170.667zM426.667 362.667h170.667v170.667h-170.667v-170.667zM682.667 789.333v-170.667h170.667v170.667h-170.667zM426.667 618.667h170.667v170.667h-170.667v-170.667zM682.667 362.667h170.667v170.667h-170.667v-170.667zM682.667 106.667h170.667v170.667h-170.667v-170.667z" />
<glyph unicode="&#xe893;" d="M853.333 490.667h-519.253l238.293 238.293-60.373 60.373-341.333-341.333 341.333-341.333 60.373 60.373-238.293 238.293h519.253v85.333z" />
<glyph unicode="&#xe894;" d="M298.667 533.333l213.333-213.333 213.333 213.333z" />
<glyph unicode="&#xe895;" d="M512 874.667c-235.733 0-426.667-190.933-426.667-426.667s190.933-426.667 426.667-426.667 426.667 190.933 426.667 426.667-190.933 426.667-426.667 426.667zM512 362.667l-170.667 170.667h341.333l-170.667-170.667z" />
<glyph unicode="&#xe896;" d="M298.667 362.667l213.333 213.333 213.333-213.333z" />
<glyph unicode="&#xe897;" d="M512 789.333l-60.373-60.373 238.293-238.293h-519.253v-85.333h519.253l-238.293-238.293 60.373-60.373 341.333 341.333z" />
<glyph unicode="&#xe898;" d="M512 874.667c-235.733 0-426.667-190.933-426.667-426.667s190.933-426.667 426.667-426.667 426.667 190.933 426.667 426.667-190.933 426.667-426.667 426.667zM725.333 295.040l-60.373-60.373-152.96 152.96-152.96-152.96-60.373 60.373 152.96 152.96-152.96 152.96 60.373 60.373 152.96-152.96 152.96 152.96 60.373-60.373-152.96-152.96 152.96-152.96z" />
<glyph unicode="&#xe899;" d="M384 270.080l-177.92 177.92-60.373-60.373 238.293-238.293 512 512-60.373 60.373z" />
<glyph unicode="&#xe89a;" d="M657.707 643.627l-60.373 60.373-256-256 256-256 60.373 60.373-195.627 195.627z" />
<glyph unicode="&#xe89b;" d="M426.667 704l-60.373-60.373 195.627-195.627-195.627-195.627 60.373-60.373 256 256z" />
<glyph unicode="&#xe89c;" d="M810.667 686.293l-60.373 60.373-238.293-238.293-238.293 238.293-60.373-60.373 238.293-238.293-238.293-238.293 60.373-60.373 238.293 238.293 238.293-238.293 60.373 60.373-238.293 238.293z" />
<glyph unicode="&#xe89d;" d="M512 618.667l-256-256 60.373-60.373 195.627 195.627 195.627-195.627 60.373 60.373z" />
<glyph unicode="&#xe89e;" d="M707.627 593.707l-195.627-195.627-195.627 195.627-60.373-60.373 256-256 256 256z" />
<glyph unicode="&#xe89f;" d="M298.667 362.667h-85.333v-213.333h213.333v85.333h-128v128zM213.333 533.333h85.333v128h128v85.333h-213.333v-213.333zM725.333 234.667h-128v-85.333h213.333v213.333h-85.333v-128zM597.333 746.667v-85.333h128v-128h85.333v213.333h-213.333z" />
<glyph unicode="&#xe8a0;" d="M213.333 277.333h128v-128h85.333v213.333h-213.333v-85.333zM341.333 618.667h-128v-85.333h213.333v213.333h-85.333v-128zM597.333 149.333h85.333v128h128v85.333h-213.333v-213.333zM682.667 618.667v128h-85.333v-213.333h213.333v85.333h-128z" />
<glyph unicode="&#xe8a1;" d="M128 192h768v85.333h-768v-85.333zM128 405.333h768v85.333h-768v-85.333zM128 704v-85.333h768v85.333h-768z" />
<glyph unicode="&#xe8a2;" d="M256 533.333c-47.147 0-85.333-38.187-85.333-85.333s38.187-85.333 85.333-85.333 85.333 38.187 85.333 85.333-38.187 85.333-85.333 85.333zM768 533.333c-47.147 0-85.333-38.187-85.333-85.333s38.187-85.333 85.333-85.333 85.333 38.187 85.333 85.333-38.187 85.333-85.333 85.333zM512 533.333c-47.147 0-85.333-38.187-85.333-85.333s38.187-85.333 85.333-85.333 85.333 38.187 85.333 85.333-38.187 85.333-85.333 85.333z" />
<glyph unicode="&#xe8a3;" d="M512 618.667c47.147 0 85.333 38.187 85.333 85.333s-38.187 85.333-85.333 85.333-85.333-38.187-85.333-85.333 38.187-85.333 85.333-85.333zM512 533.333c-47.147 0-85.333-38.187-85.333-85.333s38.187-85.333 85.333-85.333 85.333 38.187 85.333 85.333-38.187 85.333-85.333 85.333zM512 277.333c-47.147 0-85.333-38.187-85.333-85.333s38.187-85.333 85.333-85.333 85.333 38.187 85.333 85.333-38.187 85.333-85.333 85.333z" />
<glyph unicode="&#xe8a4;" d="M753.067 689.067c-61.653 61.867-146.773 100.267-241.067 100.267-188.587 0-340.907-152.747-340.907-341.333s152.32-341.333 340.907-341.333c158.933 0 292.053 108.8 329.813 256h-88.747c-35.2-99.413-129.493-170.667-241.067-170.667-141.44 0-256 114.56-256 256s114.56 256 256 256c70.613 0 133.973-29.44 180.267-75.733l-137.6-137.6h298.667v298.667l-100.267-100.267z" />
<glyph unicode="&#xe8a5;" d="M316.373 167.040l60.373-60.373 135.253 135.253 135.253-135.253 60.373 60.373-195.627 195.627-195.627-195.627zM707.627 728.96l-60.373 60.373-135.253-135.253-135.253 135.253-60.373-60.373 195.627-195.627 195.627 195.627z" />
<glyph unicode="&#xe8a6;" d="M512 711.253l135.253-135.253 60.373 60.373-195.627 195.627-195.627-195.627 60.373-60.373 135.253 135.253zM512 184.747l-135.253 135.253-60.373-60.373 195.627-195.627 195.627 195.627-60.373 60.373-135.253-135.253z" />
<glyph unicode="&#xe8a7;" d="M213.333 277.333c0-164.907 133.76-298.667 298.667-298.667s298.667 133.76 298.667 298.667v170.667h-597.333v-170.667zM688 773.547l89.6 89.6-35.2 35.2-98.347-98.347c-40.107 19.84-84.48 32-132.053 32s-91.947-12.16-132.053-32l-98.347 98.347-35.2-35.2 89.6-89.6c-74.027-54.187-122.667-141.227-122.667-240.213v-42.667h597.333v42.667c0 98.987-48.64 186.027-122.667 240.213zM384 576c-23.68 0-42.667 19.2-42.667 42.667s18.987 42.667 42.667 42.667c23.68 0 42.667-19.2 42.667-42.667s-18.987-42.667-42.667-42.667zM640 576c-23.68 0-42.667 19.2-42.667 42.667s18.987 42.667 42.667 42.667c23.68 0 42.667-19.2 42.667-42.667s-18.987-42.667-42.667-42.667z" />
<glyph unicode="&#xe8a8;" d="M607.573 447.573l98.987-98.987c11.947 30.933 18.773 64.427 18.773 99.413 0 34.773-6.613 68.053-18.347 98.773l-99.413-99.2zM833.28 673.493l-53.973-53.973c26.667-51.413 42.027-109.653 42.027-171.733s-15.36-120.107-42.027-171.733l51.2-51.2c41.173 66.133 65.493 143.573 65.493 226.773 0 81.493-23.253 157.227-62.72 221.867zM670.080 631.253l-243.413 243.413h-42.667v-323.627l-195.627 195.627-60.373-60.373 238.293-238.293-238.293-238.293 60.373-60.373 195.627 195.627v-323.627h42.667l243.413 243.413-183.040 183.253 183.040 183.253zM469.333 711.253l80.213-80.213-80.213-80v160.213zM549.547 264.747l-80.213-80v160.427l80.213-80.427z" />
<glyph unicode="&#xe8a9;" d="M853.333 277.333h85.333v85.333h-85.333v-85.333zM853.333 661.333v-213.333h85.333v213.333h-85.333zM426.667 789.333c-188.587 0-341.333-152.747-341.333-341.333s152.747-341.333 341.333-341.333 341.333 152.747 341.333 341.333-152.747 341.333-341.333 341.333zM426.667 362.667c-47.147 0-85.333 38.187-85.333 85.333s38.187 85.333 85.333 85.333 85.333-38.187 85.333-85.333-38.187-85.333-85.333-85.333z" />
<glyph unicode="&#xe8aa;" d="M512 874.667c-234.667 0-426.667-192-426.667-426.667s192-426.667 426.667-426.667 426.667 192 426.667 426.667-192 426.667-426.667 426.667zM170.667 448c0 187.733 153.6 341.333 341.333 341.333 78.933 0 151.467-27.733 209.067-72.533l-477.867-477.867c-44.8 57.6-72.533 130.133-72.533 209.067zM512 106.667c-78.933 0-151.467 27.733-209.067 72.533l477.867 477.867c44.8-57.6 72.533-130.133 72.533-209.067 0-187.733-153.6-341.333-341.333-341.333z" />
<glyph unicode="&#xe8ab;" d="M512 874.667c-235.733 0-426.667-190.933-426.667-426.667s190.933-426.667 426.667-426.667 426.667 190.933 426.667 426.667-190.933 426.667-426.667 426.667zM512 106.667c-188.587 0-341.333 152.747-341.333 341.333 0 78.933 27.093 151.253 71.893 209.067l478.507-478.507c-57.813-44.8-130.133-71.893-209.067-71.893zM781.44 238.933l-478.507 478.507c57.813 44.8 130.133 71.893 209.067 71.893 188.587 0 341.333-152.747 341.333-341.333 0-78.933-27.093-151.253-71.893-209.067z" />
<glyph unicode="&#xe8ac;" d="M807.253 746.24c-8.747 25.173-32.64 43.093-60.587 43.093h-469.333c-27.947 0-51.84-17.92-60.587-43.093l-88.747-255.573v-341.333c0-23.467 19.2-42.667 42.667-42.667h42.667c23.68 0 42.667 19.2 42.667 42.667v42.667h512v-42.667c0-23.467 19.2-42.667 42.667-42.667h42.667c23.68 0 42.667 19.2 42.667 42.667v341.333l-88.747 255.573zM277.333 320c-35.413 0-64 28.587-64 64s28.587 64 64 64 64-28.587 64-64-28.587-64-64-64zM746.667 320c-35.413 0-64 28.587-64 64s28.587 64 64 64 64-28.587 64-64-28.587-64-64-64zM213.333 533.333l64 192h469.333l64-192h-597.333z" />
<glyph unicode="&#xe8ad;" d="M705.28 488.107l-45.227 45.227-208.213-208.213-90.453 90.453-45.227-45.227 135.68-135.68 253.44 253.44zM810.667 832h-42.667v85.333h-85.333v-85.333h-341.333v85.333h-85.333v-85.333h-42.667c-47.147 0-84.907-38.187-84.907-85.333l-0.427-597.333c0-47.147 38.187-85.333 85.333-85.333h597.333c47.147 0 85.333 38.187 85.333 85.333v597.333c0 47.147-38.187 85.333-85.333 85.333zM810.667 149.333h-597.333v469.333h597.333v-469.333z" />
<glyph unicode="&#xe8ae;" d="M397.227 234.667l104.107 104.107 104.107-104.107 45.227 45.227-104.107 104.107 104.107 104.107-45.227 45.227-104.107-104.107-104.107 104.107-45.227-45.227 104.107-104.107-104.107-104.107 45.227-45.227zM810.667 832h-42.667v85.333h-85.333v-85.333h-341.333v85.333h-85.333v-85.333h-42.667c-47.147 0-84.907-38.187-84.907-85.333l-0.427-597.333c0-47.147 38.187-85.333 85.333-85.333h597.333c47.147 0 85.333 38.187 85.333 85.333v597.333c0 47.147-38.187 85.333-85.333 85.333zM810.667 149.333h-597.333v469.333h597.333v-469.333z" />
<glyph unicode="&#xe8af;" d="M725.333 533.333h-426.667v-85.333h426.667v85.333zM810.667 832h-42.667v85.333h-85.333v-85.333h-341.333v85.333h-85.333v-85.333h-42.667c-47.147 0-84.907-38.187-84.907-85.333l-0.427-597.333c0-47.147 38.187-85.333 85.333-85.333h597.333c47.147 0 85.333 38.187 85.333 85.333v597.333c0 47.147-38.187 85.333-85.333 85.333zM810.667 149.333h-597.333v469.333h597.333v-469.333zM597.333 362.667h-298.667v-85.333h298.667v85.333z" />
<glyph unicode="&#xe8b0;" d="M853.333 704h-341.333l-85.333 85.333h-256c-47.147 0-85.333-38.187-85.333-85.333v-512c0-47.147 38.187-85.333 85.333-85.333h682.667c47.147 0 85.333 38.187 85.333 85.333v426.667c0 47.147-38.187 85.333-85.333 85.333zM579.413 192l-152.747 89.387-152.747-89.387 40.32 173.653-134.827 116.693 177.707 15.36 69.547 163.627 69.333-163.627 177.707-15.36-134.827-116.693 40.533-173.653z" />
<glyph unicode="&#xe8b1;" d="M853.333 874.667h-682.667c-47.147 0-84.907-38.187-84.907-85.333l-0.427-768 170.667 170.667h597.333c47.147 0 85.333 38.187 85.333 85.333v512c0 47.147-38.187 85.333-85.333 85.333zM213.333 362.667l149.333 192 106.667-128.213 149.333 192.213 192-256h-597.333z" />
<glyph unicode="&#xe8b2;" d="M938.667 832h-640c-29.44 0-52.693-14.933-68.053-37.547l-230.613-346.24 230.613-346.24c15.36-22.613 41.387-37.973 70.827-37.973h637.227c47.147 0 85.333 38.187 85.333 85.333v597.333c0 47.147-38.187 85.333-85.333 85.333zM384 384c-35.413 0-64 28.587-64 64s28.587 64 64 64 64-28.587 64-64-28.587-64-64-64zM597.333 384c-35.413 0-64 28.587-64 64s28.587 64 64 64 64-28.587 64-64-28.587-64-64-64zM810.667 384c-35.413 0-64 28.587-64 64s28.587 64 64 64 64-28.587 64-64-28.587-64-64-64z" />
<glyph unicode="&#xe8b3;" d="M832 533.333c7.253 0 14.293-1.28 21.333-2.133v386.133l-810.667-810.667h554.667v128c0 37.76 16.427 71.893 42.667 95.36v11.307c0 105.813 86.187 192 192 192zM938.667 277.333v64c0 58.88-47.787 106.667-106.667 106.667s-106.667-47.787-106.667-106.667v-64c-23.467 0-42.667-19.2-42.667-42.667v-170.667c0-23.467 19.2-42.667 42.667-42.667h213.333c23.467 0 42.667 19.2 42.667 42.667v170.667c0 23.467-19.2 42.667-42.667 42.667zM896 277.333h-128v64c0 35.413 28.587 64 64 64s64-28.587 64-64v-64z" />
<glyph unicode="&#xe8b4;" d="M627.413 554.667l97.92 97.92v-161.92h21.333l121.813 121.813-91.733 91.52 91.52 91.52-121.6 121.813h-21.333v-161.92l-97.92 97.92-30.080-30.080 119.253-119.253-119.253-119.253 30.080-30.080zM768 835.627l40.107-40.107-40.107-40.107v80.213zM768 652.587l40.107-40.107-40.107-40.107v80.213zM853.333 298.667c-53.12 0-104.32 8.533-152.32 24.32-14.72 4.693-31.573 1.28-43.307-10.453l-93.867-94.080c-120.96 61.44-219.52 160.213-281.173 280.96l93.867 94.080c11.733 11.733 15.147 28.587 10.453 43.307-15.787 48-24.32 99.413-24.32 152.533 0 23.68-18.987 42.667-42.667 42.667h-149.333c-23.68 0-42.667-18.987-42.667-42.667 0-400.64 324.693-725.333 725.333-725.333 23.68 0 42.667 18.987 42.667 42.667v149.333c0 23.68-18.987 42.667-42.667 42.667z" />
<glyph unicode="&#xe8b5;" d="M768 490.667l213.333 213.333-213.333 213.333v-128h-170.667v-170.667h170.667v-128zM853.333 298.667c-53.12 0-104.32 8.533-152.32 24.32-14.72 4.693-31.573 1.28-43.307-10.453l-93.867-94.080c-120.96 61.44-219.52 160.213-281.173 280.96l93.867 94.080c11.733 11.733 15.147 28.587 10.453 43.307-15.787 48.213-24.32 99.413-24.32 152.533 0 23.68-18.987 42.667-42.667 42.667h-149.333c-23.68 0-42.667-18.987-42.667-42.667 0-400.64 324.693-725.333 725.333-725.333 23.68 0 42.667 18.987 42.667 42.667v149.333c0 23.68-18.987 42.667-42.667 42.667z" />
<glyph unicode="&#xe8b6;" d="M853.333 298.667c-53.12 0-104.32 8.533-152.32 24.32-14.72 4.693-31.573 1.28-43.307-10.453l-93.867-94.080c-120.96 61.44-219.52 160.213-281.173 280.96l93.867 94.080c11.733 11.733 15.147 28.587 10.453 43.307-15.787 48-24.32 99.413-24.32 152.533 0 23.68-18.987 42.667-42.667 42.667h-149.333c-23.68 0-42.667-18.987-42.667-42.667 0-400.64 324.693-725.333 725.333-725.333 23.68 0 42.667 18.987 42.667 42.667v149.333c0 23.68-18.987 42.667-42.667 42.667zM810.667 448h85.333c0 212.053-171.947 384-384 384v-85.333c164.907 0 298.667-133.76 298.667-298.667zM640 448h85.333c0 117.76-95.573 213.333-213.333 213.333v-85.333c70.613 0 128-57.387 128-128z" />
<glyph unicode="&#xe8b7;" d="M853.333 298.667c-53.12 0-104.533 8.533-152.32 24.32-14.72 4.693-31.573 1.28-43.307-10.453l-93.867-94.080c-120.96 61.44-219.52 160.213-281.173 280.96l93.867 94.080c11.733 11.733 15.147 28.587 10.453 43.307-15.787 48-24.32 99.413-24.32 152.533 0 23.68-18.987 42.667-42.667 42.667h-149.333c-23.467 0-42.667-18.987-42.667-42.667 0-400.64 324.693-725.333 725.333-725.333 23.68 0 42.667 18.987 42.667 42.667v149.333c0 23.68-18.987 42.667-42.667 42.667zM853.333 789.333v21.333c0 58.88-47.787 106.667-106.667 106.667s-106.667-47.787-106.667-106.667v-21.333c-23.68 0-42.667-19.2-42.667-42.667v-170.667c0-23.467 18.987-42.667 42.667-42.667h213.333c23.68 0 42.667 19.2 42.667 42.667v170.667c0 23.467-18.987 42.667-42.667 42.667zM819.2 789.333h-145.067v21.333c0 40.107 32.427 72.533 72.533 72.533s72.533-32.427 72.533-72.533v-21.333z" />
<glyph unicode="&#xe8b8;" d="M277.333 725.333l234.667-234.667 298.667 298.667-42.667 42.667-256-256-192 192h149.333v64h-256v-256h64v149.333zM1011.413 248.747c-129.92 123.52-305.92 199.253-499.413 199.253s-369.493-75.733-499.413-199.253c-7.893-7.893-12.587-18.56-12.587-30.293s4.693-22.4 12.587-30.080l105.6-105.813c7.68-7.68 18.347-12.587 30.293-12.587 11.52 0 22.187 4.693 29.867 12.16 33.707 31.36 72.107 58.027 113.707 79.147 14.080 7.040 23.893 21.547 23.893 38.4v132.48c61.653 19.84 127.573 30.507 196.053 30.507s134.4-10.667 196.267-30.72v-132.48c0-16.853 9.813-31.36 23.893-38.4 41.6-20.907 80-47.573 113.707-79.147 7.68-7.467 18.133-12.16 29.867-12.16s22.4 4.693 30.293 12.587l105.6 105.813c7.68 7.68 12.587 18.347 12.587 30.080s-4.907 22.613-12.8 30.507z" />
<glyph unicode="&#xe8b9;" d="M725.333 832h-85.333v-298.667h85.333v298.667zM853.333 298.667c-53.12 0-104.32 8.533-152.32 24.32-14.72 4.693-31.573 1.28-43.307-10.453l-93.867-94.080c-120.96 61.44-219.52 160.213-281.173 280.96l93.867 94.080c11.733 11.733 15.147 28.587 10.453 43.307-15.787 48-24.32 99.413-24.32 152.533 0 23.68-18.987 42.667-42.667 42.667h-149.333c-23.68 0-42.667-18.987-42.667-42.667 0-400.64 324.693-725.333 725.333-725.333 23.68 0 42.667 18.987 42.667 42.667v149.333c0 23.68-18.987 42.667-42.667 42.667zM810.667 832v-298.667h85.333v298.667h-85.333z" />
<glyph unicode="&#xe8ba;" d="M853.333 704h-170.667v85.333l-85.333 85.333h-170.667l-85.333-85.333v-85.333h-170.667c-47.147 0-84.907-38.187-84.907-85.333l-0.427-469.333c0-47.147 38.187-85.333 85.333-85.333h682.667c47.147 0 85.333 38.187 85.333 85.333v469.333c0 47.147-38.187 85.333-85.333 85.333zM426.667 789.333h170.667v-85.333h-170.667v85.333zM512 149.333l-213.333 213.333h128v170.667h170.667v-170.667h128l-213.333-213.333z" />
<glyph unicode="&#xe8bb;" d="M853.333 704h-170.667v85.333l-85.333 85.333h-170.667l-85.333-85.333v-85.333h-170.667c-47.147 0-84.907-38.187-84.907-85.333l-0.427-469.333c0-47.147 38.187-85.333 85.333-85.333h682.667c47.147 0 85.333 38.187 85.333 85.333v469.333c0 47.147-38.187 85.333-85.333 85.333zM426.667 789.333h170.667v-85.333h-170.667v85.333zM448 213.333l-149.333 149.333 60.373 60.373 88.96-88.96 220.8 220.8 60.373-60.373-281.173-281.173z" />
<glyph unicode="&#xe8bc;" d="M768 874.667h-341.333l-255.147-256-0.853-512c0-46.933 38.4-85.333 85.333-85.333h512c46.933 0 85.333 38.4 85.333 85.333v682.667c0 46.933-38.4 85.333-85.333 85.333zM512 618.667h-85.333v170.667h85.333v-170.667zM640 618.667h-85.333v170.667h85.333v-170.667zM768 618.667h-85.333v170.667h85.333v-170.667z" />
<glyph unicode="&#xe8bd;" d="M768 874.667h-341.333l-254.933-256-1.067-512c0-46.933 38.4-85.333 85.333-85.333h512c46.933 0 85.333 38.4 85.333 85.333v682.667c0 46.933-38.4 85.333-85.333 85.333zM554.667 234.667h-85.333v85.333h85.333v-85.333zM554.667 405.333h-85.333v213.333h85.333v-213.333z" />
<glyph unicode="&#xe8be;" d="M853.333 874.667h-682.667c-47.147 0-84.907-38.187-84.907-85.333l-0.427-768 170.667 170.667h597.333c47.147 0 85.333 38.187 85.333 85.333v512c0 47.147-38.187 85.333-85.333 85.333zM384 490.667h-85.333v85.333h85.333v-85.333zM554.667 490.667h-85.333v85.333h85.333v-85.333zM725.333 490.667h-85.333v85.333h85.333v-85.333z" />
<glyph unicode="&#xe8bf;" d="M853.333 874.667h-682.667c-47.147 0-84.907-38.187-84.907-85.333l-0.427-768 170.667 170.667h597.333c47.147 0 85.333 38.187 85.333 85.333v512c0 47.147-38.187 85.333-85.333 85.333zM554.667 362.667h-85.333v85.333h85.333v-85.333zM554.667 533.333h-85.333v170.667h85.333v-170.667z" />
<glyph unicode="&#xe8c0;" d="M512 789.333v128l-170.667-170.667 170.667-170.667v128c141.44 0 256-114.56 256-256 0-43.307-10.88-83.84-29.653-119.68l62.293-62.293c33.067 52.907 52.693 114.987 52.693 181.973 0 188.587-152.747 341.333-341.333 341.333zM512 192c-141.44 0-256 114.56-256 256 0 43.307 10.88 83.84 29.653 119.68l-62.293 62.293c-33.067-52.907-52.693-114.987-52.693-181.973 0-188.587 152.747-341.333 341.333-341.333v-128l170.667 170.667-170.667 170.667v-128z" />
<glyph unicode="&#xe8c1;" d="M426.667 689.067v89.173c-34.133-8.747-65.92-22.827-95.147-40.96l62.507-62.507c10.453 5.333 21.333 10.453 32.64 14.293zM122.24 729.173l100.48-100.48c-32.853-52.48-52.053-114.133-52.053-180.693 0-94.293 38.613-179.2 100.48-240.853l-100.48-100.48h256v256l-95.36-95.36c-46.507 46.293-75.307 110.080-75.307 180.693 0 42.667 10.667 82.773 29.227 118.187l344.96-344.96c-10.453-5.547-21.333-10.453-32.64-14.507v-88.96c34.133 8.747 65.92 22.827 95.147 40.96l100.693-100.693 54.4 54.4-671.36 671.147-54.187-54.4zM853.333 789.333h-256v-256l95.36 95.36c46.507-46.293 75.307-110.080 75.307-180.693 0-42.667-10.667-82.773-29.227-118.187l62.507-62.507c32.853 52.48 52.053 114.133 52.053 180.693 0 94.293-38.613 179.2-100.48 240.853l100.48 100.48z" />
<glyph unicode="&#xe8c2;" d="M128 448c0-94.293 38.827-179.2 100.48-240.853l-100.48-100.48h256v256l-95.36-95.36c-46.507 46.293-75.307 110.080-75.307 180.693 0 111.36 71.253 205.867 170.667 241.067v89.173c-147.2-37.973-256-171.307-256-330.24zM469.333 234.667h85.333v85.333h-85.333v-85.333zM896 789.333h-256v-256l95.36 95.36c46.507-46.293 75.307-110.080 75.307-180.693 0-111.36-71.253-205.867-170.667-241.067v-88.96c147.2 37.76 256 171.093 256 330.027 0 94.293-38.827 179.2-100.48 240.853l100.48 100.48zM469.333 405.333h85.333v256h-85.333v-256z" />
<glyph unicode="&#xe8c3;" d="M725.333 916.907l-426.667 0.427c-47.147 0-85.333-38.187-85.333-85.333v-768c0-47.147 38.187-85.333 85.333-85.333h426.667c47.147 0 85.333 38.187 85.333 85.333v768c0 47.147-38.187 84.907-85.333 84.907zM725.333 149.333h-426.667v597.333h426.667v-597.333zM682.667 405.333h-128v213.333h-85.333v-213.333h-128l170.667-170.667 170.667 170.667z" />
<glyph unicode="&#xe8c4;" d="M85.333 277.333v-85.333c117.76 0 213.333-95.573 213.333-213.333h85.333c0 164.907-133.76 298.667-298.667 298.667zM85.333 106.667v-128h128c0 70.613-57.387 128-128 128zM85.333 448v-85.333c212.053 0 384-171.947 384-384h85.333c0 259.2-210.133 469.333-469.333 469.333zM725.333 916.907l-426.667 0.427c-47.147 0-85.333-38.187-85.333-85.333v-314.453c29.44-7.040 58.027-15.787 85.333-27.307v256.427h426.667v-554.667h-129.28c22.187-53.12 35.84-110.72 40.533-170.667h88.747c47.147 0 85.333 38.187 85.333 85.333v725.333c0 47.147-38.187 84.907-85.333 84.907z" />
<glyph unicode="&#xe8c5;" d="M807.253 746.24c-8.747 25.173-32.64 43.093-60.587 43.093h-469.333c-27.947 0-51.84-17.92-60.587-43.093l-88.747-255.573v-341.333c0-23.467 19.2-42.667 42.667-42.667h42.667c23.68 0 42.667 19.2 42.667 42.667v42.667h512v-42.667c0-23.467 19.2-42.667 42.667-42.667h42.667c23.68 0 42.667 19.2 42.667 42.667v341.333l-88.747 255.573zM277.333 320c-35.413 0-64 28.587-64 64s28.587 64 64 64 64-28.587 64-64-28.587-64-64-64zM746.667 320c-35.413 0-64 28.587-64 64s28.587 64 64 64 64-28.587 64-64-28.587-64-64-64zM213.333 533.333l64 192h469.333l64-192h-597.333z" />
<glyph unicode="&#xe8c6;" d="M0 320h85.333v256h-85.333v-256zM128 234.667h85.333v426.667h-85.333v-426.667zM938.667 576v-256h85.333v256h-85.333zM810.667 234.667h85.333v426.667h-85.333v-426.667zM704 832h-384c-35.413 0-64-28.587-64-64v-640c0-35.413 28.587-64 64-64h384c35.413 0 64 28.587 64 64v640c0 35.413-28.587 64-64 64zM682.667 149.333h-341.333v597.333h341.333v-597.333z" />
<glyph unicode="&#xe8c7;" d="M853.333 874.667h-682.667c-47.147 0-84.907-38.187-84.907-85.333l-0.427-768 170.667 170.667h597.333c47.147 0 85.333 38.187 85.333 85.333v512c0 47.147-38.187 85.333-85.333 85.333zM768 362.667l-170.667 136.533v-136.533h-341.333v341.333h341.333v-136.533l170.667 136.533v-341.333z" />
<glyph unicode="&#xe8c8;" d="M938.667 789.333v21.333c0 58.88-47.787 106.667-106.667 106.667s-106.667-47.787-106.667-106.667v-21.333c-23.68 0-42.667-19.2-42.667-42.667v-170.667c0-23.467 18.987-42.667 42.667-42.667h213.333c23.68 0 42.667 19.2 42.667 42.667v170.667c0 23.467-18.987 42.667-42.667 42.667zM904.533 789.333h-145.067v21.333c0 40.107 32.427 72.533 72.533 72.533s72.533-32.427 72.533-72.533v-21.333zM807.467 448c1.707-14.080 3.2-28.16 3.2-42.667 0-88.747-34.133-169.387-89.813-230.187-10.88 34.56-42.88 59.52-80.853 59.52h-42.667v128c0 23.467-19.2 42.667-42.667 42.667h-256v85.333h85.333c23.467 0 42.667 19.2 42.667 42.667v85.333h85.333c47.147 0 85.333 38.187 85.333 85.333v108.373c-40.32 12.8-83.413 19.627-128 19.627-235.733 0-426.667-190.933-426.667-426.667s190.933-426.667 426.667-426.667 426.667 190.933 426.667 426.667c0 14.507-0.853 28.587-2.133 42.667h-86.4zM426.667 66.987c-168.32 20.907-298.667 164.267-298.667 338.347 0 26.24 3.2 51.84 8.96 76.373l204.373-204.373v-42.667c0-47.147 38.187-85.333 85.333-85.333v-82.347z" />
<glyph unicode="&#xe8c9;" d="M512 661.333c47.147 0 85.333 38.187 85.333 85.333 0 16-4.48 31.147-12.16 43.947l-73.173 126.72-73.173-126.72c-7.68-12.8-12.16-27.947-12.16-43.947 0-47.147 38.187-85.333 85.333-85.333zM896 64v170.667c0 47.147-38.187 85.333-85.333 85.333h-42.667v128c0 47.147-38.187 85.333-85.333 85.333h-128v85.333h-85.333v-85.333h-128c-47.147 0-85.333-38.187-85.333-85.333v-128h-42.667c-47.147 0-85.333-38.187-85.333-85.333v-170.667h-85.333v-85.333h938.667v85.333h-85.333z" />
<glyph unicode="&#xe8ca;" d="M512 661.333v170.667h-426.667v-768h853.333v597.333h-426.667zM256 149.333h-85.333v85.333h85.333v-85.333zM256 320h-85.333v85.333h85.333v-85.333zM256 490.667h-85.333v85.333h85.333v-85.333zM256 661.333h-85.333v85.333h85.333v-85.333zM426.667 149.333h-85.333v85.333h85.333v-85.333zM426.667 320h-85.333v85.333h85.333v-85.333zM426.667 490.667h-85.333v85.333h85.333v-85.333zM426.667 661.333h-85.333v85.333h85.333v-85.333zM853.333 149.333h-341.333v85.333h85.333v85.333h-85.333v85.333h85.333v85.333h-85.333v85.333h341.333v-426.667zM768 490.667h-85.333v-85.333h85.333v85.333zM768 320h-85.333v-85.333h85.333v85.333z" />
<glyph unicode="&#xe8cb;" d="M682.667 490.667c70.613 0 127.573 57.387 127.573 128s-56.96 128-127.573 128c-70.613 0-128-57.387-128-128s57.387-128 128-128zM341.333 490.667c70.613 0 127.573 57.387 127.573 128s-56.96 128-127.573 128c-70.613 0-128-57.387-128-128s57.387-128 128-128zM341.333 405.333c-99.627 0-298.667-49.92-298.667-149.333v-106.667h597.333v106.667c0 99.413-199.040 149.333-298.667 149.333zM682.667 405.333c-12.373 0-26.24-0.853-41.173-2.347 49.493-35.627 83.84-83.627 83.84-146.987v-106.667h256v106.667c0 99.413-199.040 149.333-298.667 149.333z" />
<glyph unicode="&#xe8cc;" d="M341.333 533.333h-128v128h-85.333v-128h-128v-85.333h128v-128h85.333v128h128v85.333zM768 490.667c70.613 0 127.573 57.387 127.573 128s-56.96 128-127.573 128c-13.653 0-26.667-2.133-39.040-6.187 24.107-34.56 38.613-76.587 38.613-121.813s-14.507-87.253-38.613-121.813c12.373-4.053 25.387-6.187 39.040-6.187zM554.667 490.667c70.613 0 127.573 57.387 127.573 128s-56.96 128-127.573 128c-70.613 0-128-57.387-128-128s57.387-128 128-128zM837.12 398.507c35.413-30.933 58.88-70.827 58.88-121.173v-85.333h128v85.333c0 65.707-101.333 106.027-186.88 121.173zM554.667 405.333c-85.333 0-256-42.667-256-128v-85.333h512v85.333c0 85.333-170.667 128-256 128z" />
<glyph unicode="&#xe8cd;" d="M640 490.667v256l-128 128-128-128v-85.333h-256v-597.333h768v426.667h-256zM298.667 149.333h-85.333v85.333h85.333v-85.333zM298.667 320h-85.333v85.333h85.333v-85.333zM298.667 490.667h-85.333v85.333h85.333v-85.333zM554.667 149.333h-85.333v85.333h85.333v-85.333zM554.667 320h-85.333v85.333h85.333v-85.333zM554.667 490.667h-85.333v85.333h85.333v-85.333zM554.667 661.333h-85.333v85.333h85.333v-85.333zM810.667 149.333h-85.333v85.333h85.333v-85.333zM810.667 320h-85.333v85.333h85.333v-85.333z" />
<glyph unicode="&#xe8ce;" d="M511.787 874.667c-235.733 0-426.453-190.933-426.453-426.667s190.72-426.667 426.453-426.667c235.733 0 426.88 190.933 426.88 426.667s-191.147 426.667-426.88 426.667zM512 106.667c-188.587 0-341.333 152.747-341.333 341.333s152.747 341.333 341.333 341.333 341.333-152.747 341.333-341.333-152.747-341.333-341.333-341.333zM661.333 490.667c35.413 0 64 28.587 64 64s-28.587 64-64 64-64-28.587-64-64 28.587-64 64-64zM362.667 490.667c35.413 0 64 28.587 64 64s-28.587 64-64 64-64-28.587-64-64 28.587-64 64-64zM512 213.333c99.413 0 183.68 62.080 217.813 149.333h-435.627c34.133-87.253 118.4-149.333 217.813-149.333z" />
<glyph unicode="&#xe8cf;" d="M490.667 21.333c47.147 0 85.333 38.187 85.333 85.333h-170.667c0-47.147 38.187-85.333 85.333-85.333zM768 277.333v234.667c0 131.2-91.093 240.64-213.333 269.653v29.013c0 35.413-28.587 64-64 64s-64-28.587-64-64v-29.013c-122.24-29.013-213.333-138.453-213.333-269.653v-234.667l-85.333-85.333v-42.667h725.333v42.667l-85.333 85.333z" />
<glyph unicode="&#xe8d0;" d="M490.667 21.333c47.147 0 85.333 38.187 85.333 85.333h-170.667c0-47.147 38.187-85.333 85.333-85.333zM768 277.333v234.667c0 131.2-91.093 240.64-213.333 269.653v29.013c0 35.413-28.587 64-64 64s-64-28.587-64-64v-29.013c-122.24-29.013-213.333-138.453-213.333-269.653v-234.667l-85.333-85.333v-42.667h725.333v42.667l-85.333 85.333zM682.667 234.667h-384v277.333c0 106.027 85.973 192 192 192s192-85.973 192-192v-277.333z" />
<glyph unicode="&#xe8d1;" d="M490.667 21.333c47.147 0 85.333 38.187 85.333 85.333h-170.667c0-47.147 38.187-85.333 85.333-85.333zM768 512c0 131.2-91.093 240.64-213.333 269.653v29.013c0 35.413-28.587 64-64 64s-64-28.587-64-64v-29.013c-21.76-5.12-42.24-13.653-61.653-23.68l402.987-402.987v157.013zM756.48 149.333l85.333-85.333 54.187 54.4-713.6 713.6-54.4-54.4 124.587-124.587c-24.747-41.173-39.253-89.387-39.253-141.013v-234.667l-85.333-85.333v-42.667h628.48z" />
<glyph unicode="&#xe8d2;" d="M280.747 807.253l-61.013 61.013c-102.187-77.867-169.6-198.187-176-334.933h85.333c6.613 113.067 64.853 212.053 151.68 273.92zM852.267 533.333h85.333c-6.4 136.747-73.813 257.067-176 334.933l-60.8-60.8c86.613-62.080 144.853-161.067 151.467-274.133zM768 512c0 131.2-91.093 240.64-213.333 269.653v29.013c0 35.413-28.587 64-64 64s-64-28.587-64-64v-29.013c-122.24-29.013-213.333-138.453-213.333-269.653v-234.667l-85.333-85.333v-42.667h725.333v42.667l-85.333 85.333v234.667zM490.667 21.333c5.973 0 11.733 0.64 17.28 1.707 27.733 5.76 50.56 24.96 61.44 50.347 4.267 10.24 6.613 21.333 6.613 33.28h-170.667c0-47.147 38.187-85.333 85.333-85.333z" />
<glyph unicode="&#xe8d3;" d="M490.667 21.333c47.147 0 85.333 38.187 85.333 85.333h-170.667c0-47.147 38.187-85.333 85.333-85.333zM768 277.333v234.667c0 131.2-91.093 240.64-213.333 269.653v29.013c0 35.413-28.587 64-64 64s-64-28.587-64-64v-29.013c-122.24-29.013-213.333-138.453-213.333-269.653v-234.667l-85.333-85.333v-42.667h725.333v42.667l-85.333 85.333zM597.333 541.867l-119.467-145.067h119.467v-76.8h-213.333v76.8l119.467 145.067h-119.467v76.8h213.333v-76.8z" />
<glyph unicode="&#xe8d4;" d="M128 746.667v-256h213.333l-42.667 170.667 170.667-42.667v213.333h-256c-47.147 0-85.333-38.187-85.333-85.333zM341.333 405.333h-213.333v-256c0-47.147 38.187-85.333 85.333-85.333h256v213.333l-170.667-42.667 42.667 170.667zM725.333 234.667l-170.667 42.667v-213.333h256c47.147 0 85.333 38.187 85.333 85.333v256h-213.333l42.667-170.667zM810.667 832h-256v-213.333l170.667 42.667-42.667-170.667h213.333v256c0 47.147-38.187 85.333-85.333 85.333z" />
<glyph unicode="&#xe8d5;" d="M853.333 789.333h-135.253l-78.080 85.333h-256l-78.080-85.333h-135.253c-47.147 0-85.333-38.187-85.333-85.333v-512c0-47.147 38.187-85.333 85.333-85.333h682.667c47.147 0 85.333 38.187 85.333 85.333v512c0 47.147-38.187 85.333-85.333 85.333zM512 661.333c69.547 0 130.773-33.92 169.813-85.333h-169.813c-70.613 0-128-57.387-128-128 0-15.147 2.987-29.227 7.893-42.667h-88.96c-2.773 13.867-4.267 27.947-4.267 42.667 0 117.76 95.573 213.333 213.333 213.333zM512 234.667c-69.547 0-130.773 33.707-169.6 85.333h169.6c70.613 0 128 57.387 128 128 0 14.933-2.987 29.227-7.893 42.667h88.96c2.773-13.867 4.267-27.947 4.267-42.667 0-117.76-95.573-213.333-213.333-213.333z" />
<glyph unicode="&#xe8d6;" d="M682.667 490.667c70.613 0 127.573 57.387 127.573 128s-56.96 128-127.573 128c-70.613 0-128-57.387-128-128s57.387-128 128-128zM341.333 490.667c70.613 0 127.573 57.387 127.573 128s-56.96 128-127.573 128c-70.613 0-128-57.387-128-128s57.387-128 128-128zM341.333 405.333c-99.627 0-298.667-49.92-298.667-149.333v-106.667h597.333v106.667c0 99.413-199.040 149.333-298.667 149.333zM682.667 405.333c-12.373 0-26.24-0.853-41.173-2.347 49.493-35.627 83.84-83.627 83.84-146.987v-106.667h256v106.667c0 99.413-199.040 149.333-298.667 149.333z" />
<glyph unicode="&#xe8d7;" d="M704 405.333c-51.413 0-131.2-14.293-192-42.88-60.8 28.587-140.587 42.88-192 42.88-92.373 0-277.333-46.293-277.333-138.667v-117.333h938.667v117.333c0 92.373-184.96 138.667-277.333 138.667zM533.333 213.333h-426.667v53.333c0 22.827 109.227 74.667 213.333 74.667s213.333-51.84 213.333-74.667v-53.333zM917.333 213.333h-320v53.333c0 19.413-8.533 36.693-22.187 52.053 37.76 12.8 83.84 22.613 128.853 22.613 104.107 0 213.333-51.84 213.333-74.667v-53.333zM320 448c82.56 0 149.333 66.987 149.333 149.333s-66.773 149.333-149.333 149.333c-82.347 0-149.333-66.987-149.333-149.333s66.987-149.333 149.333-149.333zM320 682.667c47.147 0 85.333-38.187 85.333-85.333s-38.187-85.333-85.333-85.333-85.333 38.187-85.333 85.333 38.187 85.333 85.333 85.333zM704 448c82.56 0 149.333 66.987 149.333 149.333s-66.773 149.333-149.333 149.333c-82.347 0-149.333-66.987-149.333-149.333s66.987-149.333 149.333-149.333zM704 682.667c47.147 0 85.333-38.187 85.333-85.333s-38.187-85.333-85.333-85.333-85.333 38.187-85.333 85.333 38.187 85.333 85.333 85.333z" />
<glyph unicode="&#xe8d8;" d="M512 448c94.293 0 170.667 76.587 170.667 170.667 0 94.293-76.373 170.667-170.667 170.667s-170.667-76.373-170.667-170.667c0-94.080 76.373-170.667 170.667-170.667zM512 362.667c-113.707 0-341.333-56.96-341.333-170.667v-85.333h682.667v85.333c0 113.707-227.627 170.667-341.333 170.667z" />
<glyph unicode="&#xe8d9;" d="M640 448c94.293 0 170.667 76.587 170.667 170.667 0 94.293-76.373 170.667-170.667 170.667s-170.667-76.373-170.667-170.667c0-94.080 76.373-170.667 170.667-170.667zM256 533.333v128h-85.333v-128h-128v-85.333h128v-128h85.333v128h128v85.333h-128zM640 362.667c-113.707 0-341.333-56.96-341.333-170.667v-85.333h682.667v85.333c0 113.707-227.627 170.667-341.333 170.667z" />
<glyph unicode="&#xe8da;" d="M512 708.267c49.493 0 89.6-40.107 89.6-89.6s-40.107-89.6-89.6-89.6-89.6 40.107-89.6 89.6 40.107 89.6 89.6 89.6zM512 324.267c126.933 0 260.267-62.080 260.267-89.6v-46.933h-520.533v46.933c0 27.52 133.333 89.6 260.267 89.6zM512 789.333c-94.293 0-170.667-76.373-170.667-170.667 0-94.080 76.373-170.667 170.667-170.667s170.667 76.587 170.667 170.667c0 94.293-76.373 170.667-170.667 170.667zM512 405.333c-113.707 0-341.333-56.96-341.333-170.667v-128h682.667v128c0 113.707-227.627 170.667-341.333 170.667z" />
<glyph unicode="&#xe8db;" d="M426.667 618.667h-85.333v-170.667h-170.667v-85.333h170.667v-170.667h85.333v170.667h170.667v85.333h-170.667zM618.667 700.587v-77.653l106.667 21.333v-452.267h85.333v554.667z" />
<glyph unicode="&#xe8dc;" d="M810.667 832h-597.333c-47.147 0-85.333-38.187-85.333-85.333v-597.333c0-47.147 38.187-85.333 85.333-85.333h597.333c47.147 0 85.333 38.187 85.333 85.333v597.333c0 47.147-38.187 85.333-85.333 85.333zM384 234.667h-85.333v298.667h85.333v-298.667zM554.667 234.667h-85.333v426.667h85.333v-426.667zM725.333 234.667h-85.333v170.667h85.333v-170.667z" />
<glyph unicode="&#xe8dd;" d="M512 874.667c-235.733 0-426.667-190.933-426.667-426.667s190.933-426.667 426.667-426.667 426.667 190.933 426.667 426.667-190.933 426.667-426.667 426.667zM469.333 109.653c-168.32 20.907-298.667 164.267-298.667 338.347 0 26.24 3.2 51.84 8.96 76.373l204.373-204.373v-42.667c0-47.147 38.187-85.333 85.333-85.333v-82.347zM763.52 217.813c-10.88 34.56-42.88 59.52-80.853 59.52h-42.667v128c0 23.467-19.2 42.667-42.667 42.667h-256v85.333h85.333c23.467 0 42.667 19.2 42.667 42.667v85.333h85.333c47.147 0 85.333 38.187 85.333 85.333v17.707c125.013-50.56 213.333-173.013 213.333-316.373 0-88.747-34.133-169.387-89.813-230.187z" />
<glyph unicode="&#xe8de;" d="M213.333 397.653v-170.667l298.667-162.987 298.667 162.987v170.667l-298.667-162.987-298.667 162.987zM512 832l-469.333-256 469.333-256 384 209.493v-294.827h85.333v341.333l-469.333 256z" />
<glyph unicode="&#xe8df;" d="M768 273.707c-32.427 0-61.653-12.587-83.84-32.853l-304 177.28c2.347 9.6 3.84 19.627 3.84 29.867s-1.493 20.267-3.84 29.867l300.8 175.573c22.827-21.333 53.333-34.56 87.040-34.56 70.613 0 128 57.387 128 128s-57.387 128-128 128-128-57.387-128-128c0-10.24 1.493-20.267 3.84-29.867l-300.8-175.573c-22.827 21.333-53.333 34.56-87.040 34.56-70.613 0-128-57.387-128-128s57.387-128 128-128c33.707 0 64.213 13.227 87.040 34.56l304-177.28c-2.133-8.96-3.413-18.347-3.413-27.947 0-68.693 55.68-124.373 124.373-124.373s124.373 55.68 124.373 124.373-55.68 124.373-124.373 124.373z" />
<glyph unicode="&#xe8e0;" d="M576 931.413s31.573-113.067 31.573-204.8c0-87.893-57.6-159.36-145.707-159.36s-154.667 71.253-154.667 159.36l1.067 15.36c-85.76-102.613-137.6-234.88-137.6-379.307 0-188.587 152.747-341.333 341.333-341.333s341.333 152.747 341.333 341.333c0 230.187-110.72 435.413-277.333 568.747zM499.627 149.333c-75.947 0-137.6 59.947-137.6 133.973 0 69.333 44.587 117.973 120.107 133.12s153.6 51.413 196.907 109.867c16.64-55.040 25.387-113.067 25.387-172.16 0-112.853-91.733-204.8-204.8-204.8z" />
<glyph unicode="&#xe8e1;" d="M810.667 832h-597.333c-47.147 0-85.333-38.187-85.333-85.333v-597.333c0-47.147 38.187-85.333 85.333-85.333h597.333c47.147 0 85.333 38.187 85.333 85.333v597.333c0 47.147-38.187 85.333-85.333 85.333zM426.667 234.667l-213.333 213.333 60.373 60.373 152.96-152.96 323.627 323.627 60.373-60.373-384-384z" />
<glyph unicode="&#xe8e2;" d="M810.667 746.667v-597.333h-597.333v597.333h597.333zM810.667 832h-597.333c-47.147 0-85.333-38.187-85.333-85.333v-597.333c0-47.147 38.187-85.333 85.333-85.333h597.333c47.147 0 85.333 38.187 85.333 85.333v597.333c0 47.147-38.187 85.333-85.333 85.333z" />
<glyph unicode="&#xe8e3;" d="M512 874.667c-235.733 0-426.667-190.933-426.667-426.667s190.933-426.667 426.667-426.667 426.667 190.933 426.667 426.667-190.933 426.667-426.667 426.667zM512 106.667c-188.587 0-341.333 152.747-341.333 341.333s152.747 341.333 341.333 341.333 341.333-152.747 341.333-341.333-152.747-341.333-341.333-341.333z" />
<glyph unicode="&#xe8e4;" d="M512 661.333c-117.76 0-213.333-95.573-213.333-213.333s95.573-213.333 213.333-213.333 213.333 95.573 213.333 213.333-95.573 213.333-213.333 213.333zM512 874.667c-235.733 0-426.667-190.933-426.667-426.667s190.933-426.667 426.667-426.667 426.667 190.933 426.667 426.667-190.933 426.667-426.667 426.667zM512 106.667c-188.587 0-341.333 152.747-341.333 341.333s152.747 341.333 341.333 341.333 341.333-152.747 341.333-341.333-152.747-341.333-341.333-341.333z" />
</font></defs></svg>

Before

Width:  |  Height:  |  Size: 322 KiB

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -1,36 +0,0 @@
%header.container.blue-grey.lighten-4.grey-text.text-darken-4
%h4 Running Jobs
%main
.container.blue-grey.lighten-4.grey-text.text-darken-4
%table.bordered#job_list
%tr
%th Job
%th Last performed at
%th Status
%th
- @jobs.each do |job|
%tr
%td= job.job_id
%td= job.last_performed_at || 'Never performed yet'
%td
- if job.last_performed_at.nil?
%span.grey-text.darken-3{ title: 'This job has never been performed yet.' }
%i.mdi-device-access-time
Pending
- elsif job.healthy
%a{ href: url("/job/#{job.id}") }
%span.green-text.darken-3{ title: 'This job was performed successfully.' }
%i.mdi-action-done
Success
- else
%a{ href: url("/job/#{job.id}") }
%span.red-text{ title: 'There were problems with this job. Follow the link to check the log.' }
%i.mdi-alert-warning
Error
%td
- if job.last_performed_at
%a{ href: url("/job/#{job.id}") }
Log
%i.mdi-navigation-chevron-right

View File

@@ -1,13 +0,0 @@
%header.container.blue-grey.lighten-4.grey-text.text-darken-4
%a{ href: url('/') }
%i.mdi-navigation-chevron-left
Back to Home
%h4 "#{@job.job_id}" Log:
%main.container.blue-grey.lighten-4.grey-text.text-darken-4
- if @job.healthy == false
.alert.alert-danger{ role: 'alert' }
An error occurs during the last execution of this job.
Check the log below for details.
%pre= @job.log

View File

@@ -1,29 +0,0 @@
!!! 5
%html{ lang: 'en' }
%head
%meta{ charset: 'utf-8' }
%meta{ 'http-equiv' => 'X-UA-Compatible', content: 'IE=edge' }
%meta{ name: 'viewport', content: 'width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no' }
%title Crono Dashboard
%link{ href: "#{env['SCRIPT_NAME']}/css/materialize.min.css", rel: 'stylesheet', media: 'screen,projection' }
%link{ href: "#{env['SCRIPT_NAME']}/css/custom.css", rel: 'stylesheet', media: 'screen,projection' }
%body.blue-grey.darken-2
%nav.container.blue-grey.white-text
.nav-wrapper
%a.brand-logo{ href: url('/') } Crono Dashboard
= yield
%footer.page-footer.blue-grey.darken-2
.footer-copyright.blue-grey.darken-2
.container.blue-grey.white-text
Crono v#{Crono::VERSION}
%a.right{ href: 'https://github.com/plashchynski/crono', target: '_blank' } Documentation
%script{ src: "#{env['SCRIPT_NAME']}/js/jquery-2.1.3.min.js" }
%script{ src: "#{env['SCRIPT_NAME']}/js/materialize.min.js" }