Browse Source

Merge branch 'dev' into maliming/CachetheAccessToken

pull/4742/head
maliming 6 years ago
parent
commit
78925320bc
  1. 5
      docs/en/Background-Jobs-Hangfire.md
  2. 73
      docs/en/Blob-Storing-Aliyun.md
  3. 11
      docs/en/Getting-Started.md
  4. 6
      docs/en/SignalR-Integration.md
  5. 2
      docs/en/Tutorials/Part-1.md
  6. 3
      docs/en/Tutorials/Part-2.md
  7. 10
      docs/en/Tutorials/Part-3.md
  8. 2
      docs/en/Tutorials/Part-5.md
  9. 38
      docs/en/UI/Angular/Component-Replacement.md
  10. 2
      docs/en/UI/Angular/Migration-Guide-v3.md
  11. 4
      docs/en/docs-nav.json
  12. 5
      docs/zh-Hans/Background-Jobs-Hangfire.md
  13. 72
      docs/zh-Hans/Blob-Storing-Aliyun.md
  14. 3
      docs/zh-Hans/Connection-Strings.md
  15. 36
      docs/zh-Hans/UI/Angular/Component-Replacement.md
  16. 1
      docs/zh-Hans/UI/AspNetCore/Tag-Helpers/Form-elements.md
  17. 4
      docs/zh-Hans/docs-nav.json
  18. 50
      framework/Volo.Abp.sln
  19. 27
      framework/src/Volo.Abp.AspNetCore.Authentication.OAuth/Properties/launchSettings.json
  20. 27
      framework/src/Volo.Abp.AspNetCore.MultiTenancy/Properties/launchSettings.json
  21. 27
      framework/src/Volo.Abp.AspNetCore.Mvc.Client/Properties/launchSettings.json
  22. 2
      framework/src/Volo.Abp.AspNetCore.Mvc.UI.MultiTenancy/Volo/Abp/AspNetCore/Mvc/UI/MultiTenancy/Localization/nl.json
  23. 31
      framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic/wwwroot/themes/basic/layout.css
  24. 27
      framework/src/Volo.Abp.AspNetCore.Serilog/Properties/launchSettings.json
  25. 27
      framework/src/Volo.Abp.AspNetCore.SignalR/Properties/launchSettings.json
  26. 27
      framework/src/Volo.Abp.AspNetCore.TestBase/Properties/launchSettings.json
  27. 27
      framework/src/Volo.Abp.AspNetCore/Properties/launchSettings.json
  28. 3
      framework/src/Volo.Abp.BlobStoring.Aliyun/FodyWeavers.xml
  29. 30
      framework/src/Volo.Abp.BlobStoring.Aliyun/FodyWeavers.xsd
  30. 27
      framework/src/Volo.Abp.BlobStoring.Aliyun/Volo.Abp.BlobStoring.Aliyun.csproj
  31. 14
      framework/src/Volo.Abp.BlobStoring.Aliyun/Volo/Abp/BlobStoring/Aliyun/AbpBlobStoringAliyunModule.cs
  32. 25
      framework/src/Volo.Abp.BlobStoring.Aliyun/Volo/Abp/BlobStoring/Aliyun/AliyunBlobContainerConfigurationExtensions.cs
  33. 51
      framework/src/Volo.Abp.BlobStoring.Aliyun/Volo/Abp/BlobStoring/Aliyun/AliyunBlobNamingNormalizer.cs
  34. 107
      framework/src/Volo.Abp.BlobStoring.Aliyun/Volo/Abp/BlobStoring/Aliyun/AliyunBlobProvider.cs
  35. 105
      framework/src/Volo.Abp.BlobStoring.Aliyun/Volo/Abp/BlobStoring/Aliyun/AliyunBlobProviderConfiguration.cs
  36. 16
      framework/src/Volo.Abp.BlobStoring.Aliyun/Volo/Abp/BlobStoring/Aliyun/AliyunBlobProviderConfigurationNames.cs
  37. 30
      framework/src/Volo.Abp.BlobStoring.Aliyun/Volo/Abp/BlobStoring/Aliyun/AssumeRoleCredentialsCacheItem.cs
  38. 22
      framework/src/Volo.Abp.BlobStoring.Aliyun/Volo/Abp/BlobStoring/Aliyun/DefaultAliyunBlobNameCalculator.cs
  39. 68
      framework/src/Volo.Abp.BlobStoring.Aliyun/Volo/Abp/BlobStoring/Aliyun/DefaultOssClientFactory.cs
  40. 7
      framework/src/Volo.Abp.BlobStoring.Aliyun/Volo/Abp/BlobStoring/Aliyun/IAliyunBlobNameCalculator.cs
  41. 9
      framework/src/Volo.Abp.BlobStoring.Aliyun/Volo/Abp/BlobStoring/Aliyun/IOssClientFactory.cs
  42. 3
      framework/src/Volo.Abp.BlobStoring.Minio/FodyWeavers.xml
  43. 30
      framework/src/Volo.Abp.BlobStoring.Minio/FodyWeavers.xsd
  44. 21
      framework/src/Volo.Abp.BlobStoring.Minio/Volo.Abp.BlobStoring.Minio.csproj
  45. 10
      framework/src/Volo.Abp.BlobStoring.Minio/Volo/Abp/BlobStoring/Minio/AbpBlobStoringMinioModule.cs
  46. 22
      framework/src/Volo.Abp.BlobStoring.Minio/Volo/Abp/BlobStoring/Minio/DefaultMinioBlobNameCalculator.cs
  47. 7
      framework/src/Volo.Abp.BlobStoring.Minio/Volo/Abp/BlobStoring/Minio/IMinioBlobNameCalculator.cs
  48. 24
      framework/src/Volo.Abp.BlobStoring.Minio/Volo/Abp/BlobStoring/Minio/MinioBlobContainerConfigurationExtensions.cs
  49. 52
      framework/src/Volo.Abp.BlobStoring.Minio/Volo/Abp/BlobStoring/Minio/MinioBlobNamingNormalizer.cs
  50. 145
      framework/src/Volo.Abp.BlobStoring.Minio/Volo/Abp/BlobStoring/Minio/MinioBlobProvider.cs
  51. 63
      framework/src/Volo.Abp.BlobStoring.Minio/Volo/Abp/BlobStoring/Minio/MinioBlobProviderConfiguration.cs
  52. 12
      framework/src/Volo.Abp.BlobStoring.Minio/Volo/Abp/BlobStoring/Minio/MinioBlobProviderConfigurationNames.cs
  53. 15
      framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/ModuleInfoProvider.cs
  54. 6
      framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/SolutionModuleAdder.cs
  55. 2
      framework/src/Volo.Abp.Ddd.Application.Contracts/Volo/Abp/Application/Localization/Resources/AbpDdd/de.json
  56. 2
      framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/Entities/Events/EntityChangeEventHelper.cs
  57. 2
      framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/Repositories/BasicRepositoryBase.cs
  58. 9
      framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/Repositories/IReadOnlyBasicRepository.cs
  59. 12
      framework/src/Volo.Abp.Emailing/Volo/Abp/Emailing/Localization/de.json
  60. 16
      framework/src/Volo.Abp.EntityFrameworkCore/Volo/Abp/Domain/Repositories/EntityFrameworkCore/EfCoreRepository.cs
  61. 27
      framework/src/Volo.Abp.Http.Client.IdentityModel.Web/Properties/launchSettings.json
  62. 48
      framework/src/Volo.Abp.MemoryDb/Volo/Abp/Domain/Repositories/MemoryDb/MemoryDbRepository.cs
  63. 15
      framework/src/Volo.Abp.MongoDB/Volo/Abp/Domain/Repositories/MongoDB/MongoDbRepository.cs
  64. 38
      framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/de.json
  65. 46
      framework/src/Volo.Abp.Validation/Volo/Abp/Validation/Localization/de.json
  66. 2
      framework/test/Volo.Abp.AspNetCore.Mvc.Tests/Volo/Abp/AspNetCore/Mvc/Localization/Resource/de.json
  67. 2
      framework/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/package.json
  68. 181
      framework/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/wwwroot/libs/@fortawesome/fontawesome-free/css/all.css
  69. 20
      framework/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/wwwroot/libs/@fortawesome/fontawesome-free/css/v4-shims.css
  70. BIN
      framework/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/wwwroot/libs/@fortawesome/fontawesome-free/webfonts/fa-brands-400.eot
  71. 297
      framework/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/wwwroot/libs/@fortawesome/fontawesome-free/webfonts/fa-brands-400.svg
  72. BIN
      framework/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/wwwroot/libs/@fortawesome/fontawesome-free/webfonts/fa-brands-400.ttf
  73. BIN
      framework/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/wwwroot/libs/@fortawesome/fontawesome-free/webfonts/fa-brands-400.woff
  74. BIN
      framework/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/wwwroot/libs/@fortawesome/fontawesome-free/webfonts/fa-brands-400.woff2
  75. BIN
      framework/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/wwwroot/libs/@fortawesome/fontawesome-free/webfonts/fa-regular-400.eot
  76. 20
      framework/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/wwwroot/libs/@fortawesome/fontawesome-free/webfonts/fa-regular-400.svg
  77. BIN
      framework/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/wwwroot/libs/@fortawesome/fontawesome-free/webfonts/fa-regular-400.ttf
  78. BIN
      framework/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/wwwroot/libs/@fortawesome/fontawesome-free/webfonts/fa-regular-400.woff
  79. BIN
      framework/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/wwwroot/libs/@fortawesome/fontawesome-free/webfonts/fa-regular-400.woff2
  80. BIN
      framework/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/wwwroot/libs/@fortawesome/fontawesome-free/webfonts/fa-solid-900.eot
  81. 517
      framework/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/wwwroot/libs/@fortawesome/fontawesome-free/webfonts/fa-solid-900.svg
  82. BIN
      framework/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/wwwroot/libs/@fortawesome/fontawesome-free/webfonts/fa-solid-900.ttf
  83. BIN
      framework/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/wwwroot/libs/@fortawesome/fontawesome-free/webfonts/fa-solid-900.woff
  84. BIN
      framework/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/wwwroot/libs/@fortawesome/fontawesome-free/webfonts/fa-solid-900.woff2
  85. 126
      framework/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/wwwroot/libs/abp/core/abp.js
  86. 18
      framework/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/wwwroot/libs/abp/jquery/abp.jquery.js
  87. 1254
      framework/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/wwwroot/libs/abp/utils/abp-utils.umd.js
  88. 2
      framework/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/wwwroot/libs/abp/utils/abp-utils.umd.js.map
  89. 2
      framework/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/wwwroot/libs/abp/utils/abp-utils.umd.min.js
  90. 2
      framework/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/wwwroot/libs/abp/utils/abp-utils.umd.min.js.map
  91. 2591
      framework/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/wwwroot/libs/bootstrap/css/bootstrap-rtl.css
  92. 2
      framework/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/wwwroot/libs/bootstrap/css/bootstrap-rtl.css.map
  93. 8
      framework/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/wwwroot/libs/bootstrap/css/bootstrap-rtl.min.css
  94. 2
      framework/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/wwwroot/libs/bootstrap/css/bootstrap-rtl.min.css.map
  95. 746
      framework/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/wwwroot/libs/bootstrap/css/bootstrap.css
  96. 2
      framework/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/wwwroot/libs/bootstrap/css/bootstrap.css.map
  97. 8
      framework/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/wwwroot/libs/bootstrap/css/bootstrap.min.css
  98. 2
      framework/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/wwwroot/libs/bootstrap/css/bootstrap.min.css.map
  99. 1708
      framework/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/wwwroot/libs/bootstrap/js/bootstrap.bundle.js
  100. 2
      framework/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/wwwroot/libs/bootstrap/js/bootstrap.bundle.js.map

5
docs/en/Background-Jobs-Hangfire.md

@ -66,9 +66,7 @@ After you have installed these NuGet packages, you need to configure your projec
}
````
2. We need to add `UseHangfireServer` call in the `OnApplicationInitialization` method in `Module` class
If you want to use hangfire's dashboard, you can add it, too: by `UseHangfireDashboard`
2. If you want to use hangfire's dashboard, you can add `UseHangfireDashboard` call in the `OnApplicationInitialization` method in `Module` class
````csharp
public override void OnApplicationInitialization(ApplicationInitializationContext context)
@ -77,7 +75,6 @@ If you want to use hangfire's dashboard, you can add it, too: by `UseHangfireDas
// ... others
app.UseHangfireServer();
app.UseHangfireDashboard();
}

73
docs/en/Blob-Storing-Aliyun.md

@ -0,0 +1,73 @@
# BLOB Storing Aliyun Provider
BLOB Storing Aliyun Provider can store BLOBs in [Aliyun Blob storage](https://help.aliyun.com/product/31815.html).
> Read the [BLOB Storing document](Blob-Storing.md) to understand how to use the BLOB storing system. This document only covers how to configure containers to use a Aliyun BLOB as the storage provider.
## Installation
Use the ABP CLI to add [Volo.Abp.BlobStoring.Aliyun](https://www.nuget.org/packages/Volo.Abp.BlobStoring.Aliyun) NuGet package to your project:
* Install the [ABP CLI](https://docs.abp.io/en/abp/latest/CLI) if you haven't installed before.
* Open a command line (terminal) in the directory of the `.csproj` file you want to add the `Volo.Abp.BlobStoring.Aliyun` package.
* Run `abp add-package Volo.Abp.BlobStoring.Aliyun` command.
If you want to do it manually, install the [Volo.Abp.BlobStoring.Aliyun](https://www.nuget.org/packages/Volo.Abp.BlobStoring.Aliyun) NuGet package to your project and add `[DependsOn(typeof(AbpBlobStoringAliyunModule))]` to the [ABP module](Module-Development-Basics.md) class inside your project.
## Configuration
Configuration is done in the `ConfigureServices` method of your [module](Module-Development-Basics.md) class, as explained in the [BLOB Storing document](Blob-Storing.md).
**Example: Configure to use the Aliyun storage provider by default**
````csharp
Configure<AbpBlobStoringOptions>(options =>
{
options.Containerscontainer.UseAliyun(aliyun =>
{
aliyun.AccessKeyId = "your aliyun access key id";
aliyun.AccessKeySecret = "your aliyun access key secret";
aliyun.Endpoint = "your oss endpoint";
aliyun.RegionId = "your sts region id";
aliyun.RoleArn = "the arn of ram role";
aliyun.RoleSessionName = "the name of the certificate";
aliyun.Policy = "policy";
aliyun.DurationSeconds = "expiration date";
aliyun.ContainerName = "your aliyun container name";
aliyun.CreateContainerIfNotExists = false;
});
});
````
> See the [BLOB Storing document](Blob-Storing.md) to learn how to configure this provider for a specific container.
### Options
* **AccessKeyId** ([NotNull]string): AccessKey is the key to access the Alibaba Cloud API. It has full permissions for the account. Please keep it safe! Recommend to follow [Alibaba Cloud security best practicess](https://help.aliyun.com/document_detail/102600.html),Use RAM sub-user AccessKey to call API.
* **AccessKeySecret** ([NotNull]string): Same as above.
* **Endpoint** ([NotNull]string): Endpoint is the external domain name of OSS. See the [document](https://help.aliyun.com/document_detail/31837.html) for details.
* **RegionId** (string): Access address of STS service. See the [document](https://help.aliyun.com/document_detail/66053.html) for details.
* **RoleArn** ([NotNull]string): STS required role ARN. See the [document](https://help.aliyun.com/document_detail/100624.html) for details.
* **RoleSessionName** ([NotNull]string): Used to identify the temporary access credentials, it is recommended to use different application users to distinguish.
* **Policy** (string): Additional permission restrictions. See the [document](https://help.aliyun.com/document_detail/100680.html) for details.
* **DurationSeconds** (int): Validity period(s) of a temporary access certificate,minimum is 900 and the maximum is 3600. **note**: Using subaccounts operated OSS,if the value is 0.
* **ContainerName** (string): You can specify the container name in Aliyun. If this is not specified, it uses the name of the BLOB container defined with the `BlogContainerName` attribute (see the [BLOB storing document](Blob-Storing.md)). Please note that Aliyun has some **rules for naming containers**. A container name must be a valid DNS name, conforming to the [following naming rules](https://help.aliyun.com/knowledge_detail/39668.html):
* Container names must start or end with a letter or number, and can contain only letters, numbers, and the dash (-) character.
* Container names Must start and end with lowercase letters and numbers.
* Container names must be from **3** through **63** characters long.
* **CreateContainerIfNotExists** (bool): Default value is `false`, If a container does not exist in Aliyun, `AliyunBlobProvider` will try to create it.
## Aliyun Blob Name Calculator
Aliyun Blob Provider organizes BLOB name and implements some conventions. The full name of a BLOB is determined by the following rules by default:
* Appends `host` string if [current tenant](Multi-Tenancy.md) is `null` (or multi-tenancy is disabled for the container - see the [BLOB Storing document](Blob-Storing.md) to learn how to disable multi-tenancy for a container).
* Appends `tenants/<tenant-id>` string if current tenant is not `null`.
* Appends the BLOB name.
## Other Services
* `AliyunBlobProvider` is the main service that implements the Aliyun BLOB storage provider, if you want to override/replace it via [dependency injection](Dependency-Injection.md) (don't replace `IBlobProvider` interface, but replace `AliyunBlobProvider` class).
* `IAliyunBlobNameCalculator` is used to calculate the full BLOB name (that is explained above). It is implemented by the `DefaultAliyunBlobNameCalculator` by default.
* `IOssClientFactory` is used create OSS client. It is implemented by the `DefaultOssClientFactory` by default. You can override/replace it,if you want customize.

11
docs/en/Getting-Started.md

@ -20,19 +20,20 @@ First things first! Let's setup your development environment before creating the
The following tools should be installed on your development machine:
* [Visual Studio 2019 (v16.4+)](https://visualstudio.microsoft.com/vs/) for Windows / [Visual Studio for Mac](https://visualstudio.microsoft.com/vs/mac/).*
* [Visual Studio 2019 (v16.4+)](https://visualstudio.microsoft.com/vs/) for Windows / [Visual Studio for Mac](https://visualstudio.microsoft.com/vs/mac/). <sup id="a-editor">[1](#f-editor)</sup>
* [.NET Core 3.1+](https://www.microsoft.com/net/download/dotnet-core/)
* [Node v12+](https://nodejs.org)
* [Yarn v1.19+](https://classic.yarnpkg.com/)
* [Node v12 or v14](https://nodejs.org/en/)
* [Yarn v1.20+ (not v2)](https://classic.yarnpkg.com/en/docs/install) <sup id="a-yarn">[2](#f-yarn)</sup> or npm v6+ (installed with Node)
{{ if Tiered == "Yes" }}
* [Redis](https://redis.io/) (the startup solution uses the Redis as the [distributed cache](Caching.md)).
{{ end }}
<sup id="f-editor"><b>1</b></sup> _You can use another editor instead of Visual Studio as long as it supports .NET Core and ASP.NET Core._ <sup>[↩](#a-editor)</sup>
> *You can use another editor instead of Visual Studio as long as it supports .NET Core and ASP.NET Core.
<sup id="f-yarn"><b>2</b></sup> _Yarn v2 works differently and is not supported._ <sup>[↩](#a-yarn)</sup>
### Install the ABP CLI
@ -348,4 +349,4 @@ See the "[Getting Started with the React Native](Getting-Started-React-Native.md
## Next
* [Web Application Development Tutorial](Tutorials/Part-1.md)
* [Web Application Development Tutorial](Tutorials/Part-1.md)

6
docs/en/SignalR-Integration.md

@ -115,7 +115,7 @@ public class MessagingHub : Hub
}
````
The hub route will be `/signalr-hubs/messasing` for the `MessasingHub`:
The hub route will be `/signalr-hubs/messaging` for the `MessagingHub`:
* Adding a standard `/signalr-hubs/` prefix
* Continue with the **camel case** hub name, without the `Hub` suffix.
@ -123,7 +123,7 @@ The hub route will be `/signalr-hubs/messasing` for the `MessasingHub`:
If you want to specify the route, you can use the `HubRoute` attribute:
````csharp
[HubRoute("/my-messasing-hub")]
[HubRoute("/my-messaging-hub")]
public class MessagingHub : Hub
{
//...
@ -132,7 +132,7 @@ public class MessagingHub : Hub
### AbpHub Base Classes
Instead of the standard `Hub` and `Hub<T>` classes, you can inherit from the `AbpHub` or `AbpHub<T>` which hve useful base properties like `CurrentUser`.
Instead of the standard `Hub` and `Hub<T>` classes, you can inherit from the `AbpHub` or `AbpHub<T>` which have useful base properties like `CurrentUser`.
Example:

2
docs/en/Tutorials/Part-1.md

@ -453,7 +453,7 @@ In a typical ASP.NET Core application, you create **API Controllers** to expose
ABP can [**automagically**](../API/Auto-API-Controllers.md) configures your application services as MVC API Controllers by convention.
#### Swagger UI
### Swagger UI
The startup template is configured to run the [Swagger UI](https://swagger.io/tools/swagger-ui/) using the [Swashbuckle.AspNetCore](https://github.com/domaindrivendev/Swashbuckle.AspNetCore) library. Run the application by pressing `CTRL+F5` and navigate to `https://localhost:<port>/swagger/` on your browser. (Replace `<port>` with your own port number.)

3
docs/en/Tutorials/Part-2.md

@ -120,6 +120,8 @@ Open the `en.json` (*the English translations*) file and change the content as b
"Menu:BookStore": "Book Store",
"Menu:Books": "Books",
"Actions": "Actions",
"Close": "Close",
"Delete": "Delete",
"Edit": "Edit",
"PublishDate": "Publish date",
"NewBook": "New book",
@ -127,6 +129,7 @@ Open the `en.json` (*the English translations*) file and change the content as b
"Type": "Type",
"Price": "Price",
"CreationTime": "Creation time",
"AreYouSure": "Are you sure?",
"AreYouSureToDelete": "Are you sure you want to delete this item?",
"Enum:BookType:0": "Undefined",
"Enum:BookType:1": "Adventure",

10
docs/en/Tutorials/Part-3.md

@ -716,7 +716,7 @@ Open `/src/app/book/book.component.html` and make the following changes:
<ng-template #abpFooter>
<button type="button" class="btn btn-secondary" #abpClose>
{%{{{ 'AbpAccount::Close' | abpLocalization }}}%}
{%{{{ '::Close' | abpLocalization }}}%}
</button>
</ng-template>
</abp-modal>
@ -856,13 +856,13 @@ Also replace `<ng-template #abpFooter> </ng-template>` with the following code p
````html
<ng-template #abpFooter>
<button type="button" class="btn btn-secondary" #abpClose>
{%{{{ 'AbpAccount::Close' | abpLocalization }}}%}
{%{{{ '::Close' | abpLocalization }}}%}
</button>
<!--added save button-->
<button class="btn btn-primary" (click)="save()" [disabled]="form.invalid">
<i class="fa fa-check mr-1"></i>
{%{{{ 'AbpAccount::Save' | abpLocalization }}}%}
{%{{{ '::Save' | abpLocalization }}}%}
</button>
</ng-template>
````
@ -1142,7 +1142,7 @@ constructor(
// Add a delete method
delete(id: string) {
this.confirmation.warn('::AreYouSureToDelete', 'AbpAccount::AreYouSure').subscribe((status) => {
this.confirmation.warn('::AreYouSureToDelete', '::AreYouSure').subscribe((status) => {
if (status === Confirmation.Status.confirm) {
this.bookService.deleteById(id).subscribe(() => this.list.get());
}
@ -1165,7 +1165,7 @@ Open `/src/app/book/book.component.html` and modify the `ngbDropdownMenu` to add
<div ngbDropdownMenu>
<!-- add the Delete button -->
<button ngbDropdownItem (click)="delete(row.id)">
{%{{{ 'AbpAccount::Delete' | abpLocalization }}}%}
{%{{{ '::Delete' | abpLocalization }}}%}
</button>
</div>
```

2
docs/en/Tutorials/Part-5.md

@ -390,7 +390,7 @@ Open the `/src/app/book/book.component.html` file and replace the edit and delet
<!-- Add the abpPermission directive -->
<button abpPermission="BookStore.Books.Delete" ngbDropdownItem (click)="delete(row.id)">
{%{{{ 'AbpAccount::Delete' | abpLocalization }}}%}
{%{{{ '::Delete' | abpLocalization }}}%}
</button>
````

38
docs/en/UI/Angular/Component-Replacement.md

@ -11,25 +11,24 @@ Create a new component that you want to use instead of an ABP component. Add tha
Then, open the `app.component.ts` and dispatch the `AddReplaceableComponent` action to replace your component with an ABP component as shown below:
```js
import { ..., AddReplaceableComponent } from '@abp/ng.core'; // imported AddReplaceableComponent action
import { AddReplaceableComponent } from '@abp/ng.core'; // imported AddReplaceableComponent action
import { eIdentityComponents } from '@abp/ng.identity'; // imported eIdentityComponents enum
import { Store } from '@ngxs/store'; // imported Store
//...
@Component(/* component metadata */)
export class AppComponent implements OnInit {
constructor(..., private store: Store) {} // injected Store
ngOnInit() {
// added dispatch
export class AppComponent {
constructor(
private store: Store // injected Store
)
{
// dispatched the AddReplaceableComponent action
this.store.dispatch(
new AddReplaceableComponent({
component: YourNewRoleComponent,
key: eIdentityComponents.Roles,
}),
);
//...
}
}
```
@ -48,9 +47,7 @@ The example below describes how to replace the `ApplicationLayoutComponent`:
Run the following command to generate a layout in `angular` folder:
```bash
yarn ng generate component shared/my-application-layout --export --entryComponent
# You don't need the --entryComponent option in Angular 9
yarn ng generate component my-application-layout
```
Add the following code in your layout template (`my-layout.component.html`) where you want the page to be loaded.
@ -62,30 +59,29 @@ Add the following code in your layout template (`my-layout.component.html`) wher
Open `app.component.ts` in `src/app` folder and modify it as shown below:
```js
import { ..., AddReplaceableComponent } from '@abp/ng.core'; // imported AddReplaceableComponent
import { AddReplaceableComponent } from '@abp/ng.core'; // imported AddReplaceableComponent
import { eThemeBasicComponents } from '@abp/ng.theme.basic'; // imported eThemeBasicComponents enum for component keys
import { MyApplicationLayoutComponent } from './shared/my-application-layout/my-application-layout.component'; // imported MyApplicationLayoutComponent
import { Store } from '@ngxs/store'; // imported Store
//...
import { MyApplicationLayoutComponent } from './my-application-layout/my-application-layout.component'; // imported MyApplicationLayoutComponent
@Component(/* component metadata */)
export class AppComponent implements OnInit {
constructor(..., private store: Store) {} // injected Store
ngOnInit() {
// added dispatch
export class AppComponent {
constructor(
private store: Store, // injected Store
) {
// dispatched the AddReplaceableComponent action
this.store.dispatch(
new AddReplaceableComponent({
component: MyApplicationLayoutComponent,
key: eThemeBasicComponents.ApplicationLayout,
}),
);
//...
}
}
```
> If you like to replace a layout component at runtime (e.g: changing the layout by pressing a button), pass the second parameter of the AddReplaceableComponent action as true. DynamicLayoutComponent loads content using a router-outlet. When the second parameter of AddReplaceableComponent is true, the route will be refreshed, so use it with caution. Your component state will be gone and any initiation logic (including HTTP requests) will be repeated.
### Layout Components
![Layout Components](./images/layout-components.png)

2
docs/en/UI/Angular/Migration-Guide-v3.md

@ -18,7 +18,7 @@ This will make the following modifications:
- Update your package.json and install new packages
- Revise tsconfig.json files to create a "Solution Style" configuration
- Rename `browserlist` as `.browserlistrc`
- Rename `browserslist` as `.browserslistrc`
On the other hand, it would be better if you check which packages to update first with `yarn ng update` command alone. Angular will give you a list of packages to update.

4
docs/en/docs-nav.json

@ -216,6 +216,10 @@
"text": "Azure Provider",
"path": "Blob-Storing-Azure.md"
},
{
"text": "Aliyun Provider",
"path": "Blob-Storing-Aliyun.md"
},
{
"text": "Create a Custom Provider",
"path": "Blob-Storing-Custom-Provider.md"

5
docs/zh-Hans/Background-Jobs-Hangfire.md

@ -66,9 +66,7 @@ public class YourModule : AbpModule
}
````
1. 我们需要在 `Module` 类的 `OnApplicationInitialization` 方法添加 `UseHangfireServer` 方法调用.
如果你想要使用Hangfire的面板,你可以使用: `UseHangfireDashboard`
1. 如果你想要使用Hangfire的面板,你可以在 `Module` 类的 `OnApplicationInitialization` 方法添加: `UseHangfireDashboard`
````csharp
public override void OnApplicationInitialization(ApplicationInitializationContext context)
@ -77,7 +75,6 @@ public class YourModule : AbpModule
// ... others
app.UseHangfireServer();
app.UseHangfireDashboard();
}

72
docs/zh-Hans/Blob-Storing-Aliyun.md

@ -0,0 +1,72 @@
# BLOB Storing Aliyun提供程序
BLOB存储Aliyun提供程序可以将BLOB存储在[Aliyun Blob storage](https://help.aliyun.com/product/31815.html)中.
> 阅读[BLOB存储文档](Blob-Storing.md)了解如何使用BLOB存储系统. 本文档仅介绍如何为容器配置Aliyun提供程序.
## 安装
使用ABP CLI添加[Volo.Abp.BlobStoring.Aliyun](https://www.nuget.org/packages/Volo.Abp.BlobStoring.Aliyun)NuGet包到你的项目:
* 安装 [ABP CLI](https://docs.abp.io/en/abp/latest/CLI), 如果你还没有安装.
* 在要添加 `Volo.Abp.BlobStoring.Aliyun` 包的 `.csproj` 文件目录打开命令行.
* 运行 `Volo.Abp.BlobStoring.Aliyun` 命令.
如果要手动安装,在你的项目中安装 `Volo.Abp.BlobStoring.Aliyun` NuGet包然后将`[DependsOn(typeof(AbpBlobStoringAliyunModule))]`添加到项目内的[ABP模块](Module-Development-Basics.md)类中.
## 配置
如同[BLOB存储文档](Blob-Storing.md)所述,配置是在[模块](Module-Development-Basics.md)类的 `ConfigureServices` 方法完成的.
**示例: 配置为默认使用Aliyun存储提供程序**
````csharp
Configure<AbpBlobStoringOptions>(options =>
{
options.Containerscontainer.UseAliyun(aliyun =>
{
aliyun.AccessKeyId = "your aliyun access key id";
aliyun.AccessKeySecret = "your aliyun access key secret";
aliyun.Endpoint = "your oss endpoint";
aliyun.RegionId = "your sts region id";
aliyun.RoleArn = "the arn of ram role";
aliyun.RoleSessionName = "the name of the certificate";
aliyun.Policy = "policy";
aliyun.DurationSeconds = "expiration date";
aliyun.ContainerName = "your aliyun container name";
aliyun.CreateContainerIfNotExists = false;
});
});
````
> 参阅[BLOB存储文档](Blob-Storing.md) 学习如何为指定容器配置提供程序.
### 选项
* **AccessKeyId** ([NotNull]string): 云账号AccessKey是访问阿里云API的密钥,具有该账户完全的权限,请你务必妥善保管!强烈建议遵循[阿里云安全最佳实践](https://help.aliyun.com/document_detail/102600.html),使用RAM子用户AccessKey来进行API调用.
* **AccessKeySecret** ([NotNull]string): 同上.
* **Endpoint** ([NotNull]string): Endpoint表示OSS对外服务的访问域名. [访问域名和数据中心](https://help.aliyun.com/document_detail/31837.html)
* **RegionId** (string): STS服务的接入地址,每个地址的功能都相同,请尽量在同地域进行调用. [接入地址](https://help.aliyun.com/document_detail/66053.html)
* **RoleArn** ([NotNull]string): STS所需角色ARN. [STS临时授权访问OSS](https://help.aliyun.com/document_detail/100624.html)
* **RoleSessionName** ([NotNull]string): 用来标识临时访问凭证的名称,建议使用不同的应用程序用户来区分.
* **Policy** (string): 在扮演角色的时候额外添加的权限限制. 请参见[基于RAM Policy的权限控制](https://help.aliyun.com/document_detail/100680.html).
* **DurationSeconds** (int): 设置临时访问凭证的有效期,单位是s,最小为900,最大为3600. **注**:为0则使用子账号操作OSS.
* **ContainerName** (string): 你可以在aliyun中指定容器名称. 如果没有指定它将使用 `BlogContainerName` 属性定义的BLOB容器的名称(请参阅[BLOB存储文档](Blob-Storing.md)). 请注意Aliyun有一些**命名容器的规则**,容器名称必须是有效的DNS名称,[符合以下命名规则](https://help.aliyun.com/knowledge_detail/39668.html):
* 只能包含小写字母,数字和短横线(-)
* 必须以小写字母和数字开头和结尾
* Bucket名称的长度限制在**3**到**63**个字符之间
* **CreateContainerIfNotExists** (bool): 默认值为 `false`, 如果aliyun中不存在容器, `AliyunBlobProvider` 将尝试创建它.
## Aliyun BLOB 名称计算器
Aliyun BLOB提供程序组织BLOB名称并实现一些约定. 默认情况下BLOB的全名由以下规则确定:
* 如果当前租户为 `null`(或容器禁用多租户 - 请参阅[BLOB存储文档](Blob-Storing.md) 了解如何禁用容器的多租户),则追加 `host` 字符串.
* 如果当前租户不为 `null`,则追加 `tenants/<tenant-id>` 字符串.
* 追加 BLOB 名称.
## 其他服务
* `AliyunBlobProvider` 是实现Aliyun BLOB存储提供程序的主要服务,如果你想要通过[依赖注入](Dependency-Injection.md)覆盖/替换它(不要替换 `IBlobProvider` 接口,而是替换 `AliyunBlobProvider` 类).
* `IAliyunBlobNameCalculator` 服务用于计算文件路径. 默认实现是 `DefaultAliyunBlobNameCalculator`. 如果你想自定义文件路径计算,可以替换/覆盖它.
* `IOssClientFactory` 服务用于生成OSS客户端. 默认实现是 `DefaultOssClientFactory` . 如果你想自定义OSS客户端生成,可以替换/覆盖它.

3
docs/zh-Hans/Connection-Strings.md

@ -84,7 +84,6 @@ public class IdentityServerDbContext
ABP定义了 `IConnectionStringResolver`,并在需要连接字符串时使用它. 有两个预构建的实现:
* `DefaultConnectionStringResolver` 根据上面"配置连接字符串"一节中定义的规则,使用 `AbpDbConnectionOptions` 选择连接字符串.
* `MultiTenantConnectionStringResolver` used for multi-tenant applications and tries to get the configured connection string for the current tenant if available. It uses the `ITenantStore` to find the connection strings. It inherits from the `DefaultConnectionStringResolver` and fallbacks to the base logic if no connection string specified for the current tenant.
* `MultiTenantConnectionStringResolver` 用于多租户应用程序,并尝试获取当前租户的已配置连接字符串(如果有). 它使用 `ITenantStore` 查找连接字符串. 它继承了 `DefaultConnectionStringResolver`, 如果没有为当前租户指定连接字符串则回退到基本逻辑.
如果需要自定义逻辑来确定连接字符串,可以实现 `IConnectionStringResolver` 接口(也可以从现有类派生)并使用[依赖注入](Dependency-Injection.md)系统替换现有实现.
如果需要自定义逻辑来确定连接字符串,可以实现 `IConnectionStringResolver` 接口(也可以从现有类派生)并使用[依赖注入](Dependency-Injection.md)系统替换现有实现.

36
docs/zh-Hans/UI/Angular/Component-Replacement.md

@ -11,25 +11,24 @@
然后打开 `app.component.ts` 使用 `AddReplaceableComponent` 将你的组件替换ABP组件. 如下所示:
```js
import { ..., AddReplaceableComponent } from '@abp/ng.core'; // imported AddReplaceableComponent action
import { AddReplaceableComponent } from '@abp/ng.core'; // imported AddReplaceableComponent action
import { eIdentityComponents } from '@abp/ng.identity'; // imported eIdentityComponents enum
import { Store } from '@ngxs/store'; // imported Store
//...
@Component(/* component metadata */)
export class AppComponent implements OnInit {
constructor(..., private store: Store) {} // injected Store
ngOnInit() {
// added dispatch
export class AppComponent {
constructor(
private store: Store // injected Store
)
{
// dispatched the AddReplaceableComponent action
this.store.dispatch(
new AddReplaceableComponent({
component: YourNewRoleComponent,
key: eIdentityComponents.Roles,
}),
);
//...
}
}
```
@ -47,9 +46,7 @@ export class AppComponent implements OnInit {
运行以下命令在 `angular` 文件夹中生成布局:
```bash
yarn ng generate component shared/my-application-layout --export --entryComponent
# You don't need the --entryComponent option in Angular 9
yarn ng generate component my-application-layout
```
在你的布局模板(`my-layout.component.html`)中添加以下代码:
@ -61,26 +58,23 @@ yarn ng generate component shared/my-application-layout --export --entryComponen
打开 `src/app` 文件夹下的 `app.component.ts` 文件添加以下内容:
```js
import { ..., AddReplaceableComponent } from '@abp/ng.core'; // imported AddReplaceableComponent
import { AddReplaceableComponent } from '@abp/ng.core'; // imported AddReplaceableComponent
import { eThemeBasicComponents } from '@abp/ng.theme.basic'; // imported eThemeBasicComponents enum for component keys
import { MyApplicationLayoutComponent } from './shared/my-application-layout/my-application-layout.component'; // imported MyApplicationLayoutComponent
import { Store } from '@ngxs/store'; // imported Store
//...
import { MyApplicationLayoutComponent } from './my-application-layout/my-application-layout.component'; // imported MyApplicationLayoutComponent
@Component(/* component metadata */)
export class AppComponent implements OnInit {
constructor(..., private store: Store) {} // injected Store
ngOnInit() {
// added dispatch
export class AppComponent {
constructor(
private store: Store, // injected Store
) {
// dispatched the AddReplaceableComponent action
this.store.dispatch(
new AddReplaceableComponent({
component: MyApplicationLayoutComponent,
key: eThemeBasicComponents.ApplicationLayout,
}),
);
//...
}
}
```

1
docs/zh-Hans/UI/AspNetCore/Tag-Helpers/Form-elements.md

@ -0,0 +1 @@
TODO...

4
docs/zh-Hans/docs-nav.json

@ -210,6 +210,10 @@
"text": "Azure提供程序",
"path": "Blob-Storing-Azure.md"
},
{
"text": "Aliyun提供程序",
"path": "Blob-Storing-Aliyun.md"
},
{
"text": "创建自定义提供程序",
"path": "Blob-Storing-Custom-Provider.md"

50
framework/Volo.Abp.sln

@ -289,27 +289,35 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Volo.Abp.AspNetCore.SignalR
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Volo.Abp.AspNetCore.SignalR.Tests", "test\Volo.Abp.AspNetCore.SignalR.Tests\Volo.Abp.AspNetCore.SignalR.Tests.csproj", "{8B758716-DCC9-4223-8421-5588D1597487}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Tests", "test\Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Tests\Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Tests.csproj", "{79323211-E658-493E-9863-035AA4C3F913}"
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Tests", "test\Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Tests\Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Tests.csproj", "{79323211-E658-493E-9863-035AA4C3F913}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volo.Abp.BlobStoring", "src\Volo.Abp.BlobStoring\Volo.Abp.BlobStoring.csproj", "{A0CFBDD6-A3CB-438C-83F1-5025F12E2D42}"
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Volo.Abp.BlobStoring", "src\Volo.Abp.BlobStoring\Volo.Abp.BlobStoring.csproj", "{A0CFBDD6-A3CB-438C-83F1-5025F12E2D42}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volo.Abp.BlobStoring.Tests", "test\Volo.Abp.BlobStoring.Tests\Volo.Abp.BlobStoring.Tests.csproj", "{D53A17BB-4E23-451D-AD9B-E1F6AC3F7958}"
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Volo.Abp.BlobStoring.Tests", "test\Volo.Abp.BlobStoring.Tests\Volo.Abp.BlobStoring.Tests.csproj", "{D53A17BB-4E23-451D-AD9B-E1F6AC3F7958}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volo.Abp.BlobStoring.FileSystem", "src\Volo.Abp.BlobStoring.FileSystem\Volo.Abp.BlobStoring.FileSystem.csproj", "{02B1FBE2-850E-4612-ABC6-DD62BCF2DD6B}"
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Volo.Abp.BlobStoring.FileSystem", "src\Volo.Abp.BlobStoring.FileSystem\Volo.Abp.BlobStoring.FileSystem.csproj", "{02B1FBE2-850E-4612-ABC6-DD62BCF2DD6B}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volo.Abp.BlobStoring.FileSystem.Tests", "test\Volo.Abp.BlobStoring.FileSystem.Tests\Volo.Abp.BlobStoring.FileSystem.Tests.csproj", "{68443D4A-1608-4039-B995-7AF4CF82E9F8}"
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Volo.Abp.BlobStoring.FileSystem.Tests", "test\Volo.Abp.BlobStoring.FileSystem.Tests\Volo.Abp.BlobStoring.FileSystem.Tests.csproj", "{68443D4A-1608-4039-B995-7AF4CF82E9F8}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volo.Abp.EntityFrameworkCore.Oracle.Devart", "src\Volo.Abp.EntityFrameworkCore.Oracle.Devart\Volo.Abp.EntityFrameworkCore.Oracle.Devart.csproj", "{75E5C841-5F36-4C44-A532-57CB8E7FFE15}"
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Volo.Abp.EntityFrameworkCore.Oracle.Devart", "src\Volo.Abp.EntityFrameworkCore.Oracle.Devart\Volo.Abp.EntityFrameworkCore.Oracle.Devart.csproj", "{75E5C841-5F36-4C44-A532-57CB8E7FFE15}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volo.Abp.BlobStoring.Azure", "src\Volo.Abp.BlobStoring.Azure\Volo.Abp.BlobStoring.Azure.csproj", "{C44242F7-D55D-4867-AAF4-A786E404312E}"
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Volo.Abp.BlobStoring.Azure", "src\Volo.Abp.BlobStoring.Azure\Volo.Abp.BlobStoring.Azure.csproj", "{C44242F7-D55D-4867-AAF4-A786E404312E}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volo.Abp.BlobStoring.Azure.Tests", "test\Volo.Abp.BlobStoring.Azure.Tests\Volo.Abp.BlobStoring.Azure.Tests.csproj", "{A80E9A0B-8932-4B5D-83FB-6751708FD484}"
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Volo.Abp.BlobStoring.Azure.Tests", "test\Volo.Abp.BlobStoring.Azure.Tests\Volo.Abp.BlobStoring.Azure.Tests.csproj", "{A80E9A0B-8932-4B5D-83FB-6751708FD484}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volo.Abp.EntityFrameworkCore.Oracle", "src\Volo.Abp.EntityFrameworkCore.Oracle\Volo.Abp.EntityFrameworkCore.Oracle.csproj", "{1738845A-5348-4EB8-B736-CD1D22A808B4}"
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Volo.Abp.BlobStoring.Minio", "src\Volo.Abp.BlobStoring.Minio\Volo.Abp.BlobStoring.Minio.csproj", "{658D7EDE-A057-4256-96B6-083D3C2B9704}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volo.Abp.Caching.StackExchangeRedis", "src\Volo.Abp.Caching.StackExchangeRedis\Volo.Abp.Caching.StackExchangeRedis.csproj", "{2B83DF1F-0FD2-4DEA-ABC5-E324B51401D4}"
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Volo.Abp.BlobStoring.Minio.Tests", "test\Volo.Abp.BlobStoring.Minio.Tests\Volo.Abp.BlobStoring.Minio.Tests.csproj", "{36D4B268-FD3A-4655-A41B-D56D68476C83}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volo.Abp.Caching.StackExchangeRedis.Tests", "test\Volo.Abp.Caching.StackExchangeRedis.Tests\Volo.Abp.Caching.StackExchangeRedis.Tests.csproj", "{60D0E384-965E-4F81-9D71-B28F419254FC}"
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Volo.Abp.EntityFrameworkCore.Oracle", "src\Volo.Abp.EntityFrameworkCore.Oracle\Volo.Abp.EntityFrameworkCore.Oracle.csproj", "{1738845A-5348-4EB8-B736-CD1D22A808B4}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Volo.Abp.Caching.StackExchangeRedis", "src\Volo.Abp.Caching.StackExchangeRedis\Volo.Abp.Caching.StackExchangeRedis.csproj", "{2B83DF1F-0FD2-4DEA-ABC5-E324B51401D4}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Volo.Abp.Caching.StackExchangeRedis.Tests", "test\Volo.Abp.Caching.StackExchangeRedis.Tests\Volo.Abp.Caching.StackExchangeRedis.Tests.csproj", "{60D0E384-965E-4F81-9D71-B28F419254FC}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Volo.Abp.BlobStoring.Aliyun", "src\Volo.Abp.BlobStoring.Aliyun\Volo.Abp.BlobStoring.Aliyun.csproj", "{845E6A13-D1B5-4DDC-A16C-68D807E3B4C7}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Volo.Abp.BlobStoring.Aliyun.Tests", "test\Volo.Abp.BlobStoring.Aliyun.Tests\Volo.Abp.BlobStoring.Aliyun.Tests.csproj", "{8E49687A-E69F-49F2-8DB0-428D0883A937}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
@ -913,6 +921,14 @@ Global
{A80E9A0B-8932-4B5D-83FB-6751708FD484}.Debug|Any CPU.Build.0 = Debug|Any CPU
{A80E9A0B-8932-4B5D-83FB-6751708FD484}.Release|Any CPU.ActiveCfg = Release|Any CPU
{A80E9A0B-8932-4B5D-83FB-6751708FD484}.Release|Any CPU.Build.0 = Release|Any CPU
{658D7EDE-A057-4256-96B6-083D3C2B9704}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{658D7EDE-A057-4256-96B6-083D3C2B9704}.Debug|Any CPU.Build.0 = Debug|Any CPU
{658D7EDE-A057-4256-96B6-083D3C2B9704}.Release|Any CPU.ActiveCfg = Release|Any CPU
{658D7EDE-A057-4256-96B6-083D3C2B9704}.Release|Any CPU.Build.0 = Release|Any CPU
{36D4B268-FD3A-4655-A41B-D56D68476C83}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{36D4B268-FD3A-4655-A41B-D56D68476C83}.Debug|Any CPU.Build.0 = Debug|Any CPU
{36D4B268-FD3A-4655-A41B-D56D68476C83}.Release|Any CPU.ActiveCfg = Release|Any CPU
{36D4B268-FD3A-4655-A41B-D56D68476C83}.Release|Any CPU.Build.0 = Release|Any CPU
{1738845A-5348-4EB8-B736-CD1D22A808B4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{1738845A-5348-4EB8-B736-CD1D22A808B4}.Debug|Any CPU.Build.0 = Debug|Any CPU
{1738845A-5348-4EB8-B736-CD1D22A808B4}.Release|Any CPU.ActiveCfg = Release|Any CPU
@ -925,6 +941,14 @@ Global
{60D0E384-965E-4F81-9D71-B28F419254FC}.Debug|Any CPU.Build.0 = Debug|Any CPU
{60D0E384-965E-4F81-9D71-B28F419254FC}.Release|Any CPU.ActiveCfg = Release|Any CPU
{60D0E384-965E-4F81-9D71-B28F419254FC}.Release|Any CPU.Build.0 = Release|Any CPU
{845E6A13-D1B5-4DDC-A16C-68D807E3B4C7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{845E6A13-D1B5-4DDC-A16C-68D807E3B4C7}.Debug|Any CPU.Build.0 = Debug|Any CPU
{845E6A13-D1B5-4DDC-A16C-68D807E3B4C7}.Release|Any CPU.ActiveCfg = Release|Any CPU
{845E6A13-D1B5-4DDC-A16C-68D807E3B4C7}.Release|Any CPU.Build.0 = Release|Any CPU
{8E49687A-E69F-49F2-8DB0-428D0883A937}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{8E49687A-E69F-49F2-8DB0-428D0883A937}.Debug|Any CPU.Build.0 = Debug|Any CPU
{8E49687A-E69F-49F2-8DB0-428D0883A937}.Release|Any CPU.ActiveCfg = Release|Any CPU
{8E49687A-E69F-49F2-8DB0-428D0883A937}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
@ -1079,9 +1103,13 @@ Global
{75E5C841-5F36-4C44-A532-57CB8E7FFE15} = {5DF0E140-0513-4D0D-BE2E-3D4D85CD70E6}
{C44242F7-D55D-4867-AAF4-A786E404312E} = {5DF0E140-0513-4D0D-BE2E-3D4D85CD70E6}
{A80E9A0B-8932-4B5D-83FB-6751708FD484} = {447C8A77-E5F0-4538-8687-7383196D04EA}
{658D7EDE-A057-4256-96B6-083D3C2B9704} = {5DF0E140-0513-4D0D-BE2E-3D4D85CD70E6}
{36D4B268-FD3A-4655-A41B-D56D68476C83} = {447C8A77-E5F0-4538-8687-7383196D04EA}
{1738845A-5348-4EB8-B736-CD1D22A808B4} = {5DF0E140-0513-4D0D-BE2E-3D4D85CD70E6}
{2B83DF1F-0FD2-4DEA-ABC5-E324B51401D4} = {5DF0E140-0513-4D0D-BE2E-3D4D85CD70E6}
{60D0E384-965E-4F81-9D71-B28F419254FC} = {447C8A77-E5F0-4538-8687-7383196D04EA}
{845E6A13-D1B5-4DDC-A16C-68D807E3B4C7} = {5DF0E140-0513-4D0D-BE2E-3D4D85CD70E6}
{8E49687A-E69F-49F2-8DB0-428D0883A937} = {447C8A77-E5F0-4538-8687-7383196D04EA}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {BB97ECF4-9A84-433F-A80B-2A3285BDD1D5}

27
framework/src/Volo.Abp.AspNetCore.Authentication.OAuth/Properties/launchSettings.json

@ -0,0 +1,27 @@
{
"iisSettings": {
"windowsAuthentication": false,
"anonymousAuthentication": true,
"iisExpress": {
"applicationUrl": "http://localhost:53601/",
"sslPort": 44330
}
},
"profiles": {
"IIS Express": {
"commandName": "IISExpress",
"launchBrowser": true,
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
}
},
"Volo.Abp.AspNetCore.Authentication.OAuth": {
"commandName": "Project",
"launchBrowser": true,
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
},
"applicationUrl": "https://localhost:5001;http://localhost:5000"
}
}
}

27
framework/src/Volo.Abp.AspNetCore.MultiTenancy/Properties/launchSettings.json

@ -0,0 +1,27 @@
{
"iisSettings": {
"windowsAuthentication": false,
"anonymousAuthentication": true,
"iisExpress": {
"applicationUrl": "http://localhost:53597/",
"sslPort": 44355
}
},
"profiles": {
"IIS Express": {
"commandName": "IISExpress",
"launchBrowser": true,
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
}
},
"Volo.Abp.AspNetCore.MultiTenancy": {
"commandName": "Project",
"launchBrowser": true,
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
},
"applicationUrl": "https://localhost:5001;http://localhost:5000"
}
}
}

27
framework/src/Volo.Abp.AspNetCore.Mvc.Client/Properties/launchSettings.json

@ -0,0 +1,27 @@
{
"iisSettings": {
"windowsAuthentication": false,
"anonymousAuthentication": true,
"iisExpress": {
"applicationUrl": "http://localhost:53603/",
"sslPort": 44305
}
},
"profiles": {
"IIS Express": {
"commandName": "IISExpress",
"launchBrowser": true,
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
}
},
"Volo.Abp.AspNetCore.Mvc.Client": {
"commandName": "Project",
"launchBrowser": true,
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
},
"applicationUrl": "https://localhost:5001;http://localhost:5000"
}
}
}

2
framework/src/Volo.Abp.AspNetCore.Mvc.UI.MultiTenancy/Volo/Abp/AspNetCore/Mvc/UI/MultiTenancy/Localization/nl.json

@ -1,4 +1,4 @@
{
{
"culture": "nl",
"texts": {
"GivenTenantIsNotAvailable": "Gegeven klant is niet beschikbaar: {0}",

31
framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic/wwwroot/themes/basic/layout.css

@ -57,7 +57,34 @@
font-size: 0.8em;
}
.dataTables_scrollBody {
min-height: 248px;
}
}
div.dataTables_wrapper div.dataTables_info {
padding-top: 11px;
white-space: nowrap;
}
div.dataTables_wrapper div.dataTables_length label {
padding-top: 10px;
margin-bottom: 0;
}
.rtl .dropdown-menu-right {
right: auto;
left: 0;
}
.rtl .dropdown-menu-right a {
text-align: right;
}
.rtl .navbar .dropdown-menu a {
text-align: right;
}
.rtl .navbar .dropdown-submenu .dropdown-menu {
top: 0;
left: auto;
right: 100%;
}

27
framework/src/Volo.Abp.AspNetCore.Serilog/Properties/launchSettings.json

@ -0,0 +1,27 @@
{
"iisSettings": {
"windowsAuthentication": false,
"anonymousAuthentication": true,
"iisExpress": {
"applicationUrl": "http://localhost:53606/",
"sslPort": 44319
}
},
"profiles": {
"IIS Express": {
"commandName": "IISExpress",
"launchBrowser": true,
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
}
},
"Volo.Abp.AspNetCore.Serilog": {
"commandName": "Project",
"launchBrowser": true,
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
},
"applicationUrl": "https://localhost:5001;http://localhost:5000"
}
}
}

27
framework/src/Volo.Abp.AspNetCore.SignalR/Properties/launchSettings.json

@ -0,0 +1,27 @@
{
"iisSettings": {
"windowsAuthentication": false,
"anonymousAuthentication": true,
"iisExpress": {
"applicationUrl": "http://localhost:53611/",
"sslPort": 44331
}
},
"profiles": {
"IIS Express": {
"commandName": "IISExpress",
"launchBrowser": true,
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
}
},
"Volo.Abp.AspNetCore.SignalR": {
"commandName": "Project",
"launchBrowser": true,
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
},
"applicationUrl": "https://localhost:5001;http://localhost:5000"
}
}
}

27
framework/src/Volo.Abp.AspNetCore.TestBase/Properties/launchSettings.json

@ -0,0 +1,27 @@
{
"iisSettings": {
"windowsAuthentication": false,
"anonymousAuthentication": true,
"iisExpress": {
"applicationUrl": "http://localhost:53599/",
"sslPort": 44358
}
},
"profiles": {
"IIS Express": {
"commandName": "IISExpress",
"launchBrowser": true,
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
}
},
"Volo.Abp.AspNetCore.TestBase": {
"commandName": "Project",
"launchBrowser": true,
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
},
"applicationUrl": "https://localhost:5001;http://localhost:5000"
}
}
}

27
framework/src/Volo.Abp.AspNetCore/Properties/launchSettings.json

@ -0,0 +1,27 @@
{
"iisSettings": {
"windowsAuthentication": false,
"anonymousAuthentication": true,
"iisExpress": {
"applicationUrl": "http://localhost:53596/",
"sslPort": 44300
}
},
"profiles": {
"IIS Express": {
"commandName": "IISExpress",
"launchBrowser": true,
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
}
},
"Volo.Abp.AspNetCore": {
"commandName": "Project",
"launchBrowser": true,
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
},
"applicationUrl": "https://localhost:5001;http://localhost:5000"
}
}
}

3
framework/src/Volo.Abp.BlobStoring.Aliyun/FodyWeavers.xml

@ -0,0 +1,3 @@
<Weavers xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="FodyWeavers.xsd">
<ConfigureAwait ContinueOnCapturedContext="false" />
</Weavers>

30
framework/src/Volo.Abp.BlobStoring.Aliyun/FodyWeavers.xsd

@ -0,0 +1,30 @@
<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<!-- This file was generated by Fody. Manual changes to this file will be lost when your project is rebuilt. -->
<xs:element name="Weavers">
<xs:complexType>
<xs:all>
<xs:element name="ConfigureAwait" minOccurs="0" maxOccurs="1">
<xs:complexType>
<xs:attribute name="ContinueOnCapturedContext" type="xs:boolean" />
</xs:complexType>
</xs:element>
</xs:all>
<xs:attribute name="VerifyAssembly" type="xs:boolean">
<xs:annotation>
<xs:documentation>'true' to run assembly verification (PEVerify) on the target assembly after all weavers have been executed.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="VerifyIgnoreCodes" type="xs:string">
<xs:annotation>
<xs:documentation>A comma-separated list of error codes that can be safely ignored in assembly verification.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="GenerateXsd" type="xs:boolean">
<xs:annotation>
<xs:documentation>'false' to turn off automatic generation of the XML Schema file.</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
</xs:schema>

27
framework/src/Volo.Abp.BlobStoring.Aliyun/Volo.Abp.BlobStoring.Aliyun.csproj

@ -0,0 +1,27 @@
<Project Sdk="Microsoft.NET.Sdk">
<Import Project="..\..\..\configureawait.props" />
<Import Project="..\..\..\common.props" />
<PropertyGroup>
<TargetFramework>netstandard2.0</TargetFramework>
<AssemblyName>Volo.Abp.BlobStoring.Aliyun</AssemblyName>
<PackageId>Volo.Abp.BlobStoring.Aliyun</PackageId>
<AssetTargetFallback>$(AssetTargetFallback);portable-net45+win8+wp8+wpa81;</AssetTargetFallback>
<GenerateAssemblyConfigurationAttribute>false</GenerateAssemblyConfigurationAttribute>
<GenerateAssemblyCompanyAttribute>false</GenerateAssemblyCompanyAttribute>
<GenerateAssemblyProductAttribute>false</GenerateAssemblyProductAttribute>
<RootNamespace />
</PropertyGroup>
<ItemGroup>
<PackageReference Include="aliyun-net-sdk-sts" Version="3.0.4" />
<PackageReference Include="Aliyun.OSS.SDK.NetCore" Version="2.10.0" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\Volo.Abp.BlobStoring\Volo.Abp.BlobStoring.csproj" />
<ProjectReference Include="..\Volo.Abp.Caching\Volo.Abp.Caching.csproj" />
</ItemGroup>
</Project>

14
framework/src/Volo.Abp.BlobStoring.Aliyun/Volo/Abp/BlobStoring/Aliyun/AbpBlobStoringAliyunModule.cs

@ -0,0 +1,14 @@
using Volo.Abp.Caching;
using Volo.Abp.Modularity;
namespace Volo.Abp.BlobStoring.Aliyun
{
[DependsOn(
typeof(AbpBlobStoringModule),
typeof(AbpCachingModule)
)]
public class AbpBlobStoringAliyunModule: AbpModule
{
}
}

25
framework/src/Volo.Abp.BlobStoring.Aliyun/Volo/Abp/BlobStoring/Aliyun/AliyunBlobContainerConfigurationExtensions.cs

@ -0,0 +1,25 @@
using System;
namespace Volo.Abp.BlobStoring.Aliyun
{
public static class AliyunBlobContainerConfigurationExtensions
{
public static AliyunBlobProviderConfiguration GetAliyunConfiguration(
this BlobContainerConfiguration containerConfiguration)
{
return new AliyunBlobProviderConfiguration(containerConfiguration);
}
public static BlobContainerConfiguration UseAliyun(
this BlobContainerConfiguration containerConfiguration,
Action<AliyunBlobProviderConfiguration> aliyunConfigureAction)
{
containerConfiguration.ProviderType = typeof(AliyunBlobProvider);
containerConfiguration.NamingNormalizers.TryAdd<AliyunBlobNamingNormalizer>();
aliyunConfigureAction(new AliyunBlobProviderConfiguration(containerConfiguration));
return containerConfiguration;
}
}
}

51
framework/src/Volo.Abp.BlobStoring.Aliyun/Volo/Abp/BlobStoring/Aliyun/AliyunBlobNamingNormalizer.cs

@ -0,0 +1,51 @@
using System.Text.RegularExpressions;
using Volo.Abp.DependencyInjection;
namespace Volo.Abp.BlobStoring.Aliyun
{
public class AliyunBlobNamingNormalizer : IBlobNamingNormalizer, ITransientDependency
{
/// <summary>
/// Container names can contain only letters, numbers, and the dash (-) character
/// they can't start or end with the dash (-) character
/// Container names must be from 3 through 63 characters long
/// </summary>
public virtual string NormalizeContainerName(string containerName)
{
// All letters in a container name must be lowercase.
containerName = containerName.ToLower();
// Container names can contain only letters, numbers, and the dash (-) character.
containerName = Regex.Replace(containerName, "[^a-z0-9-]", string.Empty);
// Every dash (-) character must be immediately preceded and followed by a letter or number;
// consecutive dashes are not permitted in container names.
// Container names must start or end with a letter or number
containerName = Regex.Replace(containerName, "-{2,}", "-");
containerName = Regex.Replace(containerName, "^-", string.Empty);
containerName = Regex.Replace(containerName, "-$", string.Empty);
// Container names must be from 3 through 63 characters long.
if (containerName.Length < 3)
{
var length = containerName.Length;
for (var i = 0; i < 3 - length; i++)
{
containerName += "0";
}
}
if (containerName.Length > 63)
{
containerName = containerName.Substring(0, 63);
}
return containerName;
}
public virtual string NormalizeBlobName(string blobName)
{
return blobName;
}
}
}

107
framework/src/Volo.Abp.BlobStoring.Aliyun/Volo/Abp/BlobStoring/Aliyun/AliyunBlobProvider.cs

@ -0,0 +1,107 @@
using Aliyun.OSS;
using System;
using System.IO;
using System.Threading.Tasks;
using Volo.Abp.DependencyInjection;
namespace Volo.Abp.BlobStoring.Aliyun
{
public class AliyunBlobProvider : BlobProviderBase, ITransientDependency
{
protected IOssClientFactory OssClientFactory { get; }
protected IAliyunBlobNameCalculator AliyunBlobNameCalculator { get; }
public AliyunBlobProvider(
IOssClientFactory ossClientFactory,
IAliyunBlobNameCalculator aliyunBlobNameCalculator)
{
OssClientFactory = ossClientFactory;
AliyunBlobNameCalculator = aliyunBlobNameCalculator;
}
protected virtual IOss GetOssClient(BlobContainerConfiguration blobContainerConfiguration)
{
var aliyunConfig = blobContainerConfiguration.GetAliyunConfiguration();
return OssClientFactory.Create(aliyunConfig);
}
protected virtual IOss GetOssClient(AliyunBlobProviderConfiguration aliyunConfig)
{
return OssClientFactory.Create(aliyunConfig);
}
public override Task SaveAsync(BlobProviderSaveArgs args)
{
var containerName = GetContainerName(args);
var blobName = AliyunBlobNameCalculator.Calculate(args);
var aliyunConfig = args.Configuration.GetAliyunConfiguration();
var ossClient = GetOssClient(aliyunConfig);
if (!args.OverrideExisting && BlobExistsAsync(ossClient, containerName, blobName))
{
throw new BlobAlreadyExistsException($"Saving BLOB '{args.BlobName}' does already exists in the container '{containerName}'! Set {nameof(args.OverrideExisting)} if it should be overwritten.");
}
if (aliyunConfig.CreateContainerIfNotExists)
{
if (!ossClient.DoesBucketExist(containerName))
{
ossClient.CreateBucket(containerName);
}
}
ossClient.PutObject(containerName, blobName, args.BlobStream);
return Task.CompletedTask;
}
public override Task<bool> DeleteAsync(BlobProviderDeleteArgs args)
{
var containerName = GetContainerName(args);
var blobName = AliyunBlobNameCalculator.Calculate(args);
var ossClient = GetOssClient(args.Configuration);
if(!BlobExistsAsync(ossClient, containerName, blobName))
{
return Task.FromResult(false);
}
ossClient.DeleteObject(containerName, blobName);
return Task.FromResult(true);
}
public override Task<bool> ExistsAsync(BlobProviderExistsArgs args)
{
var containerName = GetContainerName(args);
var blobName = AliyunBlobNameCalculator.Calculate(args);
var ossClient = GetOssClient(args.Configuration);
return Task.FromResult(BlobExistsAsync(ossClient, containerName, blobName));
}
public override async Task<Stream> GetOrNullAsync(BlobProviderGetArgs args)
{
var containerName = GetContainerName(args);
var blobName = AliyunBlobNameCalculator.Calculate(args);
var ossClient = GetOssClient(args.Configuration);
if (!BlobExistsAsync(ossClient, containerName, blobName))
{
return null;
}
var result = ossClient.GetObject(containerName, blobName);
var memoryStream = new MemoryStream();
await result.Content.CopyToAsync(memoryStream);
return memoryStream;
}
private static string GetContainerName(BlobProviderArgs args)
{
var configuration = args.Configuration.GetAliyunConfiguration();
return configuration.ContainerName.IsNullOrWhiteSpace()
? args.ContainerName
: configuration.ContainerName;
}
private bool BlobExistsAsync(IOss ossClient,string containerName, string blobName)
{
// Make sure Blob Container exists.
return ossClient.DoesBucketExist(containerName) &&
ossClient.DoesObjectExist(containerName, blobName);
}
}
}

105
framework/src/Volo.Abp.BlobStoring.Aliyun/Volo/Abp/BlobStoring/Aliyun/AliyunBlobProviderConfiguration.cs

@ -0,0 +1,105 @@
using System;
namespace Volo.Abp.BlobStoring.Aliyun
{
/// <summary>
/// Sub-account access to OSS or STS temporary authorization to access OSS
/// </summary>
public class AliyunBlobProviderConfiguration
{
public string AccessKeyId
{
get => _containerConfiguration.GetConfiguration<string>(AliyunBlobProviderConfigurationNames.AccessKeyId);
set => _containerConfiguration.SetConfiguration(AliyunBlobProviderConfigurationNames.AccessKeyId, Check.NotNullOrWhiteSpace(value, nameof(value)));
}
public string AccessKeySecret
{
get => _containerConfiguration.GetConfiguration<string>(AliyunBlobProviderConfigurationNames.AccessKeySecret);
set => _containerConfiguration.SetConfiguration(AliyunBlobProviderConfigurationNames.AccessKeySecret, Check.NotNullOrWhiteSpace(value, nameof(value)));
}
public string Endpoint
{
get => _containerConfiguration.GetConfiguration<string>(AliyunBlobProviderConfigurationNames.Endpoint);
set => _containerConfiguration.SetConfiguration(AliyunBlobProviderConfigurationNames.Endpoint, Check.NotNullOrWhiteSpace(value, nameof(value)));
}
public string RegionId
{
get => _containerConfiguration.GetConfiguration<string>(AliyunBlobProviderConfigurationNames.RegionId);
set => _containerConfiguration.SetConfiguration(AliyunBlobProviderConfigurationNames.RegionId, value);
}
/// <summary>
/// acs:ram::$accountID:role/$roleName
/// </summary>
public string RoleArn
{
get => _containerConfiguration.GetConfiguration<string>(AliyunBlobProviderConfigurationNames.RoleArn);
set => _containerConfiguration.SetConfiguration(AliyunBlobProviderConfigurationNames.RoleArn, value);
}
/// <summary>
/// The name used to identify the temporary access credentials, it is recommended to use different application users to distinguish.
/// </summary>
public string RoleSessionName
{
get => _containerConfiguration.GetConfiguration<string>(AliyunBlobProviderConfigurationNames.RoleSessionName);
set => _containerConfiguration.SetConfiguration(AliyunBlobProviderConfigurationNames.RoleSessionName, value);
}
/// <summary>
/// Set the validity period of the temporary access credential, the unit is s, the minimum is 900, and the maximum is 3600.
/// </summary>
public int DurationSeconds
{
get => _containerConfiguration.GetConfigurationOrDefault(AliyunBlobProviderConfigurationNames.DurationSeconds, 0);
set => _containerConfiguration.SetConfiguration(AliyunBlobProviderConfigurationNames.DurationSeconds, value);
}
/// <summary>
/// If policy is empty, the user will get all permissions under this role
/// </summary>
public string Policy
{
get => _containerConfiguration.GetConfiguration<string>(AliyunBlobProviderConfigurationNames.Policy);
set => _containerConfiguration.SetConfiguration(AliyunBlobProviderConfigurationNames.Policy, value);
}
/// <summary>
/// This name may only contain lowercase letters, numbers, and hyphens, and must begin with a letter or a number.
/// Each hyphen must be preceded and followed by a non-hyphen character.
/// The name must also be between 3 and 63 characters long.
/// If this parameter is not specified, the ContainerName of the <see cref="BlobProviderArgs"/> will be used.
/// </summary>
public string ContainerName
{
get => _containerConfiguration.GetConfiguration<string>(AliyunBlobProviderConfigurationNames.ContainerName);
set => _containerConfiguration.SetConfiguration(AliyunBlobProviderConfigurationNames.ContainerName, Check.NotNullOrWhiteSpace(value, nameof(value)));
}
/// <summary>
/// Default value: false.
/// </summary>
public bool CreateContainerIfNotExists
{
get => _containerConfiguration.GetConfigurationOrDefault(AliyunBlobProviderConfigurationNames.CreateContainerIfNotExists, false);
set => _containerConfiguration.SetConfiguration(AliyunBlobProviderConfigurationNames.CreateContainerIfNotExists, value);
}
private readonly BlobContainerConfiguration _containerConfiguration;
public AliyunBlobProviderConfiguration(BlobContainerConfiguration containerConfiguration)
{
_containerConfiguration = containerConfiguration;
}
public string ToKeyString()
{
Uri uPoint = new Uri(Endpoint);
return $"blobstoring:aliyun:id:{AccessKeyId},sec:{AccessKeySecret},ept:{uPoint.Host.ToLower()},rid:{RegionId},ra:{RoleArn},rsn:{RoleSessionName},pl:{Policy}";
}
}
}

16
framework/src/Volo.Abp.BlobStoring.Aliyun/Volo/Abp/BlobStoring/Aliyun/AliyunBlobProviderConfigurationNames.cs

@ -0,0 +1,16 @@
namespace Volo.Abp.BlobStoring.Aliyun
{
public class AliyunBlobProviderConfigurationNames
{
public const string AccessKeyId = "Aliyun.AccessKeyId";
public const string AccessKeySecret = "Aliyun.AccessKeySecret";
public const string Endpoint = "Aliyun.Endpoint";
public const string RegionId = "Aliyun.RegionId";
public const string RoleArn = "Aliyun.RoleArn";
public const string RoleSessionName = "Aliyun.RoleSessionName";
public const string DurationSeconds = "Aliyun.DurationSeconds";
public const string Policy = "Aliyun.Policy";
public const string ContainerName = "Aliyun:ContainerName";
public const string CreateContainerIfNotExists = "Aliyun.CreateContainerIfNotExists";
}
}

30
framework/src/Volo.Abp.BlobStoring.Aliyun/Volo/Abp/BlobStoring/Aliyun/AssumeRoleCredentialsCacheItem.cs

@ -0,0 +1,30 @@
using System;
using System.Collections.Generic;
using System.Text;
using Volo.Abp.Caching;
namespace Volo.Abp.BlobStoring.Aliyun
{
[Serializable]
[CacheName("AssumeRoleCredentials")]
public class AssumeRoleCredentialsCacheItem
{
public string AccessKeyId { get; set; }
public string AccessKeySecret { get; set; }
public string SecurityToken { get; set; }
public AssumeRoleCredentialsCacheItem()
{
}
public AssumeRoleCredentialsCacheItem(string accessKeyId,string accessKeySecret,string securityToken)
{
AccessKeyId = accessKeyId;
AccessKeySecret = accessKeySecret;
SecurityToken = securityToken;
}
}
}

22
framework/src/Volo.Abp.BlobStoring.Aliyun/Volo/Abp/BlobStoring/Aliyun/DefaultAliyunBlobNameCalculator.cs

@ -0,0 +1,22 @@
using Volo.Abp.DependencyInjection;
using Volo.Abp.MultiTenancy;
namespace Volo.Abp.BlobStoring.Aliyun
{
public class DefaultAliyunBlobNameCalculator: IAliyunBlobNameCalculator, ITransientDependency
{
protected ICurrentTenant CurrentTenant { get; }
public DefaultAliyunBlobNameCalculator(ICurrentTenant currentTenant)
{
CurrentTenant = currentTenant;
}
public virtual string Calculate(BlobProviderArgs args)
{
return CurrentTenant.Id == null
? $"host/{args.BlobName}"
: $"tenants/{CurrentTenant.Id.Value:D}/{args.BlobName}";
}
}
}

68
framework/src/Volo.Abp.BlobStoring.Aliyun/Volo/Abp/BlobStoring/Aliyun/DefaultOssClientFactory.cs

@ -0,0 +1,68 @@
using Aliyun.Acs.Core;
using Aliyun.Acs.Core.Auth.Sts;
using Aliyun.Acs.Core.Http;
using Aliyun.Acs.Core.Profile;
using Aliyun.OSS;
using Microsoft.Extensions.Caching.Distributed;
using System;
using System.Collections.Generic;
using Volo.Abp.Caching;
using Volo.Abp.DependencyInjection;
namespace Volo.Abp.BlobStoring.Aliyun
{
/// <summary>
/// Sub-account access to OSS or STS temporary authorization to access OSS
/// </summary>
public class DefaultOssClientFactory : IOssClientFactory, ITransientDependency
{
protected IDistributedCache<AssumeRoleCredentialsCacheItem> Cache { get; }
public DefaultOssClientFactory(
IDistributedCache<AssumeRoleCredentialsCacheItem> cache)
{
Cache = cache;
}
public virtual IOss Create(AliyunBlobProviderConfiguration aliyunConfig)
{
//Sub-account
if (aliyunConfig.DurationSeconds <= 0)
{
return new OssClient(aliyunConfig.Endpoint, aliyunConfig.AccessKeyId, aliyunConfig.AccessKeySecret);
}
else
{
//STS temporary authorization to access OSS
var key = aliyunConfig.ToKeyString();
var cacheItem = Cache.Get(key);
if (cacheItem == null)
{
IClientProfile profile = DefaultProfile.GetProfile(
aliyunConfig.RegionId,
aliyunConfig.AccessKeyId,
aliyunConfig.AccessKeySecret);
DefaultAcsClient client = new DefaultAcsClient(profile);
AssumeRoleRequest request = new AssumeRoleRequest
{
AcceptFormat = FormatType.JSON,
//eg:acs:ram::$accountID:role/$roleName
RoleArn = aliyunConfig.RoleArn,
RoleSessionName = aliyunConfig.RoleSessionName,
//Set the validity period of the temporary access credential, the unit is s, the minimum is 900, and the maximum is 3600. default 3600
DurationSeconds = aliyunConfig.DurationSeconds,
//Set additional permission policy of Token; when acquiring Token, further reduce the permission of Token by setting an additional permission policy
Policy = aliyunConfig.Policy.IsNullOrEmpty() ? null : aliyunConfig.Policy,
};
var response = client.GetAcsResponse(request);
cacheItem = new AssumeRoleCredentialsCacheItem(response.Credentials.AccessKeyId, response.Credentials.AccessKeySecret, response.Credentials.SecurityToken);
Cache.Set(key, cacheItem, new DistributedCacheEntryOptions()
{
//Subtract 10 seconds of network request time.
AbsoluteExpirationRelativeToNow = TimeSpan.FromSeconds(aliyunConfig.DurationSeconds - 10)
});
}
return new OssClient(aliyunConfig.Endpoint, cacheItem.AccessKeyId, cacheItem.AccessKeySecret, cacheItem.SecurityToken);
}
}
}
}

7
framework/src/Volo.Abp.BlobStoring.Aliyun/Volo/Abp/BlobStoring/Aliyun/IAliyunBlobNameCalculator.cs

@ -0,0 +1,7 @@
namespace Volo.Abp.BlobStoring.Aliyun
{
public interface IAliyunBlobNameCalculator
{
string Calculate(BlobProviderArgs args);
}
}

9
framework/src/Volo.Abp.BlobStoring.Aliyun/Volo/Abp/BlobStoring/Aliyun/IOssClientFactory.cs

@ -0,0 +1,9 @@
using Aliyun.OSS;
namespace Volo.Abp.BlobStoring.Aliyun
{
public interface IOssClientFactory
{
IOss Create(AliyunBlobProviderConfiguration args);
}
}

3
framework/src/Volo.Abp.BlobStoring.Minio/FodyWeavers.xml

@ -0,0 +1,3 @@
<Weavers xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="FodyWeavers.xsd">
<ConfigureAwait ContinueOnCapturedContext="false" />
</Weavers>

30
framework/src/Volo.Abp.BlobStoring.Minio/FodyWeavers.xsd

@ -0,0 +1,30 @@
<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<!-- This file was generated by Fody. Manual changes to this file will be lost when your project is rebuilt. -->
<xs:element name="Weavers">
<xs:complexType>
<xs:all>
<xs:element name="ConfigureAwait" minOccurs="0" maxOccurs="1">
<xs:complexType>
<xs:attribute name="ContinueOnCapturedContext" type="xs:boolean" />
</xs:complexType>
</xs:element>
</xs:all>
<xs:attribute name="VerifyAssembly" type="xs:boolean">
<xs:annotation>
<xs:documentation>'true' to run assembly verification (PEVerify) on the target assembly after all weavers have been executed.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="VerifyIgnoreCodes" type="xs:string">
<xs:annotation>
<xs:documentation>A comma-separated list of error codes that can be safely ignored in assembly verification.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="GenerateXsd" type="xs:boolean">
<xs:annotation>
<xs:documentation>'false' to turn off automatic generation of the XML Schema file.</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
</xs:schema>

21
framework/src/Volo.Abp.BlobStoring.Minio/Volo.Abp.BlobStoring.Minio.csproj

@ -0,0 +1,21 @@
<Project Sdk="Microsoft.NET.Sdk">
<Import Project="..\..\..\configureawait.props" />
<Import Project="..\..\..\common.props" />
<PropertyGroup>
<TargetFramework>netstandard2.0</TargetFramework>
<AssemblyName>Volo.Abp.BlobStoring.Minio</AssemblyName>
<PackageId>Volo.Abp.BlobStoring.Minio</PackageId>
<AssetTargetFallback>$(AssetTargetFallback);portable-net45+win8+wp8+wpa81;</AssetTargetFallback>
<GenerateAssemblyConfigurationAttribute>false</GenerateAssemblyConfigurationAttribute>
<GenerateAssemblyCompanyAttribute>false</GenerateAssemblyCompanyAttribute>
<GenerateAssemblyProductAttribute>false</GenerateAssemblyProductAttribute>
<RootNamespace />
</PropertyGroup>
<ItemGroup>
<ProjectReference Include="..\Volo.Abp.BlobStoring\Volo.Abp.BlobStoring.csproj" />
<PackageReference Include="Minio" Version="3.1.13" />
</ItemGroup>
</Project>

10
framework/src/Volo.Abp.BlobStoring.Minio/Volo/Abp/BlobStoring/Minio/AbpBlobStoringMinioModule.cs

@ -0,0 +1,10 @@
using Volo.Abp.Modularity;
namespace Volo.Abp.BlobStoring.Minio
{
[DependsOn(typeof(AbpBlobStoringModule))]
public class AbpBlobStoringMinioModule : AbpModule
{
}
}

22
framework/src/Volo.Abp.BlobStoring.Minio/Volo/Abp/BlobStoring/Minio/DefaultMinioBlobNameCalculator.cs

@ -0,0 +1,22 @@
using Volo.Abp.DependencyInjection;
using Volo.Abp.MultiTenancy;
namespace Volo.Abp.BlobStoring.Minio
{
public class DefaultMinioBlobNameCalculator : IMinioBlobNameCalculator, ITransientDependency
{
protected ICurrentTenant CurrentTenant { get; }
public DefaultMinioBlobNameCalculator(ICurrentTenant currentTenant)
{
CurrentTenant = currentTenant;
}
public virtual string Calculate(BlobProviderArgs args)
{
return CurrentTenant.Id == null
? $"host/{args.BlobName}"
: $"tenants/{CurrentTenant.Id.Value.ToString("D")}/{args.BlobName}";
}
}
}

7
framework/src/Volo.Abp.BlobStoring.Minio/Volo/Abp/BlobStoring/Minio/IMinioBlobNameCalculator.cs

@ -0,0 +1,7 @@
namespace Volo.Abp.BlobStoring.Minio
{
public interface IMinioBlobNameCalculator
{
string Calculate(BlobProviderArgs args);
}
}

24
framework/src/Volo.Abp.BlobStoring.Minio/Volo/Abp/BlobStoring/Minio/MinioBlobContainerConfigurationExtensions.cs

@ -0,0 +1,24 @@
using System;
namespace Volo.Abp.BlobStoring.Minio
{
public static class MinioBlobContainerConfigurationExtensions
{
public static MinioBlobProviderConfiguration GetMinioConfiguration(
this BlobContainerConfiguration containerConfiguration)
{
return new MinioBlobProviderConfiguration(containerConfiguration);
}
public static BlobContainerConfiguration UseMinio(
this BlobContainerConfiguration containerConfiguration,
Action<MinioBlobProviderConfiguration> minioConfigureAction)
{
containerConfiguration.ProviderType = typeof(MinioBlobProvider);
minioConfigureAction(new MinioBlobProviderConfiguration(containerConfiguration));
return containerConfiguration;
}
}
}

52
framework/src/Volo.Abp.BlobStoring.Minio/Volo/Abp/BlobStoring/Minio/MinioBlobNamingNormalizer.cs

@ -0,0 +1,52 @@
using System.Text.RegularExpressions;
using Volo.Abp.DependencyInjection;
namespace Volo.Abp.BlobStoring.Minio
{
public class MinioBlobNamingNormalizer : IBlobNamingNormalizer, ITransientDependency
{
/// <summary>
///https://docs.aws.amazon.com/AmazonS3/latest/dev/BucketRestrictions.html
/// </summary>
public virtual string NormalizeContainerName(string containerName)
{
// All letters in a container name must be lowercase.
containerName = containerName.ToLower();
// Container names can contain only letters, numbers, and the dash (-) character.
containerName = Regex.Replace(containerName, "[^a-z0-9-]", string.Empty);
// Every dash (-) character must be immediately preceded and followed by a letter or number;
// consecutive dashes are not permitted in container names.
// Container names must start or end with a letter or number
containerName = Regex.Replace(containerName, "-{2,}", "-");
containerName = Regex.Replace(containerName, "^-", string.Empty);
containerName = Regex.Replace(containerName, "-$", string.Empty);
// Container names must be from 3 through 63 characters long.
if (containerName.Length < 3)
{
var length = containerName.Length;
for (var i = 0; i < 3 - length; i++)
{
containerName += "0";
}
}
if (containerName.Length > 63)
{
containerName = containerName.Substring(0, 63);
}
return containerName;
}
/// <summary>
/// https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingMetadata.html
/// </summary>
public virtual string NormalizeBlobName(string blobName)
{
return blobName;
}
}
}

145
framework/src/Volo.Abp.BlobStoring.Minio/Volo/Abp/BlobStoring/Minio/MinioBlobProvider.cs

@ -0,0 +1,145 @@
using Minio;
using Minio.Exceptions;
using System;
using System.IO;
using System.Threading.Tasks;
using Volo.Abp.DependencyInjection;
namespace Volo.Abp.BlobStoring.Minio
{
public class MinioBlobProvider : BlobProviderBase, ITransientDependency
{
protected IMinioBlobNameCalculator MinioBlobNameCalculator { get; }
public MinioBlobProvider(IMinioBlobNameCalculator minioBlobNameCalculator)
{
MinioBlobNameCalculator = minioBlobNameCalculator;
}
public override async Task SaveAsync(BlobProviderSaveArgs args)
{
var blobName = MinioBlobNameCalculator.Calculate(args);
var configuration = args.Configuration.GetMinioConfiguration();
var client = GetMinioClient(args);
var containerName = GetContainerName(args);
if (!args.OverrideExisting && await BlobExistsAsync(client, containerName, blobName))
{
throw new BlobAlreadyExistsException($"Saving BLOB '{args.BlobName}' does already exists in the container '{containerName}'! Set {nameof(args.OverrideExisting)} if it should be overwritten.");
}
if (configuration.CreateBucketIfNotExists)
{
await CreateBucketIfNotExists(client, containerName);
}
await client.PutObjectAsync(containerName, blobName, args.BlobStream, args.BlobStream.Length);
}
public override async Task<bool> DeleteAsync(BlobProviderDeleteArgs args)
{
var blobName = MinioBlobNameCalculator.Calculate(args);
var client = GetMinioClient(args);
var containerName = GetContainerName(args);
if (await BlobExistsAsync(client, containerName, blobName))
{
await client.RemoveObjectAsync(containerName, blobName);
return true;
}
return false;
}
public override async Task<bool> ExistsAsync(BlobProviderExistsArgs args)
{
var blobName = MinioBlobNameCalculator.Calculate(args);
var client = GetMinioClient(args);
var containerName = GetContainerName(args);
return await BlobExistsAsync(client, containerName, blobName);
}
public override async Task<Stream> GetOrNullAsync(BlobProviderGetArgs args)
{
var blobName = MinioBlobNameCalculator.Calculate(args);
var client = GetMinioClient(args);
var containerName = GetContainerName(args);
if (!await BlobExistsAsync(client, containerName, blobName))
{
return null;
}
var memoryStream = new MemoryStream();
await client.GetObjectAsync(containerName, blobName, stream =>
{
if (stream != null)
{
stream.CopyTo(memoryStream);
}
else
{
memoryStream = null;
}
});
return memoryStream;
}
protected virtual MinioClient GetMinioClient(BlobProviderArgs args)
{
var configuration = args.Configuration.GetMinioConfiguration();
var client = new MinioClient(configuration.EndPoint, configuration.AccessKey, configuration.SecretKey);
if (configuration.WithSSL)
{
client.WithSSL();
}
return client;
}
protected virtual async Task CreateBucketIfNotExists(MinioClient client,string containerName)
{
if (!await client.BucketExistsAsync(containerName))
{
await client.MakeBucketAsync(containerName);
}
}
private async Task<bool> BlobExistsAsync(MinioClient client, string containerName , string blobName)
{
// Make sure Blob Container exists.
if (await client.BucketExistsAsync(containerName))
{
try
{
await client.StatObjectAsync(containerName, blobName);
}
catch (Exception e)
{
if (e is ObjectNotFoundException)
{
return false;
}
throw;
}
return true;
}
return false;
}
private static string GetContainerName(BlobProviderArgs args)
{
var configuration = args.Configuration.GetMinioConfiguration();
return configuration.BucketName.IsNullOrWhiteSpace()
? args.ContainerName
: configuration.BucketName;
}
}
}

63
framework/src/Volo.Abp.BlobStoring.Minio/Volo/Abp/BlobStoring/Minio/MinioBlobProviderConfiguration.cs

@ -0,0 +1,63 @@
namespace Volo.Abp.BlobStoring.Minio
{
public class MinioBlobProviderConfiguration
{
public string BucketName
{
get => _containerConfiguration.GetConfiguration<string>(MinioBlobProviderConfigurationNames.BucketName);
set => _containerConfiguration.SetConfiguration(MinioBlobProviderConfigurationNames.BucketName, Check.NotNullOrWhiteSpace(value, nameof(value)));
}
/// <summary>
/// endPoint is an URL, domain name, IPv4 address or IPv6 address.
/// </summary>
public string EndPoint
{
get => _containerConfiguration.GetConfiguration<string>(MinioBlobProviderConfigurationNames.EndPoint);
set => _containerConfiguration.SetConfiguration(MinioBlobProviderConfigurationNames.EndPoint, Check.NotNullOrWhiteSpace(value, nameof(value)));
}
/// <summary>
/// accessKey is like user-id that uniquely identifies your account.This field is optional and can be omitted for anonymous access.
/// </summary>
public string AccessKey
{
get => _containerConfiguration.GetConfiguration<string>(MinioBlobProviderConfigurationNames.AccessKey);
set => _containerConfiguration.SetConfiguration(MinioBlobProviderConfigurationNames.AccessKey, Check.NotNullOrWhiteSpace(value, nameof(value)));
}
/// <summary>
/// secretKey is the password to your account.This field is optional and can be omitted for anonymous access.
/// </summary>
public string SecretKey
{
get => _containerConfiguration.GetConfiguration<string>(MinioBlobProviderConfigurationNames.SecretKey);
set => _containerConfiguration.SetConfiguration(MinioBlobProviderConfigurationNames.SecretKey, Check.NotNullOrWhiteSpace(value, nameof(value)));
}
/// <summary>
///connect to to MinIO Client object to use https instead of http
/// </summary>
public bool WithSSL
{
get => _containerConfiguration.GetConfigurationOrDefault(MinioBlobProviderConfigurationNames.WithSSL, false);
set => _containerConfiguration.SetConfiguration(MinioBlobProviderConfigurationNames.WithSSL, value);
}
/// <summary>
///Default value: false.
/// </summary>
public bool CreateBucketIfNotExists
{
get => _containerConfiguration.GetConfigurationOrDefault(MinioBlobProviderConfigurationNames.CreateBucketIfNotExists, false);
set => _containerConfiguration.SetConfiguration(MinioBlobProviderConfigurationNames.CreateBucketIfNotExists, value);
}
private readonly BlobContainerConfiguration _containerConfiguration;
public MinioBlobProviderConfiguration(BlobContainerConfiguration containerConfiguration)
{
_containerConfiguration = containerConfiguration;
}
}
}

12
framework/src/Volo.Abp.BlobStoring.Minio/Volo/Abp/BlobStoring/Minio/MinioBlobProviderConfigurationNames.cs

@ -0,0 +1,12 @@
namespace Volo.Abp.BlobStoring.Minio
{
public static class MinioBlobProviderConfigurationNames
{
public const string BucketName = "Minio.BucketName";
public const string EndPoint = "Minio.EndPoint";
public const string AccessKey = "Minio.AccessKey";
public const string SecretKey = "Minio.SecretKey";
public const string WithSSL = "Minio.WithSSL";
public const string CreateBucketIfNotExists = "Minio.CreateBucketIfNotExists";
}
}

15
framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/ModuleInfoProvider.cs

@ -49,15 +49,16 @@ namespace Volo.Abp.Cli.ProjectBuilding
{
using (var client = new CliHttpClient())
{
var responseMessage = await client.GetAsync(
using (var responseMessage = await client.GetAsync(
$"{CliUrls.WwwAbpIo}api/download/modules/",
CancellationTokenProvider.Token
);
await RemoteServiceExceptionHandler.EnsureSuccessfulHttpResponseAsync(responseMessage);
var result = await responseMessage.Content.ReadAsStringAsync();
return JsonSerializer.Deserialize<List<ModuleInfo>>(result);
))
{
await RemoteServiceExceptionHandler.EnsureSuccessfulHttpResponseAsync(responseMessage);
var result = await responseMessage.Content.ReadAsStringAsync();
return JsonSerializer.Deserialize<List<ModuleInfo>>(result);
}
}
}
}
}
}

6
framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/SolutionModuleAdder.cs

@ -159,6 +159,12 @@ namespace Volo.Abp.Cli.ProjectModification
{
Directory.Delete(demoFolder, true);
}
var hostFolder = Path.Combine(targetModuleFolder, "host");
if (Directory.Exists(hostFolder))
{
Directory.Delete(hostFolder, true);
}
}
private async Task AddNugetAndNpmReferences(ModuleWithMastersInfo module, string[] projectFiles)

2
framework/src/Volo.Abp.Ddd.Application.Contracts/Volo/Abp/Application/Localization/Resources/AbpDdd/de.json

@ -1,6 +1,6 @@
{
"culture": "de",
"texts": {
"MaxResultCountExceededExceptionMessage": "{0} kann nicht mehr als {1} sein! Erhöhen Sie {2}.{3} auf der Serverseite, um mehr Ergebnisse zu ermöglichen."
"MaxResultCountExceededExceptionMessage": "{0} kann nicht mehr als {1} sein! Erhöhen Sie {2}.{3} auf der Serverseite, um mehr Ergebnisse zu ermöglichen."
}
}

2
framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/Entities/Events/EntityChangeEventHelper.cs

@ -263,7 +263,7 @@ namespace Volo.Abp.Domain.Entities.Events
{
try
{
await eventPublisher.PublishAsync(
await eventEntry.EventBus.PublishAsync(
eventEntry.EventType,
Activator.CreateInstance(eventEntry.EventType, eventEntry.EntityOrEto)
);

2
framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/Repositories/BasicRepositoryBase.cs

@ -35,6 +35,8 @@ namespace Volo.Abp.Domain.Repositories
public abstract Task<long> GetCountAsync(CancellationToken cancellationToken = default);
public abstract Task<List<TEntity>> GetPagedListAsync(int skipCount, int maxResultCount, string sorting, bool includeDetails = false, CancellationToken cancellationToken = default);
protected virtual CancellationToken GetCancellationToken(CancellationToken preferredValue = default)
{
return CancellationTokenProvider.FallbackToProvider(preferredValue);

9
framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/Repositories/IReadOnlyBasicRepository.cs

@ -21,6 +21,15 @@ namespace Volo.Abp.Domain.Repositories
/// Gets total count of all entities.
/// </summary>
Task<long> GetCountAsync(CancellationToken cancellationToken = default);
Task<List<TEntity>> GetPagedListAsync(
int skipCount,
int maxResultCount,
string sorting,
bool includeDetails = false,
CancellationToken cancellationToken = default);
}
public interface IReadOnlyBasicRepository<TEntity, TKey> : IReadOnlyBasicRepository<TEntity>

12
framework/src/Volo.Abp.Emailing/Volo/Abp/Emailing/Localization/de.json

@ -12,12 +12,12 @@
"DisplayName:Abp.Mailing.Smtp.UseDefaultCredentials": "Standard-Anmeldeinformationen verwenden",
"Description:Abp.Mailing.DefaultFromAddress": "Die Standard-Absenderadresse",
"Description:Abp.Mailing.DefaultFromDisplayName": "Der Standard-Absendername",
"Description:Abp.Mailing.Smtp.Host": "Der Name oder die IP-Adresse des für SMTP-Transaktionen verwendeten Hosts.",
"Description:Abp.Mailing.Smtp.Port": "Der für SMTP-Transaktionen verwendete Port.",
"Description:Abp.Mailing.Smtp.UserName": "Benutzername, der mit den Anmeldedaten verknüpft ist.",
"Description:Abp.Mailing.Smtp.Password": "Das Passwort für den Benutzernamen, der mit den Anmeldeinformationen verknüpft ist.",
"Description:Abp.Mailing.Smtp.Domain": "Die Domäne oder der Computername, der die Anmeldeinformationen verifiziert.",
"Description:Abp.Mailing.Smtp.EnableSsl": "Bestimmt, ob der SmptClient Secure Sockets Layer (SSL) zur Verschlüsselung der Verbindung verwendet.",
"Description:Abp.Mailing.Smtp.Host": "Der Name oder die IP-Adresse des für SMTP-Transaktionen verwendeten Hosts.",
"Description:Abp.Mailing.Smtp.Port": "Der für SMTP-Transaktionen verwendete Port.",
"Description:Abp.Mailing.Smtp.UserName": "Benutzername, der mit den Anmeldedaten verknüpft ist.",
"Description:Abp.Mailing.Smtp.Password": "Das Passwort für den Benutzernamen, der mit den Anmeldeinformationen verknüpft ist.",
"Description:Abp.Mailing.Smtp.Domain": "Die Domäne oder der Computername, der die Anmeldeinformationen verifiziert.",
"Description:Abp.Mailing.Smtp.EnableSsl": "Bestimmt, ob der SmptClient Secure Sockets Layer (SSL) zur Verschlüsselung der Verbindung verwendet.",
"Description:Abp.Mailing.Smtp.UseDefaultCredentials": "Bestimmt, ob die DefaultCredentials mit Anfragen gesendet werden."
}
}

16
framework/src/Volo.Abp.EntityFrameworkCore/Volo/Abp/Domain/Repositories/EntityFrameworkCore/EfCoreRepository.cs

@ -1,6 +1,7 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Linq.Dynamic.Core;
using System.Linq.Expressions;
using System.Threading;
using System.Threading.Tasks;
@ -88,6 +89,21 @@ namespace Volo.Abp.Domain.Repositories.EntityFrameworkCore
return await DbSet.LongCountAsync(GetCancellationToken(cancellationToken));
}
public override async Task<List<TEntity>> GetPagedListAsync(
int skipCount,
int maxResultCount,
string sorting,
bool includeDetails = false,
CancellationToken cancellationToken = default)
{
var queryable = includeDetails ? WithDetails() : DbSet;
return await queryable
.OrderBy(sorting)
.PageBy(skipCount, maxResultCount)
.ToListAsync(GetCancellationToken(cancellationToken));
}
protected override IQueryable<TEntity> GetQueryable()
{
return DbSet.AsQueryable();

27
framework/src/Volo.Abp.Http.Client.IdentityModel.Web/Properties/launchSettings.json

@ -0,0 +1,27 @@
{
"iisSettings": {
"windowsAuthentication": false,
"anonymousAuthentication": true,
"iisExpress": {
"applicationUrl": "http://localhost:53610/",
"sslPort": 44304
}
},
"profiles": {
"IIS Express": {
"commandName": "IISExpress",
"launchBrowser": true,
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
}
},
"Volo.Abp.Http.Client.IdentityModel.Web": {
"commandName": "Project",
"launchBrowser": true,
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
},
"applicationUrl": "https://localhost:5001;http://localhost:5000"
}
}
}

48
framework/src/Volo.Abp.MemoryDb/Volo/Abp/Domain/Repositories/MemoryDb/MemoryDbRepository.cs

@ -1,6 +1,7 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Linq.Dynamic.Core;
using System.Linq.Expressions;
using System.Threading;
using System.Threading.Tasks;
@ -25,21 +26,21 @@ namespace Volo.Abp.Domain.Repositories.MemoryDb
public virtual IMemoryDatabase Database => DatabaseProvider.GetDatabase();
protected IMemoryDatabaseProvider<TMemoryDbContext> DatabaseProvider { get; }
public ILocalEventBus LocalEventBus { get; set; }
public IDistributedEventBus DistributedEventBus { get; set; }
public IEntityChangeEventHelper EntityChangeEventHelper { get; set; }
public IAuditPropertySetter AuditPropertySetter { get; set; }
public IGuidGenerator GuidGenerator { get; set; }
public MemoryDbRepository(IMemoryDatabaseProvider<TMemoryDbContext> databaseProvider)
{
DatabaseProvider = databaseProvider;
LocalEventBus = NullLocalEventBus.Instance;
DistributedEventBus = NullDistributedEventBus.Instance;
EntityChangeEventHelper = NullEntityChangeEventHelper.Instance;
@ -49,7 +50,7 @@ namespace Volo.Abp.Domain.Repositories.MemoryDb
{
return ApplyDataFilters(Collection.AsQueryable());
}
protected virtual async Task TriggerDomainEventsAsync(object entity)
{
var generatesDomainEventsEntity = entity as IGeneratesDomainEvents;
@ -80,7 +81,7 @@ namespace Volo.Abp.Domain.Repositories.MemoryDb
generatesDomainEventsEntity.ClearDistributedEvents();
}
}
protected virtual bool IsHardDeleted(TEntity entity)
{
if (!(UnitOfWorkManager?.Current?.Items.GetOrDefault(UnitOfWorkItemNames.HardDeletedEntities) is HashSet<IEntity> hardDeletedEntities))
@ -90,7 +91,7 @@ namespace Volo.Abp.Domain.Repositories.MemoryDb
return hardDeletedEntities.Contains(entity);
}
protected virtual void CheckAndSetId(TEntity entity)
{
if (entity is IEntity<Guid> entityWithGuidId)
@ -117,12 +118,12 @@ namespace Volo.Abp.Domain.Repositories.MemoryDb
{
AuditPropertySetter.SetCreationProperties(entity);
}
protected virtual void SetModificationAuditProperties(TEntity entity)
{
AuditPropertySetter.SetModificationProperties(entity);
}
protected virtual void SetDeletionAuditProperties(TEntity entity)
{
AuditPropertySetter.SetDeletionProperties(entity);
@ -139,7 +140,7 @@ namespace Volo.Abp.Domain.Repositories.MemoryDb
await EntityChangeEventHelper.TriggerEntityUpdatedEventOnUowCompletedAsync(entity);
await EntityChangeEventHelper.TriggerEntityUpdatingEventAsync(entity);
}
protected virtual async Task TriggerEntityDeleteEventsAsync(TEntity entity)
{
await EntityChangeEventHelper.TriggerEntityDeletedEventOnUowCompletedAsync(entity);
@ -153,7 +154,7 @@ namespace Volo.Abp.Domain.Repositories.MemoryDb
await TriggerEntityCreateEvents(entity);
await TriggerDomainEventsAsync(entity);
}
protected virtual async Task ApplyAbpConceptsForDeletedEntityAsync(TEntity entity)
{
SetDeletionAuditProperties(entity);
@ -170,8 +171,8 @@ namespace Volo.Abp.Domain.Repositories.MemoryDb
}
public override async Task DeleteAsync(
Expression<Func<TEntity, bool>> predicate,
bool autoSave = false,
Expression<Func<TEntity, bool>> predicate,
bool autoSave = false,
CancellationToken cancellationToken = default)
{
var entities = GetQueryable().Where(predicate).ToList();
@ -189,10 +190,10 @@ namespace Volo.Abp.Domain.Repositories.MemoryDb
await ApplyAbpConceptsForAddedEntityAsync(entity);
Collection.Add(entity);
return entity;
}
public override async Task<TEntity> UpdateAsync(
TEntity entity,
bool autoSave = false,
@ -216,7 +217,7 @@ namespace Volo.Abp.Domain.Repositories.MemoryDb
return entity;
}
public override async Task DeleteAsync(
TEntity entity,
bool autoSave = false,
@ -244,6 +245,19 @@ namespace Volo.Abp.Domain.Repositories.MemoryDb
{
return Task.FromResult(GetQueryable().LongCount());
}
public override Task<List<TEntity>> GetPagedListAsync(
int skipCount,
int maxResultCount,
string sorting,
bool includeDetails = false,
CancellationToken cancellationToken = default)
{
return Task.FromResult(GetQueryable()
.OrderBy(sorting)
.PageBy(skipCount, maxResultCount)
.ToList());
}
}
public class MemoryDbRepository<TMemoryDbContext, TEntity, TKey> : MemoryDbRepository<TMemoryDbContext, TEntity>, IMemoryDbRepository<TEntity, TKey>
@ -296,4 +310,4 @@ namespace Volo.Abp.Domain.Repositories.MemoryDb
await DeleteAsync(x => x.Id.Equals(id), autoSave, cancellationToken);
}
}
}
}

15
framework/src/Volo.Abp.MongoDB/Volo/Abp/Domain/Repositories/MongoDB/MongoDbRepository.cs

@ -3,6 +3,7 @@ using MongoDB.Driver.Linq;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Linq.Dynamic.Core;
using System.Linq.Expressions;
using System.Threading;
using System.Threading.Tasks;
@ -147,6 +148,20 @@ namespace Volo.Abp.Domain.Repositories.MongoDB
return await GetMongoQueryable().LongCountAsync(GetCancellationToken(cancellationToken));
}
public override async Task<List<TEntity>> GetPagedListAsync(
int skipCount,
int maxResultCount,
string sorting,
bool includeDetails = false,
CancellationToken cancellationToken = default)
{
return await GetMongoQueryable()
.OrderBy(sorting)
.As<IMongoQueryable<TEntity>>()
.PageBy<TEntity, IMongoQueryable<TEntity>>(skipCount, maxResultCount)
.ToListAsync(GetCancellationToken(cancellationToken));
}
public override async Task DeleteAsync(
Expression<Func<TEntity, bool>> predicate,
bool autoSave = false,

38
framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/de.json

@ -1,18 +1,18 @@
{
"culture": "de",
"texts": {
"InternalServerErrorMessage": "Während Ihrer Anfrage ist ein interner Fehler aufgetreten!",
"ValidationErrorMessage": "Ihre Anfrage ist nicht gültig!",
"InternalServerErrorMessage": "Während Ihrer Anfrage ist ein interner Fehler aufgetreten!",
"ValidationErrorMessage": "Ihre Anfrage ist nicht gültig!",
"ValidationNarrativeErrorMessageTitle": "Die folgenden Fehler wurden bei der Validierung entdeckt.",
"DefaultErrorMessage": "Ein Fehler ist aufgetreten!",
"DefaultErrorMessageDetail": "Es wurden keine Fehlerdetails vom Server gesendet.",
"DefaultErrorMessage401": "Sie sind nicht authentifiziert.",
"DefaultErrorMessage401Detail": "Sie sollten sich anmelden, um diese Operation durchzuführen.",
"DefaultErrorMessage401Detail": "Sie sollten sich anmelden, um diese Operation durchzuführen.",
"DefaultErrorMessage403": "Sie sind nicht autorisiert!",
"DefaultErrorMessage403Detail": "Es ist Ihnen nicht erlaubt, diese Operation durchzuführen!",
"DefaultErrorMessage403Detail": "Es ist Ihnen nicht erlaubt, diese Operation durchzuführen!",
"DefaultErrorMessage404": "Ressource nicht gefunden!",
"DefaultErrorMessage404Detail": "Die angeforderte Ressource konnte auf dem Server nicht gefunden werden!",
"EntityNotFoundErrorMessage": "Es gibt keine Entität {0} mit id = {1}!",
"EntityNotFoundErrorMessage": "Es gibt keine Entität {0} mit id = {1}!",
"Languages": "Sprachen",
"Error": "Fehler",
"AreYouSure": "Sind Sie sicher?",
@ -20,11 +20,11 @@
"Yes": "Ja",
"No": "Nein",
"Ok": "Ok",
"Close": "Schließen",
"Close": "Schließen",
"Save": "Speichern",
"SavingWithThreeDot": "Speichere...",
"Actions": "Aktionen",
"Delete": "Löschen",
"Delete": "Löschen",
"Edit": "Bearbeiten",
"Refresh": "Aktualisieren",
"Language": "Sprache",
@ -36,28 +36,28 @@
"Register": "Registrieren",
"Logout": "Abmelden",
"Submit": "Absenden",
"Back": "Zurück",
"Back": "Zurück",
"PagerSearch": "Suchen",
"PagerNext": "Nächste",
"PagerNext": "Nächste",
"PagerPrevious": "Vorherige",
"PagerFirst": "Erste",
"PagerLast": "Letzte",
"PagerInfo": "Zeige _START_ bis _END_ von _TOTAL_ Einträgen",
"PagerInfo{0}{1}{2}": "Zeige {0} bis {1} von {2} Einträgen",
"PagerInfoEmpty": "Zeige 0 bis 0 von 0 Einträgen",
"PagerInfoFiltered": "(gefiltert von _MAX_ Einträgen insgesamt)",
"NoDataAvailableInDatatable": "Keine Daten verfügbar",
"PagerShowMenuEntries": "Zeige _MENU_ Einträge",
"PagerInfo": "Zeige _START_ bis _END_ von _TOTAL_ Einträgen",
"PagerInfo{0}{1}{2}": "Zeige {0} bis {1} von {2} Einträgen",
"PagerInfoEmpty": "Zeige 0 bis 0 von 0 Einträgen",
"PagerInfoFiltered": "(gefiltert von _MAX_ Einträgen insgesamt)",
"NoDataAvailableInDatatable": "Keine Daten verfügbar",
"PagerShowMenuEntries": "Zeige _MENU_ Einträge",
"DatatableActionDropdownDefaultText": "Aktionen",
"ChangePassword": "Passwort ändern",
"ChangePassword": "Passwort ändern",
"PersonalInfo": "Mein Profil",
"AreYouSureYouWantToCancelEditingWarningMessage": "Sie haben ungespeicherte Änderungen.",
"AreYouSureYouWantToCancelEditingWarningMessage": "Sie haben ungespeicherte Änderungen.",
"UnhandledException": "Unerwartete Ausnahme!",
"401Message": "Unauthorisiert",
"403Message": "Verboten",
"404Message": "Seite nicht gefunden",
"500Message": "Internet Server Fehler",
"500Message": "Interner Server Fehler",
"GoHomePage": "Zur Startseite",
"GoBack": "Zurück"
"GoBack": "Zurück"
}
}

46
framework/src/Volo.Abp.Validation/Volo/Abp/Validation/Localization/de.json

@ -1,34 +1,34 @@
{
"culture": "de",
"texts": {
"'{0}' and '{1}' do not match.": "'{0}' und '{1}' stimmen nicht überein.",
"The {0} field is not a valid credit card number.": "Das Feld {0} ist keine gültige Kreditkartennummer.",
"{0} is not valid.": "{0} ist nicht gültig.",
"The {0} field is not a valid e-mail address.": "Das Feld {0} ist keine gültige E-Mail-Adresse.",
"'{0}' and '{1}' do not match.": "'{0}' und '{1}' stimmen nicht überein.",
"The {0} field is not a valid credit card number.": "Das Feld {0} ist keine gültige Kreditkartennummer.",
"{0} is not valid.": "{0} ist nicht gültig.",
"The {0} field is not a valid e-mail address.": "Das Feld {0} ist keine gültige E-Mail-Adresse.",
"The {0} field only accepts files with the following extensions: {1}": "Das Feld {0} akzeptiert nur Dateien mit den folgenden Erweiterungen: {1}",
"The field {0} must be a string or array type with a maximum length of '{1}'.": "Das Feld {0} muss eine Zeichenfolge oder Auflistung mit einer maximalen Länge von '{1}' sein.",
"The field {0} must be a string or array type with a minimum length of '{1}'.": "Das Feld {0} muss eine Zeichenfolge oder Auflistung mit einer Mindestlänge von '{1}' sein.",
"The {0} field is not a valid phone number.": "Das Feld {0} ist keine gültige Telefonnummer.",
"The field {0} must be a string or array type with a maximum length of '{1}'.": "Das Feld {0} muss eine Zeichenfolge oder Auflistung mit einer maximalen Länge von '{1}' sein.",
"The field {0} must be a string or array type with a minimum length of '{1}'.": "Das Feld {0} muss eine Zeichenfolge oder Auflistung mit einer Mindestlänge von '{1}' sein.",
"The {0} field is not a valid phone number.": "Das Feld {0} ist keine gültige Telefonnummer.",
"The field {0} must be between {1} and {2}.": "Das Feld {0} muss zwischen {1} und {2} liegen.",
"The field {0} must match the regular expression '{1}'.": "Das Feld {0} muss dem regulären Ausdruck '{1}' entsprechen.",
"The field {0} must match the regular expression '{1}'.": "Das Feld {0} muss dem regulären Ausdruck '{1}' entsprechen.",
"The {0} field is required.": "Das Feld {0} ist erforderlich.",
"The field {0} must be a string with a maximum length of {1}.": "Das Feld {0} muss eine Zeichenfolge mit einer maximalen Länge von {1} sein.",
"The field {0} must be a string with a minimum length of {2} and a maximum length of {1}.": "Das Feld {0} muss eine Zeichenfolge mit einer minimalen Länge von {2} und einer maximalen Länge von {1} sein.",
"The {0} field is not a valid fully-qualified http, https, or ftp URL.": "Das {0}-Feld ist keine gültige vollqualifizierte http-, https- oder ftp-URL.",
"The field {0} is invalid.": "Das Feld {0} ist ungültig.",
"ThisFieldIsNotAValidCreditCardNumber.": "Dieses Feld ist keine gültige Kreditkartennummer.",
"ThisFieldIsNotValid.": "Dieses Feld ist nicht gültig.",
"ThisFieldIsNotAValidEmailAddress.": "Dieses Feld ist keine gültige E-Mail-Adresse.",
"The field {0} must be a string with a maximum length of {1}.": "Das Feld {0} muss eine Zeichenfolge mit einer maximalen Länge von {1} sein.",
"The field {0} must be a string with a minimum length of {2} and a maximum length of {1}.": "Das Feld {0} muss eine Zeichenfolge mit einer minimalen Länge von {2} und einer maximalen Länge von {1} sein.",
"The {0} field is not a valid fully-qualified http, https, or ftp URL.": "Das {0}-Feld ist keine gültige vollqualifizierte http-, https- oder ftp-URL.",
"The field {0} is invalid.": "Das Feld {0} ist ungültig.",
"ThisFieldIsNotAValidCreditCardNumber.": "Dieses Feld ist keine gültige Kreditkartennummer.",
"ThisFieldIsNotValid.": "Dieses Feld ist nicht gültig.",
"ThisFieldIsNotAValidEmailAddress.": "Dieses Feld ist keine gültige E-Mail-Adresse.",
"ThisFieldOnlyAcceptsFilesWithTheFollowingExtensions:{0}": "Dieses Feld akzeptiert nur Dateien mit den folgenden Erweiterungen: {0}",
"ThisFieldMustBeAStringOrArrayTypeWithAMaximumLengthOf{0}": "Dieses Feld muss eine Zeichenfolge oder Auflistung mit einer maximalen Länge von '{0}' sein.",
"ThisFieldMustBeAStringOrArrayTypeWithAMinimumLengthOf{0}": "Dieses Feld muss eine Zeichenfolge oder Auflistung mit einer Mindestlänge von '{0}' sein.",
"ThisFieldIsNotAValidPhoneNumber.": "Dieses Feld ist keine gültige Telefonnummer.",
"ThisFieldMustBeAStringOrArrayTypeWithAMaximumLengthOf{0}": "Dieses Feld muss eine Zeichenfolge oder Auflistung mit einer maximalen Länge von '{0}' sein.",
"ThisFieldMustBeAStringOrArrayTypeWithAMinimumLengthOf{0}": "Dieses Feld muss eine Zeichenfolge oder Auflistung mit einer Mindestlänge von '{0}' sein.",
"ThisFieldIsNotAValidPhoneNumber.": "Dieses Feld ist keine gültige Telefonnummer.",
"ThisFieldMustBeBetween{0}And{1}": "Dieses Feld muss zwischen {0} und {1} liegen.",
"ThisFieldMustMatchTheRegularExpression{0}": "Dieses Feld muss dem regulären Ausdruck '{0}' entsprechen.",
"ThisFieldMustMatchTheRegularExpression{0}": "Dieses Feld muss dem regulären Ausdruck '{0}' entsprechen.",
"ThisFieldIsRequired.": "Dieses Feld ist erforderlich.",
"ThisFieldMustBeAStringWithAMaximumLengthOf{0}": "Dieses Feld muss eine Zeichenfolge mit einer maximalen Länge von {0} sein.",
"ThisFieldMustBeAStringWithAMinimumLengthOf{1}AndAMaximumLengthOf{0}": "Dieses Feld muss eine Zeichenfolge mit einer Mindestlänge von '{0}' sein.",
"ThisFieldIsNotAValidFullyQualifiedHttpHttpsOrFtpUrl": "Dieses Feld ist keine gültige vollqualifizierte http-, https- oder ftp-URL.",
"ThisFieldIsInvalid.": "Dieses Feld ist ungültig."
"ThisFieldMustBeAStringWithAMaximumLengthOf{0}": "Dieses Feld muss eine Zeichenfolge mit einer maximalen Länge von {0} sein.",
"ThisFieldMustBeAStringWithAMinimumLengthOf{1}AndAMaximumLengthOf{0}": "Dieses Feld muss eine Zeichenfolge mit einer Mindestlänge von '{0}' sein.",
"ThisFieldIsNotAValidFullyQualifiedHttpHttpsOrFtpUrl": "Dieses Feld ist keine gültige vollqualifizierte http-, https- oder ftp-URL.",
"ThisFieldIsInvalid.": "Dieses Feld ist ungültig."
}
}

2
framework/test/Volo.Abp.AspNetCore.Mvc.Tests/Volo/Abp/AspNetCore/Mvc/Localization/Resource/de.json

@ -2,6 +2,6 @@
"culture": "de",
"texts": {
"BirthDate": "Geburtsdatum",
"Value1": "Wert Eins"
"Value1": "Wert Eins"
}
}

2
framework/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/package.json

@ -3,7 +3,7 @@
"name": "asp.net",
"private": true,
"dependencies": {
"@abp/aspnetcore.mvc.ui.theme.shared": "^1.0.2",
"@abp/aspnetcore.mvc.ui.theme.shared": "^3.0.4",
"highlight.js": "^9.13.1"
},
"devDependencies": {}

181
framework/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/wwwroot/libs/@fortawesome/fontawesome-free/css/all.css

@ -1,5 +1,5 @@
/*!
* Font Awesome Free 5.11.2 by @fontawesome - https://fontawesome.com
* Font Awesome Free 5.13.1 by @fontawesome - https://fontawesome.com
* License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
*/
.fa,
@ -441,6 +441,15 @@ readers do not read off random characters that represent icons */
.fa-bacon:before {
content: "\f7e5"; }
.fa-bacteria:before {
content: "\f959"; }
.fa-bacterium:before {
content: "\f95a"; }
.fa-bahai:before {
content: "\f666"; }
.fa-balance-scale:before {
content: "\f24e"; }
@ -627,6 +636,9 @@ readers do not read off random characters that represent icons */
.fa-box-open:before {
content: "\f49e"; }
.fa-box-tissue:before {
content: "\f95b"; }
.fa-boxes:before {
content: "\f468"; }
@ -756,6 +768,9 @@ readers do not read off random characters that represent icons */
.fa-car-side:before {
content: "\f5e4"; }
.fa-caravan:before {
content: "\f8ff"; }
.fa-caret-down:before {
content: "\f0d7"; }
@ -1065,6 +1080,9 @@ readers do not read off random characters that represent icons */
.fa-compress:before {
content: "\f066"; }
.fa-compress-alt:before {
content: "\f422"; }
.fa-compress-arrows-alt:before {
content: "\f78c"; }
@ -1194,6 +1212,9 @@ readers do not read off random characters that represent icons */
.fa-d-and-d-beyond:before {
content: "\f6ca"; }
.fa-dailymotion:before {
content: "\f952"; }
.fa-dashcube:before {
content: "\f210"; }
@ -1203,6 +1224,9 @@ readers do not read off random characters that represent icons */
.fa-deaf:before {
content: "\f2a4"; }
.fa-deezer:before {
content: "\f977"; }
.fa-delicious:before {
content: "\f1a5"; }
@ -1281,6 +1305,9 @@ readers do not read off random characters that represent icons */
.fa-discourse:before {
content: "\f393"; }
.fa-disease:before {
content: "\f7fa"; }
.fa-divide:before {
content: "\f529"; }
@ -1383,6 +1410,9 @@ readers do not read off random characters that represent icons */
.fa-edge:before {
content: "\f282"; }
.fa-edge-legacy:before {
content: "\f978"; }
.fa-edit:before {
content: "\f044"; }
@ -1464,6 +1494,9 @@ readers do not read off random characters that represent icons */
.fa-expand:before {
content: "\f065"; }
.fa-expand-alt:before {
content: "\f424"; }
.fa-expand-arrows-alt:before {
content: "\f31e"; }
@ -1509,6 +1542,9 @@ readers do not read off random characters that represent icons */
.fa-fast-forward:before {
content: "\f050"; }
.fa-faucet:before {
content: "\f905"; }
.fa-fax:before {
content: "\f1ac"; }
@ -1629,6 +1665,9 @@ readers do not read off random characters that represent icons */
.fa-firefox:before {
content: "\f269"; }
.fa-firefox-browser:before {
content: "\f907"; }
.fa-first-aid:before {
content: "\f479"; }
@ -1866,6 +1905,9 @@ readers do not read off random characters that represent icons */
.fa-google-drive:before {
content: "\f3aa"; }
.fa-google-pay:before {
content: "\f979"; }
.fa-google-play:before {
content: "\f3ab"; }
@ -1992,9 +2034,15 @@ readers do not read off random characters that represent icons */
.fa-hand-holding-heart:before {
content: "\f4be"; }
.fa-hand-holding-medical:before {
content: "\f95c"; }
.fa-hand-holding-usd:before {
content: "\f4c0"; }
.fa-hand-holding-water:before {
content: "\f4c1"; }
.fa-hand-lizard:before {
content: "\f258"; }
@ -2028,6 +2076,9 @@ readers do not read off random characters that represent icons */
.fa-hand-scissors:before {
content: "\f257"; }
.fa-hand-sparkles:before {
content: "\f95d"; }
.fa-hand-spock:before {
content: "\f259"; }
@ -2037,9 +2088,18 @@ readers do not read off random characters that represent icons */
.fa-hands-helping:before {
content: "\f4c4"; }
.fa-hands-wash:before {
content: "\f95e"; }
.fa-handshake:before {
content: "\f2b5"; }
.fa-handshake-alt-slash:before {
content: "\f95f"; }
.fa-handshake-slash:before {
content: "\f960"; }
.fa-hanukiah:before {
content: "\f6e6"; }
@ -2058,12 +2118,21 @@ readers do not read off random characters that represent icons */
.fa-hat-wizard:before {
content: "\f6e8"; }
.fa-haykal:before {
content: "\f666"; }
.fa-hdd:before {
content: "\f0a0"; }
.fa-head-side-cough:before {
content: "\f961"; }
.fa-head-side-cough-slash:before {
content: "\f962"; }
.fa-head-side-mask:before {
content: "\f963"; }
.fa-head-side-virus:before {
content: "\f964"; }
.fa-heading:before {
content: "\f1dc"; }
@ -2136,6 +2205,9 @@ readers do not read off random characters that represent icons */
.fa-hospital-symbol:before {
content: "\f47e"; }
.fa-hospital-user:before {
content: "\f80d"; }
.fa-hot-tub:before {
content: "\f593"; }
@ -2163,6 +2235,9 @@ readers do not read off random characters that represent icons */
.fa-house-damage:before {
content: "\f6f1"; }
.fa-house-user:before {
content: "\f965"; }
.fa-houzz:before {
content: "\f27c"; }
@ -2196,6 +2271,9 @@ readers do not read off random characters that represent icons */
.fa-id-card-alt:before {
content: "\f47f"; }
.fa-ideal:before {
content: "\f913"; }
.fa-igloo:before {
content: "\f7ae"; }
@ -2229,6 +2307,9 @@ readers do not read off random characters that represent icons */
.fa-instagram:before {
content: "\f16d"; }
.fa-instagram-square:before {
content: "\f955"; }
.fa-intercom:before {
content: "\f7af"; }
@ -2343,6 +2424,9 @@ readers do not read off random characters that represent icons */
.fa-laptop-code:before {
content: "\f5fc"; }
.fa-laptop-house:before {
content: "\f966"; }
.fa-laptop-medical:before {
content: "\f812"; }
@ -2460,6 +2544,12 @@ readers do not read off random characters that represent icons */
.fa-luggage-cart:before {
content: "\f59d"; }
.fa-lungs:before {
content: "\f604"; }
.fa-lungs-virus:before {
content: "\f967"; }
.fa-lyft:before {
content: "\f3c3"; }
@ -2586,6 +2676,9 @@ readers do not read off random characters that represent icons */
.fa-meteor:before {
content: "\f753"; }
.fa-microblog:before {
content: "\f91a"; }
.fa-microchip:before {
content: "\f2db"; }
@ -2625,6 +2718,9 @@ readers do not read off random characters that represent icons */
.fa-mixcloud:before {
content: "\f289"; }
.fa-mixer:before {
content: "\f956"; }
.fa-mizuni:before {
content: "\f3cc"; }
@ -2862,6 +2958,9 @@ readers do not read off random characters that represent icons */
.fa-penny-arcade:before {
content: "\f704"; }
.fa-people-arrows:before {
content: "\f968"; }
.fa-people-carry:before {
content: "\f4ce"; }
@ -2925,6 +3024,9 @@ readers do not read off random characters that represent icons */
.fa-pied-piper-pp:before {
content: "\f1a7"; }
.fa-pied-piper-square:before {
content: "\f91e"; }
.fa-piggy-bank:before {
content: "\f4d3"; }
@ -2955,6 +3057,9 @@ readers do not read off random characters that represent icons */
.fa-plane-departure:before {
content: "\f5b0"; }
.fa-plane-slash:before {
content: "\f969"; }
.fa-play:before {
content: "\f04b"; }
@ -3030,6 +3135,12 @@ readers do not read off random characters that represent icons */
.fa-project-diagram:before {
content: "\f542"; }
.fa-pump-medical:before {
content: "\f96a"; }
.fa-pump-soap:before {
content: "\f96b"; }
.fa-pushed:before {
content: "\f3e1"; }
@ -3219,6 +3330,9 @@ readers do not read off random characters that represent icons */
.fa-rupee-sign:before {
content: "\f156"; }
.fa-rust:before {
content: "\f97a"; }
.fa-sad-cry:before {
content: "\f5b3"; }
@ -3315,6 +3429,9 @@ readers do not read off random characters that represent icons */
.fa-shield-alt:before {
content: "\f3ed"; }
.fa-shield-virus:before {
content: "\f96c"; }
.fa-ship:before {
content: "\f21a"; }
@ -3327,6 +3444,9 @@ readers do not read off random characters that represent icons */
.fa-shoe-prints:before {
content: "\f54b"; }
.fa-shopify:before {
content: "\f957"; }
.fa-shopping-bag:before {
content: "\f290"; }
@ -3369,6 +3489,9 @@ readers do not read off random characters that represent icons */
.fa-simplybuilt:before {
content: "\f215"; }
.fa-sink:before {
content: "\f96d"; }
.fa-sistrix:before {
content: "\f3ee"; }
@ -3462,6 +3585,9 @@ readers do not read off random characters that represent icons */
.fa-snowplow:before {
content: "\f7d2"; }
.fa-soap:before {
content: "\f96e"; }
.fa-socks:before {
content: "\f696"; }
@ -3627,12 +3753,21 @@ readers do not read off random characters that represent icons */
.fa-stopwatch:before {
content: "\f2f2"; }
.fa-stopwatch-20:before {
content: "\f96f"; }
.fa-store:before {
content: "\f54e"; }
.fa-store-alt:before {
content: "\f54f"; }
.fa-store-alt-slash:before {
content: "\f970"; }
.fa-store-slash:before {
content: "\f971"; }
.fa-strava:before {
content: "\f428"; }
@ -3843,6 +3978,9 @@ readers do not read off random characters that represent icons */
.fa-ticket-alt:before {
content: "\f3ff"; }
.fa-tiktok:before {
content: "\f97b"; }
.fa-times:before {
content: "\f00d"; }
@ -3870,6 +4008,9 @@ readers do not read off random characters that represent icons */
.fa-toilet-paper:before {
content: "\f71e"; }
.fa-toilet-paper-slash:before {
content: "\f972"; }
.fa-toolbox:before {
content: "\f552"; }
@ -3897,6 +4038,9 @@ readers do not read off random characters that represent icons */
.fa-traffic-light:before {
content: "\f637"; }
.fa-trailer:before {
content: "\f941"; }
.fa-train:before {
content: "\f238"; }
@ -4005,6 +4149,9 @@ readers do not read off random characters that represent icons */
.fa-uniregistry:before {
content: "\f404"; }
.fa-unity:before {
content: "\f949"; }
.fa-universal-access:before {
content: "\f29a"; }
@ -4020,6 +4167,9 @@ readers do not read off random characters that represent icons */
.fa-unlock-alt:before {
content: "\f13e"; }
.fa-unsplash:before {
content: "\f97c"; }
.fa-untappd:before {
content: "\f405"; }
@ -4110,6 +4260,9 @@ readers do not read off random characters that represent icons */
.fa-users-cog:before {
content: "\f509"; }
.fa-users-slash:before {
content: "\f973"; }
.fa-usps:before {
content: "\f7e1"; }
@ -4176,6 +4329,15 @@ readers do not read off random characters that represent icons */
.fa-vine:before {
content: "\f1ca"; }
.fa-virus:before {
content: "\f974"; }
.fa-virus-slash:before {
content: "\f975"; }
.fa-viruses:before {
content: "\f976"; }
.fa-vk:before {
content: "\f189"; }
@ -4391,18 +4553,19 @@ readers do not read off random characters that represent icons */
@font-face {
font-family: 'Font Awesome 5 Brands';
font-style: normal;
font-weight: normal;
font-display: auto;
font-weight: 400;
font-display: block;
src: url("../webfonts/fa-brands-400.eot");
src: url("../webfonts/fa-brands-400.eot?#iefix") format("embedded-opentype"), url("../webfonts/fa-brands-400.woff2") format("woff2"), url("../webfonts/fa-brands-400.woff") format("woff"), url("../webfonts/fa-brands-400.ttf") format("truetype"), url("../webfonts/fa-brands-400.svg#fontawesome") format("svg"); }
.fab {
font-family: 'Font Awesome 5 Brands'; }
font-family: 'Font Awesome 5 Brands';
font-weight: 400; }
@font-face {
font-family: 'Font Awesome 5 Free';
font-style: normal;
font-weight: 400;
font-display: auto;
font-display: block;
src: url("../webfonts/fa-regular-400.eot");
src: url("../webfonts/fa-regular-400.eot?#iefix") format("embedded-opentype"), url("../webfonts/fa-regular-400.woff2") format("woff2"), url("../webfonts/fa-regular-400.woff") format("woff"), url("../webfonts/fa-regular-400.ttf") format("truetype"), url("../webfonts/fa-regular-400.svg#fontawesome") format("svg"); }
@ -4413,7 +4576,7 @@ readers do not read off random characters that represent icons */
font-family: 'Font Awesome 5 Free';
font-style: normal;
font-weight: 900;
font-display: auto;
font-display: block;
src: url("../webfonts/fa-solid-900.eot");
src: url("../webfonts/fa-solid-900.eot?#iefix") format("embedded-opentype"), url("../webfonts/fa-solid-900.woff2") format("woff2"), url("../webfonts/fa-solid-900.woff") format("woff"), url("../webfonts/fa-solid-900.ttf") format("truetype"), url("../webfonts/fa-solid-900.svg#fontawesome") format("svg"); }

20
framework/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/wwwroot/libs/@fortawesome/fontawesome-free/css/v4-shims.css

@ -1,5 +1,5 @@
/*!
* Font Awesome Free 5.11.2 by @fontawesome - https://fontawesome.com
* Font Awesome Free 5.13.1 by @fontawesome - https://fontawesome.com
* License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
*/
.fa.fa-glass:before {
@ -154,6 +154,12 @@
.fa.fa-mail-forward:before {
content: "\f064"; }
.fa.fa-expand:before {
content: "\f424"; }
.fa.fa-compress:before {
content: "\f422"; }
.fa.fa-eye {
font-family: 'Font Awesome 5 Free';
font-weight: 400; }
@ -1055,9 +1061,6 @@
.fa.fa-automobile:before {
content: "\f1b9"; }
.fa.fa-cab:before {
content: "\f1ba"; }
.fa.fa-envelope-o {
font-family: 'Font Awesome 5 Free';
font-weight: 400; }
@ -1065,6 +1068,10 @@
.fa.fa-envelope-o:before {
content: "\f0e0"; }
.fa.fa-spotify {
font-family: 'Font Awesome 5 Brands';
font-weight: 400; }
.fa.fa-deviantart {
font-family: 'Font Awesome 5 Brands';
font-weight: 400; }
@ -2161,6 +2168,5 @@
font-family: 'Font Awesome 5 Brands';
font-weight: 400; }
.fa.fa-spotify {
font-family: 'Font Awesome 5 Brands';
font-weight: 400; }
.fa.fa-cab:before {
content: "\f1ba"; }

BIN
framework/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/wwwroot/libs/@fortawesome/fontawesome-free/webfonts/fa-brands-400.eot

Binary file not shown.

297
framework/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/wwwroot/libs/@fortawesome/fontawesome-free/webfonts/fa-brands-400.svg

@ -1,12 +1,12 @@
<?xml version="1.0" standalone="no"?>
<!--
Font Awesome Free 5.11.2 by @fontawesome - https://fontawesome.com
Font Awesome Free 5.13.1 by @fontawesome - https://fontawesome.com
License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
-->
<!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" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1">
<metadata>
Created by FontForge 20190801 at Mon Sep 23 12:53:49 2019
Created by FontForge 20190801 at Thu Jun 18 14:52:21 2020
By Robert Madole
Copyright (c) Font Awesome
</metadata>
@ -23,7 +23,7 @@ Copyright (c) Font Awesome
bbox="-0.200195 -66.9505 641.5 448.3"
underline-thickness="25"
underline-position="-50"
unicode-range="U+0020-F8E8"
unicode-range="U+0020-F97C"
/>
<missing-glyph />
<glyph glyph-name="twitter-square" unicode="&#xf081;"
@ -165,13 +165,10 @@ c-9.60059 27.9336 -14.4004 55 -14.4004 81.2002c0 88.7002 59.2998 132.3 115.1 133
M262.1 343.5c-19.5996 -22.9004 -43.3994 -36.2998 -69.5 -34.2998c-2.19922 27.5996 8.10059 52.0996 25.6006 71.8994c15.8994 18.5 43.7998 33.5 67.8994 34.9004c0.800781 -10.5996 3.30078 -40.0996 -24 -72.5z" />
<glyph glyph-name="windows" unicode="&#xf17a;"
d="M0 354.3l183.6 25.2998v-177.399h-183.6v152.1zM0 29.7002v149.899h183.6v-175.199zM203.8 1.7002v177.899h244.2v-211.6zM203.8 382.3l244.2 33.7002v-213.8h-244.2v180.1z" />
<glyph glyph-name="android" unicode="&#xf17b;"
d="M89.5996 243.5v-115.8c0 -15.4004 -12.0996 -27.7002 -27.5 -27.7002c-15.2998 0 -30.0996 12.4004 -30.0996 27.7002v115.8c0 15.0996 14.7998 27.5 30.0996 27.5c15.1006 0 27.5 -12.4004 27.5 -27.5zM100.4 86.5v179.4h247.3v-179.4
c0 -16.4004 -13.2002 -29.5996 -29.4004 -29.5996h-20.2002v-61.1006c0 -36.7998 -55.5 -36.7002 -55.5 0v61.1006h-37.1992v-61.1006c0 -36.5996 -55.2002 -36.8994 -55.2002 0l-0.299805 61.1006h-19.9004c-16.4004 0 -29.5996 13.1992 -29.5996 29.5996zM348.4 275.6
h-249.101c0 42.8008 25.6006 80 63.6006 99.4004l-19.1006 35.2998c-2.7998 4.90039 4.2998 8 6.7002 3.7998l19.4004 -35.5996c34.8994 15.5 75 14.7002 108.3 0l19.2998 35.5c2.5 4.2998 9.5 1.09961 6.7002 -3.7998l-19.1006 -35.2002
c37.7002 -19.4004 63.3008 -56.5996 63.3008 -99.4004zM177.7 331.1c0 5.7002 -4.60059 10.5 -10.5 10.5c-5.7002 0 -10.2002 -4.7998 -10.2002 -10.5c0 -5.69922 4.59961 -10.5 10.2002 -10.5c5.89941 0 10.5 4.80078 10.5 10.5zM291.1 331.1
c0 5.7002 -4.59961 10.5 -10.1992 10.5c-5.90039 0 -10.5 -4.7998 -10.5 -10.5c0 -5.69922 4.59961 -10.5 10.5 -10.5c5.59961 0 10.1992 4.80078 10.1992 10.5zM385.9 271c15.2998 0 30.0996 -12.0996 30.0996 -27.5v-115.8
c0 -15.2998 -14.7002 -27.7002 -30.0996 -27.7002c-15.1006 0 -27.5 12.2998 -27.5 27.7002v115.8c0 15.4004 12.3994 27.5 27.5 27.5z" />
<glyph glyph-name="android" unicode="&#xf17b;" horiz-adv-x="576"
d="M420.55 146.07c-13.248 0 -24 10.752 -24 24s10.752 24 24 24s24 -10.752 24 -24s-10.752 -24 -24 -24zM155.45 146.07c-13.248 0 -24 10.752 -24 24s10.752 24 24 24s24 -10.752 24 -24s-10.752 -24 -24 -24zM429.15 290.55l47.9395 83
c0.936523 1.39551 1.69629 3.8916 1.69629 5.57227c0 5.51953 -4.47949 10 -10 10c-3.43066 0 -7.44727 -2.49609 -8.96582 -5.57227v0l-48.54 -84.0693c-32.4678 14.5615 -87.6973 26.3789 -123.28 26.3789s-90.8125 -11.8174 -123.28 -26.3789l-48.54 84.0693
c-1.51855 3.07617 -5.53516 5.57227 -8.96582 5.57227c-5.52051 0 -10 -4.48047 -10 -10c0 -1.68066 0.759766 -4.17676 1.69629 -5.57227v0l47.9395 -83c-82.3193 -44.7695 -138.609 -128.1 -146.85 -226.55h576c-8.24023 98.4502 -64.54 181.78 -146.85 226.55z" />
<glyph glyph-name="linux" unicode="&#xf17c;"
d="M220.8 324.7c-1.09961 0.599609 -3.09961 0.399414 -3.39941 1.7002c-0.200195 0.399414 0.199219 0.899414 0.599609 1.09961c1.59961 0.900391 3.7998 0.599609 5.5 -0.0996094c1.2998 -0.600586 3.40039 -1.5 3.2002 -2.90039
c-0.100586 -1.09961 -1.7998 -1.5 -2.90039 -1.5c-1.2002 0 -2 1.2002 -3 1.7002zM198.9 323c-1 -0.0996094 -2.7002 0.400391 -2.80078 1.40039c-0.199219 1.39941 1.90039 2.2998 3.2002 2.89941c1.7002 0.700195 3.90039 1 5.5 0.100586
@ -271,9 +268,9 @@ s106.199 -236.6 236.6 -236.6c130.5 0 236.6 106.1 236.6 236.6z" />
<glyph glyph-name="openid" unicode="&#xf19b;"
d="M271.5 16l-68 -32c-115 10.2998 -203.5 71.5 -203.5 145.8c0 71.5 82.5 131 191.7 144.3v-43c-71.5 -12.5 -124 -53 -124 -101.3c0 -51 58.5 -93.2998 135.7 -103v340l68 33.2002v-384h0.0996094zM448 157l-131.3 28.5l36.7998 20.7002c-19.5 11.5 -43.5 20 -70 24.7998
v43c46.2002 -5.5 87.7002 -19.5 120.3 -39.2998l35 19.7998z" />
<glyph glyph-name="yahoo" unicode="&#xf19e;"
d="M252 156l4 -220c-12.7002 2.2002 -23.5 3.90039 -32.2998 3.90039c-8.40039 0 -19.2002 -1.7002 -32.2998 -3.90039l4 220c-55 94.7998 -110.4 196.8 -174 292c11.8994 -3.09961 23 -3.90039 33.1992 -3.90039c9 0 20.4004 0.800781 34.1006 3.90039
c40.8994 -72.2002 82.0996 -138.7 135 -225.5c37.2998 61.5996 91.0996 144.1 134.899 225.5c11.1006 -2.90039 22 -3.90039 32.9004 -3.90039c11.5 0 23.2002 1 35 3.90039c-34.4004 -47.9004 -131.6 -216.9 -174.5 -292z" />
<glyph glyph-name="yahoo" unicode="&#xf19e;" horiz-adv-x="512"
d="M223.69 306.94h93.5791l-140.909 -338.94h-94.1699l38.5693 89.8096l-105.83 249.131h96.0703l56 -143.171zM329.09 171.15c32.1377 0 58.2197 -26.083 58.2197 -58.2207c0 -32.1367 -26.082 -58.2197 -58.2197 -58.2197s-58.2197 26.083 -58.2197 58.2197
c0 32.1377 26.082 58.2207 58.2197 58.2207zM394.65 416h104.42l-92.6299 -223.47h-104.79z" />
<glyph glyph-name="google" unicode="&#xf1a0;" horiz-adv-x="488"
d="M488 186.2c0 -141.5 -96.9004 -242.2 -240 -242.2c-137.2 0 -248 110.8 -248 248s110.8 248 248 248c66.7998 0 123 -24.5 166.3 -64.9004l-67.5 -64.8994c-88.2998 85.2002 -252.5 21.2002 -252.5 -118.2c0 -86.5 69.1006 -156.6 153.7 -156.6
c98.2002 0 135 70.3994 140.8 106.899h-140.8v85.2998h236.1c2.30078 -12.6992 3.90039 -24.8994 3.90039 -41.3994z" />
@ -474,8 +471,8 @@ c56.2998 -191.7 -137.4 -222.3 -134.3 -124c0 0.700195 -0.299805 53.7998 -0.299805
c-53.1992 21.7002 -88 49.4004 -106.3 72c-9.09961 13.7002 0.900391 28.3008 16 17.7002c2 -1.39941 4.2998 -2.89941 6.2998 -4.2998v198.3c0 27.4004 20.6006 49.7002 46 49.7002h359.101c25.3994 0 46 -22.2998 46 -49.7002v-198.3zM457.2 185.1h0.0996094v190.601
c0 32.7998 -10.5996 45.7002 -40.8994 45.7002h-317.7c-31.7002 0 -40.6006 -10.8008 -40.6006 -45.7002v-192.4c67.7002 -35.3994 125.7 -29.0996 157.4 -28c13.4004 0.299805 22 -2.2998 27.0996 -7.7002c1.7002 -1.59961 10 -9.39941 20.3008 -17.0996
c1.09961 15.7998 10 25.7998 33.6992 24.9004c32.3008 -1.40039 91.7002 -7.7002 160.601 29.6992z" />
<glyph glyph-name="twitch" unicode="&#xf1e8;"
d="M40.0996 416h397.9v-274.2l-117 -117h-87l-56.7998 -56.7998h-60.2002v56.7998h-107v314.3zM397.9 161.9v214h-321v-280.9h90.2998v-56.7998l56.7998 56.7998h107zM331 299v-116.9h-40.0996v116.9h40.0996zM224 299v-116.9h-40.0996v116.9h40.0996z" />
<glyph glyph-name="twitch" unicode="&#xf1e8;" horiz-adv-x="512"
d="M391.17 344.53v-109.7h-38.6299v109.7h38.6299zM285 345v-109.75h-38.6299v109.75h38.6299zM120.83 448h366.86v-256l-173.771 -164.58h-77.25l-96.5303 -91.4199v91.4199h-115.83v329.16zM449.07 210.25v201.17h-308.931v-274.29h86.8701v-64l67.6006 64h77.2393z" />
<glyph glyph-name="yelp" unicode="&#xf1e9;" horiz-adv-x="384"
d="M42.9004 207.68l99.6191 -48.6094c19.2002 -9.40039 16.2002 -37.5107 -4.5 -42.71l-107.52 -26.8105c-1.51074 -0.379883 -4 -0.6875 -5.55762 -0.6875c-11.2676 0 -21.415 9.08887 -22.6523 20.2881c-0.708984 6.18164 -1.28516 16.25 -1.28516 22.4727
c0 17.8105 4.60742 45.9658 10.2852 62.8467c2.88574 8.56836 12.5664 15.5215 21.6074 15.5215c2.9082 0 7.38867 -1.03516 10.0029 -2.31152zM86.9004 -31.5703c-5.48535 3.75195 -9.92773 12.1904 -9.92773 18.8359c0 4.8291 2.61914 11.6631 5.84766 15.2539
@ -758,18 +755,13 @@ l19.2002 -19.2002l128 128l-128 128l-51.5 -51.5l77.1006 -76.5l-25.6006 -25.5996l-
d="M257 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM207.5 65.2002l75 75.2002l-77.2002 77.1992l-24.3994 -24.3994l53.0996 -52.9004l-26.5996 -26.5996l-77.2002 77.2002l77.2002 77.1992l11.0996 -11.0996l24.2002 24.2002
l-35.2002 35.3994l-125.7 -125.699zM306.5 67.4004l125.7 125.6l-125.7 125.7l-75 -75l77.2002 -77.2002l24.3994 24.4004l-53.0996 52.8994l26.5 26.5l77.2002 -77.2002l-77.2002 -77.1992l-11.0996 11.0996l-24.1006 -24.4004z" />
<glyph glyph-name="tripadvisor" unicode="&#xf262;" horiz-adv-x="576"
d="M166.4 167.479c0 -13.2354 -10.7305 -23.9658 -23.9668 -23.9658c-13.2354 0 -23.9658 10.7305 -23.9658 23.9658c0 13.2363 10.7305 23.9668 23.9658 23.9668c13.2363 0 23.9668 -10.7295 23.9668 -23.9668zM431.362 191.435
c13.2295 0 23.9551 -10.7246 23.9561 -23.9561c0 -13.2305 -10.7266 -23.9551 -23.9561 -23.9551c-13.2314 0 -23.9561 10.7256 -23.9561 23.9551c0 13.2314 10.7256 23.9561 23.9561 23.9561zM520.75 51.9453c-62.667 -49.1045 -153.276 -38.1094 -202.379 24.5586
l-30.9795 -46.3252l-30.6826 45.9395c-48.2773 -60.3906 -135.622 -71.8916 -197.885 -26.0547c-64.0586 47.1572 -77.7588 137.315 -30.6016 201.373c-5.05762 17.1221 -17.7021 42.7236 -28.2227 57.1475l90.2861 0.0498047
c48.0039 29.8701 132.851 54.1123 189.389 54.1123c2.11914 0 5.55762 -0.0371094 7.67578 -0.0820312c1.72363 0.0302734 4.52246 0.0556641 6.24609 0.0556641c55.5518 0 138.851 -23.9258 185.936 -53.4043l96.2178 -0.0742188
c-10.6191 -14.5371 -23.3213 -40.3643 -28.3516 -57.6494c46.793 -62.7471 34.9639 -151.37 -26.6484 -199.646zM259.366 166.239c-0.00683594 63.5566 -51.5352 115.075 -115.092 115.067c-63.5576 -0.00683594 -115.074 -51.5342 -115.068 -115.092
c0.00683594 -63.5566 51.5352 -115.075 115.092 -115.067c63.5127 0.0742188 114.984 51.5381 115.068 115.052v0.0400391zM287.957 176.694c5.43262 73.4395 65.5098 130.884 139.12 133.021c-35.5576 15.374 -95.8555 27.8506 -134.594 27.8506
c-1.41699 0 -3.7168 -0.0166016 -5.13379 -0.0380859c-0.953125 0.00878906 -2.50098 0.0166016 -3.45508 0.0166016c-39.2324 0 -100.479 -12.2168 -136.709 -27.2695c74.3447 -1.58203 135.3 -59.4248 140.771 -133.581zM539.663 205.461
c-21.9922 59.6338 -88.1621 90.1484 -147.795 68.1572c-59.6338 -21.9922 -90.1484 -88.1621 -68.1572 -147.795v-0.0322266c22.0381 -59.6074 88.1982 -90.0908 147.827 -68.1133c59.6152 22.0039 90.1133 88.1621 68.125 147.783zM213.624 167.486v-0.115234
c-0.0566406 -39.3281 -31.9863 -71.1631 -71.3145 -71.1064c-39.3271 0.0576172 -71.1621 31.9863 -71.1055 71.3145s31.9863 71.1631 71.3135 71.1055c39.2598 -0.115234 71.042 -31.9395 71.1064 -71.1982zM189.112 167.486v0.0839844
c-0.0517578 25.7832 -20.9941 46.6445 -46.7783 46.5938s-46.6445 -20.9941 -46.5938 -46.7773c0.0507812 -25.7842 20.9941 -46.6445 46.7764 -46.5938c25.7266 0.113281 46.5371 20.9678 46.5957 46.6934zM502.535 167.486
c-0.0205078 -39.3281 -31.918 -71.2422 -71.2471 -71.2217c-39.3291 0.0214844 -71.1943 31.918 -71.1729 71.2471c0.0195312 39.3281 31.918 71.1943 71.2471 71.1729c39.29 -0.0654297 71.1211 -31.9082 71.1729 -71.1982zM478.031 167.494
c-0.00878906 25.7842 -20.918 46.6787 -46.7021 46.6699s-46.6787 -20.918 -46.6699 -46.7021s20.918 -46.6777 46.7021 -46.6699c25.7646 0.0458984 46.6357 20.9277 46.6699 46.6934v0.00878906z" />
d="M195.11 162.82v0.0595703c0 28.1523 -22.8486 51 -51 51h-0.0507812h-0.00976562c-28.1846 0 -51.0596 -22.875 -51.0596 -51.0596c0 -28.1855 22.875 -51.0605 51.0596 -51.0605c28.1855 0 51.0605 22.875 51.0605 51.0605zM431.88 213.88
c28.1855 0 51.0605 -22.875 51.0605 -51.0596c0 -28.1855 -22.875 -51.0605 -51.0605 -51.0605c-28.1846 0 -51.0596 22.875 -51.0596 51.0605c0 28.1846 22.875 51.0596 51.0596 51.0596zM575.85 162.82c-0.00195312 -79.4531 -64.457 -143.937 -143.909 -143.937
c-31.1523 0 -74.9795 17.1836 -97.8301 38.3564l-46.1104 -50.1699l-46.1396 50.1992c-22.7959 -20.9512 -66.4238 -37.9551 -97.3857 -37.9551c-79.4385 0 -143.91 64.4717 -143.91 143.91c0 34.8828 20.8438 82.3506 46.5254 105.955l-47.0898 51.2402h104.66
c45.8398 31.2021 128.048 56.5264 183.5 56.5264s137.66 -25.3242 183.5 -56.5264h104.34l-47.0898 -51.2402c25.9111 -23.5781 46.9404 -71.1465 46.9404 -106.179c0 -0.0498047 -0.000976562 -0.130859 -0.000976562 -0.180664zM241.45 162.82
c0 -53.7598 -43.6309 -97.3906 -97.3906 -97.3906c-53.7588 0 -97.3896 43.6309 -97.3896 97.3906c0 53.7588 43.6309 97.3896 97.3896 97.3896c53.7598 0 97.3906 -43.6309 97.3906 -97.3896zM396.08 308.22c-61.4697 -23.5195 -108.08 -78.5098 -108.08 -142.59
c0 64.0898 -46.6201 119.08 -108.09 142.59c28.6377 11.9336 77.0596 21.6191 108.085 21.6191c31.0244 0 79.4473 -9.68555 108.085 -21.6191zM529.28 162.82v0.00976562c0 53.7646 -43.6357 97.4004 -97.4004 97.4004s-97.3994 -43.6357 -97.3994 -97.4004
s43.6348 -97.4004 97.3994 -97.4004v0c53.7598 0 97.3945 43.6309 97.4004 97.3906z" />
<glyph glyph-name="odnoklassniki" unicode="&#xf263;" horiz-adv-x="320"
d="M275.1 114c-27.3994 -17.4004 -65.0996 -24.2998 -90 -26.9004l20.9004 -20.5996l76.2998 -76.2998c27.9004 -28.6006 -17.5 -73.2998 -45.7002 -45.7002c-19.0996 19.4004 -47.0996 47.4004 -76.2998 76.5996l-76.2998 -76.5
c-28.2002 -27.5 -73.5996 17.6006 -45.4004 45.7002c19.4004 19.4004 47.1006 47.4004 76.3008 76.2998l20.5996 20.6006c-24.5996 2.59961 -62.9004 9.09961 -90.5996 26.8994c-32.6006 21 -46.9004 33.3008 -34.3008 59c7.40039 14.6006 27.7002 26.9004 54.6006 5.7002
@ -792,42 +784,49 @@ c15 29.7002 57.8008 109.2 75.3008 142.8c-13.9004 28.3008 -58.6006 133.9 -72.8008
c18.8994 -40 30.5996 -68.1006 48.0996 -104.7c5.59961 10.7998 34.7002 69.4004 48.0996 100.8c8.90039 20.6006 -3.89941 28.6006 -38.5996 29.4004c0.299805 3.59961 0 10.2998 0.299805 13.5996c44.4004 0.299805 111.101 0.299805 123.101 0.600586v-13.6006
c-22.5 -0.799805 -45.8008 -12.7998 -58.1006 -31.7002l-59.2002 -122.8c6.40039 -16.0996 63.3008 -142.8 69.2002 -156.7l122.4 282.601c-8.60059 23.0996 -36.4004 28.0996 -47.2002 28.2998v13.9004l127.8 -1.10059z" />
<glyph glyph-name="safari" unicode="&#xf267;" horiz-adv-x="512"
d="M236.9 191.2c0 9.09961 6.59961 17.7002 16.2998 17.7002c8.89941 0 17.3994 -6.40039 17.3994 -16.1006c0 -9.09961 -6.39941 -17.7002 -16.0996 -17.7002c-9 0 -17.5996 6.7002 -17.5996 16.1006zM504 192c0 -137 -111 -248 -248 -248s-248 111 -248 248
s111 248 248 248s248 -111 248 -248zM477.4 192c0 122.3 -99.1006 221.4 -221.4 221.4s-221.4 -99.1006 -221.4 -221.4s99.1006 -221.4 221.4 -221.4s221.4 99.1006 221.4 221.4zM404.9 95.4004c0 -3.60059 13 -10.2002 16.2998 -12.2002
c-27.4004 -41.5 -69.7998 -71.4004 -117.9 -83.2998l-4.39941 18.5c-0.300781 2.5 -1.90039 2.7998 -4.2002 2.7998c-1.90039 0 -3 -2.7998 -2.7998 -4.2002l4.39941 -18.7998c-13.2998 -2.7998 -26.7998 -4.2002 -40.3994 -4.2002c-36.3008 0 -72 10.2002 -103 29.0996
c1.69922 2.80078 12.1992 18 12.1992 20.2002c0 1.90039 -1.69922 3.60059 -3.59961 3.60059c-3.90039 0 -12.2002 -16.6006 -14.7002 -19.9004c-41.7998 27.7002 -72 70.5996 -83.5996 119.6l19.0996 4.2002c2.2002 0.600586 2.7998 2.2002 2.7998 4.2002
c0 1.90039 -2.7998 3 -4.39941 2.7998l-18.7002 -4.2998c-2.5 12.7002 -3.90039 25.5 -3.90039 38.5c0 37.0996 10.5 73.5996 30.2002 104.9c2.7998 -1.7002 16.1006 -10.8008 18.2998 -10.8008c1.90039 0 3.60059 1.40039 3.60059 3.30078
c0 3.89941 -14.7002 11.2998 -18 13.5996c28.2002 41.2002 71.0996 70.9004 119.8 81.9004l4.2002 -18.5c0.599609 -2.2002 2.2002 -2.80078 4.2002 -2.80078s3 2.80078 2.7998 4.40039l-4.2002 18.2998c12.2002 2.2002 24.5996 3.60059 37.0996 3.60059
c37.1006 0 73.3008 -10.5 104.9 -30.2002c-1.90039 -2.7998 -10.7998 -15.7998 -10.7998 -18c0 -1.90039 1.39941 -3.60059 3.2998 -3.60059c3.90039 0 11.2998 14.4004 13.2998 17.7002c41 -27.7002 70.2998 -70 81.7002 -118.2l-15.5 -3.2998
c-2.5 -0.599609 -2.7998 -2.2002 -2.7998 -4.39941c0 -1.90039 2.7998 -3 4.2002 -2.80078l15.7998 3.60059c2.5 -12.7002 3.89941 -25.7002 3.89941 -38.7002c0 -36.2998 -10 -72 -28.7998 -102.7c-2.7998 1.40039 -14.3994 9.7002 -16.5996 9.7002
c-2.10059 0 -3.7998 -1.7002 -3.7998 -3.59961zM371.7 337.6c-13 -12.1992 -134.2 -123.699 -137.601 -129.5l-96.5996 -160.5c12.7002 11.9004 134.2 124 137.3 129.301z" />
d="M274.69 173.31l-108.69 -71.3096l71.3096 108.69zM256 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM411.85 265.21c-2.71094 -1.13477 -4.91211 -4.44043 -4.91211 -7.37988c0 -0.880859 0.274414 -2.25684 0.612305 -3.07031
v0c1.12988 -2.72559 4.44043 -4.9375 7.39062 -4.9375c0.87793 0 2.24902 0.272461 3.05957 0.607422l14.75 6.11035c2.72754 1.12891 4.94141 4.44043 4.94141 7.39258c0 0.879883 -0.273438 2.25391 -0.611328 3.06738v0
c-1.12793 2.73047 -4.44043 4.94629 -7.39453 4.94629c-0.876953 0 -2.24512 -0.271484 -3.05566 -0.606445zM314.43 354c-0.341797 -0.818359 -0.620117 -2.20117 -0.620117 -3.08789c0 -2.95215 2.21387 -6.26367 4.94043 -7.39258v0
c0.810547 -0.334961 2.18164 -0.607422 3.05957 -0.607422c2.9502 0 6.26074 2.21191 7.39062 4.9375l6.12988 14.7803c0.335938 0.811523 0.608398 2.18164 0.608398 3.05957c0 2.9502 -2.21289 6.26172 -4.93848 7.39062v0
c-0.813477 0.337891 -2.18848 0.612305 -3.07031 0.612305c-2.93848 0 -6.24512 -2.20117 -7.37988 -4.91211zM256 388c-4.41602 0 -8 -3.58398 -8 -8v-16c0 -4.41602 3.58398 -8 8 -8v0c4.41602 0 8 3.58398 8 8v16c0 4.41602 -3.58398 8 -8 8v0zM181 373.08
c-2.72461 -1.12988 -4.93555 -4.44043 -4.93555 -7.38965c0 -0.869141 0.266602 -2.22656 0.595703 -3.03027l6.12988 -14.7803c1.09863 -2.80664 4.43555 -5.08398 7.44922 -5.08398c4.41602 0 8 3.58398 8 8c0 0.922852 -0.299805 2.3584 -0.668945 3.2041l-6.11035 14.75
c-1.12891 2.72754 -4.44043 4.94141 -7.39258 4.94141c-0.879883 0 -2.25391 -0.273438 -3.06738 -0.611328zM117.42 330.59c-1.29297 -1.29297 -2.35156 -3.82617 -2.35156 -5.65527c0 -1.81445 1.03613 -4.33398 2.31152 -5.625l11.3105 -11.3096
c1.29297 -1.29199 3.82617 -2.34082 5.6543 -2.34082s4.3623 1.04883 5.65527 2.34082v0c1.28418 1.29199 2.32617 3.81836 2.32617 5.63965c0 1.82227 -1.04199 4.34863 -2.32617 5.64062l-11.2695 11.3096c-1.29395 1.29297 -3.82715 2.3418 -5.65527 2.3418
s-4.3623 -1.04883 -5.65527 -2.3418v0zM60 192c0 -4.41602 3.58398 -8 8 -8h16c4.41602 0 8 3.58398 8 8v0c0 4.41602 -3.58398 8 -8 8h-16c-4.41602 0 -8 -3.58398 -8 -8v0zM100.15 118.79c2.71094 1.13477 4.91211 4.44043 4.91211 7.37988
c0 0.880859 -0.274414 2.25684 -0.612305 3.07031v0c-1.12988 2.72559 -4.44043 4.9375 -7.39062 4.9375c-0.87793 0 -2.24902 -0.272461 -3.05957 -0.607422l-14.75 -6.11035c-2.72754 -1.12891 -4.94141 -4.44043 -4.94141 -7.39258
c0 -0.879883 0.273438 -2.25391 0.611328 -3.06738v0c1.12793 -2.73047 4.44043 -4.94629 7.39453 -4.94629c0.876953 0 2.24512 0.271484 3.05566 0.606445zM104.48 254.79c0.333008 0.80957 0.604492 2.14551 0.604492 3.02051
c0 2.94922 -2.21094 6.25977 -4.93457 7.38965l-14.7803 6.12988c-0.811523 0.335938 -2.18164 0.608398 -3.05957 0.608398c-2.9502 0 -6.26172 -2.21289 -7.39062 -4.93848v0c-0.337891 -0.813477 -0.612305 -2.18848 -0.612305 -3.07031
c0 -2.93848 2.20117 -6.24512 4.91211 -7.37988l14.7803 -6.12012c0.814453 -0.338867 2.19141 -0.614258 3.07422 -0.614258c2.96582 0 6.28418 2.22852 7.40625 4.97461v0zM197.57 30c0.369141 0.845703 0.668945 2.28125 0.668945 3.2041c0 4.41602 -3.58398 8 -8 8
c-3.01367 0 -6.35059 -2.27734 -7.44922 -5.08398l-6.12988 -14.7803c-0.335938 -0.811523 -0.608398 -2.18164 -0.608398 -3.05957c0 -4.41797 3.58594 -8.00293 8.00293 -8.00293c2.95312 0 6.2666 2.21387 7.39551 4.94238zM264 4v16c0 4.41602 -3.58398 8 -8 8v0
c-4.41602 0 -8 -3.58398 -8 -8v-16c0 -4.41602 3.58398 -8 8 -8v0c4.41602 0 8 3.58398 8 8zM331 10.9199c2.72461 1.12988 4.93555 4.44043 4.93555 7.38965c0 0.869141 -0.266602 2.22656 -0.595703 3.03027l-6.12988 14.7803
c-1.12891 2.72559 -4.44043 4.9375 -7.39062 4.9375c-0.87793 0 -2.24805 -0.272461 -3.05957 -0.607422v0c-2.72559 -1.12988 -4.9375 -4.44043 -4.9375 -7.39062c0 -0.87793 0.272461 -2.24902 0.607422 -3.05957l6.11035 -14.75
c1.12891 -2.72754 4.44043 -4.94141 7.39258 -4.94141c0.879883 0 2.25391 0.273438 3.06738 0.611328v0zM394.58 53.4102c1.29297 1.29297 2.35156 3.82617 2.35156 5.65527c0 1.81445 -1.03613 4.33398 -2.31152 5.625l-11.3105 11.3096
c-1.29297 1.29199 -3.82617 2.34082 -5.6543 2.34082s-4.3623 -1.04883 -5.65527 -2.34082v0c-1.28418 -1.29199 -2.32617 -3.81836 -2.32617 -5.63965c0 -1.82227 1.04199 -4.34863 2.32617 -5.64062l11.2695 -11.3096c1.29395 -1.29297 3.82715 -2.3418 5.65527 -2.3418
s4.3623 1.04883 5.65527 2.3418v0zM286.25 161.75l115.41 175.91l-175.91 -115.41l-115.41 -175.91zM437.08 117c0.337891 0.813477 0.612305 2.18848 0.612305 3.07031c0 2.93848 -2.20117 6.24512 -4.91211 7.37988l-14.7803 6.12012
c-0.818359 0.341797 -2.20117 0.620117 -3.08789 0.620117c-2.95215 0 -6.26367 -2.21387 -7.39258 -4.94043v0c-0.334961 -0.810547 -0.607422 -2.18164 -0.607422 -3.05957c0 -2.9502 2.21191 -6.26074 4.9375 -7.39062l14.7803 -6.12988
c0.811523 -0.335938 2.18164 -0.608398 3.05957 -0.608398c2.9502 0 6.26172 2.21289 7.39062 4.93848v0zM444 184c4.41602 0 8 3.58398 8 8v0c0 4.41602 -3.58398 8 -8 8h-16c-4.41602 0 -8 -3.58398 -8 -8v0c0 -4.41602 3.58398 -8 8 -8h16z" />
<glyph glyph-name="chrome" unicode="&#xf268;" horiz-adv-x="496"
d="M131.5 230.5l-76.4004 117.4c47.6006 59.1992 119 91.7998 192 92.0996c42.3008 0.299805 85.5 -10.5 124.801 -33.2002c43.3994 -25.2002 76.3994 -61.3994 97.3994 -103l-205.3 10.7998c-58.0996 3.40039 -113.4 -29.2998 -132.5 -84.0996zM164.4 192
c0 46.2998 37.3994 83.5996 83.5996 83.5996s83.5996 -37.3994 83.5996 -83.5996s-37.3994 -83.5996 -83.5996 -83.5996s-83.5996 37.3994 -83.5996 83.5996zM479.3 281.2c43.5 -111.9 0 -241.9 -107.399 -303.9c-43.4004 -25.2002 -91.3008 -35.3994 -137.801 -32.8994
l112.101 172.399c31.8994 49 31.2998 112.9 -6.60059 157.2zM133.7 144.4c26.2998 -51.7002 81.8994 -83.3008 139.5 -72.5l-63.7002 -124.801c-118.7 18.2002 -209.5 120.9 -209.5 244.9c0 50.0996 14.9004 96.9004 40.4004 135.9z" />
<glyph glyph-name="firefox" unicode="&#xf269;" horiz-adv-x="480"
d="M478.1 212.7c1.30078 -7.10059 1.90039 -14.2998 1.90039 -21.6006v-2.7998c-1.40039 -34 -11.5996 -67 -29.5996 -95.8994c-1 -1.5 -1.80078 -2.90039 -2.7002 -4.30078c2.7002 -7.19922 2.59961 -15.0996 -0.400391 -22.1992
c-5 -19.4004 -16.5996 -36.4004 -32.8994 -48.1006c-10.8008 -8.7002 -22.7002 -16.2002 -35.3008 -22.0996l-1.89941 -0.900391l-1 -0.5c-1.7002 -0.700195 -3.2998 -1.39941 -4.90039 -2.09961c-2.39941 -5.10059 -5.7998 -9.60059 -9.89941 -13.2998
c-2.5 -3.10059 -30.1006 -35 -113.801 -35c-23.5996 0 -47.1992 3.5 -69.7998 10.2998c0.799805 -0.299805 1.60059 -0.700195 2.40039 -1c-2.60059 0.899414 -5.2002 1.7998 -7.7002 2.7002c-19.0996 5.89941 -37.2002 14.5996 -53.7998 25.7998
c-40.7002 24.7002 -72.9004 61.2002 -92.2998 104.7c-14.5 31.3994 -21.1006 65.7998 -19.4004 100.3c-2.7998 -8.2998 -5.2002 -16.7002 -7 -25.2998c0 29.1992 5.5 58.0996 16.2002 85.1992c-5.5 -7.89941 -10.2998 -16.2998 -14.2998 -25.0996
c5.69922 23.0996 14.6992 45.2002 26.7998 65.5996c3.7002 6.10059 7.89941 11.9004 12.7002 17.1006v0.200195c-0.100586 2.69922 0.0996094 5.5 0.5 8.2998c1.5 16.2998 5.69922 32.2002 12.3994 47.0996l0.299805 0.700195c0.100586 0.299805 0 -1 0 -1.7002
s-0.0996094 -1.2998 0 -1c0.600586 2 1.40039 4 2.30078 5.90039c1 2.09961 2.39941 4.09961 3.89941 5.7998c0.100586 0.0996094 0.200195 0.200195 0.299805 0.400391c0.100586 0.199219 -0.399414 -2 -0.5 -3.10059v-0.5c0.600586 1.2002 1.30078 2.40039 2.2002 4.5
c2.10059 5.90039 6 11 11.1006 14.5l0.199219 0.100586c-0.299805 -9 1.2002 -17.9004 4.40039 -26.2002v-0.100586c0.299805 -0.399414 0.5 1.30078 0.900391 1.30078c0.0996094 0 0.199219 -0.100586 0.199219 -0.200195
c0.900391 -1.7998 1.80078 -3.60059 2.7002 -5.2002c1.2998 -2.2002 2.5 -4.2002 3.7002 -6l0.400391 -0.200195l0.199219 0.100586c2.60059 -4.2002 5.90039 -7.80078 9.7002 -10.9004h-0.200195l0.200195 -0.0996094c18.2998 3.59961 37.2002 2 54.6006 -4.7002
l0.0996094 0.0996094c2.09961 2.60059 4.59961 4.90039 7.2998 6.90039c0 -0.900391 -0.0996094 -1.7998 -0.200195 -2.7002c4 5 9.10059 9 15 11.5c-0.399414 -0.700195 -0.5 -1.40039 -0.5 -2.2002c7.40039 4.2998 15.5 7.40039 23.9004 9
c1.09961 0 -3.5 -1.7998 -5.09961 -3.09961c3.69922 1.59961 7.69922 2.59961 11.6992 2.7998c6.60059 0.700195 14 -2.09961 12.6006 -2.7002c-2.7998 -1 -5.5 -2.2002 -8.2002 -3.5c-0.799805 -0.700195 3.2002 0.200195 2.40039 -0.5
c-14 -9.2002 -24.8008 -22.5996 -30.8008 -38.2998v-0.0996094c2.5 -11 11.4004 -19.3008 22.5 -21.1006c31.5 -3 37.5 -5.59961 38.4004 -9.09961v-1.5c-0.0996094 -1 -0.200195 -1.90039 -0.299805 -2.7998c-1.2002 -6.90039 -4.90039 -13.2002 -10.2002 -17.7002
c-1.40039 -1.2998 -2.90039 -2.5 -4.5 -3.5c-1.09961 -0.700195 -6.40039 -2.7998 -12.7998 -5.60059c-7.90039 -3.19922 -15.5 -7.09961 -22.7002 -11.5996c-1.2998 -0.799805 -2.40039 -1.7002 -3.40039 -2.7002c-0.399414 -0.399414 -1.19922 -1.5 -1.19922 -1.5
v-0.0996094c0.5 -1.2002 1 -2.40039 1.19922 -3.7002c-1.39941 1.7002 -2.69922 1.09961 -1.89941 -0.5c0.899414 -2.5 1.2998 -5.2002 1.09961 -7.7998c0.200195 -4.7998 -0.700195 -9.60059 -2.59961 -14c-2.10059 1.5 -4.2998 2.89941 -6.60059 4.09961h-0.199219
c2.5 -1.59961 4.2998 -3.89941 5.39941 -6.59961c0.700195 -2.2002 -0.299805 -2.7002 -0.299805 -2.7002c-1.40039 2 -3.09961 3.59961 -5.2002 4.7002c-3.09961 1.7998 -8.7998 4.7002 -11.3994 5.7998c-0.300781 -0.200195 -0.5 -0.0996094 -0.800781 -0.200195
c0.800781 -1.2998 2.10059 -3.7998 2.10059 -3.7998s-1.7998 1.09961 -4.7998 2.59961c-3.90039 -1.7998 -7.2002 -4.89941 -9.30078 -8.69922c-3.5 -7.7002 -3.09961 -16.7002 1 -24.1006c4 -6 9.10059 -11.2002 15 -15.2002
c0.400391 -0.299805 -3.39941 1.10059 -3.09961 0.800781c4.59961 -3.2002 9.40039 -6.10059 14.4004 -8.60059c1.5 -1 -5 1.2002 -3.40039 0.299805c1.40039 -0.899414 2.7998 -1.69922 4.2998 -2.5c22.9004 -12.0996 38.9004 0.400391 56.4004 2.90039
c16.7998 3 33.7998 -3.59961 44.2002 -17c6 -8.5 -0.600586 -16.7002 -9 -14h-0.200195c-8.60059 2.90039 -19.1006 -4.2998 -36.6006 -14c-17.2998 -8.2998 -36.8994 -10.5996 -55.5996 -6.59961c-4.7998 0.899414 -9.40039 2.09961 -14 3.69922l-2 0.700195
l0.200195 -0.299805c8.7998 -12.2002 19.8994 -22.5 32.7998 -30.2998c8.7002 -4.40039 17.9004 -7.5 27.4004 -9.2998c8 -1.90039 16.1992 -2.80078 24.5 -2.80078c61 -0.0996094 110.6 49.4004 110.6 110.4c0.0996094 15.9004 -3.09961 31.7998 -9.2998 46.5
c20.7002 -12.2998 37.5996 -30.2002 48.7998 -51.5c-13.9004 40.5996 -40.2998 56.4004 -64.7002 76.5996c-19.5996 14.8008 -34.7002 34.9004 -43.3994 57.9004c-25.2002 67.7998 33.0996 132.9 33.0996 132.9s-3.59961 -15.1006 27.4004 -44.3008
c6.39941 -5.89941 16.7998 -14.5 28.8994 -26.6992c1.7002 9.2998 4.2002 18.3994 7.40039 27.2998c2.5 -14.7002 7.7998 -28.7998 15.3994 -41.6006c11.7002 -16.6992 21.9004 -25.5996 30.7002 -40c1.90039 -2.5 3.7998 -5.19922 5.60059 -7.89941
c5.09961 -7.2002 9.5 -14.7998 13.2998 -22.7998c6 -12 10.7998 -24.5 14.5 -37.4004c3 -10.4004 4.89941 -20.9004 5.7998 -31.5996c2.90039 3.89941 4.7002 5.89941 4.7002 5.89941s0.700195 -2.59961 1.39941 -7.09961zM179.1 310.3
c-0.5 -1.2002 -0.899414 -2.2998 -1.2998 -3.5c0.400391 1.2002 0.900391 2.40039 1.2998 3.5z" />
<glyph glyph-name="firefox" unicode="&#xf269;" horiz-adv-x="512"
d="M503.52 206.52c0.240234 -4.43945 0.360352 -9 0.480469 -13.5195c0 -137.19 -111.23 -248.42 -248.32 -248.42c-122.779 0 -224.859 89.2695 -244.779 206.38c-0.360352 3.24023 -0.720703 6.36035 -1.08008 9.59961c-4.91992 42.6006 0.479492 87.3604 16.0801 124.79
c10.7998 25.8809 32.6396 54 49.7998 62.8809c-16.2002 -31.8008 -24.1201 -63 -25.7998 -83.8809c11.2793 37.2002 32.6299 68.3604 62.5098 90.3604c51.2402 37.6699 120.229 39.3604 147.71 15.3604c-51 -17.5107 -106.55 -87.96 -94.3105 -170.511
c1.65137 -11.3535 7.08105 -28.9326 12.1201 -39.2393c-9.51953 25.0801 -10.3594 60.3594 5 83.2793c17.1602 25.5508 41.6299 30.9502 54.71 28.1904c-5.15918 1.08008 -16.5596 -20.75 -18.2393 -24.5898c-3.4502 -7.85645 -6.25098 -21.1953 -6.25098 -29.7754
c0 -0.337891 0.00488281 -0.886719 0.0107422 -1.22461c0.326172 -19.1992 11.7773 -45.6309 25.5596 -59c47.6504 -46.4307 124.561 -28.1602 159 24.8398c23.6406 36.4795 26.5205 98.3896 -3.83984 147.59c-6.29297 9.96582 -18.335 24.6416 -26.8799 32.7598
c-47.6602 45.4707 -116.06 64.6699 -180.24 52.9902c-0.240234 0 -0.599609 -0.120117 -0.839844 -0.120117c-1.7998 -0.359375 -3.47949 -0.719727 -5.16016 -1.08008c-0.359375 -0.120117 -0.839844 -0.120117 -1.2002 -0.239258l-5.87988 -1.44043
c-14.5195 -3.55957 -34.7998 -10.7998 -49.4395 -19.5596c-0.078125 -0.0107422 -0.185547 -0.0654297 -0.240234 -0.120117l0.120117 0.120117c0 -0.0664062 -0.0537109 -0.120117 -0.120117 -0.120117v0l-0.120117 -0.120117l0.120117 0.120117h-0.129883
l0.479492 0.479492c0.480469 0.480469 1.32031 1.16016 2.40039 2.16016c19.6797 17.7598 49.3203 31.9199 82.9102 39c12.417 2.60938 32.792 4.84961 45.4795 5h10.6299c10.5781 -0.25293 27.6016 -2.04492 38 -4c0.960938 -0.120117 1.76074 -0.360352 2.76074 -0.479492
h0.120117c1.7998 -0.360352 3.71973 -0.84082 5.63965 -1.2002c15.9277 -3.61621 40.7598 -12.3799 55.4297 -19.5605c2.40039 -1.2002 4.7998 -2.39941 7.2002 -3.71973c7.16211 -3.56738 18.1826 -10.3408 24.5996 -15.1201
c4.32031 -3.12012 8.48047 -6.36035 12.4805 -9.83984c5.35449 -4.27344 13.5479 -11.7559 18.29 -16.7002c7.01562 -6.8877 17.5479 -18.8223 23.5098 -26.6396c0.959961 -1.2002 1.75977 -2.40039 2.75977 -3.71973c0.400391 -0.480469 0.640625 -0.84082 1 -1.32031
l1.80078 -2.52051c0.359375 -0.479492 0.719727 -1.08008 1.08008 -1.55957c0.479492 -0.719727 1.0791 -1.56055 1.55957 -2.28027c0.365234 -0.473633 0.90332 -1.28027 1.2002 -1.7998l1.43945 -2.12988c0.366211 -0.473633 0.90332 -1.28027 1.2002 -1.7998
c0.480469 -0.720703 0.959961 -1.56055 1.32031 -2.16016c0.359375 -0.600586 0.839844 -1.24023 1.2002 -1.91992c0.359375 -0.680664 0.839844 -1.32031 1.19922 -2c0.360352 -0.680664 0.84082 -1.28027 1.2002 -2c0.367188 -0.53125 0.904297 -1.42676 1.2002 -2
c0.360352 -0.720703 0.839844 -1.56055 1.2002 -2.16016c0.359375 -0.599609 0.719727 -1.32031 1.08008 -1.91992c0.359375 -0.839844 0.799805 -1.67969 1.2002 -2.28027c0.399414 -0.599609 0.639648 -1.2002 1 -1.7998
c0.359375 -0.839844 0.839844 -1.56055 1.19922 -2.40039c0.240234 -0.479492 0.480469 -1.08008 0.720703 -1.55957c0.479492 -0.839844 0.839844 -1.63965 1.31934 -2.63965l0.360352 -0.720703c1.75977 -3.71973 3.44043 -7.55957 5 -11.3994
c0 -0.120117 0.120117 -0.240234 0.120117 -0.360352c0.439453 -1.2002 0.959961 -2.28027 1.43945 -3.48047c0.120117 -0.239258 0.240234 -0.599609 0.360352 -0.839844c0.480469 -1.08008 0.839844 -2.2793 1.32031 -3.35938
c0.117188 -0.269531 0.27832 -0.717773 0.359375 -1c0.360352 -1.08008 0.84082 -2.28027 1.2002 -3.36035l0.360352 -1.08008c0.479492 -1.2002 0.839844 -2.28027 1.2002 -3.47949c0.119141 -0.400391 0.239258 -0.640625 0.359375 -1
c0.360352 -1.08008 0.720703 -2.28027 1.08008 -3.48047c0.120117 -0.240234 0.120117 -0.599609 0.240234 -0.839844c0.360352 -1.2002 0.719727 -2.52051 1.08008 -3.71973c0.120117 -0.120117 0.120117 -0.360352 0.240234 -0.600586l1.08008 -4
c0.119141 -0.120117 0.119141 -0.120117 0.119141 -0.240234c2.98926 -11.1846 6.26855 -29.6201 7.32031 -41.1494v-0.120117l0.360352 -4.67969v-0.120117c0 -1.56055 0.120117 -3.12012 0.239258 -4.68066z" />
<glyph glyph-name="opera" unicode="&#xf26a;" horiz-adv-x="496"
d="M313.9 415.3c-170.2 0 -252.601 -223.8 -147.5 -355.1c36.5 -45.4004 88.5996 -75.6006 147.5 -75.6006c36.2998 0 70.2998 11.1006 99.3994 30.4004c-43.7998 -39.2002 -101.899 -63 -165.3 -63c-3.90039 0 -8 0 -11.9004 0.299805
c-131.5 6.10059 -236.1 114.601 -236.1 247.7c0 137 111 248 248 248h0.799805c63.1006 -0.299805 120.7 -24.0996 164.4 -63.0996c-29 19.3994 -63.1006 30.3994 -99.2998 30.3994zM415.7 17.5996c-40.9004 -24.6992 -90.7002 -23.5996 -132 5.80078
@ -879,9 +878,14 @@ c9.69922 9.7002 22.8994 15.9004 37.8994 15.9004zM129.4 139.1c0 -21.5996 17.6992
c4 3.5 4 9.7002 -0.100586 13.7002c-3.5 3.5 -9.69922 3.5 -13.1992 0c-29 -29 -121.2 -28.5 -149 0c-3.5 3.5 -9.7002 3.5 -13.2002 0c-4 -4 -4 -10.2002 0 -13.7002c36.3994 -36.3994 139.1 -36.3994 175.5 0zM342.9 99.7998c22 0 39.5996 17.7002 39.6992 39.2002
c0 22.0996 -17.6992 39.7002 -39.6992 39.7002c-21.6006 0 -39.2002 -17.7002 -39.2002 -39.7002c0 -21.5996 17.5996 -39.2002 39.2002 -39.2002z" />
<glyph glyph-name="edge" unicode="&#xf282;" horiz-adv-x="512"
d="M25.7139 219.837c0.111328 0.162109 0.230469 0.323242 0.341797 0.485352c-0.0205078 -0.162109 -0.0449219 -0.323242 -0.0644531 -0.485352h-0.277344zM486.286 204.329l0.000976562 -52.0645h-314.073c1.38379 -128.497 191.392 -124.065 272.255 -67.5713v-104.404
c-47.3555 -28.5244 -156.774 -53.1709 -240.132 -21.3242c-70.6191 27.1406 -119.913 100.528 -120.743 171.977c-1.10742 92.2188 45.6943 153.422 120.742 188.314c-15.7852 -19.9395 -27.9697 -41.54 -34.3389 -78.9258h175.853
c10.2471 104.957 -99.4189 104.957 -99.4189 104.957c-103.302 -3.58984 -177.945 -63.6543 -220.375 -124.966c14.5615 114.465 92.9062 219.955 232.837 219.678c85.0195 0 157.605 -39.8779 198.593 -113.265c21.0469 -37.9404 28.8008 -78.373 28.8008 -122.405z" />
d="M481.92 313.52c6.46973 -12.7793 22.4697 -41.6494 21.9697 -85.0791c-0.0791016 -37.5908 -26.4893 -83.4844 -58.9492 -102.44c-14.957 -8.88379 -41.2148 -16.1318 -58.6104 -16.1797c-0.139648 0 -52.6504 -2.56055 -80.5098 16.8096
c-5.85059 4.08008 -9.14062 8.94043 -9.14062 14c0 6.16016 4.82031 9 6.39062 11c9.7998 12.75 15.1094 28.1699 15.1094 38.5703c0 32.71 -11 59.2998 -33 83.0996c-1.16016 1.25 -42.9795 50.1807 -122.25 50.1807c-63.2393 0 -123.46 -32.6504 -149.46 -79.1406
c24.04 111.98 123.58 195.66 242.44 195.66c96.3496 0 184.96 -46.1797 226.01 -126.48zM212.77 -27.6699c1.28027 -0.570312 29.0107 -20.5898 67.1309 -27.21c-6.53809 -0.628906 -17.1748 -1.13965 -23.7422 -1.13965c-87.0234 0 -187.626 63.9521 -224.559 142.75
c-25.75 55.4697 -24.0801 105.96 -23 118.27c4.16992 34.2803 27.0801 59.7002 46.8408 74.7998c29.6299 22.6904 68.8193 35.6904 107.529 35.6904c7.0498 0 43.9199 -0.900391 77.6406 -18.5898c32.5596 -17.1006 47.3193 -37.5801 56.5596 -53.5107
c1.54688 -2.70312 3.73828 -7.24609 4.88965 -10.1396c-4.21973 4.65039 -40.0596 44.2002 -99.0596 -1c-22.9014 -16.6006 -48.4238 -51.957 -56.9697 -78.9199c-14.1406 -40.4004 -12.8398 -88.5801 20.0996 -136c10.2158 -15.1748 31.1104 -35.334 46.6396 -45z
M463.49 70.6602c1.99316 -1.25879 3.6123 -4.19531 3.6123 -6.55273c0 -1.25195 -0.547852 -3.12305 -1.22266 -4.17773c-47.5703 -75.4297 -127.86 -108.87 -163 -108.87c-22.7002 0 -48.1299 6.95996 -71.7002 19.6104c-33 17.6699 -49.4893 38.7598 -56 47.6699
c-46.3301 63.5303 -28.25 122.29 -13.3301 151.66c8.06445 15.8418 25.4287 38.2422 38.7607 50c-3.50684 -6.9668 -6.42773 -18.9512 -6.52051 -26.75c0 -80.9404 79.8506 -144 171.521 -144h0.341797c19.7266 0 50.7314 5.6084 69.208 12.5195
c5.78809 2.16992 14.9316 6.25586 20.4102 9.12012c0.969727 0.539062 2.65723 0.975586 3.76562 0.975586c1.24316 0 3.10449 -0.540039 4.1543 -1.20508z" />
<glyph glyph-name="codiepie" unicode="&#xf284;" horiz-adv-x="472"
d="M422.5 245.1c30.7002 0 33.5 -53.0996 -0.299805 -53.0996h-10.7998v-44.2998h-26.6006v97.3994h37.7002zM472 95.4004c-42.0996 -91.9004 -121.6 -151.4 -224 -151.4c-137 0 -248 111 -248 248s111 248 248 248c97.4004 0 172.8 -53.7002 218.2 -138.4l-186 -108.8z
M433.5 82.9004l-60.2998 30.6992c-27.1006 -44.2998 -70.4004 -71.3994 -122.4 -71.3994c-82.5 0 -149.2 66.7002 -149.2 148.899c0 82.5 66.7002 149.2 149.2 149.2c48.4004 0 88.9004 -23.5 116.9 -63.3994l59.5 34.5996c-40.7002 62.5996 -104.7 100 -179.2 100
@ -993,9 +997,11 @@ c-4.5 0 -9.7998 1.39941 -15.7002 4.2002c-7.5 3.5 -20.2998 -1.80078 -21.9004 -10.
c-0.0996094 -0.0996094 -0.200195 -0.199219 -0.200195 -0.299805c-0.899414 -2 -21.7002 -49.5 -68 -57.0996c-3.59961 -0.600586 -6.09961 -3.7998 -5.89941 -7.40039c0.699219 -13.8994 31.6992 -19.2998 45.5 -21.3994c1.39941 -1.90039 2.5 -9.90039 4.2998 -16
c0.799805 -2.7002 2.89941 -6 8.2998 -6s13.2998 3.09961 25.7998 3.09961c17.6006 0 23.6006 -4 37.4004 -13.7002c9.89941 -7 27.5 -19.7998 48.5 -18.2002c20.7998 -0.899414 34.7002 7.90039 49.2002 18.2002c13.6992 9.7002 19.7998 13.7002 37.3994 13.7002
c13 0 19.6006 -2.90039 25.7998 -2.90039h0.200195c4.40039 0 7 2.2002 8.10059 5.90039c1.7998 6.09961 2.89941 14 4.2998 15.9004c26.7002 4.19922 41.2998 10.0996 44.7998 18.1992z" />
<glyph glyph-name="pied-piper" unicode="&#xf2ae;"
d="M32 29l-32 -60.2002l0.799805 328c0 65.9004 53.2002 119.2 119.2 119.2h327.2c-93 -28.9004 -189.9 -94.2002 -253.9 -168.6c-70.5996 -81.4004 -110.7 -137.4 -161.3 -218.4zM448 416c0 0 0 -328.8 0.0996094 -328.8c0 -65.9004 -53.2998 -119.2 -119.3 -119.2
h-328.399c18.5 25.5 61.6992 54 84.8994 66c35.5 18.0996 76.4004 28.5 105.3 56.2998c42.1006 40.5 47.8008 105 71 158.601c43.6006 100.3 186.4 167.1 186.4 167.1z" />
<glyph glyph-name="pied-piper" unicode="&#xf2ae;" horiz-adv-x="480"
d="M455.93 424.8c9.41992 2.40039 15.0703 -10.25 6.99023 -15.6797c-98.2295 -65.9199 -120.439 -127.561 -126.229 -160.18c-33.5205 -188.881 -101.37 -119.32 -184.311 -226.65c22.4619 -12.916 61.7197 -23.3984 87.6299 -23.4004
c97.6504 0 177.09 79.4502 177.09 177.11c-0.00390625 37.1318 -20.0967 89.7314 -44.8496 117.41c3.90332 8.05176 11.5186 20.3271 17 27.3994c32.4297 -33.3115 58.75 -98.0781 58.75 -144.569v-0.240234c0 -114.87 -93.1299 -208 -208 -208s-208 93.1201 -208 208
s93.1299 208 208 208c29.9082 -0.000976562 75.3125 -11.9443 101.35 -26.6602c46.4404 38.9697 87.8809 60.6602 114.58 67.46zM125 41.5996c64.7695 140.881 125.64 231.641 191.63 293.75c-19.9951 9.79883 -54.2959 17.75 -76.5635 17.75h-0.0664062
c-97.6504 0 -177.1 -79.4395 -177.1 -177.1c0.0195312 -45.0049 27.8408 -105.216 62.0996 -134.4z" />
<glyph glyph-name="first-order" unicode="&#xf2b0;"
d="M12.9004 218.8c0.0996094 0.100586 0.199219 0.299805 0.299805 0.400391c0 -0.100586 0 -0.299805 -0.100586 -0.400391h-0.199219zM224 351.4c7.40039 0 14.5996 -0.5 21.7002 -1.7002l-4 -67.7002l22.2998 64.2998c14.2998 -3.7998 27.7002 -9.5 40 -16.8994
l-29.4004 -61.1006l45.1006 50.9004c11.5 -8.90039 21.7002 -19.2002 30.5996 -30.9004l-50.5996 -45.3994l60.8994 29.6992c7.5 -12.2998 12.9004 -26 16.6006 -40.2998l-64 -22.2998l67.7002 4c1.09961 -7.09961 1.39941 -14.5996 1.39941 -22
@ -1027,10 +1033,10 @@ c-96.5703 0 -160.57 84.5723 -160.57 176.572c0 16.8574 2 33.4287 6 49.7139c-20 -3
c5.42871 8.57129 14.5703 14.2861 24.8574 14.2861c10 0 19.4277 -5.71387 24.5713 -14.2861c5.42871 8.57129 14.8564 14.2861 24.8574 14.2861c10 0 19.4287 -5.71387 24.8574 -14.2861c5.14258 8.57129 14.5713 14.2861 24.5723 14.2861
c10.8564 0 20.8564 -6.57227 25.7139 -16c43.4268 36.2861 68.5693 92 71.4258 148.286zM432.286 261.714c0 53.7139 -34.5713 105.714 -92.5723 105.714c-30.2852 0 -58.5713 -15.1426 -78.8564 -36.8564c-19.9951 -66.3828 -27.4473 -136.571 41.4287 -136.571
c28.8047 0 97.3564 28.5381 84.2861 -36.8574c28.8564 26 45.7139 65.7148 45.7139 104.571z" />
<glyph glyph-name="google-plus" unicode="&#xf2b3;" horiz-adv-x="496"
d="M248 440c136.9 0 248 -111.1 248 -248s-111.1 -248 -248 -248s-248 111.1 -248 248s111.1 248 248 248zM177.3 68c71.2998 0 118.8 50.4004 118.8 121.2c0 7.09961 -0.599609 13.8994 -1.89941 20.7002h-116.9v-42.6006h70.1006
c-5.2002 -34.2002 -37.5 -53.2998 -70.1006 -53.2998c-43 0 -77.2002 35.5 -77.2002 78.0996c0 42.6006 34.3008 78.1006 77.2002 78.1006c18.1006 0 36.2002 -6.2002 49.4004 -19.1006l33.5996 32.6006c-22.8994 21.2998 -51.7002 32.2998 -83 32.2998
c-68.7998 0 -124 -55.5 -124 -124s55.2002 -124 124 -124zM407.5 174.2h35.2002v35.5h-35.2002v35.5h-35.5v-35.5h-35.5v-35.5h35.5v-35.5h35.5v35.5z" />
<glyph glyph-name="google-plus" unicode="&#xf2b3;" horiz-adv-x="512"
d="M256 440c136.9 0 248 -111.1 248 -248s-111.1 -248 -248 -248s-248 111.1 -248 248s111.1 248 248 248zM185.3 68c71.2998 0 118.8 50.4004 118.8 121.2c0.000976562 0.114258 0.000976562 0.299805 0.000976562 0.414062c0 5.64746 -0.851562 14.7363 -1.90039 20.2861
h-116.9v-42.6006h70.1006c-5.2002 -34.2002 -37.5 -53.2998 -70.1006 -53.2998c-43 0 -77.2002 35.5 -77.2002 78.0996c0 42.6006 34.3008 78.1006 77.2002 78.1006c18.1006 0 36.2002 -6.2002 49.4004 -19.1006l33.5996 32.6006
c-22.8994 21.2998 -51.7002 32.2998 -83 32.2998c-68.4482 0 -124 -55.5518 -124 -124s55.5518 -124 124 -124zM415.5 174.2h35.2002v35.5h-35.2002v35.5h-35.5v-35.5h-35.5v-35.5h35.5v-35.5h35.5v35.5z" />
<glyph glyph-name="font-awesome" unicode="&#xf2b4;"
d="M397.8 416c27.5 0 50.2002 -22.7002 50.2002 -50.2002v-347.6c0 -27.5 -22.7002 -50.2002 -50.2002 -50.2002h-347.6c-27.5 0 -50.2002 22.7002 -50.2002 50.2002v347.6c0 27.5 22.7002 50.2002 50.2002 50.2002h347.6zM352.4 131.7h0.0996094v140.3
c0 4.2002 -4.2002 7.7998 -9 7.7998c-6 0 -31.0996 -16.0996 -53.7998 -16.0996c-4.7002 0 -8.90039 0.599609 -13.1006 2.39941c-20.2998 7.7002 -38.1992 13.7002 -60.8994 13.7002c-20.9004 0 -43 -6.5 -61.5 -14.2998
@ -1052,20 +1058,19 @@ d="M440.5 61.2998c1.7998 -18 -7.2002 -93.2998 -89 -93.2998c-49.5 0 -75.5 28.7002
c14.2002 -21.5996 29 -35.7998 49.5 -35.7998c22.5 0 31.5 17.2998 33 30.7998h29.2998zM297 118.8c11.2998 24.9004 16.7998 58.7002 16.7002 100.5c0 104.2 -32.5 157.7 -108.7 157.7c-75 0 -107.5 -53.5 -107.5 -157.9c0 -103.699 32.5 -156.699 107.5 -156.699
c12 0 22.7002 1.19922 32.7002 4.19922c-15.5 30.5 -33.7002 61.3008 -69.2002 61.3008c-6.7998 0 -13.5996 -1 -19.7998 -4l-12.2002 24.2998c14.7002 12.7998 38.5 22.7998 69 22.7998c47.7998 0 72 -23 91.5 -52.2002z" />
<glyph glyph-name="free-code-camp" unicode="&#xf2c5;" horiz-adv-x="576"
d="M69.2998 303.5c-41 -68.5 -36.3994 -163 1 -227c22.2002 -38.2002 49.7002 -52.4004 49.7002 -66.5c0 -6.7998 -6 -13 -12.7998 -13c-19.5 0 -99.2002 75.5 -99.2002 197.8c0 111.5 78 186 97.0996 186c6 0 14.9004 -4.7998 14.9004 -11.0996
c0 -12.7002 -28.2998 -28.6006 -50.7002 -66.2002zM265.1 89.7002c-37.1992 13.5996 -65.5 45.8994 -65.2998 86.2002c0 48 57.7002 90.0996 57.7002 136.199c0 16.8008 -10.4004 32.6006 -19.5996 38.2002c-1.90039 1 -4.60059 2.7002 -4.60059 5.10059
c0 9.59961 26.1006 2.7998 36.5 -2.2002c33.6006 -15.9004 40.6006 -40.2998 46.4004 -74.1006c1.39941 -7.89941 4.2998 -33.2998 15.8994 -33.2998c7.5 0 12.3008 5.10059 12.3008 12.2998c0 12.6006 -15.4004 31.2002 -7.2002 31.2002
c6.09961 0 18.5996 -12.7998 22.5 -16.8994c23.3994 -24.9004 32.0996 -49 32.0996 -82.6006c0 -42.2002 -23.3994 -74.7002 -53.0996 -89.7998c-9.2002 -5.7998 -12.1006 0.900391 -12.1006 1.90039c0 7 29.5 23.5996 29.5 56c0 10.5996 -2.69922 22.5 -8.5 31.3994
c-1.69922 2.40039 -7.69922 10.1006 -11.0996 10.1006c-0.700195 0 -0.700195 -0.5 -0.700195 -1.2002c0 -5.7998 3.60059 -11.4004 3.60059 -17.4004c0 -13 -31.9004 -20.2002 -31.9004 6.7998c0 7.10059 0.700195 14.3008 0.700195 21.3008
c0 5.09961 -0.200195 6.5 -2.40039 11.0996c-3.39941 6.5 -14.5 19.7998 -22.5 19.7998c-2.2002 0 -2.89941 0 -2.89941 -2.2002c0 -3.39941 7.69922 -7 7.69922 -19.2998c0 -32.0996 -44.1992 -37.8994 -44.1992 -70c0 -14.3994 1.89941 -26.5 10.0996 -38.5996
c5.09961 -7.5 10.5996 -11.7998 19.0996 -15.2002c2.10059 -0.700195 4.30078 -0.900391 4.30078 -3.59961c0 -6.40039 -7.80078 -3 -12.3008 -1.2002zM470.4 381c21.3994 0 97.5996 -78.9004 97.5 -198.2c0 -104.899 -73.4004 -185.7 -98.8008 -185.7
c-5 0 -13.1992 6.30078 -13.1992 11.4004c0 8.2002 28.2998 34.5996 35.2998 43.5c61 76.7002 64 205.9 -17.6006 291c-5.5 5.7998 -17.5996 16.7002 -17.5996 25.4004c0 6.09961 8.40039 12.5996 14.4004 12.5996zM428.1 57.9004c8.40039 0 11.9004 -7 11.9004 -15.5
c0 -8.90039 -2.5 -16.4004 -11.9004 -16.4004h-261.1c-8.5 0 -15.5 7 -15.5 15.5c0 8.90039 6.09961 16.4004 15.5 16.4004h261.1z" />
d="M97.2197 351.79c-43.2197 -41.6201 -64.9697 -92.5898 -64.8193 -154.021c0.15918 -68 23.0293 -122.67 67.4795 -165c9.33984 -8.34961 13.2002 -14.9199 13.2002 -20.5498c0 -2.75 -1.90039 -5.62012 -3.81055 -8.37988
c-1.92676 -1.89453 -5.67676 -3.61426 -8.36914 -3.83984c-10.2803 0 -24.6807 12.1396 -43.4707 35.79c-36.5898 44.8701 -53.1992 94.3398 -54.0596 161.87s20.3096 113.34 61.79 160.6c14.9199 16.9004 27.3594 25.6904 35.8398 25.6904
c2.56152 -0.0585938 6.32031 -1.33105 8.38965 -2.83984c1.91016 -1.91016 3.83008 -4.66016 3.83008 -7.41992c0 -4.78027 -5.63965 -11.25 -16 -21.9004zM239.47 27.9297c0.580078 -0.370117 0.910156 -0.549805 0.910156 -0.549805zM333.26 27.3799l0.169922 0.129883
c-0.189453 -0.129883 -0.259766 -0.179688 -0.169922 -0.129883zM336.39 185.56c16.2305 -4.14941 24.04 24.04 30.0303 30.0508c84.71 -110.101 -27.5098 -184.45 -33 -188.101c3.86035 3.04004 44.3301 49.7705 21.5801 76.5498
c-1 1.03027 -67.2998 -20.0596 -54.8398 53.54c8.30957 48.6807 -7.60059 71.1309 -7.60059 71.1309c-17.9697 -37.29 -32.5 -53.8604 -43.5 -72.1602c-56.9492 -92.9404 -16.2793 -124.29 -9.5498 -128.641c-10.54 6.5 -108.27 70.8799 -34 175.23
c78.3701 110.189 62.8301 159.57 62.8301 159.57c118.46 -94.2803 51.8105 -173.021 68.0498 -177.171zM510.88 358.31c41.4404 -47.3096 62.6699 -93.1592 61.75 -160.649s-17.4697 -117.021 -54.0596 -161.87c-18.79 -23.6602 -33.1904 -35.79 -43.4707 -35.79
c-2.69238 0.231445 -6.44141 1.95605 -8.36914 3.84961c-1.91016 2.76074 -3.81055 5.63086 -3.81055 8.38086c0.0205078 5.62988 3.86035 12.1992 13.2002 20.5498c44.4795 42.3701 67.3203 97 67.4795 165c0.180664 61.4697 -21.5898 112.45 -64.8193 154.06
c-10.4004 10.6406 -16 17.1201 -16 21.9004c0 2.75977 1.91992 5.50977 3.83008 7.41992c2.06934 1.50977 5.82812 2.78125 8.38965 2.83984c8.51953 0 21 -8.79004 35.8799 -25.6904z" />
<glyph glyph-name="telegram" unicode="&#xf2c6;" horiz-adv-x="496"
d="M248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM369.8 270.1c3.60059 16.8008 -6.09961 23.5 -17.2002 19.5l-239.1 -92.1992c-16.4004 -6.40039 -16.0996 -15.5 -2.7998 -19.7002l61.2002 -19.1006l142 89.4004
c6.59961 4.40039 12.6992 1.90039 7.69922 -2.5l-114.899 -103.8l-4.40039 -63.1006c6.40039 0 9.2002 2.80078 12.5 6.10059l29.9004 28.7998l62 -45.7002c11.2998 -6.39941 19.3994 -3.09961 22.3994 10.5z" />
<glyph glyph-name="bandcamp" unicode="&#xf2d5;" horiz-adv-x="496"
d="M248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM296.2 113.9l84.7002 156.1h-181l-84.7002 -156.1h181z" />
<glyph glyph-name="bandcamp" unicode="&#xf2d5;" horiz-adv-x="512"
d="M256 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM304.2 113.9l84.7002 156.1h-181l-84.7002 -156.1h181z" />
<glyph glyph-name="grav" unicode="&#xf2d6;" horiz-adv-x="512"
d="M301.1 236c4.40039 -4.40039 4.40039 -11.9004 0 -16.2998l-9.69922 -9.7002c-4.40039 -4.7002 -11.9004 -4.7002 -16.6006 0l-10.5 10.5c-4.39941 4.7002 -4.39941 11.9004 0 16.5996l9.7002 9.7002c4.40039 4.40039 11.9004 4.40039 16.5996 0zM270.9 255.7
c-2.7002 -2.7998 -7.40039 -2.7998 -10.5 0c-2.80078 3 -2.80078 7.7002 0 10.5c3 3 7.69922 3 10.5 0c3 -2.7002 3 -7.5 0 -10.5zM244.9 250.4c2.7998 3 7.5 3 10.5 0c2.7998 -2.7002 2.7998 -7.40039 0 -10.2002c-3 -3 -7.7002 -3 -10.5 0c-3 2.7002 -3 7.39941 0 10.2002
@ -3492,5 +3497,137 @@ l1.7002 8.78027c0.0078125 0.105469 0.0146484 0.27832 0.0146484 0.384766s-0.00683
c-0.540039 -2.03027 -0.820312 -3.57031 -1.82031 -8.4502c-1.83008 -9.41992 -3.52051 -18.6094 -5.40039 -32c-1.63184 -12.0586 -3.24414 -31.7168 -3.59961 -43.8799c-0.290039 -4.2334 -0.525391 -11.1123 -0.525391 -15.3545
c0 -4.24316 0.235352 -11.1221 0.525391 -15.3555c0.766602 -27.0928 5.43359 -48.7598 14 -65c8.57324 -16.2061 23.0801 -27.873 43.5195 -35c20.4404 -7.12695 48.9209 -10.6172 85.4414 -10.4697h4.59961c36.5605 -0.15332 65.0439 3.33691 85.4502 10.4707
c20.4336 7.12012 34.9365 18.7871 43.5098 35.001s13.2402 37.8809 14 65.001z" />
<glyph glyph-name="firefox-browser" unicode="&#xf907;" horiz-adv-x="512"
d="M130.63 324.51c0.160156 -0.00976562 0.0800781 -0.00976562 0 0zM482.05 279.16c15.2803 -36.7598 20.6709 -80.748 15.8213 -122.578c-0.370117 -3.15039 -0.700195 -6.29004 -1.11035 -9.41016c-19.6094 -115.04 -119.79 -202.62 -240.43 -202.62
c-134.71 0 -243.92 109.19 -243.92 243.891v1.23926c0.149414 2.70996 0.30957 5.41016 0.490234 8.12012c0.0498047 0.240234 0.0498047 0.480469 0.0498047 0.719727c0.439453 6.29004 0.870117 10.3105 1.43945 14c0.240234 1.91309 0.5 3.82617 0.780273 5.73926
c1.66992 12.2705 3.94043 22.21 4 22.4805c4.9502 22.2051 19.6123 55.3125 32.7305 73.8994v0c5.65527 8.06738 15.8564 20.3115 22.7695 27.3301c6.08203 6.21973 16.7627 15.3721 23.8398 20.4307c0.930664 0.629883 8.03027 4.83984 8.15039 4.30957
c-0.570312 -8.42969 -1.24023 -48.8301 8.42969 -61.0801h0.120117c14.1602 15.9199 33.6504 33.96 58.71 45.3701c-2.02344 -7.75098 -3.66504 -20.543 -3.66504 -28.5537c0 -8.74512 1.95117 -22.668 4.35547 -31.0762
c1.81641 -1.21777 4.64258 -3.35449 6.30957 -4.77051c3.71973 -3.14941 7.91992 -7.34961 16.7705 -16.0596c16.5498 -16.3096 59 -33.1797 59.0898 -35.1797c-0.400391 -6.08008 -21.8301 -27 -29.3301 -27c-69.3701 0 -80.6201 -41.9502 -80.6201 -41.9502
c3.07031 -35.3301 27.6699 -64.4102 57.5098 -79.75c1.36035 -0.730469 2.74023 -1.37012 4.12012 -2c2.36035 -1.04004 4.74023 -2.02051 7.16016 -2.92969c8.50586 -3.00977 22.7246 -5.75195 31.7402 -6.12012c121.569 -5.7002 145.13 145.34 57.3896 189.199
c22.4697 3.91016 45.8203 -5.12988 58.8203 -14.2793c-8.68652 15.1641 -27.7988 34.9346 -42.6602 44.1299c-0.993164 0.620117 -1.99316 1.21973 -3 1.7998c-1.55957 0.913086 -3.13965 1.79004 -4.74023 2.62988c-0.75 0.390625 -1.5 0.759766 -2.25 1.12988
c-1.65332 0.813477 -3.32031 1.59668 -5.00098 2.34961c-1.07031 0.469727 -2.16016 0.910156 -3.25 1.34961c-1.33984 0.580078 -2.68945 1.08008 -4.0498 1.58008c-1.86035 0.669922 -3.73047 1.2998 -5.62012 1.87012c-0.679688 0.209961 -1.33008 0.429688 -2 0.629883
c-9.20996 2.66309 -24.4668 4.82422 -34.0537 4.82422c-0.275391 0 -0.72168 -0.00195312 -0.996094 -0.00390625c-2 -0.0205078 -4 -0.100586 -6 -0.220703l-1.41992 -0.0996094c-12.1934 -0.852539 -31.0586 -5.78027 -42.1104 -11l-0.519531 -0.209961
c-0.536133 -0.18457 -1.43066 -0.334961 -1.99805 -0.334961c-2.40918 0 -5.00391 1.84863 -5.79199 4.125c-0.210938 0.575195 -0.381836 1.53906 -0.381836 2.15137c0 2.13965 1.55469 4.64746 3.47168 5.59863c12.6738 6.01074 34.3252 11.5342 48.3301 12.3301
c5.7793 35.3994 28.2695 91.0098 82.5 122.78l-0.100586 -0.140625l0.180664 0.100586l0.120117 0.0693359c0.0615234 0.0166016 0.165039 0.0302734 0.229492 0.0302734s0.167969 -0.0136719 0.230469 -0.0302734c0.303711 -0.0380859 0.550781 -0.318359 0.550781 -0.625
c0 -0.00976562 -0.000976562 -0.0253906 -0.000976562 -0.0351562c0.698242 -2.77051 2.3291 -7.08008 3.63965 -9.61914c0.830078 -1.70996 1.69043 -3.40039 2.69043 -5.05078c1.87988 -3.21973 3.80957 -6.2793 5.73926 -9.33008
c38.2002 -60.3594 84.9707 -88.0791 112.551 -156.829c-0.0507812 0.269531 -0.0507812 0.40918 -0.0507812 0.40918c-3.0293 20.1201 -10.9795 47.1104 -24.6992 74c16.8594 -8.72949 38.3301 -36.2295 48.9395 -61.7295z" />
<glyph glyph-name="ideal" unicode="&#xf913;" horiz-adv-x="576"
d="M125.61 282.52c27.0693 -0.0107422 49.0488 -21.9893 49.0596 -49.0596v-0.00976562c0 -27.0869 -21.9834 -49.0703 -49.0703 -49.0703c-27.0859 0 -49.0693 21.9834 -49.0693 49.0703s21.9834 49.0693 49.0693 49.0693h0.0107422zM86.1504 22.1602v140.52h78.9395
v-140.52h-78.9395zM237.61 233.76c0 -20.4502 -8.99023 -23.2598 -18.7402 -23.2598h-14.0498v45.79h14.0498c8.74023 0 18.7402 -2.53027 18.7402 -22.5303zM439.3 187.76h57.0898c-1.7793 -98.4795 -52.1094 -165.64 -196.72 -165.64h-94.8301v165.62h14
c25.9805 0 41.5 17.1895 41.5 46c0 27.9102 -15.8994 45.2598 -41.5 45.2598h-14v82.8096h94.8301c88.9404 0 186.83 -26.8896 196.07 -151.31h-33.6904v68.5703h-22.75v-91.3105zM329.55 187.76l-0.0400391 22.7402h-33.5098v12.5h30v22.6904h-30v10.5791h31.7305v22.7305
h-54.4307v-91.2402h56.25zM404.21 187.76l23.6699 -0.0195312l-27.5303 91.3398h-32.3496l-27.5303 -91.3203h23.6602l5.17969 17.6699h29.7402zM299.65 416c218.35 0 250.97 -140 251 -223.48c0 -144.789 -89.1504 -224.52 -251 -224.52h-267.65v448h267.65z
M299.65 -10.9199c148.899 0 229.899 69.3496 229.899 203.439c0 137.801 -87.7998 202.41 -229.899 202.41h-246.58v-405.85h246.58zM383.51 253.93h1.37012l7.52051 -25.8096h-16.4004z" />
<glyph glyph-name="microblog" unicode="&#xf91a;"
d="M399.36 85.7695l0.149414 0.0605469c-12.0234 -13.6182 -21.7812 -39.4141 -21.7812 -57.5811c0 -16.3584 8.10547 -40.1514 18.0918 -53.1094c0.521484 -0.658203 0.944336 -1.87402 0.944336 -2.71387c0 -0.25293 -0.0419922 -0.658203 -0.0947266 -0.90625
c-0.40332 -1.94336 -2.34277 -3.52051 -4.32715 -3.52051c-0.249023 0 -0.649414 0.0410156 -0.892578 0.0908203c-32.2803 7.17969 -61.3105 24.8301 -79.8906 49.9199c-1.18652 1.62598 -3.78516 2.94629 -5.79785 2.94629
c-0.658203 0 -1.69824 -0.172852 -2.32129 -0.385742c-21.1924 -7.41895 -56.6133 -13.4404 -79.0654 -13.4404h-0.375c-122.86 0 -222.46 91.4805 -222.46 204.43c0 112.95 99.5996 204.44 222.46 204.44s222.46 -91.4902 222.46 -204.44
c0 -47.4492 -17.6104 -91.0996 -47.0996 -125.79zM329.52 235.6c1.4209 1.07617 2.57422 3.36816 2.57422 5.15039c0 3.5625 -2.8916 6.47461 -6.4541 6.5l-71.8799 1.50977l-23.6602 67.9199c-0.836914 2.41113 -3.58789 4.36719 -6.13965 4.36719
s-5.30273 -1.95605 -6.13965 -4.36719l-23.6602 -67.9199l-71.8799 -1.50977c-3.51953 -0.0673828 -6.375 -2.97949 -6.375 -6.49902c0 -1.7832 1.15332 -4.10449 2.5752 -5.18066l57.2998 -43.4902l-20.79 -68.8604
c-0.152344 -0.505859 -0.276367 -1.3457 -0.276367 -1.87402c0 -3.59375 2.91699 -6.51074 6.51074 -6.51074c1.12598 0 2.79102 0.522461 3.71582 1.16504l59.0596 41.0801l59.0596 -41.0498c0.925781 -0.646484 2.59277 -1.1709 3.72168 -1.1709
c3.58789 0 6.5 2.91211 6.5 6.5c0 0.533203 -0.125977 1.38086 -0.28125 1.89062l-20.7803 68.8604z" />
<glyph glyph-name="pied-piper-square" unicode="&#xf91e;"
d="M32 29l-32 -60.2002l0.799805 328c0 65.9004 53.2002 119.2 119.2 119.2h327.2c-93 -28.9004 -189.9 -94.2002 -253.9 -168.6c-70.5996 -81.4004 -110.7 -137.4 -161.3 -218.4zM448 416c0 0 0 -328.8 0.0996094 -328.8c0 -65.9004 -53.2998 -119.2 -119.3 -119.2
h-328.399c18.5 25.5 61.6992 54 84.8994 66c35.5 18.0996 76.4004 28.5 105.3 56.2998c42.1006 40.5 47.8008 105 71 158.601c43.6006 100.3 186.4 167.1 186.4 167.1z" />
<glyph glyph-name="unity" unicode="&#xf949;" horiz-adv-x="576"
d="M498.11 241.6l-30 -49.5996l30 -49.6299l-52.8008 -191.62l-197.079 51.3604l-29.2402 50l-59.1699 -0.430664l-144.28 140.32l144.26 140.29l59.2002 -0.429688l29.2002 50.0596l197.109 51.3604zM223.77 323.8l-108.899 -108.13h173.13l86.5498 145.82zM223.77 60.1699
l150.78 -37.6895l-86.5498 145.81h-173.13zM416.77 46.1699l41.79 145.83l-41.8096 145.84l-86.5801 -145.84z" />
<glyph glyph-name="dailymotion" unicode="&#xf952;"
d="M298.93 181c6.01074 -3.36719 13.6152 -10.9834 16.9727 -17c3.36719 -5.95801 6.10059 -16.3477 6.10059 -23.1914c0 -0.0771484 -0.000976562 -0.202148 -0.000976562 -0.27832c-0.0332031 -13.6602 -4.58691 -25.084 -13.6602 -34.2705
s-20.4434 -13.7793 -34.1104 -13.7793c-13.4336 0 -24.5771 4.47949 -33.4307 13.4395s-13.2803 20.4932 -13.2803 34.5996c0 13.4336 4.53711 24.5742 13.6104 33.4209s20.2197 13.2695 33.4395 13.2695c0.174805 0.00195312 0.458984 0.00390625 0.633789 0.00390625
c6.99805 0 17.627 -2.7832 23.7256 -6.21387zM0.00195312 416h448v-448h-448v448zM374.712 42.7402l-0.0302734 264.349l-55.79 -12.0898v-77.9199c-7.81348 7.86035 -16.1465 13.5273 -25 17.001c-7.625 2.88086 -20.4277 5.21777 -28.5791 5.21777
c-0.320312 0 -0.839844 -0.00292969 -1.16016 -0.0078125c-17.6934 -0.00683594 -33.6006 -4.37305 -47.7207 -13.0996c-11.8623 -7.32227 -26.6152 -23.3516 -32.9297 -35.7803c-7.83984 -15.1064 -11.7598 -31.8467 -11.7598 -50.2197
c-0.00683594 -18.8066 3.85645 -35.7705 11.5898 -50.8906c6.26367 -12.4766 21.0205 -28.502 32.9395 -35.7695c14.2197 -8.7334 30.5166 -13.1006 48.8906 -13.1006c26.6602 0 45.2539 8.7334 55.7803 26.2002h0.669922v-23.8896h53.0996z" />
<glyph glyph-name="instagram-square" unicode="&#xf955;"
d="M224 245.34c29.4326 -0.0107422 53.3379 -23.9072 53.3604 -53.3398c0 -29.4434 -23.8965 -53.3398 -53.3408 -53.3398c-29.4434 0 -53.3398 23.8965 -53.3398 53.3398c0 29.4326 23.8877 53.3291 53.3203 53.3398zM348.71 286.34
c8.34961 -21.0703 6.46973 -71.0596 6.46973 -94.3398s1.91992 -73.3301 -6.42969 -94.3301c-4.75 -12.0371 -18.373 -25.6602 -30.4102 -30.4102c-21.0596 -8.35938 -70.9902 -6.42969 -94.2998 -6.42969s-73.3096 -1.86035 -94.3096 6.42969
c-12.0371 4.75 -25.6611 18.373 -30.4102 30.4102c-8.32031 21.0703 -6.4707 71.0605 -6.4707 94.3398c0 23.2803 -1.84961 73.3301 6.43066 94.3301c4.74902 12.0371 18.373 25.6602 30.4102 30.4102c21.0596 8.36035 71.0098 6.42969 94.3096 6.42969
s73.2998 1.86035 94.2998 -6.42969c12.0371 -4.75 25.6602 -18.373 30.4102 -30.4102zM224 110h0.0996094c45.209 0 81.9004 36.6914 81.9004 81.9004v0.0996094c0 45.2637 -36.7363 82 -82 82s-82 -36.7363 -82 -82s36.7363 -82 82 -82zM309.38 258.3
c10.5381 0.00585938 19.1299 8.52246 19.1299 19.0605v0.0800781c0 10.5645 -8.57422 19.1396 -19.1396 19.1396s-19.1396 -8.5752 -19.1396 -19.1396c0 -10.5654 8.57422 -19.1406 19.1396 -19.1406h0.00976562zM400 416c26.4961 0 48 -21.5039 48 -48v-352
c0 -26.4961 -21.5039 -48 -48 -48h-352c-26.4961 0 -48 21.5039 -48 48v352c0 26.4961 21.5039 48 48 48h352zM382.88 126c1.49023 26.4404 1.49023 105.56 0 131.88c-1.21973 25.6299 -7.17969 48.3506 -25.8496 67.0498c-18.6699 18.7002 -41.3701 24.5605 -67 25.8506
c-26.4102 1.48926 -105.59 1.48926 -132 0c-25.5303 -1.2207 -48.2207 -7.12012 -67 -25.7803c-18.7803 -18.6602 -24.5605 -41.3701 -25.8506 -67c-1.48926 -26.3896 -1.48926 -105.58 0 -132c1.2207 -25.5801 7.11035 -48.2998 25.8506 -67
c18.7393 -18.7002 41.3701 -24.5596 67 -25.8496c26.4102 -1.49023 105.59 -1.49023 132 0c25.5996 1.21973 48.29 7.18945 67 25.8496s24.5596 41.3701 25.8496 67z" />
<glyph glyph-name="mixer" unicode="&#xf956;" horiz-adv-x="512"
d="M114.57 371.93l128.319 -172.399c1.27148 -1.75781 2.30371 -4.94531 2.30371 -7.11523s-1.03223 -5.35742 -2.30371 -7.11523l-128.89 -173.24c-7.56738 -10.1514 -23.9863 -18.3916 -36.6484 -18.3916c-9.7998 0 -23.6211 5.36816 -30.8516 11.9824
c-17.8496 16.1797 -18.9697 43.5195 -4.74023 62.7695l92.3301 124.15l-91.7803 123c-14.25 19.25 -12.8291 46.5898 4.75 62.7695c7.23145 6.61719 21.0557 11.9873 30.8574 11.9873c12.665 0 29.0859 -8.24219 36.6533 -18.3975zM470.24 68.4199
c14.2295 -19.25 13.1094 -46.5898 -4.73047 -62.7695c-7.23145 -6.61719 -21.0557 -11.9873 -30.8574 -11.9873c-12.6641 0 -29.085 8.24121 -36.6523 18.3965l-128.57 173.5c-1.27148 1.75879 -2.30273 4.94629 -2.30273 7.11523
c0 2.16992 1.03125 5.35742 2.30273 7.11523l128 172.12c7.56738 10.1553 23.9883 18.3975 36.6533 18.3975c9.80176 0 23.626 -5.37109 30.8574 -11.9873c17.5791 -16.1807 18.9697 -43.5205 4.75 -62.7705l-91.7803 -123z" />
<glyph glyph-name="shopify" unicode="&#xf957;"
d="M388.32 343.9c0.399414 -2.40039 54.4395 -367.9 54.4395 -367.9l-125.689 -31.2002v432.73c8.00977 -8.01074 29.6201 -28.8301 29.6201 -28.8301s35.2295 -0.799805 37.2295 -0.799805c2.12891 -0.0986328 4.10059 -1.89062 4.40039 -4zM288.65 377.53
c9.20996 2.7998 13.6006 4.22461 14.8096 4.39941s3.17969 0.354492 4.40039 0.400391v-438.33l-302.58 52.4805s36.7998 281.819 38 291.819c1.58984 13.2002 2 13.6006 16 18c0.399414 0.400391 19.6094 6.41016 47.2295 14.8105
c2.82031 21.2197 13.21 48.4395 26.8203 70.0596c19.25 30.8301 43.25 48.0303 67.25 48.8301c12.4199 0.370117 22.8203 -3.62988 30.8203 -12.4004c0.399414 -0.799805 1.19922 -1.19922 1.59961 -2c0.947266 0.226562 2.50586 0.40918 3.47949 0.40918
c0.143555 0 0.376953 -0.00390625 0.520508 -0.00878906c18.4199 0 34 -10.8496 44.4404 -30.8604c2.3877 -4.69727 5.61719 -12.5869 7.20996 -17.6094zM233.41 360.31c0.399414 13.21 -1.2002 32.8301 -8.00977 47.2002
c-6.80078 -3.2002 -12.8105 -8.41016 -17.21 -12.8096c-11.21 -12.3701 -20.8203 -31.1807 -25.6201 -50c17.21 5.20996 34.8398 10.8096 50.8398 15.6094zM200.58 423.56c-36.8301 -0.799805 -69.25 -58.8398 -78.0098 -97.2295c13.1699 4 27.5801 8.40039 42 12.8096
c4.7998 24.4502 16.4102 50.0303 31.6201 66.4502c6 6 12.4092 11.21 18.8096 14.4102c-3.48047 1.97266 -9.55273 3.57324 -13.5537 3.57324c-0.239258 0 -0.626953 -0.00585938 -0.866211 -0.0136719zM154.15 203.39c-0.400391 4.81055 0 23.6104 29.6191 25.6201
c20.4209 1.60059 37.6309 -6.39941 37.6309 -6.39941l15.21 57.5996s-13.2305 6.41016 -39.2305 4.80957c-67.25 -4.40918 -97.6699 -51.2393 -94.4697 -97.6797c3.59961 -55.2402 58.8398 -53.2402 60.8398 -86.8594
c0.410156 -8.01074 -4.80957 -19.6201 -18.8096 -20.4209c-21.6201 -1.59961 -48.4404 18.8203 -48.4404 18.8203l-10.4004 -44s26.8203 -28.8203 75.6504 -25.6201c40.4297 2.41016 68.4502 34.8301 65.6504 82.4707c-4 60.4395 -71.6504 66.0498 -73.25 91.6592z
M249.42 365.12c8.80664 2.7998 16.8135 5.2002 24.0205 7.2002c-4.01074 12.4297 -12.8105 32.8301 -31.2305 36.4297c5.61035 -14.4102 7.20996 -31.6299 7.20996 -43.6299z" />
<glyph glyph-name="deezer" unicode="&#xf977;" horiz-adv-x="576"
d="M451.46 203.29v72.71h124.54v-72.71h-124.54zM451.46 377.18h124.54v-72.6699h-124.54v72.6699zM451.46 102.12v72.6797h124.54v-72.6797h-124.54zM0 0.910156v72.6699h124.54v-72.6699h-124.54zM150.47 0.910156v72.6699h124.53v-72.6699h-124.53zM300.99 0.910156
l0.00976562 72.6699h124.53v-72.6699h-124.54zM451.46 0.910156v72.6699h124.54v-72.6699h-124.54zM301 102.12v72.6797h124.53v-72.6797h-124.53zM150.48 102.12l-0.0107422 72.6797h124.53v-72.6797h-124.52zM150.48 203.29l-0.0107422 72.71h124.53v-72.71h-124.52z" />
<glyph glyph-name="edge-legacy" unicode="&#xf978;" horiz-adv-x="512"
d="M25.71 219.84l0.349609 0.480469c0 -0.160156 0 -0.320312 -0.0693359 -0.480469h-0.280273zM486.29 204.33v-52.0703h-314.08c1.38965 -128.49 191.39 -124.06 272.26 -67.5693v-104.431c-47.3594 -28.5293 -156.779 -53.1699 -240.13 -21.3301
c-70.6201 27.1602 -119.92 100.551 -120.75 172c-1.09961 92.2207 45.7002 153.42 120.75 188.32c-15.79 -19.9297 -27.9697 -41.54 -34.3398 -78.9297h175.85c10.25 105 -99.4199 105 -99.4199 105c-103.3 -3.62012 -177.949 -63.6904 -220.37 -125
c14.5605 114.47 92.9404 219.96 232.83 219.68c85.0205 0 157.61 -39.8799 198.591 -113.27c21.0498 -37.9404 28.8096 -78.4004 28.8096 -122.4z" />
<glyph glyph-name="google-pay" unicode="&#xf979;" horiz-adv-x="640"
d="M105.72 233h99.6602c0.96582 -5.91309 1.75 -15.5752 1.75 -21.5674v-0.212891c0 -32.7598 -11.4102 -60.2998 -31.4102 -78.9102c-17.4502 -16.3799 -41.5293 -25.9092 -70 -25.9092c-36.1719 0.0898438 -78.4541 26.5225 -94.3799 59v0.149414
c-6.25977 12.5352 -11.3398 34.0791 -11.3398 48.0898s5.08008 35.5557 11.3398 48.0908c15.918 32.4893 58.2002 58.9707 94.3799 59.1094c0.28125 0.00292969 0.736328 0.00488281 1.0166 0.00488281c22.3154 0 53.5557 -12.4746 69.7334 -27.8447l-30.2793 -30.6201
c-9.08008 8.88184 -26.7578 16.0898 -39.459 16.0898c-0.291016 0 -0.761719 -0.00390625 -1.05176 -0.00976562c-27.5996 0 -50.9297 -18.9102 -59.2998 -44.3701v0c-1.81348 -5.5127 -3.28516 -14.6963 -3.28516 -20.5c0 -5.80273 1.47168 -14.9873 3.28516 -20.5
c8.37012 -25.3096 31.7002 -44.2197 59.2998 -44.2197c14.2803 0 26.46 3.72949 36 10.2803c9.65918 6.5166 19.1309 21.1221 21.1406 32.5996h-57.1006v41.25zM495.13 237c10.1299 -9.33984 15.1201 -22.4502 15.0498 -39v-78.7002h-22.6094v17.7197h-1
c-9.79004 -14.5898 -22.71 -21.8896 -39 -21.8896c-13.79 0 -25.54 4.16992 -34.79 12.5098c-7.70215 6.56836 -13.9541 20.1152 -13.9541 30.2383c0 0.285156 0.00683594 0.74707 0.0136719 1.03223c0 13.25 4.98047 23.6699 14.8203 31.5596
c9.83984 7.89062 23.0498 11.7705 39.4902 11.7705c14.0898 0 25.54 -2.68066 34.6396 -7.75v5.50977c-0.00488281 7.07812 -4.3457 16.5889 -9.69043 21.2305c-5.34766 4.83398 -15.54 8.77246 -22.75 8.78906c-13.2061 0 -23.626 -5.66699 -31.2598 -17l-20.8496 13.2607
c11.1602 16.5195 28.04 24.8594 50.5 24.8594c17.46 0 31.2598 -4.75977 41.3896 -14.1396zM475.9 147.7c7.7793 7.4502 11.7393 16.2295 11.7393 26.3594c-7.33984 5.94043 -17.6396 8.94043 -30.7998 8.78027c-9.54004 0 -17.75 -2.38965 -24.0703 -7
c-6.31934 -4.60938 -9.53906 -10.4199 -9.53906 -17.4199c-0.000976562 -0.0263672 -0.000976562 -0.0703125 -0.000976562 -0.0976562c0 -5.35938 3.48145 -12.3184 7.77051 -15.5322c4.32324 -3.45215 12.3213 -6.25391 17.8535 -6.25391
c0.131836 0 0.344727 0.00195312 0.476562 0.00390625c8.62207 0.0107422 20.5254 5.01074 26.5703 11.1602zM382.25 289.7c9.33691 -8.88477 16.915 -26.5166 16.915 -39.4053c0 -11.6875 -6.40918 -28.168 -14.3047 -36.7852
c-0.890625 -0.889648 -1.77051 -1.79004 -2.65039 -2.67969c-11.0098 -10.5703 -24.5098 -15.9297 -40.5098 -15.9297h-39v-75.6406h-23.6299v186.74h62.6699c0.30957 0.00585938 0.8125 0.0117188 1.12305 0.0117188c12.7344 0 30.3799 -7.30762 39.3867 -16.3115z
M365.67 227.47c4.9834 5.29004 9.02734 15.5225 9.02734 22.79c0 7.6084 -4.37598 18.1416 -9.76758 23.5098c-5.15918 5.0957 -15.2324 9.23047 -22.4834 9.23047h-0.116211h-39.6299v-65.21h39.6299c0.268555 -0.00878906 0.703125 -0.015625 0.97168 -0.015625
c7.33398 0 17.3545 4.34375 22.3682 9.69531zM614.31 247h25.6904l-79 -183.87h-24.3496l29.3496 64.3203l-51.79 119.55h25.6904l37.4199 -91.7002h0.449219z" />
<glyph glyph-name="rust" unicode="&#xf97a;" horiz-adv-x="512"
d="M508.52 198.25c1.92285 -1.18945 3.43262 -3.98926 3.43262 -6.25s-1.55957 -5.06055 -3.48242 -6.25l-21.8193 -13.5098c-0.169922 -1.95996 -0.34082 -3.91992 -0.550781 -5.87012l18.7207 -17.5c1.28516 -1.20312 2.3291 -3.60742 2.3291 -5.36816
c0 -2.81152 -2.13672 -5.89453 -4.76953 -6.88184l-24 -9c-0.540039 -1.88965 -1.08008 -3.78027 -1.66992 -5.65039l15 -20.8301c0.760742 -1.05957 1.37891 -2.97949 1.37891 -4.28516c0 -3.4502 -2.76367 -6.7002 -6.16895 -7.25488l-25.4199 -4.14941
c-0.900391 -1.71973 -1.79004 -3.4502 -2.73047 -5.15039l10.6807 -23.4199c0.364258 -0.800781 0.660156 -2.16406 0.660156 -3.04395c0 -1.23145 -0.555664 -3.0625 -1.24023 -4.08594c-1.18164 -1.80371 -3.8916 -3.26758 -6.04688 -3.26758
c-0.0898438 0 -0.234375 0.00390625 -0.323242 0.0078125l-25.8203 0.910156c-1.18652 -1.4873 -2.38965 -2.9541 -3.60938 -4.40039l5.92969 -25.1602c0.106445 -0.455078 0.192383 -1.20508 0.192383 -1.67285c0 -4.0625 -3.29688 -7.35938 -7.35938 -7.35938
c-0.467773 0 -1.21777 0.0859375 -1.67285 0.192383l-25.1504 5.92969c-1.45312 -1.21289 -2.91992 -2.41602 -4.39941 -3.60938l0.90918 -25.8203c0.00292969 -0.0722656 0.00488281 -0.188477 0.00488281 -0.259766c0 -4.05762 -3.29297 -7.35059 -7.34961 -7.35059
c-0.879883 0 -2.24414 0.295898 -3.04492 0.660156l-23.4199 10.6807c-1.7002 -0.94043 -3.42969 -1.83008 -5.15039 -2.73047l-4.14941 -25.4199c-0.550781 -3.4043 -3.79688 -6.16699 -7.24609 -6.16699c-1.30859 0 -3.23242 0.621094 -4.29395 1.38672l-20.8203 15
c-1.87012 -0.599609 -3.75977 -1.12988 -5.64941 -1.67969l-9 -24c-0.992188 -2.62793 -4.07715 -4.76074 -6.88574 -4.76074c-1.75781 0 -4.16113 1.04004 -5.36426 2.32031l-17.5 18.7305c-1.9502 -0.219727 -3.88086 -0.390625 -5.88086 -0.560547l-13.5098 -21.8193
c-1.18945 -1.92285 -3.98926 -3.48242 -6.25 -3.48242c-2.25977 0 -5.06055 1.55957 -6.25 3.48242l-13.5098 21.8193c-1.95996 0.169922 -3.92969 0.34082 -5.87988 0.550781l-17.5 -18.7207c-1.20312 -1.28027 -3.60645 -2.32031 -5.36426 -2.32031
c-2.80859 0 -5.89355 2.13281 -6.88574 4.76074l-9 24c-1.88965 0.549805 -3.79004 1.08008 -5.65039 1.67969l-20.8301 -15c-1.06152 -0.765625 -2.98535 -1.38672 -4.29395 -1.38672c-3.44824 0 -6.69434 2.7627 -7.24609 6.16699l-4.14941 25.4199
c-1.71973 0.900391 -3.4502 1.79004 -5.14062 2.73047l-23.4297 -10.6807c-0.800781 -0.364258 -2.16504 -0.660156 -3.04492 -0.660156c-4.05664 0 -7.34961 3.29297 -7.34961 7.35059c0 0.0712891 0.00195312 0.1875 0.00488281 0.259766l0.919922 25.8203
c-1.4873 1.18652 -2.95703 2.38965 -4.41016 3.60938l-25.1602 -5.92969c-0.455078 -0.106445 -1.20508 -0.192383 -1.67285 -0.192383c-4.0625 0 -7.35938 3.29688 -7.35938 7.35938c0 0.467773 0.0859375 1.21777 0.192383 1.67285l5.92969 25.1602
c-1.21973 1.45312 -2.41992 2.91992 -3.59961 4.40039l-25.8301 -0.910156c-0.103516 -0.00585938 -0.271484 -0.00976562 -0.375 -0.00976562c-2.14746 0 -4.83301 1.46484 -5.99512 3.26953c-0.681641 1.02246 -1.23438 2.84863 -1.23438 4.07715
c0 0.881836 0.297852 2.25 0.664062 3.05273l10.6309 23.4297c-0.94043 1.69043 -1.83008 3.4209 -2.73047 5.14062l-25.4199 4.14941c-3.40527 0.554688 -6.16895 3.80469 -6.16895 7.25488c0 1.30566 0.618164 3.22559 1.37891 4.28516l15 20.8301
c-0.599609 1.87012 -1.12988 3.76074 -1.67969 5.65039l-24 9c-2.63281 0.987305 -4.76953 4.07031 -4.76953 6.88184c0 1.76074 1.04297 4.16504 2.3291 5.36816l18.7197 17.5c-0.209961 1.9502 -0.379883 3.87012 -0.549805 5.87012l-21.8193 13.5098
c-1.92285 1.18945 -3.48242 3.98926 -3.48242 6.25s1.55957 5.06055 3.48242 6.25l21.8594 13.5c0.169922 1.96973 0.339844 3.92969 0.549805 5.87988l-18.7197 17.5c-1.28613 1.20312 -2.3291 3.60742 -2.3291 5.36816c0 2.81152 2.13672 5.89453 4.76953 6.88184l24 9
c0.549805 1.88965 1.08984 3.79004 1.67969 5.66016l-15 20.8203c-0.760742 1.05957 -1.37891 2.97949 -1.37891 4.28516c0 3.4502 2.76367 6.7002 6.16895 7.25488l25.4102 4.13965c0.899414 1.72949 1.79004 3.45996 2.72949 5.16016l-10.6602 23.4102
c-0.366211 0.802734 -0.664062 2.16992 -0.664062 3.05273c0 1.22852 0.552734 3.05469 1.23438 4.07715c1.21875 1.80078 3.97168 3.2627 6.14648 3.2627c0.0615234 0 0.162109 -0.000976562 0.223633 -0.00292969l25.8096 -0.910156
c1.19043 1.48047 2.39062 2.95996 3.62012 4.41016l-5.92969 25.1602c-0.106445 0.455078 -0.192383 1.20508 -0.192383 1.67285c0 4.0625 3.29688 7.35938 7.35938 7.35938c0.467773 0 1.21777 -0.0859375 1.67285 -0.192383l25.1504 -5.96973
c1.41992 1.21973 2.92969 2.41992 4.41992 3.60938l-0.919922 25.8105c-0.00390625 0.0859375 -0.00683594 0.224609 -0.00683594 0.310547c0 4.05762 3.29297 7.35059 7.34961 7.35059c0.880859 0 2.24609 -0.295898 3.04688 -0.661133l23.4004 -10.6299
c1.70996 0.939453 3.42969 1.83008 5.16016 2.72949l4.14941 25.4102c0.554688 3.40527 3.80469 6.16895 7.25488 6.16895c1.30469 0 3.22461 -0.618164 4.28516 -1.37891l20.8203 -15c1.87012 0.599609 3.76953 1.12988 5.66016 1.67969l9 24
c0.987305 2.63281 4.07031 4.76953 6.88184 4.76953c1.76074 0 4.16504 -1.04297 5.36816 -2.3291l17.5 -18.7197c1.94922 0.209961 3.87988 0.379883 5.87988 0.549805l13.5098 21.8193c1.18945 1.92285 3.98926 3.48242 6.25 3.48242s5.06055 -1.55957 6.25 -3.48242
l13.4805 -21.8398c1.96973 -0.169922 3.92969 -0.339844 5.87988 -0.549805l17.5 18.7197c1.20215 1.28613 3.60742 2.33008 5.36719 2.33008c2.8125 0 5.89551 -2.13672 6.88281 -4.76953l9 -24c1.88965 -0.540039 3.7793 -1.08008 5.63965 -1.66992l20.8604 14.9697
c1.05957 0.760742 2.97949 1.37891 4.28516 1.37891c3.4502 0 6.7002 -2.76367 7.25488 -6.16895l4.14941 -25.4199c1.71973 -0.889648 3.4502 -1.79004 5.15039 -2.73047l23.4199 10.7305c0.800781 0.365234 2.16602 0.661133 3.04688 0.661133
c4.05664 0 7.34961 -3.29297 7.34961 -7.34961c0 -0.0859375 -0.00292969 -0.225586 -0.00683594 -0.311523l-0.910156 -25.8203c1.4873 -1.18652 2.9541 -2.38965 4.40039 -3.60938l25.1602 5.92969c0.455078 0.106445 1.20508 0.192383 1.67285 0.192383
c4.0625 0 7.35938 -3.29688 7.35938 -7.35938c0 -0.467773 -0.0859375 -1.21777 -0.192383 -1.67285l-5.87988 -25.1602c1.21387 -1.45312 2.41699 -2.91992 3.61035 -4.40039l25.8193 0.910156c0.0722656 0.00292969 0.188477 0.00488281 0.260742 0.00488281
c4.05664 0 7.34961 -3.29297 7.34961 -7.34961c0 -0.879883 -0.295898 -2.24414 -0.660156 -3.04492l-10.6797 -23.4199c0.939453 -1.7002 1.83008 -3.41992 2.72949 -5.15039l25.4199 -4.14941c3.40527 -0.554688 6.16895 -3.80469 6.16895 -7.25488
c0 -1.30566 -0.617188 -3.22559 -1.37891 -4.28516l-15 -20.8301c0.589844 -1.86035 1.12988 -3.76074 1.66992 -5.64062l24 -9c2.63281 -0.987305 4.76953 -4.07031 4.76953 -6.88184c0 -1.76074 -1.04297 -4.16504 -2.3291 -5.36816l-18.7197 -17.5
c0.209961 -1.94922 0.379883 -3.87988 0.549805 -5.87988zM357.52 69.1699l32.1406 -6.87988c5.17969 5.20508 12.9482 14.2051 17.3398 20.0898h-79.0498c-12.5 0 -24.21 17.6396 -27.1006 26.46c-2.88965 7.86035 -7.14941 32.4502 -9.05957 40
c-6.12988 24.5898 -25.3799 25.8701 -29.79 25.8701h-48.4805l-0.0498047 -34.3496h44.8301c1.71973 0 2.89062 -0.34082 2.89062 -1.91016v-54.1904c0 -1.62012 -1.1709 -1.91016 -2.89062 -1.91016h-153.17c4.13086 -5.60352 11.415 -14.21 16.2598 -19.21
l31.5107 6.76074c0.789062 0.167969 2.08594 0.304688 2.89258 0.304688c6.2002 0 12.2773 -4.9209 13.5674 -10.9854l7.63965 -35.6602c20.7363 -9.63086 56.1221 -17.4473 78.9863 -17.4473c22.3516 0 57.0146 7.48535 77.374 16.708l7.63965 35.6699
c1.30273 6.06641 7.39551 10.9893 13.5996 10.9893c0.81543 0 2.12402 -0.138672 2.91992 -0.30957zM383.29 34.6797l-0.0498047 0.0166016c0 8.17285 -6.63086 14.9932 -14.7998 15.2236h-0.44043c-8.38477 -0.0273438 -15.1904 -6.85449 -15.1904 -15.2402
c0 -8.41211 6.82812 -15.2393 15.2402 -15.2393c8.41309 0 15.2402 6.82715 15.2402 15.2393zM157.67 35.3604l-0.0498047 0.0078125c0 8.14648 -6.6084 14.9746 -14.75 15.2422h-0.450195c-8.40723 -0.00585938 -15.2295 -6.83301 -15.2295 -15.2402
c0 -8.41211 6.82715 -15.2402 15.2393 -15.2402c8.40723 0 15.2344 6.82324 15.2402 15.2305zM69.5703 213.85c-0.602539 -5.55859 -1.09082 -14.6094 -1.09082 -20.2012c0 -14.457 3.21191 -37.4746 7.1709 -51.3789h53.5996v119.73h-26.5596l6.76953 -15.2197
c0.661133 -1.48633 1.19727 -4.01367 1.19727 -5.63965c0 -4.98633 -3.69922 -10.6709 -8.25684 -12.6904zM58.3096 249.91c0.00292969 -8.40918 6.85156 -15.2236 15.2607 -15.2236c8.41211 0 15.2393 6.82715 15.2393 15.2393
c0 8.17871 -6.63477 15.0039 -14.8096 15.2344h-0.459961c-8.40723 -0.00585938 -15.2305 -6.83301 -15.2305 -15.2402v-0.00976562zM213.47 225.42h58.7002c12.4902 0 27.6797 4.41016 27.6797 16.7002c0 14.8496 -19.79 18.6201 -23.0693 18.6201h-63.2607zM399 141.29
c10.3096 1.12988 22 5.70996 22.0195 26.46v8.82031c0 1.85938 0.780273 3.12988 2.69043 3.12988h19.2803c0.288086 3.85254 0.522461 10.1152 0.522461 13.9785c0 5.13574 -0.413086 13.4512 -0.922852 18.5615l-34.5898 15.3301
c-4.55078 2.05176 -8.24512 7.76953 -8.24512 12.7617c0 1.60352 0.517578 4.09766 1.15527 5.56836l18 40.5693c-23.7432 41.6436 -81.2529 82.6045 -128.37 91.4307l-26.2598 -25c-2.21582 -2.13184 -6.50781 -3.86133 -9.58203 -3.86133
c-3.27441 0 -7.7627 1.92676 -10.0186 4.30078l-23.4697 24.6006c-34.4902 -6.51855 -81.4805 -33.0352 -104.89 -59.1904h198.899c4.99023 0 23.5107 -2.23047 40.2705 -13.2305c11.9102 -7.88965 29.3994 -23.96 29.3994 -49.4795
c0 -23.6201 -19.5996 -41.3096 -38.46 -53.2598c15.1807 -12 24.79 -18.9102 30.5703 -51.4004c1.37012 -5.96973 12.2002 -11.2197 22 -10.0898zM240 387.79c0 -8.41211 6.82715 -15.2646 15.2402 -15.2646c8.41211 0 15.2402 6.82812 15.2402 15.2402
c0 8.18359 -6.63965 15.0088 -14.8203 15.2344h-0.450195c-8.37988 -0.0166016 -15.1934 -6.83008 -15.21 -15.21zM436.84 234c0.0605469 -0.000976562 0.15918 -0.00195312 0.219727 -0.00195312c8.41406 0 15.2422 6.82812 15.2422 15.2422
c0 8.29297 -6.72949 15.1201 -15.0215 15.2402h-0.44043c-8.41211 0 -15.2402 -6.82812 -15.2402 -15.2402c0 -8.41309 6.82812 -15.2402 15.2402 -15.2402v0z" />
<glyph glyph-name="tiktok" unicode="&#xf97b;"
d="M448 238.09h-0.50293c-37.2227 0 -91.999 17.584 -122.267 39.25v-178.72c-0.0332031 -89.6943 -72.8555 -162.49 -162.551 -162.49c-89.7275 0 -162.55 72.8223 -162.55 162.55s72.8223 162.55 162.55 162.55c6.19043 0 16.1895 -0.689453 22.3203 -1.53906v-89.8906
c-6.03418 1.89844 -16.0645 3.43848 -22.3896 3.43848c-41.1904 0 -74.6201 -33.4297 -74.6201 -74.6201s33.4297 -74.6201 74.6201 -74.6201c41.1895 0 74.6201 33.4297 74.6201 74.6201v0.00195312v349.38h88
c-0.00292969 -0.275391 -0.00488281 -0.72168 -0.00488281 -0.99707c0 -5.88867 0.834961 -15.374 1.86426 -21.1729v0c5.34473 -28.5488 29.4961 -64.4873 53.9102 -80.2197c16.8135 -11.1172 46.8184 -20.1406 66.9746 -20.1406h0.0253906v-87.3799z" />
<glyph glyph-name="unsplash" unicode="&#xf97c;"
d="M448 217.83v-249.83h-448v249.83h141.13v-124.92h165.74v124.92h141.13zM306.87 416v-124.91h-165.74v124.91h165.74z" />
</font>
</defs></svg>

Before

Width:  |  Height:  |  Size: 684 KiB

After

Width:  |  Height:  |  Size: 712 KiB

BIN
framework/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/wwwroot/libs/@fortawesome/fontawesome-free/webfonts/fa-brands-400.ttf

Binary file not shown.

BIN
framework/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/wwwroot/libs/@fortawesome/fontawesome-free/webfonts/fa-brands-400.woff

Binary file not shown.

BIN
framework/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/wwwroot/libs/@fortawesome/fontawesome-free/webfonts/fa-brands-400.woff2

Binary file not shown.

BIN
framework/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/wwwroot/libs/@fortawesome/fontawesome-free/webfonts/fa-regular-400.eot

Binary file not shown.

20
framework/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/wwwroot/libs/@fortawesome/fontawesome-free/webfonts/fa-regular-400.svg

@ -1,12 +1,12 @@
<?xml version="1.0" standalone="no"?>
<!--
Font Awesome Free 5.11.2 by @fontawesome - https://fontawesome.com
Font Awesome Free 5.13.1 by @fontawesome - https://fontawesome.com
License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
-->
<!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" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1">
<metadata>
Created by FontForge 20190801 at Mon Sep 23 12:53:49 2019
Created by FontForge 20190801 at Thu Jun 18 14:52:21 2020
By Robert Madole
Copyright (c) Font Awesome
</metadata>
@ -435,14 +435,14 @@ c-44.1123 0 -80 35.8877 -80 80v8c0 30.8779 25.1211 56 56 56h293.917c24.5 0 47.08
c-4.41113 0 -8 -3.58887 -8 -8v-8c0 -17.6445 14.3555 -32 32 -32h213.471c25.2021 0 42.626 -25.293 33.6299 -48.8457l-24.5518 -64.2812c-7.05371 -18.4658 -25.0732 -30.873 -44.8398 -30.873h-113.709c-22.0557 0 -40 -17.9443 -40 -40c0 -4.41113 3.58887 -8 8 -8
h131.552h0.0517578c7.44141 0 19.1074 -2.19238 26.041 -4.89355l99.752 -38.7881c18.5898 -7.22852 30.6035 -24.7881 30.6035 -44.7363v-23.582h128z" />
<glyph glyph-name="hand-spock" unicode="&#xf259;"
d="M21.0957 66.21c-26.9688 25.3818 -28.2471 67.7461 -2.87109 94.707c24.1982 25.7139 64.2881 28.2373 91.4824 5.72168l-31.04 136.509c-9.38379 41.2803 21.4336 81.0127 64.0713 81.8438c1.74414 28.9062 22.2656 54.4912 51.8818 61.2949
c36.001 8.27539 72.0176 -14.2266 80.3037 -50.2959l21.6748 -131.99l16.9014 105.25c9.02344 36.0947 45.4473 57.7021 81.25 48.75c27.3066 -6.82715 45.7061 -29.1357 49.8496 -53.9922c43.2285 0.212891 75.6436 -40.1133 65.5439 -82.5244l-31.7295 -133.41
c-0.938477 -3.94141 -1.41406 -7.99414 -1.41406 -12.0449v-36.8389v-0.00683594c0 -9.29102 -2.14355 -24.0596 -4.78516 -32.9668l-31.8145 -107.312c-4.02734 -13.585 -16.5107 -22.9043 -30.6807 -22.9043h-237.6c-7.00586 0 -16.8311 3.89648 -21.9316 8.69824z
M53.1641 128.021c-7.17969 -7.62891 -6.81543 -19.6777 0.813477 -26.8574l124.487 -117.164h219.311l28.4199 95.8613c1.86133 6.27637 2.80469 12.7793 2.80469 19.3281v36.8389c0.000976562 6.48047 1.21973 16.8574 2.71973 23.1621l31.7549 133.407
c5.83105 24.4893 -31.1445 33.25 -36.9658 8.80273l-26.9229 -113.105c-1.61523 -6.78711 -8.58887 -12.2949 -15.5645 -12.2949h-9.69434c-10.4072 0 -18.043 9.79199 -15.5225 19.8799l38.127 152.512c6.09766 24.376 -30.7607 33.6396 -36.8643 9.21777l-42.3721 -169.49
c-1.67285 -6.68945 -8.62695 -12.1191 -15.5225 -12.1191h-13.2168v0c-7.0332 0 -14.0195 5.5625 -15.5938 12.417l-45.2207 196.828c-5.64453 24.5684 -42.6572 15.9609 -37.0342 -8.50781l41.6191 -181.153c2.30078 -10.0156 -5.31738 -19.583 -15.5938 -19.583h-8.60352
h-0.000976562c-7.0498 0 -14.04 5.5791 -15.6025 12.4541l-30.3984 133.757c-5.55273 24.4395 -42.6504 16.1963 -37.0547 -8.4209l34.1299 -150.172c0.263672 -1.16309 0.397461 -2.35352 0.397461 -3.5459v-69.4795c0 -13.9941 -16.7754 -21.2432 -26.9658 -11.6523
l-53.0117 49.8936c-7.61523 7.16699 -19.6377 6.85938 -26.8564 -0.8125z" />
d="M501.03 331.824c6.05762 -9.77832 10.9746 -27.0498 10.9746 -38.5518c0 -4.80664 -0.915039 -12.499 -2.04297 -17.1709l-57.623 -241.963c-12.748 -54.1729 -68.2627 -98.1387 -123.915 -98.1387h-0.345703h-107.455h-0.224609
c-33.8135 0 -81.2148 18.834 -105.807 42.041l-91.3652 85.9766c-12.8213 12.0469 -23.2266 36.1016 -23.2266 53.6943c0 16.1299 8.97266 38.7529 20.0273 50.499c5.31836 5.66406 29.875 29.3926 68.1152 21.8477l-24.3594 82.1973
c-1.68164 5.66406 -3.0459 15.0576 -3.0459 20.9668c0 37.5938 30.417 70.502 67.8955 73.4551c-0.204102 2.03125 -0.369141 5.33691 -0.369141 7.37891c0 31.627 24.8594 63.6895 55.4902 71.5684c43.248 10.9785 80.5645 -17.7012 89.6602 -53.0723l13.6836 -53.207
l4.64648 22.6602c6.76074 32.417 39.123 58.8115 72.2373 58.916c8.73438 0 56.625 -3.26953 70.7383 -54.0801c15.0664 0.710938 46.9199 -3.50977 66.3105 -35.0176zM463.271 287.219c7.86914 32.9844 -42.1211 45.2695 -50.0859 11.9219l-24.8008 -104.146
c-4.38867 -18.4141 -31.7783 -11.8926 -28.0557 6.2168l28.5479 139.166c7.39844 36.0703 -43.3076 45.0703 -50.1182 11.9629l-31.791 -154.971c-3.54883 -17.3086 -28.2832 -18.0469 -32.7109 -0.804688l-47.3262 184.035
c-8.43359 32.8105 -58.3691 20.2676 -49.8652 -12.8359l42.4414 -165.039c4.81641 -18.7207 -23.3711 -26.9121 -28.9648 -8.00781l-31.3438 105.779c-9.6875 32.6465 -59.1191 18.2578 -49.3867 -14.625l36.0137 -121.539
c5.61816 -18.9521 10.1777 -50.377 10.1777 -70.1436v-0.00878906c0 -6.54297 -8.05664 -10.9355 -13.4824 -5.82617l-51.123 48.1074c-24.7852 23.4082 -60.0527 -14.1875 -35.2793 -37.4902l91.3691 -85.9805c16.9629 -16.0068 49.6592 -28.998 72.9824 -28.998h0.154297
h107.455h0.216797c34.7402 0 69.3936 27.4443 77.3525 61.2598z" />
<glyph glyph-name="hand-pointer" unicode="&#xf25a;" horiz-adv-x="448"
d="M358.182 268.639c43.1934 16.6348 89.8184 -15.7949 89.8184 -62.6387v-84c-0.000976562 -4.25 -0.775391 -11.0615 -1.72754 -15.2041l-27.4297 -118.999c-6.98242 -30.2969 -33.7549 -51.7969 -64.5566 -51.7969h-178.286c-21.2588 0 -41.3682 10.4102 -53.791 27.8457
l-109.699 154.001c-21.2432 29.8193 -14.8047 71.3574 14.5498 93.1523c18.8115 13.9658 42.1748 16.2822 62.083 8.87207v161.129c0 36.9443 29.7363 67 66.2861 67s66.2861 -30.0557 66.2861 -67v-73.6338c20.4131 2.85742 41.4678 -3.94238 56.5947 -19.6289

Before

Width:  |  Height:  |  Size: 141 KiB

After

Width:  |  Height:  |  Size: 141 KiB

BIN
framework/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/wwwroot/libs/@fortawesome/fontawesome-free/webfonts/fa-regular-400.ttf

Binary file not shown.

BIN
framework/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/wwwroot/libs/@fortawesome/fontawesome-free/webfonts/fa-regular-400.woff

Binary file not shown.

BIN
framework/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/wwwroot/libs/@fortawesome/fontawesome-free/webfonts/fa-regular-400.woff2

Binary file not shown.

BIN
framework/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/wwwroot/libs/@fortawesome/fontawesome-free/webfonts/fa-solid-900.eot

Binary file not shown.

517
framework/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/wwwroot/libs/@fortawesome/fontawesome-free/webfonts/fa-solid-900.svg

@ -1,12 +1,12 @@
<?xml version="1.0" standalone="no"?>
<!--
Font Awesome Free 5.11.2 by @fontawesome - https://fontawesome.com
Font Awesome Free 5.13.1 by @fontawesome - https://fontawesome.com
License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
-->
<!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" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1">
<metadata>
Created by FontForge 20190801 at Mon Sep 23 12:53:50 2019
Created by FontForge 20190801 at Thu Jun 18 14:52:21 2020
By Robert Madole
Copyright (c) Font Awesome
</metadata>
@ -23,7 +23,7 @@ Copyright (c) Font Awesome
bbox="-0.983398 -64.9834 640.104 448.427"
underline-thickness="25"
underline-position="-50"
unicode-range="U+0020-F8D9"
unicode-range="U+0020-F976"
/>
<missing-glyph />
<glyph glyph-name="glass-martini" unicode="&#xf000;"
@ -108,8 +108,8 @@ c-1.84863 1.49023 -5.27539 2.69922 -7.65039 2.69922c-2.37402 0 -5.80078 -1.20898
c-1.52051 1.83789 -2.75488 5.26562 -2.75488 7.65039c0 3.11914 1.95117 7.2627 4.35449 9.25l253.13 208.47c7.33594 6.03613 21 10.9355 30.5 10.9355c9.50098 0 23.1641 -4.89941 30.5 -10.9355l89.5303 -73.6602v72.6104c0 6.62402 5.37598 12 12 12h56
c6.62402 0 12 -5.37598 12 -12v-138.51z" />
<glyph glyph-name="clock" unicode="&#xf017;"
d="M256 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM313.1 89.9004c5.40039 -3.90039 12.9004 -2.7002 16.8008 2.59961l28.1992 38.7998c3.90039 5.40039 2.80078 12.9004 -2.59961 16.7998l-63.5 46.2002v137.7
c0 6.59961 -5.40039 12 -12 12h-48c-6.59961 0 -12 -5.40039 -12 -12v-168.3c0 -3.7998 1.7998 -7.40039 4.90039 -9.7002z" />
d="M256 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM348.49 127c1.94043 2.4209 3.51465 6.90332 3.51465 10.0059c0 4.24512 -2.69043 9.84277 -6.00488 12.4941l-58 42.5v144c0 8.83203 -7.16797 16 -16 16h-32
c-8.83203 0 -16 -7.16797 -16 -16v-155.55v-0.00488281c0 -10.6074 6.71973 -24.5957 15 -31.2256l67 -49.7197v0c2.41895 -1.93555 6.89746 -3.50586 9.99512 -3.50586c4.24512 0 9.84277 2.69043 12.4951 6.00586l20 25v0z" />
<glyph glyph-name="road" unicode="&#xf018;" horiz-adv-x="576"
d="M573.19 45.3301c9.25977 -21.1904 -5.5 -45.3301 -27.7305 -45.3301h-196.84l-10.3105 97.6797c-0.859375 8.14062 -7.71973 14.3203 -15.9092 14.3203h-68.8008c-8.18945 0 -15.0498 -6.17969 -15.9092 -14.3203l-10.3105 -97.6797h-196.84
c-22.2305 0 -36.9902 24.1396 -27.7402 45.3301l139.79 320c4.96973 11.3799 15.7998 18.6699 27.7305 18.6699h97.5898l-2.4502 -23.1602c-0.5 -4.71973 3.20996 -8.83984 7.95996 -8.83984h29.1602c4.75 0 8.45996 4.12012 7.95996 8.83984l-2.4502 23.1602h97.5898
@ -933,10 +933,10 @@ c0 -13.2549 -10.7451 -24 -24 -24h-144c-13.2549 0 -24 10.7451 -24 24v246.795c0 44
c-12.3066 4.92285 -18.293 18.8906 -13.3701 31.1973c14.668 36.6709 38.0107 77.833 90.0498 90.8838c-14.1406 36.5273 12.793 76.2031 52.2275 76.2031c37.4463 0 64.3525 -36.1084 53.668 -72h58.332c0 4.2002 -1.30664 15.7822 10.0273 17.6709zM144 376
c8.82227 0 16 7.17773 16 16s-7.17773 16 -16 16s-16 -7.17773 -16 -16s7.17773 -16 16 -16z" />
<glyph glyph-name="rocket" unicode="&#xf135;"
d="M505.05 428.9c6.9502 -32.2002 6.9502 -57.4004 6.85059 -82.6006c0 -102.689 -55.4102 -164.79 -128 -211.09v-104.41v-0.0400391c0 -16.3516 -11.8721 -35.5527 -26.5 -42.8594l-98.7002 -49.3906c-2.79004 -1.38965 -7.58398 -2.5166 -10.7002 -2.5166
c-13.248 0 -24 10.752 -24 24v0.00683594v103.84l-22.4697 -22.4697c-5.17383 -5.1748 -15.3125 -9.375 -22.6299 -9.375c-7.31836 0 -17.4561 4.2002 -22.6309 9.375l-50.8994 50.9102c-5.17285 5.17285 -9.37012 15.3096 -9.37012 22.625s4.19727 17.4512 9.37012 22.625
l22.4697 22.4697h-103.77h-0.0126953c-13.248 0 -24 10.752 -24 24c0 3.12012 1.12988 7.91797 2.52246 10.71l49.4199 98.7998c7.32324 14.6094 26.5283 26.4766 42.8701 26.4902h104.2c46.1895 72.7998 108.09 128 211.29 128c25.0996 0 50.29 0 82.4893 -6.90039
c5.54395 -1.19043 11.0098 -6.65527 12.2002 -12.1992zM384 280c22.0801 0 40 17.9199 40 40s-17.9199 40 -40 40s-40 -17.9199 -40 -40s17.9199 -40 40 -40z" />
d="M505.12 428.906c6.95508 -32.2031 6.95508 -57.4062 6.86133 -82.6094c0 -102.688 -55.4375 -164.781 -128.035 -211.094v-104.438c0 -16.3594 -11.8789 -35.5625 -26.5078 -42.8594l-98.7275 -49.3906c-2.81934 -1.27441 -7.61621 -2.40137 -10.707 -2.51562
c-13.2471 0.00195312 -24.002 10.7539 -24.0059 24v103.844l-22.4746 -22.4688c-13.1211 -13.1562 -34.1211 -11.1875 -45.2773 0l-50.9043 50.9062c-12.9961 12.9922 -11.3652 33.8887 0 45.25l22.4746 22.4688h-103.811c-13.2461 0.00195312 -24.001 10.7539 -24.0059 24
c0.111328 3.09082 1.23828 7.88574 2.51562 10.7031l49.4355 98.8125c7.33008 14.6094 26.5391 26.4688 42.8867 26.4844h104.215c46.2168 72.7969 108.122 128 211.354 128c25.0996 0 50.3086 0 82.5059 -6.90625c5.54883 -1.1875 11.0176 -6.65625 12.207 -12.1875z
M384.04 280c22.0732 0.0078125 39.9971 17.9277 40.0098 40c0 22.0801 -17.9199 40 -40 40s-40 -17.9199 -40 -40c0 -22.0742 17.916 -39.9951 39.9902 -40z" />
<glyph glyph-name="chevron-circle-left" unicode="&#xf137;"
d="M256 -56c-137 0 -248 111 -248 248s111 248 248 248s248 -111 248 -248s-111 -248 -248 -248zM142.1 175l135.5 -135.5c9.40039 -9.40039 24.6006 -9.40039 33.9004 0l17 17c9.40039 9.40039 9.40039 24.5996 0 33.9004l-101.6 101.6l101.6 101.6
c9.40039 9.40039 9.40039 24.6006 0 33.9004l-17 17c-9.40039 9.40039 -24.5996 9.40039 -33.9004 0l-135.5 -135.5c-9.39941 -9.40039 -9.39941 -24.5996 0 -34z" />
@ -1332,8 +1332,8 @@ d="M416 400v-48h-96v48c0 8.83984 7.16016 16 16 16h64c8.83984 0 16 -7.16016 16 -1
c3.45996 129.78 61.4004 150.16 63.9102 244.01zM448.09 288.01c2.50977 -93.8496 60.4502 -114.229 63.9102 -244.01v-44c0 -17.6699 -14.3301 -32 -32 -32h-96c-17.6699 0 -32 14.3301 -32 32v160h-32v160h96.1602c17.6299 0 31.4502 -14.3701 31.9297 -31.9902zM176 416
c8.83984 0 16 -7.16016 16 -16v-48h-96v48c0 8.83984 7.16016 16 16 16h64zM224 160v160h64v-160h-64z" />
<glyph glyph-name="plug" unicode="&#xf1e6;" horiz-adv-x="384"
d="M256 304v112c0 17.6729 14.3271 32 32 32s32 -14.3271 32 -32v-112h-64zM368 288c8.83691 0 16 -7.16309 16 -16v-32c0 -8.83691 -7.16309 -16 -16 -16h-16v-32c0 -77.4062 -54.9688 -141.971 -128 -156.796v-99.2041h-64v99.2041
c-73.0312 14.8252 -128 79.3896 -128 156.796v32h-16c-8.83691 0 -16 7.16309 -16 16v32c0 8.83691 7.16309 16 16 16h352zM128 304h-64v112c0 17.6729 14.3271 32 32 32s32 -14.3271 32 -32v-112z" />
d="M320 416v-96h-64v96c0 17.6641 14.3359 32 32 32s32 -14.3359 32 -32zM368 288c8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-16v-32c-0.0107422 -72.1074 -57.3555 -142.354 -128 -156.8v-99.2002h-64v99.2002
c-70.6445 14.4463 -127.989 84.6924 -128 156.8v32h-16c-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h352zM128 416v-96h-64v96c0 17.6641 14.3359 32 32 32s32 -14.3359 32 -32z" />
<glyph glyph-name="newspaper" unicode="&#xf1ea;" horiz-adv-x="576"
d="M552 384c13.2549 0 24 -10.7451 24 -24v-312c0 -26.5098 -21.4902 -48 -48 -48h-472c-30.9277 0 -56 25.0723 -56 56v272c0 13.2549 10.7451 24 24 24h40v8c0 13.2549 10.7451 24 24 24h464zM56 48c4.41602 0 8 3.58398 8 8v248h-16v-248c0 -4.41602 3.58398 -8 8 -8z
M292 64c6.62695 0 12 5.37305 12 12v8c0 6.62695 -5.37305 12 -12 12h-152c-6.62695 0 -12 -5.37305 -12 -12v-8c0 -6.62695 5.37305 -12 12 -12h152zM500 64c6.62695 0 12 5.37305 12 12v8c0 6.62695 -5.37305 12 -12 12h-152c-6.62695 0 -12 -5.37305 -12 -12v-8
@ -1626,10 +1626,12 @@ d="M384 -32v61.4609c0 7.28906 -4.99707 16.3711 -11.1543 20.2734l-111.748 70.8105
c11.7754 0 25.0088 8.82227 29.5371 19.6924l21.4102 51.3848c4.94141 11.8555 -3.77051 24.9229 -16.6143 24.9229h-229.981c-30.9277 0 -56 25.0723 -56 56v16c0 13.2549 10.7451 24 24 24h333.544c14.6035 0 32.7852 -10.0205 40.583 -22.3682l163.04 -258.146
c8.1875 -12.9639 14.833 -35.9297 14.833 -51.2627v-0.000976562v-116.222h-192z" />
<glyph glyph-name="hand-spock" unicode="&#xf259;"
d="M481.3 350.9c21.4004 -5.10059 34.7002 -26.7002 29.7002 -48.2002l-36.2998 -152.5c-1.7002 -7.2002 -2.60059 -14.7002 -2.60059 -22.2002v-42c0 -9.2998 -1.39941 -18.4004 -4 -27.2998l-26.1992 -88.2998c-6 -20.4004 -24.7002 -34.4004 -46 -34.4004h-216.7
c-12.2002 0 -24 4.59961 -32.9004 13l-133.7 125.9c-16.0996 15.0996 -16.7998 40.3994 -1.69922 56.5c15.0996 16.0996 40.3994 16.7998 56.5 1.69922l60.5996 -57v79.4004l-39 171.6c-4.90039 21.6006 8.59961 43 30.0996 47.9004
c21.6006 4.90039 43 -8.59961 47.9004 -30.0996l34.7998 -152.801h9.7998l-47.5996 207c-5 21.5 8.5 43 30 47.9004c21.5996 4.90039 43 -8.5 48 -30.0996l51.7002 -224.9h15.0996l48.4004 193.7c5.39941 21.3994 27.0996 34.5 48.5 29.0996
c21.3994 -5.39941 34.5 -27.0996 29.0996 -48.5l-43.5996 -174.3h11.0996l30.7998 129.3c5.10059 21.4004 26.7002 34.7002 48.2002 29.6006z" />
d="M510.9 302.729l-68.2969 -286.823c-10.502 -44.1084 -55.8252 -79.9062 -101.166 -79.9062h-127.363c-29.7637 0 -71.5107 16.5547 -93.1855 36.9531l-108.298 101.92c-6.92383 6.53418 -12.542 19.5635 -12.542 29.083c0 22.0762 17.916 39.9922 39.9922 39.9922
c8.7334 0 20.9922 -4.84961 27.3623 -10.8252l60.5928 -57.0254v0c0 22.6758 -5.22852 58.7256 -11.6699 80.4668l-42.6885 144.075c-0.90918 3.06934 -1.64746 8.1582 -1.64746 11.3594c0 22.083 17.9229 40.0059 40.0059 40.0059
c16.4922 0 33.6768 -12.833 38.3594 -28.6465l37.1543 -125.395c0.975586 -3.29199 4.55469 -5.96484 7.98828 -5.96484c4.59863 0 8.33105 3.73242 8.33105 8.33105c0 0.582031 -0.117188 1.51172 -0.262695 2.0752l-50.3047 195.641
c-0.696289 2.70703 -1.26172 7.17285 -1.26172 9.96875c0 22.0781 17.918 39.9961 39.9961 39.9961c17.1152 0 34.4678 -13.4521 38.7344 -30.0273l56.0947 -218.158c1.11035 -4.31934 5.63184 -7.82617 10.0918 -7.82617c4.69238 0 9.26562 3.73047 10.208 8.32715
l37.6826 183.704c3.6416 17.6387 21.2139 31.9541 39.2246 31.9541c3.41309 0 8.82422 -0.835938 12.0781 -1.86426c19.8604 -6.2998 30.8623 -27.6738 26.6758 -48.085l-33.8389 -164.967c-0.0849609 -0.414062 -0.154297 -1.09375 -0.154297 -1.51758
c0 -4.16797 3.38281 -7.55176 7.55176 -7.55176c3.29297 0 6.58398 2.59961 7.34668 5.80273l29.3975 123.459c4.03906 16.9619 21.4688 30.7285 38.9053 30.7285c22.0771 0 39.9941 -17.917 39.9941 -39.9941c0 -2.59277 -0.487305 -6.74316 -1.08789 -9.26562z" />
<glyph glyph-name="hand-pointer" unicode="&#xf25a;" horiz-adv-x="448"
d="M448 208v-96c0 -3.08398 -0.356445 -6.15918 -1.06348 -9.16211l-32 -136c-4.25098 -18.0684 -20.375 -30.8379 -38.9365 -30.8379h-208c-11.2432 0 -25.7363 7.37988 -32.3496 16.4727l-127.997 176c-12.9932 17.8662 -9.04297 42.8838 8.82129 55.876
c17.8672 12.9941 42.8848 9.04297 55.877 -8.82227l31.6484 -43.5186v275.992c0 22.0908 17.9082 40 40 40s40 -17.9092 40 -40v-200h8v40c0 22.0908 17.9082 40 40 40s40 -17.9092 40 -40v-40h8v24c0 22.0908 17.9082 40 40 40s40 -17.9092 40 -40v-24h8
@ -1845,20 +1847,23 @@ d="M192 64c0 -35.3457 -28.6543 -64 -64 -64s-64 28.6543 -64 64s28.6543 64 64 64s6
c-70.3018 0.488281 -127.448 58.3613 -127.089 128.664c0.164062 32.1982 12.2227 61.5781 31.998 83.9863v203.347c0 53.0186 42.9814 96 96 96s96 -42.9814 96 -96v-203.347zM208 64c0 34.3389 -19.3701 52.1904 -32 66.502v221.498c0 26.4668 -21.5332 48 -48 48
s-48 -21.5332 -48 -48v-221.498c-12.7324 -14.4277 -31.8252 -32.0996 -31.999 -66.0801c-0.223633 -43.876 35.5635 -80.1162 79.4229 -80.4199l0.576172 -0.00195312c44.1123 0 80 35.8877 80 80z" />
<glyph glyph-name="shower" unicode="&#xf2cc;"
d="M389.66 312.4l-158.061 -158.061c-9.36914 -9.37012 -24.5693 -9.37012 -33.9395 0l-11.3203 11.3203c-9.37012 9.37012 -9.37012 24.5703 0 33.9395l0.110352 0.110352c-34.0303 40.21 -35.1602 98.9404 -3.39062 140.38
c-11.9697 7.5498 -26.1396 11.9102 -41.2998 11.9102c-42.8799 0 -77.7598 -34.8799 -77.7598 -77.7598v-306.24h-64v306.24c0 78.1699 63.5898 141.76 141.76 141.76c36.9307 0 70.6104 -14.2002 95.8604 -37.4199c35.8994 11.5098 76.5 4.5 106.67 -21.0303
l0.110352 0.110352c9.36914 9.37012 24.5693 9.37012 33.9395 0l11.3203 -11.3203c9.37012 -9.37012 9.37012 -24.5703 0 -33.9395zM384 240c0 -8.83691 -7.16309 -16 -16 -16s-16 7.16309 -16 16s7.16309 16 16 16s16 -7.16309 16 -16zM416 240c0 8.83691 7.16309 16 16 16
s16 -7.16309 16 -16s-7.16309 -16 -16 -16s-16 7.16309 -16 16zM512 240c0 -8.83691 -7.16309 -16 -16 -16s-16 7.16309 -16 16s7.16309 16 16 16s16 -7.16309 16 -16zM352 208c0 -8.83691 -7.16309 -16 -16 -16s-16 7.16309 -16 16s7.16309 16 16 16s16 -7.16309 16 -16z
M400 224c8.83691 0 16 -7.16309 16 -16s-7.16309 -16 -16 -16s-16 7.16309 -16 16s7.16309 16 16 16zM480 208c0 -8.83691 -7.16309 -16 -16 -16s-16 7.16309 -16 16s7.16309 16 16 16s16 -7.16309 16 -16zM320 176c0 -8.83691 -7.16309 -16 -16 -16s-16 7.16309 -16 16
s7.16309 16 16 16s16 -7.16309 16 -16zM352 176c0 8.83691 7.16309 16 16 16s16 -7.16309 16 -16s-7.16309 -16 -16 -16s-16 7.16309 -16 16zM448 176c0 -8.83691 -7.16309 -16 -16 -16s-16 7.16309 -16 16s7.16309 16 16 16s16 -7.16309 16 -16zM320 144
c0 8.83691 7.16309 16 16 16s16 -7.16309 16 -16s-7.16309 -16 -16 -16s-16 7.16309 -16 16zM416 144c0 -8.83691 -7.16309 -16 -16 -16s-16 7.16309 -16 16s7.16309 16 16 16s16 -7.16309 16 -16zM320 112c0 -8.83691 -7.16309 -16 -16 -16s-16 7.16309 -16 16
s7.16309 16 16 16s16 -7.16309 16 -16zM384 112c0 -8.83691 -7.16309 -16 -16 -16s-16 7.16309 -16 16s7.16309 16 16 16s16 -7.16309 16 -16zM352 80c0 -8.83691 -7.16309 -16 -16 -16s-16 7.16309 -16 16s7.16309 16 16 16s16 -7.16309 16 -16zM320 48
c0 -8.83691 -7.16309 -16 -16 -16s-16 7.16309 -16 16s7.16309 16 16 16s16 -7.16309 16 -16z" />
d="M304 128c8.83203 0 16 -7.16797 16 -16s-7.16797 -16 -16 -16s-16 7.16797 -16 16s7.16797 16 16 16zM336 224c8.83203 0 16 -7.16797 16 -16s-7.16797 -16 -16 -16s-16 7.16797 -16 16s7.16797 16 16 16zM368 160c-8.83203 0 -16 7.16797 -16 16s7.16797 16 16 16
s16 -7.16797 16 -16s-7.16797 -16 -16 -16zM336 128c-8.83203 0 -16 7.16797 -16 16s7.16797 16 16 16s16 -7.16797 16 -16s-7.16797 -16 -16 -16zM304 192c8.83203 0 16 -7.16797 16 -16s-7.16797 -16 -16 -16s-16 7.16797 -16 16s7.16797 16 16 16zM432 224
c-8.83203 0 -16 7.16797 -16 16s7.16797 16 16 16s16 -7.16797 16 -16s-7.16797 -16 -16 -16zM384 208c0 8.83203 7.16797 16 16 16s16 -7.16797 16 -16s-7.16797 -16 -16 -16s-16 7.16797 -16 16zM368 256c8.83203 0 16 -7.16797 16 -16s-7.16797 -16 -16 -16
s-16 7.16797 -16 16s7.16797 16 16 16zM464 224c8.83203 0 16 -7.16797 16 -16s-7.16797 -16 -16 -16s-16 7.16797 -16 16s7.16797 16 16 16zM496 256c8.83203 0 16 -7.16797 16 -16s-7.16797 -16 -16 -16s-16 7.16797 -16 16s7.16797 16 16 16zM432 192
c8.83203 0 16 -7.16797 16 -16s-7.16797 -16 -16 -16s-16 7.16797 -16 16s7.16797 16 16 16zM400 160c8.83203 0 16 -7.16797 16 -16s-7.16797 -16 -16 -16s-16 7.16797 -16 16s7.16797 16 16 16zM336 96c8.83203 0 16 -7.16797 16 -16s-7.16797 -16 -16 -16
s-16 7.16797 -16 16s7.16797 16 16 16zM304 64c8.83203 0 16 -7.16797 16 -16s-7.16797 -16 -16 -16s-16 7.16797 -16 16s7.16797 16 16 16zM368 128c8.83203 0 16 -7.16797 16 -16s-7.16797 -16 -16 -16s-16 7.16797 -16 16s7.16797 16 16 16zM389.65 346.35
c2.58691 -2.58691 4.6875 -7.65527 4.6875 -11.3145s-2.10059 -8.72852 -4.6875 -11.3154l-169.381 -169.37c-2.58691 -2.58691 -7.65527 -4.6875 -11.3145 -4.6875s-8.72852 2.10059 -11.3154 4.6875l-11.2998 11.3105c-2.58496 2.58594 -4.68262 7.65332 -4.68262 11.3096
c0 3.65723 2.09766 8.72363 4.68262 11.3105l5.66016 5.66992c-17.6602 17.9219 -31.9961 52.8887 -32 78.0498c0 19.2402 5.2998 37.0801 13.9297 52.8604l-10 10c-9.44434 9.47461 -27.9678 17.1641 -41.3457 17.1641c-2.10254 0 -5.5 -0.22168 -7.58398 -0.494141
c-30 -3.73047 -51 -31.7803 -51 -61.9307v-305.6c0 -8.83203 -7.16797 -16 -16 -16h-32c-8.83203 0 -16 7.16797 -16 16v303.15c0 67.9395 55.4902 129.35 123.44 128.85c27.7246 -0.138672 66.1006 -16.1992 85.6592 -35.8496l10 -10
c15.8203 8.5498 33.6602 13.8496 52.9004 13.8496c25.1631 -0.000976562 60.1289 -14.3369 78.0498 -32l5.66992 5.66016c2.58691 2.58691 7.65625 4.6875 11.3154 4.6875s8.72754 -2.10059 11.3145 -4.6875z" />
<glyph glyph-name="bath" unicode="&#xf2cd;"
d="M488 192c13.2549 0 24 -10.7451 24 -24v-16c0 -13.2549 -10.7451 -24 -24 -24h-8v-32c0 -28.4297 -12.3623 -53.9688 -32 -71.5469v-32.4531c0 -13.2549 -10.7451 -24 -24 -24h-16c-13.2549 0 -24 10.7451 -24 24v8h-256v-8c0 -13.2549 -10.7451 -24 -24 -24h-16
c-13.2549 0 -24 10.7451 -24 24v32.4531c-19.6377 17.5781 -32 43.1172 -32 71.5469v32h-8c-13.2549 0 -24 10.7451 -24 24v16c0 13.2549 10.7451 24 24 24h8v144c0 44.1123 35.8877 80 80 80c27.2119 0 51.2812 -13.667 65.7393 -34.4873
c21.8838 6.06445 46.2285 1.10449 64.1777 -15.3643c4.71289 4.1748 11.916 4.02051 16.4277 -0.491211l11.3145 -11.3145c4.68555 -4.68652 4.68555 -12.2852 0 -16.9707l-95.0303 -95.0293c-4.68652 -4.68555 -12.2852 -4.68555 -16.9707 0l-11.3145 11.3145
c-4.51172 4.51172 -4.66699 11.7148 -0.491211 16.4277c-21.5244 23.459 -23.3291 57.8281 -6.83789 83.0352c-5.68262 8.93457 -15.6641 14.8799 -27.0146 14.8799c-17.6445 0 -32 -14.3555 -32 -32v-144h408z" />
d="M32 64v48h448v-48c-0.0478516 -23.5742 -14.3848 -55.4229 -32 -71.0898v-40.9102c0 -8.83203 -7.16797 -16 -16 -16h-32c-8.83203 0 -16 7.16797 -16 16v16h-256v-16c0 -8.83203 -7.16797 -16 -16 -16h-32c-8.83203 0 -16 7.16797 -16 16v40.9102
c-17.6152 15.667 -31.9521 47.5156 -32 71.0898zM496 192c8.83203 0 16 -7.16797 16 -16v-16c0 -8.83203 -7.16797 -16 -16 -16h-480c-8.83203 0 -16 7.16797 -16 16v16c0 8.83203 7.16797 16 16 16h16v186.75v0.00585938c0 38.2256 31.0244 69.25 69.25 69.25
c15.835 0 37.7734 -9.08789 48.9697 -20.2861l19.2607 -19.2695c29.8994 13.1299 59.1094 7.60938 79.7295 -8.62012l0.169922 0.169922c2.58691 2.58496 7.65332 4.68262 11.3105 4.68262c3.65625 0 8.72266 -2.09766 11.3096 -4.68262l11.3096 -11.3096
c2.58789 -2.58691 4.68848 -7.65625 4.68848 -11.3154s-2.10059 -8.72852 -4.68848 -11.3154l-105.369 -105.369c-2.58691 -2.58789 -7.65625 -4.68848 -11.3154 -4.68848s-8.72852 2.10059 -11.3154 4.68848l-11.3096 11.3096
c-2.57617 2.58496 -4.66797 7.64551 -4.66797 11.2949s2.0918 8.70996 4.66797 11.2949l0.169922 0.169922c-16.2295 20.6201 -21.75 49.8506 -8.62012 79.7305l-19.2695 19.2598c-3.43652 3.42969 -10.165 6.21387 -15.0205 6.21387
c-11.71 0 -21.2344 -9.50391 -21.2598 -21.2139v-186.75h416z" />
<glyph glyph-name="podcast" unicode="&#xf2ce;" horiz-adv-x="448"
d="M267.429 -40.5635c-5.14258 -19.0098 -24.5703 -23.4365 -43.4287 -23.4365c-18.8574 0 -38.2861 4.42676 -43.4277 23.4365c-7.64551 28.4297 -20.5723 99.665 -20.5723 132.813c0 35.1562 31.1416 43.75 64 43.75s64 -8.59375 64 -43.75
c0 -32.9492 -12.8711 -104.179 -20.5713 -132.813zM156.867 159.446c2.6748 -2.61914 2.39941 -6.98535 -0.628906 -9.18555c-9.3125 -6.76465 -16.4609 -15.3418 -21.2354 -25.3623c-1.74219 -3.65723 -6.5 -4.6582 -9.45312 -1.8877
@ -2069,6 +2074,14 @@ c22.3008 -10.2002 46.9004 -16 72.9004 -16s50.7002 5.7998 72.9004 16h55.0996z" />
d="M464 416c26.5 0 48 -21.5 48 -48v-352c0 -26.5 -21.5 -48 -48 -48h-416c-26.5 0 -48 21.5 -48 48v352c0 26.5 21.5 48 48 48h416zM380.4 125.5l-67.1006 66.5l67.1006 66.5c4.7998 4.7998 4.7998 12.5996 0 17.4004l-40.5 40.5
c-4.80078 4.7998 -12.6006 4.7998 -17.4004 0l-66.5 -67.1006l-66.5 67.1006c-4.7998 4.7998 -12.5996 4.7998 -17.4004 0l-40.5 -40.5c-4.7998 -4.80078 -4.7998 -12.6006 0 -17.4004l67.1006 -66.5l-67.1006 -66.5c-4.7998 -4.7998 -4.7998 -12.5996 0 -17.4004
l40.5 -40.5c4.80078 -4.7998 12.6006 -4.7998 17.4004 0l66.5 67.1006l66.5 -67.1006c4.7998 -4.7998 12.5996 -4.7998 17.4004 0l40.5 40.5c4.7998 4.80078 4.7998 12.6006 0 17.4004z" />
<glyph glyph-name="compress-alt" unicode="&#xf422;" horiz-adv-x="448"
d="M4.68555 20.6855l99.3145 99.3145l-32.9219 31.0293c-15.1201 15.1201 -4.41211 40.9707 16.9697 40.9707h112c13.2549 0 23.9521 -10.7451 23.9521 -24v-112c0 -21.3818 -25.8027 -32.0898 -40.9219 -16.9707l-31.0781 32.9707l-99.3145 -99.3145
c-6.24707 -6.24707 -16.3789 -6.24707 -22.627 0l-25.373 25.373c-6.24707 6.24805 -6.24707 16.3799 0 22.627zM443.314 363.314l-99.3145 -99.3145l32.9219 -31.0293c15.1201 -15.1201 4.41211 -40.9707 -16.9697 -40.9707h-112c-13.2549 0 -23.9521 10.7451 -23.9521 24
v112c0 21.3818 25.8027 32.0898 40.9219 16.9707l31.0781 -32.9707l99.3145 99.3145c6.24707 6.24707 16.3789 6.24707 22.627 0l25.373 -25.373c6.24707 -6.24805 6.24707 -16.3799 0 -22.627z" />
<glyph glyph-name="expand-alt" unicode="&#xf424;" horiz-adv-x="448"
d="M212.686 132.686l-92.6855 -92.6855l32.9219 -31.0293c15.1201 -15.1201 4.41211 -40.9707 -16.9697 -40.9707h-112c-13.2549 0 -23.9521 10.7451 -23.9521 24v112c0 21.3818 25.8027 32.0898 40.9219 16.9707l31.0781 -32.9707l92.6855 92.6855
c6.24805 6.24805 16.3799 6.24805 22.6279 0l25.3721 -25.3721c6.24902 -6.24805 6.24902 -16.3789 0 -22.6279zM235.314 251.314l92.6855 92.6855l-32.9219 31.0293c-15.1201 15.1201 -4.41211 40.9707 16.9697 40.9707h112c13.2549 0 23.9521 -10.7451 23.9521 -24v-112
c0 -21.3818 -25.8027 -32.0898 -40.9219 -16.9707l-31.0781 32.9707l-92.6855 -92.6855c-6.24805 -6.24805 -16.3799 -6.24805 -22.6279 0l-25.3721 25.3721c-6.24902 6.24805 -6.24902 16.3789 0 22.6279z" />
<glyph glyph-name="baseball-ball" unicode="&#xf433;" horiz-adv-x="496"
d="M368.5 84.0996c12.9004 -26.6992 30.2998 -50.1992 51.4004 -70.5996c-44.6006 -43 -105.101 -69.5 -171.9 -69.5c-66.9004 0 -127.5 26.5996 -172 69.7002c21.2002 20.3994 38.5996 44 51.5 70.7002l-28.7998 13.8994c-11.1006 -23 -26.1006 -43.2998 -44.2998 -61
c-34 42.4004 -54.4004 96.1006 -54.4004 154.7s20.4004 112.3 54.4004 154.8c17.7998 -17.2998 32.5 -37.0996 43.5 -59.3994l28.6992 14.0996c-12.7998 25.9004 -30 48.9004 -50.6992 68.7998c44.5996 43.1006 105.199 69.7002 172.1 69.7002
@ -2364,6 +2377,10 @@ c0 1.77051 0.74707 4.43359 1.66895 5.94531c0.510742 0.827148 1.51855 2.01953 2.2
c-0.112305 3.6416 -3.08203 7.27051 -6.62988 8.10059zM565.27 119.9c5.92383 -5.26953 10.7432 -15.9814 10.7432 -23.9102c0 -8.49121 -5.38184 -19.6865 -12.0127 -24.9902l-151.23 -121c-9.67188 -7.72754 -27.5693 -14 -39.9492 -14h-0.0507812h-356.77
c-8.83203 0 -16 7.16797 -16 16v96c0 8.83203 7.16797 16 16 16h55.4004l46.5 37.71c17.8789 14.5059 51.0762 26.2842 74.0996 26.29h160v0c17.6309 0 31.9668 -14.3096 32 -31.9404v-0.120117c0 -1.48438 -0.206055 -3.87695 -0.459961 -5.33984
c-2.54004 -15.6992 -17.3496 -26.5996 -33.25 -26.5996h-78.29c-8.83203 0 -16 -7.16797 -16 -16s7.16797 -16 16 -16h118.27h0.176758c12.3496 0 30.1904 6.27148 39.8232 14l92.4004 73.9004c12.4004 10 30.7998 10.6992 42.5996 0z" />
<glyph glyph-name="hand-holding-water" unicode="&#xf4c1;" horiz-adv-x="576"
d="M288 192c-53 0 -96 42.0996 -96 94c0 40 57.0996 120.7 83.2002 155.6c6.39941 8.5 19.2002 8.5 25.5996 0c26.1006 -34.8994 83.2002 -115.6 83.2002 -155.6c0 -51.9004 -43 -94 -96 -94zM565.3 119.9c15.1006 -13.6006 13.9004 -36.8008 -1.2998 -48.9004l-151.2 -121
c-11.3994 -9.09961 -25.5 -14 -40 -14h-356.8c-8.7998 0 -16 7.2002 -16 16v96c0 8.7998 7.2002 16 16 16h55.4004l46.5 37.7002c21 17 47.0996 26.2998 74.0996 26.2998h160c19.5 0 34.9004 -17.4004 31.5996 -37.4004
c-2.59961 -15.6992 -17.3994 -26.5996 -33.2998 -26.5996h-78.2998c-8.7998 0 -16 -7.2002 -16 -16s7.2002 -16 16 -16h118.3c14.6006 0 28.7002 4.90039 40 14l92.4004 73.9004c12.3994 10 30.7998 10.6992 42.5996 0z" />
<glyph glyph-name="hands" unicode="&#xf4c2;" horiz-adv-x="640"
d="M204.8 217.6l57.6006 -76.7998c16.5996 -22.2002 25.5996 -49.0996 25.5996 -76.7998v-112c0 -8.7998 -7.2002 -16 -16 -16h-131.7c-7.2002 0 -13.5 4.7002 -15.2998 11.5996c-2 7.80078 -5.40039 15.2002 -10.4004 21.7002l-104.1 134.3
c-6.7998 8.5 -10.5 19.1006 -10.5 30v218.4c0 17.7002 14.2998 32 32 32s32 -14.2998 32 -32v-148.4l89.7998 -107.8c6 -7.2998 16.9004 -7.7998 23.6006 -1.09961l12.7998 12.7998c5.59961 5.59961 6.2998 14.5 1.5 20.9004l-38.1006 50.7998
@ -2723,9 +2740,11 @@ l38.4004 -44.7998l54.4004 44.7998c2.35059 1.78027 6.65137 3.22559 9.59961 3.2255
M320 88v16c0 4.40039 -3.59961 8 -8 8h-240c-4.40039 0 -8 -3.59961 -8 -8v-16c0 -4.40039 3.59961 -8 8 -8h240c4.40039 0 8 3.59961 8 8zM320 184v16c0 4.40039 -3.59961 8 -8 8h-240c-4.40039 0 -8 -3.59961 -8 -8v-16c0 -4.40039 3.59961 -8 8 -8h240
c4.40039 0 8 3.59961 8 8zM320 280v16c0 4.40039 -3.59961 8 -8 8h-240c-4.40039 0 -8 -3.59961 -8 -8v-16c0 -4.40039 3.59961 -8 8 -8h240c4.40039 0 8 3.59961 8 8z" />
<glyph glyph-name="robot" unicode="&#xf544;" horiz-adv-x="640"
d="M0 192c0 17.7002 14.2998 32 32 32h32v-192h-32c-17.7002 0 -32 14.2998 -32 32v128zM464 352c44.2002 0 80 -35.7998 80 -80v-272c0 -35.2998 -28.7002 -64 -64 -64h-320c-35.2998 0 -64 28.7002 -64 64v272c0 44.2002 35.7998 80 80 80h112v64
c0 17.7002 14.2998 32 32 32s32 -14.2998 32 -32v-64h112zM256 32v32h-64v-32h64zM224 152c22.0996 0 40 17.9004 40 40s-17.9004 40 -40 40s-40 -17.9004 -40 -40s17.9004 -40 40 -40zM352 32v32h-64v-32h64zM448 32v32h-64v-32h64zM416 152c22.0996 0 40 17.9004 40 40
s-17.9004 40 -40 40s-40 -17.9004 -40 -40s17.9004 -40 40 -40zM608 224c17.7002 0 32 -14.2998 32 -32v-128c0 -17.7002 -14.2998 -32 -32 -32h-32v192h32z" />
d="M32 224h32v-192h-32h-0.0380859c-17.6436 0 -31.9619 14.3184 -31.9619 31.9619v0.0380859v128v0.0380859c0 17.6436 14.3184 31.9619 31.9619 31.9619h0.0380859zM544 272v-272c-0.0351562 -35.293 -28.707 -63.9648 -64 -64h-320
c-35.293 0.0351562 -63.9648 28.707 -64 64v272v0.0263672c0 44.1455 35.8281 79.9736 79.9736 79.9736h0.0263672h112v64c0 17.6641 14.3359 32 32 32s32 -14.3359 32 -32v-64h112h0.0263672c44.1455 0 79.9736 -35.8281 79.9736 -79.9736v-0.0263672zM264 192
c0 22.0801 -17.9199 40 -40 40s-40 -17.9199 -40 -40s17.9199 -40 40 -40h0.00292969c22.0781 0 39.9971 17.9189 39.9971 39.9971v0.00292969zM256 64h-64v-32h64v32zM352 64h-64v-32h64v32zM456 192c0 22.0801 -17.9199 40 -40 40s-40 -17.9199 -40 -40
s17.9199 -40 40 -40h0.00292969c22.0781 0 39.9971 17.9189 39.9971 39.9971v0.00292969zM448 64h-64v-32h64v32zM640 192v-128v-0.0380859c0 -17.6436 -14.3184 -31.9619 -31.9619 -31.9619h-0.0380859h-32v192h32h0.0380859c17.6436 0 31.9619 -14.3184 31.9619 -31.9619
v-0.0380859z" />
<glyph glyph-name="ruler" unicode="&#xf545;" horiz-adv-x="640"
d="M635.7 280.8c8.7998 -15 3.59961 -34.2002 -11.6006 -42.7998l-496.8 -281.9c-15.2002 -8.59961 -34.7002 -3.5 -43.5 11.5l-79.5996 135.601c-8.7998 15 -3.5 34.0996 11.7002 42.7998l69 39.0996l59.6992 -101.399c2.2002 -3.7998 7.10059 -5.10059 10.9004 -2.90039
l13.7998 7.7998c3.7998 2.2002 5.10059 7 2.90039 10.7002l-59.7002 101.7l55.2002 31.2998l27.8994 -47.5c2.2002 -3.7998 7.10059 -5.09961 10.9004 -2.89941l13.7998 7.7998c3.7998 2.2002 5.10059 6.89941 2.90039 10.7002l-27.9004 47.3994l55.2002 31.2998
@ -3408,16 +3427,15 @@ c-5.32031 28.6699 -5.66992 57.3301 -1 86c5.32031 31.3301 15.3096 57.3301 29.96 7
c16.6494 9.33008 36.96 17.3301 60.9297 24c27.9795 7.33008 49.96 9.66992 65.9395 7zM295.91 360c-9.32031 -8.66992 -21.6504 -15 -36.96 -19c-10.6602 -3.33008 -22.2998 -5 -34.96 -5l-14.9805 1c-1.33008 9.33008 -1.33008 20 0 32
c2.66992 24 10.3203 42.3301 22.9707 55c9.31934 8.66992 21.6494 15 36.96 19c10.6592 3.33008 22.2998 5 34.96 5l14.9795 -1l1 -15c0 -12.6699 -1.66992 -24.3301 -4.99023 -35c-3.98926 -15.3301 -10.3096 -27.6699 -18.9795 -37z" />
<glyph glyph-name="atom" unicode="&#xf5d2;" horiz-adv-x="448"
d="M413.03 192c40.1396 -54.9102 41.5195 -98.5996 25.1396 -128c-29.2197 -52.3398 -101.689 -43.5801 -116.33 -41.8799c-21.4697 -51.2197 -54.2002 -86.1201 -97.8398 -86.1201s-76.3701 34.9004 -97.8398 86.1201c-14.6504 -1.7002 -87.1201 -10.46 -116.33 41.8799
c-16.3701 29.3799 -14.9902 73.1104 25.1396 128c-40.1396 54.9102 -41.5195 98.5996 -25.1396 128c10.9004 19.5195 40.5996 50.6602 116.33 41.8799c21.4795 51.2305 54.2002 86.1201 97.8398 86.1201s76.3604 -34.8896 97.8398 -86.1201
c75.79 8.85059 105.42 -22.3604 116.33 -41.8799c16.3701 -29.3799 14.9902 -73.1104 -25.1396 -128zM63.3799 96c3.69043 -6.59961 19.0205 -11.8604 43.5801 -10.9697c-2.75977 13 -5.0498 26.3701 -6.75977 40.0801c-7.66992 6.29004 -14.9102 12.6494 -21.8701 19.1797
c-15.1396 -23.4902 -18.9805 -41.0801 -14.9502 -48.29zM100.2 258.88c1.39355 11.1816 4.43555 29.2002 6.79004 40.2197c-1.82031 0.0703125 -3.98047 0.370117 -5.69043 0.370117c-21.5303 0 -34.5098 -5.33008 -37.9199 -11.4697
c-4.01953 -7.20996 -0.179688 -24.7998 14.9502 -48.2998c6.96973 6.53027 14.21 12.8896 21.8701 19.1797zM224 384c-9.46973 0 -22.2002 -13.5195 -33.8604 -37.2598c11.1904 -3.7002 22.4404 -8 33.8604 -12.8604c11.4199 4.86035 22.6699 9.16016 33.8604 12.8604
c-11.6602 23.7402 -24.3906 37.2598 -33.8604 37.2598zM224 0c9.46973 0 22.2002 13.5195 33.8604 37.2598c-11.1904 3.7002 -22.4404 8 -33.8604 12.8604c-11.4199 -4.86035 -22.6699 -9.16016 -33.8604 -12.8604c11.6602 -23.7402 24.3906 -37.2598 33.8604 -37.2598z
M286.5 157.33c1.99023 27.7998 1.98047 41.5498 0 69.3301c-26.6396 19.04 -46.1104 29.3096 -62.5 37.4795c-16.3701 -8.15918 -35.8301 -18.4297 -62.5 -37.4795c-1.99023 -27.79 -1.99023 -41.54 0 -69.3301c26.7002 -19.0703 46.1504 -29.3398 62.5 -37.4805
c16.3604 8.15039 35.7998 18.4004 62.5 37.4805zM384.62 96c4.01953 7.20996 0.179688 24.7998 -14.9502 48.29c-6.96973 -6.53027 -14.21 -12.8896 -21.8701 -19.1797c-1.70996 -13.6904 -4 -27.0605 -6.75977 -40.0605c24.5801 -0.870117 39.9102 4.33008 43.5801 10.9502
zM369.67 239.71c15.1299 23.4902 18.9697 41.0801 14.9502 48.2998c-3.41016 6.12988 -16.4004 11.4707 -37.9199 11.4707c-1.71973 0 -3.87012 -0.300781 -5.69043 -0.370117c2.35254 -11.0205 5.39453 -29.0391 6.79004 -40.2207
c7.66992 -6.29004 14.9102 -12.6494 21.8701 -19.1797zM224 224c17.6699 0 32 -14.3301 32 -32s-14.3301 -32 -32 -32s-32 14.3301 -32 32s14.3301 32 32 32z" />
d="M223.999 224c17.6328 -0.03125 31.9727 -14.3672 32.0078 -32c0 -17.6641 -14.3359 -32 -32 -32s-32 14.3359 -32 32c0 17.6602 14.333 31.9961 31.9922 32zM438.171 320c16.3789 -29.375 15.0039 -73.125 -25.1309 -128c40.1348 -54.875 41.5098 -98.625 25.1309 -128
c-29.1309 -52.375 -101.646 -43.625 -116.275 -41.875c-21.5039 -51.25 -54.2617 -86.125 -97.8965 -86.125s-76.3906 34.875 -97.8965 86.125c-14.627 -1.75 -87.1426 -10.5 -116.273 41.875c-16.3789 29.375 -15.0039 73.125 25.1289 128
c-40.1328 54.875 -41.5078 98.625 -25.1289 128c10.877 19.5 40.5078 50.625 116.273 41.875c21.5059 51.25 54.2617 86.125 97.8965 86.125s76.3926 -34.875 97.8965 -86.125c75.7656 8.875 105.398 -22.375 116.275 -41.875zM63.3389 96
c3.75195 -6.625 19.0059 -11.875 43.6348 -11c-2.75 13 -5.125 26.375 -6.75 40.125c-7.75195 6.25 -15.0039 12.625 -21.8809 19.125c-15.1289 -23.5 -19.0039 -41 -15.0039 -48.25zM100.224 258.875c1.625 13.5 3.875 26.875 6.75 40.25c-1.875 0 -4 0.375 -5.75 0.375
c-21.5059 0 -34.5078 -5.375 -37.8848 -11.5c-4 -7.25 -0.125 -24.75 15.0039 -48.25c6.87695 6.5 14.1289 12.875 21.8809 19.125zM223.999 384c-9.50195 0 -22.2539 -13.5 -33.8828 -37.25c11.2539 -3.75 22.5059 -8 33.8828 -12.875
c11.3789 4.875 22.6309 9.125 33.8828 12.875c-11.627 23.75 -24.3809 37.25 -33.8828 37.25zM223.999 0c9.50195 0 22.2559 13.5 33.8828 37.25c-11.252 3.75 -22.5039 8 -33.8828 12.875c-11.377 -4.875 -22.6289 -9.125 -33.8828 -12.875
c11.6289 -23.75 24.3809 -37.25 33.8828 -37.25zM223.999 112c44.1602 0 80 35.8398 80 80s-35.8398 80 -80 80s-80 -35.8398 -80 -80s35.8398 -80 80 -80zM384.659 96c4 7.25 0.125 24.75 -15.0039 48.25c-6.875 -6.5 -14.127 -12.875 -21.8789 -19.125
c-1.625 -13.75 -4 -27.125 -6.75195 -40.125c24.6309 -0.875 40.0098 4.375 43.6348 11zM369.655 239.75c15.1289 23.5 19.0039 41 15.0039 48.25c-3.375 6.125 -16.3789 11.5 -37.8828 11.5c-1.75 0 -3.87695 -0.375 -5.75195 -0.375
c2.87695 -13.375 5.12695 -26.75 6.75195 -40.25c7.75195 -6.25 15.0039 -12.625 21.8789 -19.125z" />
<glyph glyph-name="bone" unicode="&#xf5d7;" horiz-adv-x="640"
d="M598.88 203.44c-9.42969 -4.70996 -9.42969 -18.1709 -0.00976562 -22.8809c25.2002 -12.5996 41.1201 -38.3496 41.1201 -66.5293v-7.64062c0 -41.0898 -33.2998 -74.3896 -74.3799 -74.3896c-32.0107 0 -60.4404 20.4902 -70.5703 50.8604
c-6.53027 19.5996 -10.7305 45.1396 -38.1104 45.1396h-273.87c-26.5098 0 -30.4297 -22.1104 -38.1094 -45.1396c-10.1299 -30.3701 -38.5498 -50.8604 -70.5703 -50.8604c-41.0801 0 -74.3799 33.2998 -74.3799 74.3896v7.64062
@ -3488,6 +3506,13 @@ d="M12.4102 299.98c-16.5498 7.50977 -16.5498 32.5293 0 40.0391l232.95 105.671c2.
c-6.7998 -3.08984 -14.4893 -3.08984 -21.29 0zM499.59 211.7c16.5498 -7.5 16.5498 -32.5 0 -40l-232.95 -105.59c-6.7998 -3.08008 -14.4893 -3.08008 -21.29 0l-232.939 105.59c-16.5498 7.5 -16.5498 32.5 0 40l58.0996 26.3301l161.63 -73.2705
c7.57031 -3.42969 15.5908 -5.16992 23.8604 -5.16992s16.2998 1.74023 23.8604 5.16992l161.64 73.2705zM499.59 83.9004c16.5498 -7.5 16.5498 -32.5 0 -40l-232.95 -105.591c-6.7998 -3.0791 -14.4893 -3.0791 -21.29 0l-232.939 105.591
c-16.5498 7.5 -16.5498 32.5 0 40l57.8799 26.2295l161.85 -73.3701c7.57031 -3.42969 15.5908 -5.16992 23.8604 -5.16992s16.2998 1.74023 23.8604 5.16992l161.859 73.3701z" />
<glyph glyph-name="lungs" unicode="&#xf604;" horiz-adv-x="640"
d="M636.11 57.8496c2.58984 -9.68945 3.88965 -19.6396 3.88965 -29.6299c0 -61.2295 -62.4805 -105.439 -125.24 -88.6201l-59.5 15.9502c-42.1797 11.3105 -71.2598 47.4697 -71.2598 88.6201v87.4902l85.8398 -57.2305
c1.1123 -0.741211 3.09961 -1.34375 4.43652 -1.34375c2.36328 0 5.34375 1.59668 6.65332 3.56445l8.87988 13.3096c0.742188 1.1123 1.34375 3.09961 1.34375 4.43555c0 2.36328 -1.5957 5.34473 -3.56348 6.6543l-167.59 111.72l-167.59 -111.72
c-1.96777 -1.30957 -3.56445 -4.29004 -3.56445 -6.65332c0 -1.33691 0.602539 -3.32422 1.34473 -4.43652l8.87988 -13.3096c1.30859 -1.96777 4.29004 -3.56445 6.65332 -3.56445c1.33691 0 3.32422 0.601562 4.43652 1.34375l85.8398 57.2305v-87.4902
c0 -41.1504 -29.0801 -77.3203 -71.2598 -88.6201l-59.5 -15.9502c-62.7598 -16.8193 -125.24 27.3906 -125.24 88.6201c0 9.99023 1.2998 19.9404 3.88965 29.6299c21.6699 81.3008 56.04 159.15 102.011 231.021c22.1191 34.5703 36.0693 63.1299 80.0498 63.1299
c38.6895 0 70.0498 -29.4199 70.0498 -65.71v-60.1104l32.8799 21.9199c4.4502 2.9707 7.12012 7.95996 7.12012 13.3105v170.59c0 8.83984 7.16016 16 16 16h16c8.83984 0 16 -7.16016 16 -16v-170.59v-0.00292969c0 -4.72363 3.18945 -10.6855 7.12012 -13.3076
l32.8799 -21.9199v60.1104c0 36.29 31.3604 65.71 70.0498 65.71c43.9805 0 57.9307 -28.5596 80.0498 -63.1299c45.9707 -71.8701 80.3408 -149.72 102.011 -231.021z" />
<glyph glyph-name="microscope" unicode="&#xf610;"
d="M160 128c-17.6699 0 -32 14.3301 -32 32v224c0 17.6699 14.3301 32 32 32v16c0 8.83984 7.16016 16 16 16h64c8.83984 0 16 -7.16016 16 -16v-16c17.6699 0 32 -14.3301 32 -32v-224c0 -17.6699 -14.3301 -32 -32 -32h-12v-16c0 -8.83984 -7.16016 -16 -16 -16h-40
c-8.83984 0 -16 7.16016 -16 16v16h-12zM464 0c26.5098 0 48 -21.4902 48 -48c0 -8.83984 -7.16016 -16 -16 -16h-480c-8.83984 0 -16 7.16016 -16 16c0 26.5098 21.4902 48 48 48h272c70.5801 0 128 57.4199 128 128s-57.4199 128 -128 128v64
@ -3502,8 +3527,8 @@ d="M451.36 78.8604c34.3301 -5.48047 60.6396 -34.9805 60.6396 -70.8604c0 -39.7598
c0 39.7695 32.2402 72 72 72h14.0703c-13.4199 11.7305 -22.0703 28.7803 -22.0703 48c0 35.3496 28.6504 64 64 64h16c44.1797 0 80 35.8203 80 80c0 17.3799 -5.69043 33.3604 -15.1104 46.4805c4.95996 0.779297 9.94043 1.51953 15.1104 1.51953
c53.0195 0 96 -42.9805 96 -96c0 -11.2803 -2.30957 -21.9502 -5.87988 -32h5.87988c35.3496 0 64 -28.6504 64 -64c0 -19.2197 -8.65039 -36.2695 -22.0703 -48h14.0703c39.7598 0 72 -32.2305 72 -72c0 -23.4102 -11.3398 -43.9902 -28.6396 -57.1396z" />
<glyph glyph-name="shapes" unicode="&#xf61f;"
d="M512 128v-160c0 -17.6699 -14.3301 -32 -32 -32h-160c-17.6699 0 -32 14.3301 -32 32v160c0 17.6699 14.3301 32 32 32h160c17.6699 0 32 -14.3301 32 -32zM128 192c70.6904 0 128 -57.3096 128 -128s-57.3096 -128 -128 -128s-128 57.3096 -128 128s57.3096 128 128 128
zM479.03 224h-190.061c-25.3398 0 -41.1797 26.6699 -28.5098 48l95.0303 160c12.6699 21.3301 44.3496 21.3301 57.0195 0l95.0303 -160c12.6699 -21.3301 -3.16992 -48 -28.5098 -48z" />
d="M128 192c70.6562 0 128 -57.3438 128 -128s-57.3438 -128 -128 -128s-128 57.3438 -128 128s57.3438 128 128 128zM507 246.86c14.2402 -24.3799 -3.58008 -54.8604 -32.0898 -54.8604h-213.82c-28.5098 0 -46.3301 30.4805 -32.0898 54.8604l106.93 182.85
c5.97266 10.0967 20.3398 18.291 32.0703 18.291s26.0977 -8.19434 32.0703 -18.291zM480 160c17.6641 0 32 -14.3359 32 -32v-160c0 -17.6641 -14.3359 -32 -32 -32h-160c-17.6641 0 -32 14.3359 -32 32v160c0 17.6641 14.3359 32 32 32h160z" />
<glyph glyph-name="star-of-life" unicode="&#xf621;" horiz-adv-x="480"
d="M471.99 113.57c7.66016 -4.41992 10.2793 -14.2002 5.85938 -21.8506l-32.0195 -55.4297c-4.41992 -7.66016 -14.21 -10.2803 -21.8701 -5.86035l-135.93 78.4307v-156.86c0 -8.83984 -7.16992 -16 -16.0107 -16h-64.0391c-8.84082 0 -16.0107 7.16016 -16.0107 16
v156.85l-135.93 -78.4297c-7.66016 -4.41016 -17.4502 -1.79004 -21.8701 5.86035l-32.0195 55.4297c-4.41992 7.65039 -1.80078 17.4404 5.85938 21.8604l135.931 78.4297l-135.931 78.4297c-7.66016 4.41992 -10.2793 14.21 -5.85938 21.8604l32.0195 55.4199
@ -3629,8 +3654,8 @@ c26.5098 0 48 -21.4902 48 -48v-44.1396c12.3701 -9.34082 20.7598 -15.8701 29.6104
d="M464 320c26.5098 0 48 -21.4902 48 -48v-224c0 -26.5098 -21.4902 -48 -48 -48h-416c-26.5098 0 -48 21.4902 -48 48v288c0 26.5098 21.4902 48 48 48h160l64 -64h192zM368 152v16c0 8.83984 -7.16016 16 -16 16h-192c-8.83984 0 -16 -7.16016 -16 -16v-16
c0 -8.83984 7.16016 -16 16 -16h192c8.83984 0 16 7.16016 16 16z" />
<glyph glyph-name="folder-plus" unicode="&#xf65e;"
d="M464 320c26.5098 0 48 -21.4902 48 -48v-224c0 -26.5098 -21.4902 -48 -48 -48h-416c-26.5098 0 -48 21.4902 -48 48v288c0 26.5098 21.4902 48 48 48h160l64 -64h192zM368 152v16c0 8.83984 -7.16016 16 -16 16h-72v72c0 8.83984 -7.16016 16 -16 16h-16
c-8.83984 0 -16 -7.16016 -16 -16v-72h-72c-8.83984 0 -16 -7.16016 -16 -16v-16c0 -8.83984 7.16016 -16 16 -16h72v-72c0 -8.83984 7.16016 -16 16 -16h16c8.83984 0 16 7.16016 16 16v72h72c8.83984 0 16 7.16016 16 16z" />
d="M464 320c26.4961 0 48 -21.5039 48 -48v-224c0 -26.4961 -21.5039 -48 -48 -48h-416c-26.4961 0 -48 21.5039 -48 48v288c0 26.4961 21.5039 48 48 48h160l64 -64h192zM359.5 152v16c0 8.83203 -7.16797 16 -16 16h-64v64c0 8.83203 -7.16797 16 -16 16h-16
c-8.83203 0 -16 -7.16797 -16 -16v-64h-64c-8.83203 0 -16 -7.16797 -16 -16v-16c0 -8.83203 7.16797 -16 16 -16h64v-64c0 -8.83203 7.16797 -16 16 -16h16c8.83203 0 16 7.16797 16 16v64h64c8.83203 0 16 7.16797 16 16z" />
<glyph glyph-name="funnel-dollar" unicode="&#xf662;" horiz-adv-x="640"
d="M433.46 282.06c-83.4102 -20.8896 -145.46 -96.2695 -145.46 -186.06c0 -54.3496 22.7998 -103.38 59.21 -138.35c-10.75 -20.54 -38.3604 -29.21 -59.2197 -13.5703l-79.9902 60c-10.0703 7.55957 -16 19.4102 -16 32v155.92l-182.66 201.93
c-19.9502 19.9502 -5.82031 54.0703 22.4004 54.0703h480.52c28.2207 0 42.3506 -34.1201 22.4004 -54.0703zM480 256c88.3701 0 160 -71.6299 160 -160s-71.6299 -160 -160 -160s-160 71.6299 -160 160s71.6299 160 160 160zM496 16.1201
@ -3649,38 +3674,41 @@ d="M509.34 140.75c1.46875 -3.37012 2.66016 -9.08984 2.66016 -12.7656c0 -6.95703
c-4.74707 5.08496 -8.59961 14.8574 -8.59961 21.8145c0 3.67578 1.19141 9.39551 2.66016 12.7656c5.05957 11.6904 16.5898 19.25 29.3398 19.25h64v208c0 22 18 40 40 40s40 -18 40 -40v-134c0 -5.51953 4.48047 -10 10 -10h20c5.51953 0 10 4.48047 10 10v174
c0 22 18 40 40 40s40 -18 40 -40v-174c0 -5.51953 4.48047 -10 10 -10h20c5.51953 0 10 4.48047 10 10v134c0 22 18 40 40 40s40 -18 40 -40v-208h64c12.75 0 24.2803 -7.55957 29.3398 -19.25zM256 32c53.0195 0 96 64 96 64s-42.9805 64 -96 64s-96 -64 -96 -64
s42.9805 -64 96 -64zM256 128c17.6699 0 32 -14.3301 32 -32s-14.3301 -32 -32 -32s-32 14.3301 -32 32s14.3301 32 32 32z" />
<glyph glyph-name="haykal" unicode="&#xf666;"
<glyph glyph-name="bahai" unicode="&#xf666;"
d="M496.25 245.48c17.54 -2.46094 21.6797 -26.2705 6.04004 -34.6602l-98.1602 -52.6602l74.4805 -83.54c11.8594 -13.29 0.00976562 -34.25 -17.3506 -30.4902l-108.569 23.6504l4.10938 -112.55c0.430664 -11.6504 -8.87012 -19.2207 -18.4102 -19.2207
c-5.15918 0 -10.3896 2.20996 -14.1992 7.18066l-68.1807 88.8994l-68.1797 -88.8994c-3.81055 -4.9707 -9.0498 -7.18066 -14.2002 -7.18066c-9.54004 0 -18.8398 7.57031 -18.4102 19.2207l4.11035 112.55l-108.57 -23.6504
c-1.39941 -0.30957 -2.75977 -0.450195 -4.06934 -0.450195c-15.0107 0 -24.21 18.6807 -13.29 30.9307l74.4795 83.54l-98.1602 52.6592c-15.6494 8.40039 -11.5098 32.21 6.03027 34.6709l110 15.4297l-41.8203 104.34c-6.66016 16.6396 11.6006 32.1797 26.5898 22.6299
l94.04 -59.8896l34.0908 107.189c2.70996 8.55078 10.0293 12.8203 17.3496 12.8203s14.6396 -4.26953 17.3496 -12.8203l34.0908 -107.18l94.04 59.8896c14.9893 9.55078 33.2598 -5.98926 26.5898 -22.6299l-41.8203 -104.34zM338.51 136.32l-35.6094 39.9297
l46.9199 25.1699l-52.5703 7.37988l19.9902 49.8701l-44.9502 -28.6201l-16.29 51.2305l-16.3096 -51.2305l-44.9502 28.6201l19.9902 -49.8701l-52.5703 -7.37988l46.9199 -25.1699l-35.5996 -39.9297l51.8896 11.2998l-1.95996 -53.79l32.5898 42.4902l32.5898 -42.4902
l-1.96973 53.79z" />
<glyph glyph-name="jedi" unicode="&#xf669;" horiz-adv-x="544"
d="M479.99 96h39.96c-42.6299 -94.1699 -137.641 -160 -247.98 -160c-4.25977 0 -8.5498 0.0898438 -12.8496 0.290039c-103.97 4.76953 -193.851 69.4795 -235.101 159.71h39.9102l-58.5996 58.5996c-2.57031 12.8809 -4.49023 25.9805 -5.11035 39.4102
c-0.469727 10.0801 -0.129883 20.0703 0.5 29.9902h47.21l-41.3799 41.3799c14.3701 64.7002 52.1006 122.55 107.97 162.07c2.77051 1.95996 5.9707 3 9.27051 3c5.37988 0 10.4297 -2.70996 13.5098 -7.25c3.0498 -4.5 3.64062 -10 1.62012 -15.0898
c-6.53027 -16.4502 -9.83984 -33.7002 -9.83984 -51.2607c0 -45.1191 21.04 -86.5801 57.71 -113.739c4.00977 -2.9707 6.4502 -7.48047 6.69043 -12.3799c0.239258 -4.90039 -1.76074 -9.65039 -5.48047 -13.0107c-26.5498 -23.9795 -41.1699 -56.5 -41.1699 -91.5801
c0 -60.0293 42.9502 -110.279 99.8896 -121.92l2.5 65.2607l-27.1602 -18.4805c-2.96973 -2 -7.40918 -1.7002 -10 0.75c-2.72949 2.61035 -3.30957 6.70996 -1.38965 9.94043l20.1299 33.7695l-42.0693 8.71973c-3.71094 0.75 -6.38086 4.05078 -6.38086 7.83008
c0 3.78027 2.68066 7.08008 6.38086 7.83008l42.0693 8.73047l-20.1094 33.7295c-1.94043 3.27051 -1.36035 7.35059 1.35938 9.94043c2.73047 2.60938 6.86035 2.89941 10 0.779297l30.3906 -20.6592l11.5195 287.97c0.160156 4.29004 3.66992 7.66992 8 7.66992h0.0400391
c4.25293 0 7.81934 -3.44922 7.95996 -7.7002l11.5303 -287.93l30.3896 20.6699c3.03027 2.08984 7.2998 1.75 10 -0.799805c2.71973 -2.60059 3.2998 -6.68066 1.37988 -9.91016l-20.1299 -33.7705l42.0703 -8.72949c3.68945 -0.770508 6.37988 -4.06055 6.37988 -7.83008
c0 -3.78027 -2.67969 -7.08008 -6.37988 -7.83008l-42.0703 -8.71973l20.1104 -33.7305c0.631836 -1.05078 1.14453 -2.89844 1.14453 -4.12402c0 -1.89355 -1.11328 -4.49023 -2.48438 -5.7959c-2.63086 -2.49023 -7.04004 -2.85938 -10.0205 -0.799805l-27.1699 18.4697
l2.5 -65.3398c48.4697 9.40039 87.5703 48.1504 97.3096 96.5c8.78027 43.5605 -5.63965 87.3203 -38.5693 117.07c-3.73047 3.37012 -5.73047 8.10938 -5.49023 13.0303c0.240234 4.89941 2.67969 9.41992 6.7002 12.3994c36.6602 27.1602 57.6895 68.6104 57.6895 113.73
c0 17.5801 -3.30957 34.8496 -9.85938 51.3096c-2.03027 5.09961 -1.44043 10.5996 1.60938 15.0898c3.08008 4.53027 8.12012 7.24023 13.4902 7.24023c3.28027 0 6.48047 -1.03027 9.25 -2.99023c55.4805 -39.2197 93.4102 -97.4795 107.91 -162.27l-41.25 -41.2402
h46.9502c0.370117 -5.75977 1.0498 -11.46 1.0498 -17.2695c0 -17.7402 -1.83984 -35.0605 -5.12988 -51.8604z" />
<glyph glyph-name="jedi" unicode="&#xf669;" horiz-adv-x="576"
d="M535.953 96c-42.6406 -94.1719 -137.641 -160 -247.984 -160c-4.26562 0 -8.54688 0.0986328 -12.8447 0.296875c-103.969 4.76562 -193.859 69.4688 -235.109 159.703h39.9219l-58.6094 58.5938c-2.22949 10.7744 -4.51758 28.4355 -5.10938 39.4219
c-0.109375 2.87891 -0.199219 7.55469 -0.199219 10.4365c0 5.40234 0.313477 14.1592 0.699219 19.5479h47.2188l-41.3906 41.375c12.4873 56.2656 60.8574 128.877 107.969 162.078c2.29785 1.64453 6.45605 2.98828 9.28125 3
c4.78613 -0.0263672 10.835 -3.27441 13.5 -7.25c1.54883 -2.25977 2.80566 -6.31836 2.80566 -9.05762c0 -1.72949 -0.529297 -4.43359 -1.18066 -6.03613c-5.43359 -13.626 -9.84375 -36.5908 -9.84375 -51.2598v-0.00585938
c0 -45.1094 21.0469 -86.5781 57.7188 -113.734c3.70312 -2.69531 6.70801 -8.59863 6.70801 -13.1787c0 -4.05469 -2.46582 -9.52637 -5.50488 -12.2119c-26.5469 -23.9844 -41.1719 -56.5 -41.1719 -91.5781c0 -60.0312 42.9531 -110.281 99.8906 -121.922l2.5 65.2656
l-27.1562 -18.4844c-1.13477 -0.728516 -3.15234 -1.31934 -4.50098 -1.31934c-1.73242 0 -4.19629 0.926758 -5.49902 2.06934c-1.38965 1.31152 -2.5166 3.92578 -2.5166 5.83691c0 1.2168 0.504883 3.05469 1.12598 4.10059l20.125 33.7656l-42.0625 8.73438
c-3.52734 0.720703 -6.39062 4.22754 -6.39062 7.82812s2.86328 7.10742 6.39062 7.82812l42.0625 8.71875l-20.1094 33.7344c-0.632812 1.05078 -1.14648 2.89844 -1.14648 4.12598c0 4.41113 3.58008 7.99121 7.99121 7.99121
c1.36523 0 3.38867 -0.626953 4.51465 -1.39844l30.3906 -20.6562l11.5166 287.969c0.15918 4.23535 3.72754 7.67188 7.96484 7.67188h0.0351562h0.046875c4.22266 -0.0322266 7.78516 -3.4834 7.95312 -7.70312l11.5312 -287.922l30.3906 20.6719
c1.12402 0.75 3.13477 1.35938 4.48633 1.35938c1.75781 0 4.22754 -0.972656 5.51367 -2.17188c1.38672 -1.30762 2.5127 -3.91504 2.5127 -5.82129c0 -1.21191 -0.50293 -3.04199 -1.12207 -4.08496l-20.1406 -33.7656l42.0781 -8.73438
c3.51855 -0.727539 6.375 -4.23438 6.375 -7.82812s-2.85645 -7.10059 -6.375 -7.82812l-42.0781 -8.71875l20.1094 -33.7344c0.637695 -1.05273 1.15625 -2.90625 1.15625 -4.13672c0 -1.8916 -1.11328 -4.48242 -2.48438 -5.78516
c-1.30176 -1.1748 -3.78125 -2.12891 -5.53418 -2.12891c-1.35059 0 -3.36523 0.59668 -4.49707 1.33203l-27.1719 18.4688l2.5 -65.3438c48.4844 9.40625 87.5781 48.1562 97.3125 96.5c1.41602 6.84082 2.56641 18.0625 2.56641 25.0488
c0 30.4727 -18.4258 71.7021 -41.1289 92.0293c-3.04688 2.6875 -5.52051 8.16602 -5.52051 12.2285c0 4.58691 3.0127 10.498 6.72363 13.1934c36.6562 27.1719 57.6875 68.6094 57.6875 113.734v0.0839844c0 14.6631 -4.41699 37.6133 -9.85938 51.2285
c-0.658203 1.60645 -1.19238 4.31934 -1.19238 6.05566c0 2.73438 1.25488 6.7832 2.80176 9.03809c2.66895 3.96875 8.7168 7.20996 13.5 7.23438c2.81445 -0.0107422 6.95898 -1.34863 9.25 -2.98438c47.0215 -33.3271 95.3633 -106.028 107.906 -162.281l-41.25 -41.2344
h46.9531c0.359375 -5.76562 1.04688 -11.4531 1.04688 -17.2656c-0.0273438 -14.4502 -2.32324 -37.6836 -5.125 -51.8594l-58.8906 -58.875h39.9688z" />
<glyph glyph-name="journal-whills" unicode="&#xf66a;" horiz-adv-x="448"
d="M448 89.5996c0 -9.59961 -3.2002 -16 -9.59961 -19.1992c-3.2002 -12.8008 -3.2002 -57.6006 0 -73.6006c6.39941 -6.39941 9.59961 -12.7998 9.59961 -19.2002v-16c0 -16 -12.7998 -25.5996 -25.5996 -25.5996h-326.4c-54.4004 0 -96 41.5996 -96 96v320
c0 54.4004 41.5996 96 96 96h326.4c16 0 25.5996 -9.59961 25.5996 -25.5996v-332.801zM133.08 303.61c-2.98047 -10.0908 -5.08008 -20.5605 -5.07031 -31.6201c0 -0.520508 0.140625 -0.990234 0.150391 -1.50977l37.1094 -32.4707
c3.33008 -2.89941 3.6709 -7.9502 0.75 -11.2793c-1.5791 -1.81055 -3.7998 -2.73047 -6.01953 -2.73047h-0.0175781c-1.65527 0 -4.00879 0.886719 -5.25195 1.98047l-23.5908 20.6396c11.54 -49.5801 55.7705 -86.6201 108.86 -86.6201s97.3203 37.04 108.87 86.6299
l-23.5898 -20.6396c-1.52051 -1.32031 -3.39062 -1.98047 -5.27051 -1.98047h-0.0146484c-2 0 -4.69043 1.22363 -6.00488 2.73047c-1.09668 1.24707 -1.98633 3.60645 -1.98633 5.2666c0 2.00293 1.22559 4.69727 2.73633 6.0127l37.1094 32.4707
c0.0107422 0.519531 0.150391 0.990234 0.150391 1.50977c0 11.0498 -2.09961 21.5195 -5.07031 31.5996l-21.2598 -21.2598c-1.57031 -1.55957 -3.61035 -2.33984 -5.66016 -2.33984s-4.09961 0.780273 -5.66016 2.33984c-3.11914 3.12012 -3.11914 8.19043 0 11.3105
l26.4199 26.4199c-10 20.8994 -26.2393 37.9795 -46.3691 49.2598c5.97949 -9.73047 9.59961 -21.0703 9.59961 -33.3301c0 -19.96 -9.33008 -37.5703 -23.6602 -49.3096c9.65039 -10.0605 15.6602 -23.6504 15.6602 -38.6904c0 -26.9404 -19.04 -49.4004 -44.3701 -54.7402
l-1.42969 34.2803l12.6797 -8.62012c0.69043 -0.459961 1.46973 -0.689453 2.25 -0.689453c0.980469 0 1.98047 0.369141 2.75 1.08984c1.36035 1.2793 1.63965 3.33984 0.69043 4.94922l-8.54004 14.3105l17.9102 3.71973
c1.85938 0.390625 3.18945 2.03027 3.18945 3.91992c0 1.89062 -1.33008 3.53027 -3.18945 3.91992l-17.9102 3.7207l8.54004 14.3096c0.308594 0.521484 0.55957 1.43652 0.55957 2.04297c0 0.950195 -0.55957 2.25293 -1.25 2.90723
c-0.645508 0.59668 -1.88281 1.08105 -2.76172 1.08105c-0.672852 0 -1.67578 -0.300781 -2.23828 -0.670898l-14.2002 -9.65039l-4.67969 112.29c-0.0898438 2.13965 -1.86035 3.83008 -4 3.83008s-3.91016 -1.69043 -4 -3.83008l-4.62012 -110.81l-12.0098 8.15918
c-1.56055 1.03027 -3.63965 0.890625 -5 -0.40918c-1.36035 -1.28027 -1.63965 -3.34082 -0.69043 -4.9502l8.54004 -14.3105l-17.9102 -3.71973c-1.85938 -0.389648 -3.18945 -2.03027 -3.18945 -3.91992s1.33008 -3.53027 3.18945 -3.91992l17.9102 -3.71973
l-8.54004 -14.3105c-0.308594 -0.521484 -0.55957 -1.43652 -0.55957 -2.04297c0 -0.950195 0.55957 -2.25293 1.25 -2.90723c0.769531 -0.709961 1.75 -1.08984 2.75 -1.08984c0.780273 0 1.55957 0.240234 2.25 0.69043l10.3701 7.04004l-1.36035 -32.71
c-25.3398 5.35938 -44.3799 27.8193 -44.3799 54.7598c0 15.04 6.00977 28.6299 15.6602 38.6904c-14.3301 11.7393 -23.6602 29.3496 -23.6602 49.3096c0 12.2598 3.62012 23.5996 9.61035 33.3398c-20.1299 -11.29 -36.3701 -28.3594 -46.3701 -49.2598l26.4199 -26.4199
c3.12012 -3.12012 3.12012 -8.19043 0 -11.3105c-1.57031 -1.55957 -3.61035 -2.33984 -5.66016 -2.33984s-4.09961 0.780273 -5.66016 2.33984zM380.8 0v64h-284.8c-16 0 -32 -12.7998 -32 -32s12.7998 -32 32 -32h284.8z" />
d="M438.406 70.4062c-3.20312 -12.8125 -3.20312 -57.6094 0 -73.6094c6.39062 -6.39062 9.58887 -12.792 9.59375 -19.2031v-16c0 -16 -12.7969 -25.5938 -25.5938 -25.5938h-326.406c-54.4062 0 -96 41.5938 -96 96v320c0 54.4062 41.5938 96 96 96h326.406
c16 0 25.5938 -9.59375 25.5938 -25.5938v-332.812c0 -9.59375 -3.19824 -15.9893 -9.59375 -19.1875zM380.797 64h-284.797c-16 0 -32 -12.7969 -32 -32s12.7969 -32 32 -32h284.797v64zM128.016 271.984c0 -0.515625 0.140625 -0.984375 0.140625 -1.5l37.1094 -32.4688
c1.50488 -1.31934 2.72656 -4.01465 2.72656 -6.01562c0 -4.41211 -3.58008 -7.99609 -7.99219 -8h-0.015625c-1.625 0.0820312 -3.97656 0.97168 -5.25 1.98438l-23.5938 20.6406c11.5469 -49.5781 55.7656 -86.625 108.859 -86.625s97.3125 37.0469 108.875 86.625
l-23.5938 -20.6406c-1.25 -1.08691 -3.60938 -1.96875 -5.26562 -1.96875v0h-0.015625c-1.9502 0.108398 -4.64551 1.32617 -6.01562 2.71875c-1.01074 1.27832 -1.89941 3.6377 -1.98438 5.26562c0.107422 1.9541 1.33203 4.64941 2.73438 6.01562l37.1094 32.4688
c0.015625 0.53125 0.15625 1 0.15625 1.51562c0 11.0469 -2.09375 21.5156 -5.0625 31.5938l-21.2656 -21.25c-1.29492 -1.2959 -3.83105 -2.34766 -5.66309 -2.34766c-4.41895 0 -8.00488 3.58594 -8.00488 8.00488c0 1.82812 1.04883 4.36133 2.33984 5.65527
l26.4219 26.4062c-8.47949 17.6582 -29.249 39.7295 -46.3594 49.2656c5.2959 -8.46484 9.59375 -23.4395 9.59375 -33.4248c0 -16.7217 -10.5977 -38.7705 -23.6562 -49.2158c8.64258 -8.95605 15.6562 -26.3262 15.6562 -38.7725
c0 -25.0283 -19.8799 -49.5117 -44.375 -54.6494l-1.42188 34.2812l12.6719 -8.625c0.557617 -0.379883 1.55762 -0.6875 2.23242 -0.6875h0.0175781h0.0253906c2.19727 0 3.98145 1.7832 3.98145 3.98047c0 0.609375 -0.254883 1.52832 -0.569336 2.05078l-8.53125 14.3125
l17.9062 3.71875c1.75977 0.367188 3.1875 2.12402 3.1875 3.92188s-1.42773 3.55469 -3.1875 3.92188l-17.9062 3.71875l8.53125 14.3125c0.314453 0.522461 0.569336 1.44141 0.569336 2.05078c0 2.19727 -1.78418 3.98047 -3.98145 3.98047h-0.0253906
c-0.668945 -0.0263672 -1.67676 -0.327148 -2.25 -0.671875l-14.1875 -9.65625l-4.6875 112.297c-0.0927734 2.11328 -1.88477 3.82812 -4 3.82812s-3.90723 -1.71484 -4 -3.82812l-4.625 -110.812l-12 8.15625c-0.561523 0.380859 -1.56836 0.69043 -2.24707 0.69043
c-2.20996 0 -4.00293 -1.79297 -4.00293 -4.00293c0 -0.607422 0.251953 -1.52441 0.5625 -2.04688l8.53125 -14.3125l-17.9062 -3.71875c-1.75977 -0.364258 -3.1875 -2.11719 -3.1875 -3.91406s1.42773 -3.5498 3.1875 -3.91406l17.9062 -3.73438l-8.53125 -14.2969
c-0.285156 -0.529297 -0.537109 -1.44629 -0.5625 -2.04688c0.0507812 -0.928711 0.611328 -2.23047 1.25 -2.90625c0.639648 -0.603516 1.87109 -1.09277 2.75 -1.09375c0.677734 0.00292969 1.68555 0.311523 2.25 0.6875l10.3594 7.04688l-1.35938 -32.7188
c-24.4951 5.14746 -44.375 29.6396 -44.375 54.6699c0 12.4482 7.01367 29.8232 15.6562 38.7832c-13.0586 10.4434 -23.6562 32.4893 -23.6562 49.21c0 9.99316 4.30469 24.9775 9.60938 33.4463c-17.1104 -9.53906 -37.8867 -31.6104 -46.375 -49.2656l26.4219 -26.4219
c1.28516 -1.29199 2.3291 -3.81934 2.3291 -5.64258c0 -4.41504 -3.58398 -7.99902 -7.99902 -7.99902c-1.82324 0 -4.35059 1.04395 -5.64258 2.3291l-21.2656 21.2656c-2.98438 -10.0938 -5.07812 -20.5625 -5.0625 -31.625z" />
<glyph glyph-name="kaaba" unicode="&#xf66b;" horiz-adv-x="576"
d="M554.12 364.49c13.0703 -4.36035 21.8799 -16.5898 21.8799 -30.3604v-49.0098l-265 79.5098c-15.0596 4.5 -30.9502 4.5 -45.9805 0l-265.02 -79.5098v49.0098c0.000976562 12.7314 9.80273 26.332 21.8799 30.3604l235.771 78.5801
c8.15723 2.71973 21.7559 4.92676 30.3545 4.92676s22.1982 -2.20703 30.3555 -4.92676zM274.22 333.97c9 2.7207 18.5498 2.7207 27.5898 0l274.2 -82.2598v-228.39c0 -15 -10.4199 -27.9902 -25.0596 -31.2402l-242.12 -53.7998
@ -3892,10 +3920,10 @@ l-100.43 175.75h100.43z" />
d="M422.19 338.05c5.3291 -3.24023 5.2998 -11.2695 -0.0507812 -14.46l-198.14 -118.14l-198.13 118.14c-5.35059 3.19043 -5.37988 11.2305 -0.0605469 14.46l165.971 100.88c19.9102 12.1006 44.5195 12.1006 64.4297 0zM436.03 293.42
c5.33008 3.17969 11.9697 -0.839844 11.9697 -7.25v-197.7c0 -23.7598 -12.1104 -45.7393 -31.79 -57.7002l-152.16 -92.4795c-10.6602 -6.48047 -24.0498 1.5498 -24.0498 14.4297v223.82zM0 286.17c0 6.41016 6.63965 10.4297 11.9697 7.25l196.03 -116.88v-223.81
c0 -12.8906 -13.3799 -20.9102 -24.0498 -14.4307l-152.16 92.4697c-19.6797 11.9609 -31.79 33.9307 -31.79 57.7002v197.7z" />
<glyph glyph-name="dog" unicode="&#xf6d3;"
d="M496 352c8.83984 0 16 -7.16016 16 -16v-32c0 -35.3496 -28.6504 -64 -64 -64h-32v-35.5801l-128 45.71v149.84c0 14.25 17.2305 21.3906 27.3203 11.3105l27.2793 -27.2803h53.6201c10.917 -0.000976562 23.7383 -7.92578 28.6201 -17.6904l7.16016 -14.3096h64z
M384 304c8.83984 0 16 7.16016 16 16s-7.16016 16 -16 16s-16 -7.16016 -16 -16s7.16016 -16 16 -16zM96 224h170.05l149.95 -53.5498v-218.45c0 -8.83984 -7.16016 -16 -16 -16h-64c-8.83984 0 -16 7.16016 -16 16v112h-160v-112c0 -8.83984 -7.16016 -16 -16 -16h-64
c-8.83984 0 -16 7.16016 -16 16v213.9c-37.1699 13.25 -64 48.4395 -64 90.0996c0 17.6699 14.3301 32 32 32s32 -14.3301 32 -32c0 -17.6396 14.3604 -32 32 -32z" />
<glyph glyph-name="dog" unicode="&#xf6d3;" horiz-adv-x="576"
d="M298.06 224l149.94 -53.5498v-218.45c0 -8.83203 -7.16797 -16 -16 -16h-64c-8.83203 0 -16 7.16797 -16 16v112h-160v-112c0 -8.83203 -7.16797 -16 -16 -16h-64c-8.83203 0 -16 7.16797 -16 16v213.91c-37.1602 13.25 -64 48.4297 -64 90.0898
c0 17.6641 14.3359 32 32 32s32 -14.3359 32 -32c0.0332031 -17.6309 14.3691 -31.9668 32 -32h170.06zM544 336v-32c0 -35.3281 -28.6719 -64 -64 -64h-32v-35.5801l-128 45.71v149.87c0 14.25 17.2197 21.3896 27.3096 11.3096l27.2803 -27.3096h53.6299
c10.9102 0 23.75 -7.91992 28.6201 -17.6904l7.16016 -14.3096h64c8.83203 0 16 -7.16797 16 -16zM432 336c0 8.83203 -7.16797 16 -16 16s-16 -7.16797 -16 -16s7.16797 -16 16 -16s16 7.16797 16 16z" />
<glyph glyph-name="dragon" unicode="&#xf6d5;" horiz-adv-x="640"
d="M18.3203 192.22c-15.96 -2.2793 -24.8906 17.8105 -12.5107 28.1406l117.4 116.34c21.7705 18.5996 53.2402 20.4697 77.0596 4.58984l119.73 -87.5996v-42.2705c0 -28.9102 5.29004 -56.9795 14.7305 -83.3799h-222.7c-14.25 0 -21.3906 17.2295 -11.3105 27.3096
l91.2803 68.6904zM575.19 158.12c41.9092 -20.96 67.1592 -64.0801 64.6396 -111.36c-3.37988 -63.2002 -59.7002 -110.77 -122.99 -110.76h-499.08c-9.80957 0 -17.7598 8 -17.7598 17.7998c0 8.32031 5.78027 15.5303 13.9004 17.3301
@ -4134,10 +4162,13 @@ c22.6006 11.5 49.4004 -1.5 49.4004 -26.5996v-30.7998c-105.2 -49.1006 -150.8 -35.
c0 8.89941 -7.2002 16 -16 16s-16 -7.2002 -16 -16c0 -8.90039 7.2002 -16 16 -16zM224 327.8c8.7998 0 16 7.2002 16 16c0 8.90039 -7.2002 16 -16 16s-16 -7.2002 -16 -16c0 -8.89941 7.2002 -16 16 -16zM224 383.7c8.7998 0 16 7.2002 16 16c0 8.89941 -7.2002 16 -16 16
s-16 -7.2002 -16 -16c0 -8.90039 7.2002 -16 16 -16z" />
<glyph glyph-name="meteor" unicode="&#xf753;"
d="M491.2 447.3c12.3994 3.7002 23.7998 -7.7002 20.2002 -20.0996c-11.6006 -38.7002 -34.3008 -111.7 -61.3008 -187.7c7 -2.09961 13.4004 -4 18.6006 -5.59961c9.7002 -3 14.2002 -13.9004 9.5 -22.9004c-22.1006 -42.2998 -82.7002 -152.8 -142.5 -214.4
c-1 -1.09961 -2 -2.5 -3 -3.5c-38.1006 -38.0996 -88 -57.0996 -137.9 -57.0996c-49.8994 -0.0996094 -99.7998 19 -137.8 57c-38 38.0996 -57 88 -57 137.8c0 49.9004 19 99.7998 57.0996 137.8c1 1 2.40039 2 3.5 3c61.6006 59.9004 172 120.4 214.4 142.5
c9 4.7002 19.9004 0.200195 22.9004 -9.5c1.59961 -5.09961 3.5 -11.5996 5.59961 -18.5996c75.9004 27 149 49.7002 187.7 61.2998zM192 0c70.7002 0 128 57.2998 128 128s-57.2998 128 -128 128s-128 -57.2998 -128 -128s57.2998 -128 128 -128zM160 192
c17.7002 0 32 -14.2998 32 -32s-14.2998 -32 -32 -32s-32 14.2998 -32 32s14.2998 32 32 32zM208 96c8.7998 0 16 -7.2002 16 -16s-7.2002 -16 -16 -16s-16 7.2002 -16 16s7.2002 16 16 16z" />
d="M511.328 427.197c-11.6074 -38.7021 -34.3076 -111.702 -61.3037 -187.701c6.99902 -2.09375 13.4043 -4 18.6074 -5.59277c6.28125 -1.91504 11.3789 -8.79785 11.3789 -15.3643c0 -2.21094 -0.842773 -5.58984 -1.88086 -7.54199
c-22.1055 -42.2969 -82.6904 -152.795 -142.479 -214.403c-0.999023 -1.09375 -1.99902 -2.5 -2.99902 -3.5c-31.501 -31.5098 -93.2285 -57.083 -137.784 -57.083c-107.546 0 -194.83 87.2842 -194.83 194.831c0 44.5391 25.5566 106.25 57.0469 137.748
c1 1 2.40625 2 3.49902 3c61.6006 59.9053 171.975 120.405 214.374 142.498c1.95215 1.03809 5.33008 1.88086 7.54102 1.88086c6.56641 0 13.4492 -5.09863 15.3613 -11.3809c1.59375 -5.09375 3.5 -11.5928 5.59277 -18.5928
c75.8955 26.999 148.978 49.7021 187.675 61.2959c1.26465 0.382812 3.36426 0.692383 4.68555 0.692383c8.93262 0 16.1826 -7.25 16.1826 -16.1826c0 -1.29785 -0.298828 -3.35938 -0.667969 -4.60352zM319.951 127.998
c-0.00976562 70.6348 -57.3457 127.962 -127.98 127.962c-70.6455 0 -127.98 -57.335 -127.98 -127.98c0 -70.6445 57.335 -127.979 127.98 -127.979h0.00488281c70.6426 0 127.976 57.333 127.976 127.976v0.0224609zM191.971 159.997
c-0.00292969 -17.6582 -14.3359 -31.9902 -31.9951 -31.9902c-17.6611 0 -31.9951 14.334 -31.9951 31.9951s14.334 31.9951 31.9951 31.9951h0.0361328c17.6416 0 31.959 -14.3174 31.959 -31.959v-0.0410156zM223.966 79.998
c-0.000976562 -8.8291 -7.16797 -15.9951 -15.998 -15.9951s-15.9971 7.16699 -15.9971 15.998c0 8.83008 7.16699 15.9971 15.9971 15.9971c8.80371 -0.0283203 15.9707 -7.19629 15.998 -16z" />
<glyph glyph-name="person-booth" unicode="&#xf756;" horiz-adv-x="576"
d="M192 -48v176h64v-176c0 -8.7998 -7.2002 -16 -16 -16h-32c-8.7998 0 -16 7.2002 -16 16zM224 224c17.7002 0 32 -14.2998 32 -32s-14.2998 -32 -32 -32h-57.5c-12.7998 0 -24.7998 5 -33.9004 14.0996l-20.8994 20.9004v-80.5996l41.2002 -61.3008
c4.39941 -8.7998 6.69922 -18.6992 6.69922 -28.5996v-56.5c0 -17.7002 -14.2998 -32 -32 -32c-17.6992 0 -32 14.2998 -32 32v56l-29.0996 43c-0.900391 0.400391 -1.59961 1.2002 -2.5 1.7002l-0.0996094 -100.7c0 -17.7002 -14.4004 -32 -32 -32
@ -4356,16 +4387,20 @@ c14.2998 -1.2002 26.5 -10.7002 29.7998 -24.2002zM336 448c8.7998 0 16 -7.2002 16
c0 -13.2998 -10.7002 -24 -24 -24h-8v-136c0 -13.2998 -10.7002 -24 -24 -24h-80c-13.2998 0 -24 10.7002 -24 24v136h-8c-13.2998 0 -24 10.7002 -24 24v136c0 25.0996 19.2998 45.5 43.9004 47.5996c15 -9.7998 32.8994 -15.5996 52.0996 -15.5996
s37.0996 5.7998 52.0996 15.5996z" />
<glyph glyph-name="satellite" unicode="&#xf7bf;"
d="M502.7 183c12.3994 -12.4004 12.3994 -32.5996 -0.100586 -45l-96.6992 -96.7002c-6.2002 -6.2002 -14.4004 -9.2998 -22.5 -9.2998c-8.10059 0 -16.3008 3.09961 -22.5 9.2998l-80.3008 80.4004l-9.89941 -9.90039c24.2998 -53.7002 22.7002 -116.2 -5.40039 -168.5
c-4.5 -8.5 -16.3994 -9.59961 -23.2002 -2.7998l-107.5 107.5l-17.7998 -17.7998c0.700195 -2.60059 1.60059 -5 1.60059 -7.7998c0 -17.7002 -14.3008 -32 -32 -32c-17.7002 0 -32 14.2998 -32 32c0 17.6992 14.2998 32 32 32c2.7998 0 5.19922 -0.900391 7.7998 -1.60059
l17.7998 17.7998l-107.5 107.5c-6.7998 6.80078 -5.7002 18.6006 2.7998 23.2002c52.2998 28.1006 114.8 29.7002 168.5 5.40039l9.7998 9.7998l-80.2998 80.4004c-12.3994 12.5 -12.3994 32.6992 0 45.0996l96.7002 96.7002c6.2002 6.2002 14.2998 9.2998 22.5 9.2998
s16.2998 -3.09961 22.5996 -9.2998l80.3008 -80.2998l47.7998 47.8994c13.0996 13.1006 34.3994 13.1006 47.5 0l47.5 -47.5c13.0996 -13.0996 13.0996 -34.3994 0 -47.5l-47.7998 -47.8994zM150.7 319.5l68.8994 -68.9004l73.8008 73.8008l-68.9004 68.8994zM383.5 86.7002
l73.7998 73.7998l-68.8994 68.9004l-73.8008 -73.8008z" />
d="M502.609 137.958l-96.7041 -96.7168c-5.15039 -5.13184 -15.2324 -9.29785 -22.5029 -9.29785c-7.27148 0 -17.3535 4.16602 -22.5039 9.29785l-80.3262 80.418l-9.89258 -9.9082c9.41016 -20.7256 17.0469 -56.0186 17.0469 -78.7803
c0 -26.3193 -10.0596 -66.5244 -22.4541 -89.7422c-4.50098 -8.50098 -16.3936 -9.59473 -23.207 -2.79785l-107.519 107.515l-17.7998 -17.7988c0.703125 -2.60938 1.60938 -5.00098 1.60938 -7.79785v-0.000976562c0 -17.667 -14.3379 -32.0059 -32.0049 -32.0059
s-32.0059 14.3389 -32.0059 32.0059s14.3389 32.0049 32.0059 32.0049c2.79688 0 5.18848 -0.90625 7.79785 -1.60938l17.7998 17.7998l-107.518 107.515c-6.79883 6.8125 -5.7041 18.6113 2.79688 23.2061c23.2197 12.3936 63.4248 22.4531 89.7451 22.4531
c22.7627 0 58.0576 -7.63672 78.7832 -17.0469l9.79883 9.79883l-80.3105 80.417c-5.13086 5.16602 -9.29395 15.2686 -9.29395 22.5498s4.16309 17.3838 9.29395 22.5498l96.7197 96.7168c5.11621 5.13281 15.1514 9.29785 22.3984 9.29785h0.105469h0.0449219
c7.28223 0 17.3857 -4.16602 22.5527 -9.29785l80.3262 -80.3076l47.8047 47.8965c5.43262 5.42773 16.0742 9.83398 23.7539 9.83398s18.3213 -4.40625 23.7539 -9.83398l47.5088 -47.5059c5.42188 -5.43555 9.82129 -16.0771 9.82129 -23.7539
s-4.39941 -18.3184 -9.82129 -23.7529l-47.8057 -47.8975l80.3105 -80.417c5.12305 -5.13672 9.28125 -15.1934 9.28125 -22.4482c0 -7.30469 -4.20703 -17.4111 -9.39062 -22.5576zM219.562 250.567l73.8252 73.8223l-68.918 68.8994l-73.8096 -73.8066zM457.305 160.461
l-68.9023 68.916l-73.8242 -73.8232l68.918 -68.8994z" />
<glyph glyph-name="satellite-dish" unicode="&#xf7c0;"
d="M188.8 102.1l116.601 -116.6c7.39941 -7.2998 6.19922 -20.0996 -3 -25c-77.7002 -41.7998 -176.7 -29.9004 -242.301 35.7002c-65.5996 65.5996 -77.5 164.5 -35.6992 242.3c4.89941 9.09961 17.6992 10.2998 25 3l116.8 -116.8l27.3994 27.3994
c-0.699219 2.60059 -1.59961 5 -1.59961 7.80078c0 17.6992 14.2998 32 32 32s32 -14.3008 32 -32c0 -17.7002 -14.2998 -32 -32 -32c-2.7998 0 -5.2002 0.899414 -7.7998 1.59961zM209 448c163.2 -8.59961 294.4 -139.8 302.9 -303c0.5 -9.2002 -6.80078 -17 -16 -17
h-32.1006c-8.39941 0 -15.3994 6.59961 -15.8994 15c-7.5 129.5 -111.5 234.5 -240.9 241.5c-8.40039 0.400391 -15 7.40039 -15 15.9004v31.5996c0 9.2002 7.7998 16.5 17 16zM209.3 352c110.101 -8.5 198.2 -96.5996 206.601 -206.7
c0.699219 -9.2998 -6.80078 -17.2998 -16.1006 -17.2998h-32.2002c-8.2998 0 -15.0996 6.40039 -15.8994 14.7002c-6.90039 77 -68.1006 138.899 -144.9 145.2c-8.2998 0.599609 -14.7998 7.5 -14.7998 15.8994v32.1006c0 9.39941 8 16.7998 17.2998 16.0996z" />
d="M305.449 -14.5898c7.3916 -7.29785 6.18848 -20.0967 -3 -25.0039c-77.7129 -41.8027 -176.726 -29.9102 -242.344 35.708c-65.6016 65.6035 -77.5098 164.523 -35.6914 242.332c4.89062 9.09473 17.6895 10.2979 25.0029 3l116.812 -116.813l27.3945 27.3945
c-0.6875 2.60938 -1.59375 5.00098 -1.59375 7.81348c0 17.666 14.3379 32.0039 32.0039 32.0039s32.0039 -14.3379 32.0039 -32.0039s-14.3379 -32.0039 -32.0039 -32.0039c-2.79785 0 -5.2041 0.890625 -7.79785 1.59375l-27.4102 -27.4102zM511.976 144.933
c0.0136719 -0.248047 0.0253906 -0.650391 0.0253906 -0.899414c0 -8.84668 -7.18066 -16.0615 -16.0273 -16.1025h-32.1133c-8.27148 0.0244141 -15.3916 6.74512 -15.8926 15.002c-7.50098 129.519 -111.515 234.533 -240.937 241.534
c-8.28125 0.441406 -15.0029 7.5293 -15.0029 15.8223c0 0.0234375 0 0.0625 0.000976562 0.0859375v31.5986c0.0361328 8.84766 7.24609 16.0273 16.0938 16.0273c0.250977 0 0.657227 -0.0107422 0.908203 -0.0253906c163.224 -8.59473 294.443 -139.816 302.944 -303.043
zM415.964 145.229c0.0195312 -0.299805 0.0361328 -0.788086 0.0361328 -1.08887c0 -8.91309 -7.23438 -16.1758 -16.1475 -16.21h-32.208c-8.08594 0.0585938 -15.2061 6.64648 -15.8926 14.7051c-6.90625 77.0107 -68.1172 138.91 -144.924 145.224
c-8.16602 0.585938 -14.7959 7.70605 -14.7988 15.8926v32.1143v0.00390625c0 8.90625 7.22754 16.1338 16.1338 16.1338c0.322266 0 0.84375 -0.0185547 1.16504 -0.0419922c110.123 -8.50098 198.229 -96.6074 206.636 -206.732z" />
<glyph glyph-name="sd-card" unicode="&#xf7c2;" horiz-adv-x="384"
d="M320 448c35.2998 0 64 -28.7002 64 -64v-384c0 -35.2998 -28.7002 -64 -64 -64h-256c-35.2998 0 -64 28.7002 -64 64v320l128 128h192zM160 288v96h-48v-96h48zM240 288v96h-48v-96h48zM320 288v96h-48v-96h48z" />
<glyph glyph-name="sim-card" unicode="&#xf7c4;" horiz-adv-x="384"
@ -4479,6 +4514,11 @@ c-2.58789 2.58691 -4.6875 7.65625 -4.6875 11.3154s2.09961 8.72852 4.6875 11.3154
c-10.7441 -10.748 -31.4814 -22.2393 -46.29 -25.6494l-120.25 -27.75l-102 -102c-2.58691 -2.58789 -7.65625 -4.6875 -11.3154 -4.6875s-8.72754 2.09961 -11.3154 4.6875l-22.6191 22.6191c-2.58789 2.58789 -4.6875 7.65625 -4.6875 11.3154
s2.09961 8.72852 4.6875 11.3154l102 102l27.7393 120.26c3.4248 14.8057 14.9248 35.5439 25.6699 46.29l109.671 109.67l45.25 -45.25l-55.1006 -55.1006zM273.2 141.31l9.30957 9.31055l-67.8896 67.8896l-9.31055 -9.30957
c-3.57715 -3.59082 -7.41211 -10.5127 -8.55957 -15.4502l-18.2998 -79.2998l79.2998 18.3193c4.94043 1.13379 11.8623 4.95996 15.4502 8.54004z" />
<glyph glyph-name="disease" unicode="&#xf7fa;"
d="M472.29 252.1c48.54 -16.6191 53.8301 -73.8301 8.99023 -96.79l-62 -31.7393c-17.8301 -9.12988 -29.2803 -25.2002 -30.6299 -43l-4.7002 -61.8604c-3.4502 -44.79 -65.1299 -66.7803 -104.45 -37.2197l-54.3203 40.8301
c-15.6201 11.7295 -36.96 16.1201 -57.0693 11.7295l-70 -15.2803c-50.6504 -11.0596 -94.1104 32.5605 -73.46 73.8008l28.4297 57c8.17969 16.3799 6.43945 35.1699 -4.63965 50.2393l-38.54 52.4209c-27.9307 37.9492 7 86.9092 59 82.8398l71.8994 -5.62012
c20.6602 -1.62012 40.9404 5.59961 54.2002 19.3096l46.0898 47.7207c33.4297 34.5098 98.4199 21.1494 110 -22.6201l16 -60.4502c4.60059 -17.3906 18.8604 -31.71 38.1406 -38.3105zM160 192c17.6641 0 32 14.3359 32 32s-14.3359 32 -32 32s-32 -14.3359 -32 -32
s14.3359 -32 32 -32zM288 96c17.6641 0 32 14.3359 32 32s-14.3359 32 -32 32s-32 -14.3359 -32 -32s14.3359 -32 32 -32zM304 224c8.83203 0 16 7.16797 16 16s-7.16797 16 -16 16s-16 -7.16797 -16 -16s7.16797 -16 16 -16z" />
<glyph glyph-name="egg" unicode="&#xf7fb;" horiz-adv-x="384"
d="M192 448c106 0 192 -214 192 -320s-86 -192 -192 -192s-192 86 -192 192s86 320 192 320z" />
<glyph glyph-name="hamburger" unicode="&#xf805;"
@ -4494,6 +4534,15 @@ l38.3994 -6.40039c13.46 -2.25 23.1504 -12.0996 23.1504 -23.54v-49.5898l35.6504 -
<glyph glyph-name="hard-hat" unicode="&#xf807;"
d="M480 160v-64h-448v64c0 80.25 49.2803 148.92 119.19 177.62l40.8096 -81.6201v112c0 8.83203 7.16797 16 16 16h96c8.83203 0 16 -7.16797 16 -16v-112l40.8096 81.6201c69.9102 -28.7002 119.19 -97.3701 119.19 -177.62zM496 64c8.83203 0 16 -7.16797 16 -16v-32
c0 -8.83203 -7.16797 -16 -16 -16h-480c-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h480z" />
<glyph glyph-name="hospital-user" unicode="&#xf80d;" horiz-adv-x="640"
d="M480 128c-52.9922 0 -96 43.0078 -96 96s43.0078 96 96 96s96 -43.0078 96 -96s-43.0078 -96 -96 -96zM528 96c61.8242 0 112.002 -50.1758 112.002 -112c0 -0.170898 -0.000976562 -0.449219 -0.00195312 -0.620117c-0.139648 -26.2598 -21.7305 -47.3799 -48 -47.3799
h-224c-26.2695 0 -47.8604 21.1201 -48 47.3799c-0.000976562 0.170898 -0.00195312 0.449219 -0.00195312 0.620117c0 61.8242 50.1758 112 112 112h0.00195312h0.0810547c1.9707 0 5.09277 -0.488281 6.96875 -1.08984
c10.9795 -3.81445 29.3223 -6.91016 40.9453 -6.91016s29.9658 3.0957 40.9453 6.91016c1.87891 0.601562 5.00488 1.08984 6.97754 1.08984h0.0820312zM329.91 85.5498c-23.1367 -23.1309 -41.915 -68.4561 -41.915 -101.172
c0 -0.322266 0.00195312 -0.845703 0.00488281 -1.16797c0.136719 -14.5381 7.44336 -35.6885 16.3096 -47.21h-288.31c-8.83203 0 -16 7.16797 -16 16v368c0 17.6641 14.3359 32 32 32h32v64c0 17.6641 14.3359 32 32 32h160c17.6641 0 32 -14.3359 32 -32v-64h32
c17.6641 0 32 -14.3359 32 -32v-216.62c-6.58008 -4.32227 -16.4766 -12.3096 -22.0898 -17.8301zM144 44v40c0 6.62402 -5.37598 12 -12 12h-40c-6.62402 0 -12 -5.37598 -12 -12v-40c0 -6.62402 5.37598 -12 12 -12h40c6.62402 0 12 5.37598 12 12zM144 172v40
c0 6.62402 -5.37598 12 -12 12h-40c-6.62402 0 -12 -5.37598 -12 -12v-40c0 -6.62402 5.37598 -12 12 -12h40c6.62402 0 12 5.37598 12 12zM192 294v26h26c3.31152 0 6 2.68848 6 6v20c0 3.31152 -2.68848 6 -6 6h-26v26c0 3.31152 -2.68848 6 -6 6h-20
c-3.31152 0 -6 -2.68848 -6 -6v-26h-26c-3.31152 0 -6 -2.68848 -6 -6v-20c0 -3.31152 2.68848 -6 6 -6h26v-26c0 -3.31152 2.68848 -6 6 -6h20c3.31152 0 6 2.68848 6 6zM272 44v40c0 6.62402 -5.37598 12 -12 12h-40c-6.62402 0 -12 -5.37598 -12 -12v-40
c0 -6.62402 5.37598 -12 12 -12h40c6.62402 0 12 5.37598 12 12zM272 172v40c0 6.62402 -5.37598 12 -12 12h-40c-6.62402 0 -12 -5.37598 -12 -12v-40c0 -6.62402 5.37598 -12 12 -12h40c6.62402 0 12 5.37598 12 12z" />
<glyph glyph-name="hotdog" unicode="&#xf80f;"
d="M488.56 424.56c12.9297 -12.9326 23.4238 -38.2715 23.4238 -56.5596s-10.4941 -43.627 -23.4238 -56.5596l-352 -352c-13.0205 -13.4824 -38.7998 -24.4238 -57.543 -24.4238c-44.1592 0 -80 35.8408 -80 80c0 18.7432 10.9414 44.5225 24.4238 57.543l352 352
c12.9326 12.9297 38.2715 23.4238 56.5596 23.4238s43.627 -10.4941 56.5596 -23.4238zM438.63 329.37c2.58691 2.58691 4.68652 7.65625 4.68652 11.3145c0 8.83301 -7.16797 16.002 -16.001 16.002c-3.65918 0 -8.72852 -2.09961 -11.3154 -4.68652
@ -4532,11 +4581,10 @@ d="M32 -16v336h384v-336c0 -26.4961 -21.5039 -48 -48 -48h-288c-26.4961 0 -48 21.5
c14.2598 0 21.3994 18.1797 11.3203 28.7998l-89.3809 94.2598c-2.52441 2.72949 -7.5918 4.94336 -11.3096 4.94336s-8.78516 -2.21387 -11.3096 -4.94336zM432 416c8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-416c-8.83203 0 -16 7.16797 -16 16
v32c0 8.83203 7.16797 16 16 16h120l9.40039 18.7002c3.58984 7.3418 13.1357 13.2998 21.3086 13.2998h0.0908203h114.3h0.0175781c8.20215 0 17.8262 -5.95801 21.4824 -13.2998l9.40039 -18.7002h120z" />
<glyph glyph-name="user-nurse" unicode="&#xf82f;" horiz-adv-x="448"
d="M57.7803 160c-8.82227 0.00976562 -15.9814 7.17773 -15.9814 16c0 2.09277 0.761719 5.30957 1.70117 7.17969c15.2305 29.8203 31.2803 62.2305 42.1699 95.54c7.58008 23.1904 10.3301 47.6904 10.3301 72.0801v49.2002l128 48l128 -48v-49.2002
c0 -24.3896 2.78027 -48.8896 10.3496 -72.0801c10.8701 -33.3096 26.9199 -65.6895 42.1504 -95.54c0.939453 -1.87012 1.70117 -5.08691 1.70117 -7.17969c0 -8.82227 -7.15918 -15.9902 -15.9814 -16h-82.3594c-22.5107 -19.6797 -51.6201 -32 -83.8604 -32
s-61.3496 12.3203 -83.8604 32h-82.3594zM184 376.33v-16.6602c0 -2.75977 2.24023 -5 5 -5h21.6699v-21.6699c0 -2.75977 2.24023 -5 5 -5h16.6602c2.75977 0 5 2.24023 5 5v21.6699h21.6699c2.75977 0 5 2.24023 5 5v16.6602c0 2.75977 -2.24023 5 -5 5h-21.6699v21.6699
c0 2.75977 -2.24023 5 -5 5h-16.6602c-2.75977 0 -5 -2.24023 -5 -5v-21.6699h-21.6699c-2.75977 0 -5 -2.24023 -5 -5zM144 288v-32c0 -44.1602 35.8398 -80 80 -80s80 35.8398 80 80v32h-160zM319.41 128c71.4902 -3.09961 128.59 -61.5996 128.59 -133.79
c0 -32.1318 -26.0781 -58.21 -58.21 -58.21v0h-331.58c-32.1318 0 -58.21 26.0781 -58.21 58.21c0 72.1904 57.0996 130.69 128.59 133.79l95.4102 -95.3896z" />
d="M319.41 128c71.4902 -3.09961 128.59 -61.5996 128.59 -133.79c0 -32.1318 -26.0781 -58.21 -58.21 -58.21h-331.58c-32.1318 0 -58.21 26.0781 -58.21 58.21c0 72.1904 57.0996 130.69 128.59 133.79l95.4102 -95.3896zM224 144c-70.6562 0 -128 57.3438 -128 128
v110.18c0 12.2393 9.30078 25.6611 20.7598 29.96l84.7705 31.79c5.99707 2.24902 16.0645 4.07422 22.4697 4.07422s16.4727 -1.8252 22.4697 -4.07422l84.7705 -31.75c11.459 -4.29883 20.7598 -17.7217 20.7598 -29.9609v-0.0390625v-110.18
c0 -70.6562 -57.3438 -128 -128 -128zM184 376.33v-16.6602c0 -2.75977 2.24023 -5 5 -5h21.6699v-21.6699c0 -2.75977 2.24023 -5 5 -5h16.6602c2.75977 0 5 2.24023 5 5v21.6699h21.6699c2.75977 0 5 2.24023 5 5v16.6602c0 2.75977 -2.24023 5 -5 5h-21.6699v21.6699
c0 2.75977 -2.24023 5 -5 5h-16.6602c-2.75977 0 -5 -2.24023 -5 -5v-21.6699h-21.6699c-2.75977 0 -5 -2.24023 -5 -5zM144 288v-16c0 -44.1602 35.8398 -80 80 -80s80 35.8398 80 80v16h-160z" />
<glyph glyph-name="wave-square" unicode="&#xf83e;" horiz-adv-x="640"
d="M476 -32h-152c-19.8721 0 -36 16.1279 -36 36v348h-96v-156c0 -19.8721 -16.1279 -36 -36 -36h-140c-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h112v156c0 19.8721 16.1279 36 36 36h152c19.8721 0 36 -16.1279 36 -36v-348h96v156
c0 19.8721 16.1279 36 36 36h140c8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-112v-156c0 -19.8721 -16.1279 -36 -36 -36z" />
@ -4663,5 +4711,290 @@ d="M0 96v128h384v-128c0 -88.3203 -71.6797 -160 -160 -160h-64c-88.3203 0 -160 71.
<glyph glyph-name="record-vinyl" unicode="&#xf8d9;"
d="M256 296c57.4082 0 104 -46.5918 104 -104s-46.5918 -104 -104 -104s-104 46.5918 -104 104s46.5918 104 104 104zM256 168c13.248 0 24 10.752 24 24s-10.752 24 -24 24s-24 -10.752 -24 -24s10.752 -24 24 -24zM256 440c137 0 248 -111 248 -248s-111 -248 -248 -248
s-248 111 -248 248s111 248 248 248zM256 64c70.6562 0 128 57.3438 128 128s-57.3438 128 -128 128s-128 -57.3438 -128 -128s57.3438 -128 128 -128z" />
<glyph glyph-name="caravan" unicode="&#xf8ff;" horiz-adv-x="640"
d="M416 240c8.83203 0 16 -7.16797 16 -16s-7.16797 -16 -16 -16s-16 7.16797 -16 16s7.16797 16 16 16zM624 128c8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-336c0 -52.9922 -43.0078 -96 -96 -96s-96 43.0078 -96 96h-32
c-35.3281 0 -64 28.6719 -64 64v256c0 35.3281 28.6719 64 64 64h352c88.3203 0 160 -71.6797 160 -160v-160h48zM192 16c26.4688 0.0273438 47.9727 21.5312 48 48c0 26.4961 -21.5039 48 -48 48s-48 -21.5039 -48 -48s21.5039 -48 48 -48zM256 256v64
c0 17.6641 -14.3359 32 -32 32h-128c-17.6641 0 -32 -14.3359 -32 -32v-64c0 -17.6641 14.3359 -32 32 -32h128c17.6641 0 32 14.3359 32 32zM448 128v192c0 17.6641 -14.3359 32 -32 32h-64c-17.6641 0 -32 -14.3359 -32 -32v-192h128z" />
<glyph glyph-name="faucet" unicode="&#xf905;"
d="M352 192c88.3203 0 160 -71.6797 160 -160c0 -17.6641 -14.3359 -32 -32 -32h-64c-17.6641 0 -32 14.3359 -32 32s-14.3359 32 -32 32h-12.79c-20.5898 -37.7305 -64.21 -64 -115.21 -64s-94.6201 26.2695 -115.21 64h-92.79c-8.83203 0 -16 7.16797 -16 16v96
c0 8.83203 7.16797 16 16 16h118.61c15.71 13.4004 35.46 23 57.3896 28v47.5596l32 3.38086l32 -3.38086v-47.5596c21.9297 -4.92969 41.6797 -14.5596 57.3896 -28h38.6104zM81.5898 288.09c-9.41992 -1 -17.5898 6.81055 -17.5898 16.7998v30.2207
c0 9.98926 8.16992 17.7998 17.5898 16.8096l110.41 -11.6602v27.7402c0 8.83203 7.16797 16 16 16h32c8.83203 0 16 -7.16797 16 -16v-27.7402l110.41 11.6602c9.41992 0.990234 17.5898 -6.80957 17.5898 -16.8096v-30.2207
c0 -9.98926 -8.16992 -17.7998 -17.5898 -16.7998l-142.41 15z" />
<glyph glyph-name="trailer" unicode="&#xf941;" horiz-adv-x="640"
d="M624 128c8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-337.61c-7.83008 54.21 -54 96 -110.39 96s-102.56 -41.79 -110.39 -96h-49.6104c-8.83203 0 -16 7.16797 -16 16v288c0 8.83203 7.16797 16 16 16h512c8.83203 0 16 -7.16797 16 -16v-240
h80zM96 204.32v107.68c0 4.41602 -3.58398 8 -8 8h-16c-4.41602 0 -8 -3.58398 -8 -8v-128.39c8.20996 6.67578 22.5469 15.9541 32 20.71zM192 222.86v89.1396c0 4.41602 -3.58398 8 -8 8h-16c-4.41602 0 -8 -3.58398 -8 -8v-89.1396
c5.30957 0.489258 10.5703 1.13965 16 1.13965s10.6904 -0.650391 16 -1.13965zM288 183.61v128.39c0 4.41602 -3.58398 8 -8 8h-16c-4.41602 0 -8 -3.58398 -8 -8v-107.68c9.45312 -4.75586 23.79 -14.0342 32 -20.71zM384 128v184c0 4.41602 -3.58398 8 -8 8h-16
c-4.41602 0 -8 -3.58398 -8 -8v-184h32zM480 128v184c0 4.41602 -3.58398 8 -8 8h-16c-4.41602 0 -8 -3.58398 -8 -8v-184h32zM176 128c44.1602 0 80 -35.8398 80 -80s-35.8398 -80 -80 -80s-80 35.8398 -80 80s35.8398 80 80 80zM176 16c17.6641 0 32 14.3359 32 32
s-14.3359 32 -32 32s-32 -14.3359 -32 -32s14.3359 -32 32 -32z" />
<glyph glyph-name="bacteria" unicode="&#xf959;" horiz-adv-x="640"
d="M272.35 221.6c-1.89648 -0.816406 -5.11133 -1.47949 -7.17676 -1.47949h-0.0332031h-0.0107422c-6.39551 0 -13.7021 4.73926 -16.3086 10.5801l-3.91992 8.84961c-1.15039 -0.729492 -2.35059 -1.37988 -3.4707 -2.14941
c-2.85742 -2.01367 -7.31055 -5.5166 -9.93945 -7.82031c-3.42676 -2.93066 -8.64551 -8.03809 -11.6504 -11.4004c-2.30469 -2.48535 -5.83105 -6.70117 -7.87012 -9.41016c-0.700195 -0.969727 -1.22949 -2.0498 -1.89941 -3.0498l8.7998 -4.10938
c5.6123 -2.65039 10.168 -9.83887 10.168 -16.0449c0 -9.79492 -7.94922 -17.7441 -17.7432 -17.7441c-2.19531 0 -5.58887 0.761719 -7.5752 1.69824l-9 4.2207c-1.35645 -4.21484 -3.08984 -11.1719 -3.87012 -15.5303
c-1.58691 -9.24902 -6.99902 -23.1602 -12.0801 -31.0498l9.14062 -9.37012c2.75586 -2.85156 4.99219 -8.38477 4.99219 -12.3496c0 -9.81055 -7.96191 -17.7725 -17.7725 -17.7725c-4.16211 0 -9.8877 2.42871 -12.7803 5.42188l-8.58984 8.7998
c-11.4551 -7.5918 -31.9062 -13.8105 -45.6494 -13.8799c-1.03027 0 -2.10059 0.259766 -3.10059 0.259766l-2.87012 -11c-1.99316 -7.21094 -9.68359 -13.0645 -17.166 -13.0645c-9.83105 0 -17.8096 7.97949 -17.8096 17.8105c0 1.16797 0.22168 3.03809 0.496094 4.1748
l2.87988 11.0596c-13.165 6.57227 -29.4678 22.4453 -36.3896 35.4297l-11.2705 -3.33008c-1.36816 -0.407227 -3.6377 -0.738281 -5.06445 -0.738281c-9.79199 0 -17.7393 7.94727 -17.7393 17.7383c0 7.2998 5.67773 14.916 12.6738 17l11.5801 3.43066
c-0.117188 1.63672 -0.211914 4.29688 -0.211914 5.9375c0 3.62793 0.461914 9.47949 1.03223 13.0625c1.72949 10.3799 4.72949 20.2197 7.51953 30.2197l-10.3496 3.54004c-6.59082 2.27832 -11.9385 9.78711 -11.9385 16.7598c0 9.78906 7.94434 17.7334 17.7334 17.7334
c1.64453 0 4.24023 -0.435547 5.79492 -0.973633l10.4795 -3.58984c5.2959 12.6709 15.6006 32.3418 23 43.9102l-8.87988 6.46973c-4.03516 2.91895 -7.31055 9.33008 -7.31055 14.3105c0 3.19727 1.53711 7.88379 3.43066 10.46
c2.95117 4.02051 9.39453 7.2832 14.3818 7.2832c3.20801 0 7.91602 -1.5332 10.5078 -3.42285l8.82031 -6.4209c8.79785 10.5908 24.4551 26.4189 34.9502 35.3301l-6.4502 8.61035c-1.95801 2.60645 -3.54785 7.36719 -3.54785 10.627
c0 4.91797 3.20703 11.2852 7.1582 14.2129c2.62012 1.94043 7.39258 3.51562 10.6533 3.51562c4.9209 0 11.3213 -3.1875 14.2861 -7.11523l6.32031 -8.43066c11.5596 7.56445 31.2451 18.124 43.9404 23.5703l-3.49023 9.7998
c-0.564453 1.59277 -1.02246 4.25586 -1.02246 5.94531c0 9.82715 7.97559 17.8018 17.8027 17.8018c6.94336 0 14.4609 -5.31152 16.7793 -11.8564l3.37988 -9.45996c10.9004 3.16992 21.7305 6.38965 33.1104 8.21973c3.78223 0.635742 9.96582 1.15137 13.8008 1.15137
c0.811523 0 2.12793 -0.0224609 2.93945 -0.0517578l2.81934 10.7803c1.9082 7.36328 9.62891 13.3389 17.2354 13.3389c9.82812 0 17.8037 -7.97559 17.8037 -17.8037c0 -1.25293 -0.254883 -3.25293 -0.568359 -4.46484l-2.83984 -10.8506
c13.1602 -6.62598 29.458 -22.5615 36.3799 -35.5693l11.3398 3.35938c1.37109 0.40918 3.64453 0.741211 5.0752 0.741211c9.79297 0 17.7412 -7.94727 17.7412 -17.7412c0 -7.29688 -5.6748 -14.9121 -12.667 -17l-11.8496 -3.50977
c0.0986328 -1.50098 0.178711 -3.93945 0.178711 -5.44336c0 -12.6982 -5.2998 -31.8447 -11.8291 -42.7363l9.7207 -8.76074c3.2041 -2.91699 5.80371 -8.80176 5.80371 -13.1348c0 -9.80566 -7.95801 -17.7637 -17.7637 -17.7637
c-3.7959 0 -9.1543 2.07324 -11.96 4.62891l-10 9c-8.45898 -5.90918 -23.5781 -12.1094 -33.75 -13.8398c-3.45605 -0.670898 -8.99316 -2.05078 -12.3604 -3.08008l4 -9.08008c0.836914 -1.88965 1.51562 -5.10156 1.51562 -7.16895
c0 -6.39941 -4.75977 -13.6709 -10.626 -16.2314zM128 192c17.6641 0 32 14.3359 32 32s-14.3359 32 -32 32s-32 -14.3359 -32 -32s14.3359 -32 32 -32zM208 288c8.83203 0 16 7.16797 16 16s-7.16797 16 -16 16s-16 -7.16797 -16 -16s7.16797 -16 16 -16zM639.26 242.7
c0.401367 -1.35645 0.727539 -3.60547 0.727539 -5.02051c0 -7.32422 -5.70703 -14.9355 -12.7373 -16.9893l-11.5801 -3.43066c0.118164 -1.64453 0.213867 -4.31836 0.213867 -5.96777c0 -3.63281 -0.462891 -9.49414 -1.03418 -13.082
c-1.72949 -10.3701 -4.72949 -20.21 -7.51953 -30.21l10.3398 -3.53027c6.58984 -2.27832 11.9385 -9.78711 11.9385 -16.7598c0 -9.78906 -7.94434 -17.7334 -17.7334 -17.7334c-1.64453 0 -4.24121 0.435547 -5.79492 0.973633l-10.4805 3.58984
c-5.29688 -12.6719 -15.6016 -32.3477 -23 -43.9199l8.88086 -6.45996c4.22852 -2.92383 7.66113 -9.46875 7.66113 -14.6104c0 -9.80273 -7.95605 -17.7598 -17.7598 -17.7598c-3.36328 0 -8.24707 1.67578 -10.9014 3.74023l-8.82031 6.41992
c-8.7998 -10.5918 -24.457 -26.4238 -34.9502 -35.3398l6.4502 -8.61035c1.97363 -2.61035 3.57617 -7.38574 3.57617 -10.6582c0 -4.93262 -3.22363 -11.3086 -7.19629 -14.2314c-2.61914 -1.94238 -7.39062 -3.51855 -10.6514 -3.51855
c-4.91992 0 -11.3174 3.18848 -14.2783 7.11816l-6.32031 8.42969c-11.5615 -7.5625 -31.2461 -18.127 -43.9404 -23.5801l3.49023 -9.79004c0.564453 -1.5918 1.02246 -4.25488 1.02246 -5.94434c0 -9.82715 -7.97559 -17.8018 -17.8027 -17.8018
c-6.94336 0 -14.4609 5.31152 -16.7793 11.8564l-3.37988 9.45996c-10.8604 -3.16992 -21.7305 -6.34961 -33.1006 -8.24023c-3.7832 -0.635742 -9.96777 -1.15137 -13.8037 -1.15137c-0.810547 0 -2.12598 0.0234375 -2.93652 0.0517578l-2.81934 -10.7803
c-1.9082 -7.36328 -9.62891 -13.3389 -17.2354 -13.3389c-9.82812 0 -17.8037 7.97656 -17.8037 17.8037c0 1.25293 0.254883 3.25293 0.568359 4.46582l2.84082 10.8496c-13.1719 6.625 -29.4834 22.5645 -36.4102 35.5801l-11.3398 -3.36035
c-1.37207 -0.410156 -3.64844 -0.742188 -5.08008 -0.742188c-9.79395 0 -17.7432 7.94824 -17.7432 17.7422c0 7.2959 5.67285 14.9111 12.6631 17l11.8594 3.51074c-0.0976562 1.5 -0.177734 3.93848 -0.177734 5.44238c0 12.6992 5.29883 31.8457 11.8281 42.7373
l-9.71973 8.75c-3.31641 2.92871 -6.00781 8.89551 -6.00781 13.3203c0 9.80859 7.96094 17.7695 17.7695 17.7695c3.88086 0 9.32812 -2.1543 12.1582 -4.80957l10 -9c8.45898 5.92871 23.5879 12.1562 33.7695 13.8994c3.45703 0.666992 8.99414 2.04688 12.3604 3.08008
l-4 9.08008c-0.831055 1.88477 -1.50586 5.08691 -1.50586 7.14746c0 6.39062 4.75098 13.6592 10.6055 16.2227c1.89648 0.823242 5.11328 1.49512 7.18066 1.5h0.0107422c6.39551 0 13.7021 -4.74023 16.3086 -10.5801l3.91992 -8.84961
c1.15039 0.729492 2.35059 1.37988 3.4707 2.14941c2.87305 2.0166 7.35254 5.52441 10 7.83008c3.40625 2.90918 8.58984 7.98535 11.5693 11.3301c2.3291 2.49805 5.88672 6.74121 7.94043 9.46973c0.69043 0.970703 1.21973 2.0498 1.88965 3.0498l-8.7998 4.11035
c-5.6123 2.65039 -10.168 9.83789 -10.168 16.0449c0 9.79492 7.94922 17.7432 17.7432 17.7432c2.19531 0 5.58887 -0.760742 7.5752 -1.69824l9 -4.21973c1.35547 4.21191 3.08887 11.165 3.87012 15.5195c1.58301 9.25391 6.99512 23.1689 12.0801 31.0605
l-9.14062 9.37012c-2.75586 2.85156 -4.99219 8.38379 -4.99219 12.3496c0 9.81055 7.96191 17.7725 17.7725 17.7725c4.16211 0 9.8877 -2.42969 12.7803 -5.42188l8.58984 -8.81055c11.4531 7.59961 31.9043 13.8223 45.6494 13.8906
c1.03027 0 2.10059 -0.260742 3.10059 -0.260742l2.87012 11c2.01172 7.17871 9.69434 13.0039 17.1494 13.0039c9.83105 0 17.8096 -7.97852 17.8096 -17.8096c0 -1.14844 -0.214844 -2.9873 -0.479492 -4.10449l-2.87988 -11.0596
c13.1611 -6.57715 29.4639 -22.4492 36.3896 -35.4297l11.2705 3.33008c1.36133 0.408203 3.62109 0.739258 5.04199 0.739258h0.0380859h0.0166016c7.31152 0 14.9473 -5.68457 17.043 -12.6895zM416 32c17.6641 0 32 14.3359 32 32s-14.3359 32 -32 32
s-32 -14.3359 -32 -32s14.3359 -32 32 -32z" />
<glyph glyph-name="bacterium" unicode="&#xf95a;"
d="M511 345.07c0.541016 -1.81836 0.979492 -4.83398 0.979492 -6.73047c0 -9.76562 -7.60645 -19.917 -16.9795 -22.6602l-15.79 -4.67969c0.128906 -1.98242 0.233398 -5.20312 0.233398 -7.18945c0 -16.9619 -7.08887 -42.5303 -15.8232 -57.0703l12.9395 -11.6699
c4.66211 -3.91992 8.44531 -12.043 8.44531 -18.1328c0 -13.0771 -10.6133 -23.6904 -23.6904 -23.6904c-5.36328 0 -12.8154 3.05664 -16.6348 6.82324l-13.3301 12c-11.2695 -7.9082 -31.4297 -16.2139 -45 -18.54c-4.61133 -0.887695 -11.999 -2.72461 -16.4893 -4.10059
l5.35938 -12.1094c1.10449 -2.51758 2.00098 -6.79102 2.00098 -9.54004c0 -13.1055 -10.6357 -23.7412 -23.7402 -23.7412c-8.56055 0 -18.3008 6.3623 -21.7402 14.2012l-5.23047 11.7998c-1.5293 -0.980469 -3.12988 -1.87012 -4.62988 -2.87012
c-3.80078 -2.68066 -9.72754 -7.33984 -13.2295 -10.4004c-4.59277 -3.92188 -11.5771 -10.7676 -15.5908 -15.2793c-3.06445 -3.29785 -7.75098 -8.89355 -10.46 -12.4902c-0.929688 -1.29004 -1.62988 -2.74023 -2.51953 -4.05957l11.7197 -5.49023
c7.6748 -3.47363 13.9043 -13.1309 13.9043 -21.5547c0 -13.0605 -10.5996 -23.6602 -23.6602 -23.6602c-3.03516 0 -7.70996 1.08594 -10.4336 2.4248l-12 5.63965c-1.80957 -5.62012 -4.12109 -14.8975 -5.16016 -20.71
c-2.11328 -12.334 -9.33008 -30.8818 -16.1104 -41.3994l12.1904 -12.5c3.49121 -3.76367 6.3252 -10.9854 6.3252 -16.1191c0 -13.082 -10.6182 -23.7002 -23.7002 -23.7002c-5.39453 0 -12.8789 3.08691 -16.7051 6.88867l-11.4502 11.7402
c-15.2744 -10.126 -42.5439 -18.4238 -60.8701 -18.5195c-1.36035 0 -2.75977 0.299805 -4.12988 0.349609l-3.80957 -14.6299c-2.56738 -9.77051 -12.8496 -17.7002 -22.9512 -17.7002h-0.0488281c-1.68164 0.00292969 -4.37012 0.338867 -6 0.75
c-9.7998 2.52637 -17.7529 12.791 -17.7529 22.9102c0 1.66016 0.336914 4.3125 0.75293 5.91992l3.84961 14.75c-17.5508 8.76855 -39.292 29.9316 -48.5303 47.2402l-15 -4.44043c-1.82422 -0.543945 -4.85059 -0.985352 -6.75488 -0.985352
c-13.0498 0 -23.6406 10.5908 -23.6406 23.6406c0 9.72656 7.56445 19.876 16.8857 22.6553l15.4404 4.55957c-0.164062 2.24316 -0.297852 5.88867 -0.297852 8.1377c0 4.78223 0.599609 12.498 1.33789 17.2227c1.96289 11.3242 6.12891 29.4814 9.2998 40.5293
l-13 4.48047c-9.01465 2.93359 -16.3311 13.0088 -16.3311 22.4883c0 13.0557 10.5957 23.6504 23.6504 23.6504c2.32031 0 5.97168 -0.649414 8.15039 -1.44922l12.9297 -4.42969c7.125 16.957 20.9775 43.2764 30.9199 58.75l-11.0898 8.06055
c-5.65918 3.89551 -10.2529 12.6338 -10.2529 19.5049c0 13.0713 10.6084 23.6797 23.6797 23.6797c4.49902 0 11.0273 -2.24609 14.5732 -5.01465l11 -8c11.7568 14.208 32.6777 35.4609 46.7002 47.4395l-8 10.6299c-2.60352 3.4707 -4.7168 9.80762 -4.7168 14.1455
c0 6.55664 4.27734 15.0439 9.54688 18.9443c3.49219 2.58789 9.85352 4.68848 14.1992 4.68848c6.56055 0 15.0908 -4.25098 19.041 -9.48828l8 -10.6299c15.4307 10.2012 41.7236 24.4609 58.6895 31.8301l-4.2998 12.0498
c-0.68457 2.03418 -1.23926 5.42578 -1.23926 7.57129c0 13.1045 10.6357 23.7393 23.7402 23.7393c9.10547 0 19.0732 -6.92578 22.249 -15.46l4.2998 -12c12.0654 3.59473 31.9258 8.25781 44.3301 10.4102c5.06543 0.847656 13.3457 1.53613 18.4814 1.53613
c1.0625 0 2.78711 -0.0302734 3.84863 -0.0664062l3.75977 14.3701c2.54492 9.82715 12.8486 17.8027 23 17.8027c13.1152 0 23.7588 -10.6436 23.7588 -23.7578c0 -1.6709 -0.339844 -4.33789 -0.758789 -5.95508l-3.79004 -14.4697
c17.5508 -8.8291 39.2793 -30.0732 48.5 -47.4209l15.1201 4.48047c1.83105 0.544922 4.86719 0.987305 6.77734 0.987305c9.75098 0 19.9443 -7.5791 22.7529 -16.917zM160 80c26.4961 0 48 21.5039 48 48s-21.5039 48 -48 48s-48 -21.5039 -48 -48s21.5039 -48 48 -48z
M240 216c13.248 0 24 10.752 24 24s-10.752 24 -24 24s-24 -10.752 -24 -24s10.752 -24 24 -24z" />
<glyph glyph-name="box-tissue" unicode="&#xf95b;"
d="M383.88 160.18h-256l-64 288h141.4c27.9277 -0.00195312 57.7646 -21.5059 66.5996 -48c8.83105 -26.4932 38.6641 -47.9971 66.5898 -48h109.41zM-0.120117 -31.8203v64h512v-64c0 -17.6641 -14.3359 -32 -32 -32h-448c-17.6641 0 -32 14.3359 -32 32zM479.88 224.18
c17.6582 -0.00488281 31.9902 -14.3408 31.9902 -32v0v-128h-512v128c0 17.6641 14.3359 32 32 32h49l14.2197 -64h-15.21c-8.83203 0 -16 -7.16797 -16 -16s7.16797 -16 16 -16h352c8.83203 0 16 7.16797 16 16s-7.16797 16 -16 16h-14.2695l21.3301 64h40.9395z" />
<glyph glyph-name="hand-holding-medical" unicode="&#xf95c;" horiz-adv-x="576"
d="M159.88 272.18c-8.83203 0 -16 7.16797 -16 16v64c0 8.83203 7.16797 16 16 16h64v64c0 8.83203 7.16797 16 16 16h64c8.83203 0 16 -7.16797 16 -16v-64h64c8.83203 0 16 -7.16797 16 -16v-64c0 -8.83203 -7.16797 -16 -16 -16h-64v-64c0 -8.83203 -7.16797 -16 -16 -16
h-64c-8.83203 0 -16 7.16797 -16 16v64h-64zM568.07 111.87c4.28906 -5.83496 7.77051 -16.4492 7.77051 -23.6914c0 -11.1436 -7.27637 -25.5596 -16.2412 -32.1787l-135.029 -99.5703c-15.2061 -11.1436 -42.8477 -20.2246 -61.7002 -20.2695h-347
c-8.77246 0.0595703 -15.9404 7.22754 -16 16v96c0.0595703 8.77246 7.22754 15.9404 16 16h55.3604l46.5 37.7402c17.8828 14.4893 51.0781 26.25 74.0957 26.25h0.0234375h160h0.00488281c17.6973 0 32.0596 -14.3633 32.0596 -32.0605
c0 -1.47852 -0.198242 -3.86133 -0.444336 -5.32031c-2.62012 -15.7393 -17.3701 -26.6094 -33.3701 -26.6094h-78.2393c-8.83203 0 -16 -7.16797 -16 -16s7.16797 -16 16 -16h120.609l119.67 88.1797c5.8418 4.3252 16.4814 7.83496 23.749 7.83496
c11.1621 0 25.5791 -7.30469 32.1816 -16.3047z" />
<glyph glyph-name="hand-sparkles" unicode="&#xf95d;" horiz-adv-x="640"
d="M106.66 277.36l-20.7402 -49.6201c-1.01074 -2.04297 -3.68066 -3.7002 -5.95996 -3.7002s-4.94922 1.65723 -5.95996 3.7002l-20.6602 49.6602h-0.0703125l-49.5898 20.5996c-1.92383 1.09863 -3.57227 3.78711 -3.67969 6v0c0.106445 2.21973 1.76367 4.9082 3.7002 6
l49.6299 20.6904h0.0498047l20.7002 49.6299c1.01465 2.03516 3.68555 3.6875 5.95996 3.6875s4.94434 -1.65234 5.95996 -3.6875l20.6602 -49.6406h0.0703125l49.5693 -20.6699c1.92871 -1.0957 3.57715 -3.78418 3.68066 -6v0
c-0.108398 -2.21289 -1.75684 -4.90039 -3.68066 -6l-49.5498 -20.6494h-0.0898438zM471.38 -19.4102l37.4902 -15.6299l0.0703125 -0.169922c-7.59082 -17.0596 -24 -28.79 -43.2402 -28.79h-197.61c-13.4805 0.0224609 -30.8584 8.88867 -38.79 19.79l-125.6 172.61
c-4.22852 5.81055 -7.66016 16.3584 -7.66016 23.5449c0 22.0879 17.9268 40.0146 40.0146 40.0146c11.2441 0 25.7393 -7.37891 32.3555 -16.4697l23.5898 -32.4902v241c0 17.6641 14.3359 32 32 32s32 -14.3359 32 -32v-152c0 -4.41602 3.58398 -8 8 -8h16
c4.41602 0 8 3.58398 8 8v184c0 17.6641 14.3359 32 32 32s32 -14.3359 32 -32v-184c0 -4.41602 3.58398 -8 8 -8h16c4.41602 0 8 3.58398 8 8v152c0 17.6641 14.3359 32 32 32s32 -14.3359 32 -32v-152c0 -4.41602 3.58398 -8 8 -8h16c4.41602 0 8 3.58398 8 8v72
c0 17.6641 14.3359 32 32 32s32 -14.3359 32 -32v-176.03c-0.0195312 -1.30957 -0.269531 -2.66992 -0.269531 -4c-7.77051 -3.70996 -14.5 -9.59961 -18.3506 -17.3398l-0.469727 -0.950195l-0.410156 -1l-15.6299 -37.4795l-37.4902 -15.6299l-1 -0.430664l-1 -0.489258
c-11.7803 -5.90527 -21.3408 -21.3926 -21.3408 -34.5703s9.56055 -28.665 21.3408 -34.5703l1 -0.5zM349.79 108.48c1.22266 0.609375 2.21582 2.21289 2.21582 3.5791c0 1.36719 -0.993164 2.9707 -2.21582 3.58008l-29.79 12.4199l-12.4297 29.7803
c-0.611328 1.21777 -2.21289 2.20605 -3.5752 2.20605s-2.96387 -0.988281 -3.5752 -2.20605l-12.4199 -29.7803l-29.79 -12.4199c-1.22266 -0.609375 -2.21582 -2.21289 -2.21582 -3.58008c0 -1.36621 0.993164 -2.96973 2.21582 -3.5791l29.79 -12.4102l12.4297 -29.7803
c0.611328 -1.21777 2.21289 -2.20605 3.5752 -2.20605s2.96387 0.988281 3.5752 2.20605l12.4199 29.7803zM640 16.0898l-0.0703125 -0.0703125v0c-0.117188 -2.19727 -1.76562 -4.86328 -3.67969 -5.94922l-49.5498 -20.6602h-0.0898438v0l-20.6904 -49.6201
c-1.01074 -2.04297 -3.68066 -3.7002 -5.95996 -3.7002s-4.94922 1.65723 -5.95996 3.7002l-20.6602 49.5898h-0.0703125l-49.5693 20.6699c-1.91406 1.08691 -3.5625 3.75293 -3.68066 5.9502v0c0.101562 2.2168 1.75 4.90527 3.68066 6l49.6299 20.7402h0.0498047
l20.7002 49.6299c1.01465 2.03516 3.68555 3.6875 5.95996 3.6875s4.94434 -1.65234 5.95996 -3.6875l20.6797 -49.6104h0.0703125l49.5703 -20.6699c1.92969 -1.09473 3.57812 -3.7832 3.67969 -6z" />
<glyph glyph-name="hands-wash" unicode="&#xf95e;" horiz-adv-x="576"
d="M496 224c-26.4961 0 -48 21.5039 -48 48s21.5039 48 48 48s48 -21.5039 48 -48s-21.5039 -48 -48 -48zM311.47 269.55l-16.0801 -4.96973l20.9004 66.1699c3.5 11.0703 14.1797 18.8604 25.71 17.5098c11.8564 -1.25195 21.4785 -11.9453 21.4785 -23.8672
c0 -2.05566 -0.505859 -5.31348 -1.12891 -7.27246l-15.3496 -48.6104c-5.0752 1.88184 -13.5869 3.44531 -19 3.49023h-0.0322266c-4.6543 0 -12.0449 -1.09766 -16.498 -2.4502zM93.6504 61.6699c-33.4609 19.3945 -61.0801 66.5195 -61.6504 105.19v112.729
c0.179688 13.3203 11.6699 23.9102 24.9004 23.8604c13.1709 -0.0771484 23.8604 -10.8281 23.8604 -24c0 -0.0410156 0 -0.108398 -0.000976562 -0.150391l2.06055 -50.0498l60 189.85c3.5 11.0703 14.1797 18.9004 25.71 17.46
c11.8398 -1.26465 21.4492 -11.9561 21.4492 -23.8633c0 -2.04785 -0.500977 -5.29395 -1.11914 -7.24609l-38.5605 -122c-0.205078 -0.649414 -0.371094 -1.72949 -0.371094 -2.41016c0 -4.41699 3.58398 -8.00195 8.00098 -8.00195
c3.2373 0 6.65527 2.50586 7.62988 5.5918l47.9307 151.71c3.50977 11.0605 14.1797 18.8506 25.71 17.5098c11.8398 -1.26465 21.4502 -11.9561 21.4502 -23.8633c0 -2.04785 -0.501953 -5.29395 -1.12012 -7.24609l-43.3701 -137.79
c-0.206055 -0.650391 -0.373047 -1.73242 -0.373047 -2.41504c0 -4.41797 3.58496 -8.00293 8.00293 -8.00293c3.23535 0 6.65332 2.50293 7.62988 5.58789l33.4502 106.42c3.5 11.0703 14.1895 18.8604 25.7197 17.5195
c11.8408 -1.26465 21.4502 -11.9561 21.4502 -23.8633c0 -2.04785 -0.501953 -5.29395 -1.12012 -7.24609l-34.1602 -108.12l-73.7002 -22.7598c-59.0469 -19.5098 -107.01 -85.8135 -107.06 -148v-25.6904c-0.80957 -0.169922 -1.5498 -0.519531 -2.34961 -0.709961z
M519.1 112c11.6104 0 22.25 -7.83984 24.4404 -19.2402c0.262695 -1.30078 0.476562 -3.43262 0.476562 -4.75977c0 -13.248 -10.752 -24 -24 -24h-0.0166016h-160c-4.41602 0 -8 -3.58398 -8 -8s3.58398 -8 8 -8h127.1c11.6104 0 22.25 -7.83984 24.4404 -19.2402
c0.262695 -1.30078 0.476562 -3.43262 0.476562 -4.75977c0 -13.248 -10.752 -24 -24 -24h-0.0166016h-128c-4.41602 0 -8 -3.58398 -8 -8s3.58398 -8 8 -8h95.0996c11.6104 0 22.25 -7.83984 24.4404 -19.2402c0.262695 -1.30078 0.476562 -3.43262 0.476562 -4.75977
c0 -13.248 -10.752 -24 -24 -24h-0.0166016h-208c-18.4902 0.0703125 -46.2656 8.00879 -62 17.7197c3.32715 8.06641 6.02734 21.6953 6.02734 30.4209c0 36.0527 -28.6846 71.0908 -64.0273 78.209v25.6504v0.00683594c0 49.501 38.165 102.223 85.1904 117.684
l107.72 33.25c1.91211 0.59082 5.08887 1.07031 7.08984 1.07031c13.2539 0 24.0107 -10.7568 24.0107 -24.0107c0 -9.77637 -7.58008 -20.0537 -16.9209 -22.9404l-47.0898 -17.0596h199.1c11.6104 0 22.25 -7.83984 24.4404 -19.2402
c0.262695 -1.30078 0.476562 -3.43262 0.476562 -4.75977c0 -13.248 -10.752 -24 -24 -24h-0.0166016h-128c-4.41602 0 -8 -3.58398 -8 -8s3.58398 -8 8 -8h159.1zM416 384c-17.6641 0 -32 14.3359 -32 32s14.3359 32 32 32s32 -14.3359 32 -32s-14.3359 -32 -32 -32z
M112 32c26.4961 0 48 -21.5039 48 -48s-21.5039 -48 -48 -48s-48 21.5039 -48 48s21.5039 48 48 48z" />
<glyph glyph-name="handshake-alt-slash" unicode="&#xf95f;" horiz-adv-x="640"
d="M358.59 252.4l26.1104 23.8896c2.86914 2.62598 5.19824 7.91504 5.19824 11.8047c0 8.83398 -7.16992 16.0039 -16.0039 16.0039c-3.43164 0 -8.27246 -1.88086 -10.8047 -4.19824l-27 -24.7002l-32.6895 -29.9199l330.43 -255.38
c3.41016 -2.65234 6.17773 -8.31055 6.17773 -12.6309c0 -3.0293 -1.50879 -7.42773 -3.36816 -9.81934l-19.6396 -25.2705c-2.65234 -3.41211 -8.31152 -6.18262 -12.6338 -6.18262c-3.03125 0 -7.43359 1.51172 -9.82617 3.37305l-588.35 454.72
c-3.41016 2.65234 -6.17773 8.31055 -6.17773 12.6309c0 3.02832 1.50781 7.42773 3.36719 9.81934l19.6201 25.2695c2.65234 3.41602 8.31348 6.1875 12.6377 6.1875c3.03418 0 7.43848 -1.5127 9.83203 -3.37695l116.891 -90.3301l20.3398 20.2998
c5.16211 5.17969 15.2871 9.39551 22.5996 9.41016h83.79l-75.5996 -69.2402l25.6895 -19.8496l88.1201 80.6797c5.0625 4.63965 14.7432 8.40723 21.6104 8.41016h85.8896c7.31641 -0.0126953 17.4453 -4.22852 22.6104 -9.41016l54.5898 -54.5898h112v0
c8.78223 0 15.9502 -7.12793 16 -15.9102v-191.8c-0.0273438 -8.80469 -7.19531 -15.9727 -16 -16h-97.5898c-2.26465 12.7275 -12.2148 29.7109 -22.21 37.9102zM16 320h7.55957l382.44 -295.59l-8.7998 -10.8203c-6.15723 -7.57617 -19.0762 -13.7246 -28.8389 -13.7246
c-7.29004 0 -17.7959 3.73438 -23.4512 8.33496l-17.9102 15.5l-0.200195 -0.200195c-10.6025 -13.0381 -32.8477 -23.6201 -49.6533 -23.6201c-12.5381 0 -30.6133 6.41602 -40.3467 14.3203l-90.5 81.8896h-130.3c-8.83203 0 -16 7.16797 -16 16v191.91
c0.0273438 8.80469 7.19531 15.9727 16 16z" />
<glyph glyph-name="handshake-slash" unicode="&#xf960;" horiz-adv-x="640"
d="M0 319.79h23.8301l72.1699 -55.79v-168c0 -17.6641 -14.3359 -32 -32 -32h-64v255.79zM48 127.9c-8.83203 0 -16 -7.16797 -16 -16s7.16797 -16 16 -16s16 7.16797 16 16s-7.16797 16 -16 16zM128 96.0898v143.19l278 -214.87l-8.7998 -10.8203
c-6.15723 -7.57617 -19.0762 -13.7246 -28.8389 -13.7246c-7.29004 0 -17.7959 3.73438 -23.4512 8.33496l-17.9102 15.5l-0.200195 -0.200195c-10.6025 -13.0381 -32.8477 -23.6201 -49.6533 -23.6201c-12.5381 0 -30.6133 6.41602 -40.3467 14.3203l-90.5 81.8896
h-18.2998zM544 319.79h96v-255.89h-64c-17.6641 0 -32 14.3359 -32 32v223.89zM592 95.9004c8.83203 0 16 7.16797 16 16s-7.16797 16 -16 16s-16 -7.16797 -16 -16s7.16797 -16 16 -16zM303.33 245.33l330.5 -255.43c3.41309 -2.65234 6.18359 -8.3125 6.18359 -12.6357
c0 -3.02734 -1.50684 -7.42383 -3.36328 -9.81445l-19.6504 -25.2705c-2.65234 -3.41504 -8.31348 -6.1875 -12.6377 -6.1875c-3.03418 0 -7.43848 1.51367 -9.83203 3.37793l-588.34 454.72c-3.41016 2.65234 -6.17773 8.31055 -6.17773 12.6309
c0 3.02832 1.50781 7.42773 3.36719 9.81934l19.6201 25.2695c2.65234 3.41602 8.31348 6.1875 12.6377 6.1875c3.03418 0 7.43848 -1.5127 9.83203 -3.37695l116.891 -90.3398l20.3398 20.3096c5.16211 5.17969 15.2871 9.39551 22.5996 9.41016h83.79l-75.5996 -69.2402
l25.6396 -19.8096l88.0703 80.6396c5.05566 4.64258 14.7305 8.41016 21.5947 8.41016h0.00488281h85.9004h0.0351562c7.31055 0 17.4199 -4.21582 22.5645 -9.41016l54.6104 -54.5898v-193.5c-2.02246 2.29102 -5.56641 5.74023 -7.91016 7.7002l-145.59 118.2
l26.0898 23.8896c2.73828 2.61035 4.95996 7.79883 4.95996 11.5811c0 8.83203 -7.16797 16 -16 16c-3.32422 0 -8.05078 -1.7793 -10.5498 -3.9707z" />
<glyph glyph-name="head-side-cough" unicode="&#xf961;" horiz-adv-x="640"
d="M616 144c-13.248 0 -24 10.752 -24 24s10.752 24 24 24s24 -10.752 24 -24s-10.752 -24 -24 -24zM552 32c13.248 0 24 -10.752 24 -24s-10.752 -24 -24 -24s-24 10.752 -24 24s10.752 24 24 24zM488 88c13.248 0 24 -10.752 24 -24s-10.752 -24 -24 -24
s-24 10.752 -24 24s10.752 24 24 24zM616 -16c13.248 0 24 -10.752 24 -24s-10.752 -24 -24 -24s-24 10.752 -24 24s10.752 24 24 24zM616 88c13.248 0 24 -10.752 24 -24s-10.752 -24 -24 -24s-24 10.752 -24 24s10.752 24 24 24zM552 128c13.248 0 24 -10.752 24 -24
s-10.752 -24 -24 -24s-24 10.752 -24 24s10.752 24 24 24zM477.22 173c1.52344 -3.42676 2.75977 -9.25 2.75977 -13c0 -17.6523 -14.3271 -31.9883 -31.9795 -32h-32v-32h-96c-17.6641 0 -32 -14.3359 -32 -32s14.3359 -32 32 -32h96c0 -35.3281 -28.6719 -64 -64 -64h-64
v-32h-224v177.12c-39.25 35.2598 -64 86.1299 -64 142.88c0 106 86 192 192 192h42.0996c59.5439 -0.0390625 135.704 -39.5752 170 -88.25c24.6201 -35 52.1201 -139.63 73.1201 -186.75zM288 224c17.626 0.0380859 31.9619 14.374 32 32c0 17.6641 -14.3359 32 -32 32
s-32 -14.3359 -32 -32s14.3359 -32 32 -32z" />
<glyph glyph-name="head-side-cough-slash" unicode="&#xf962;" horiz-adv-x="640"
d="M454.11 128.79l179.72 -138.89c3.41016 -2.65234 6.17773 -8.31055 6.17773 -12.6309c0 -3.0293 -1.50879 -7.42773 -3.36816 -9.81934l-19.6396 -25.2705c-2.65234 -3.41504 -8.31348 -6.1875 -12.6377 -6.1875c-3.03418 0 -7.43848 1.51367 -9.83203 3.37793
l-588.351 454.72c-3.41016 2.65234 -6.17773 8.31055 -6.17773 12.6309c0 3.02832 1.50879 7.42773 3.36816 9.81934l19.6299 25.2695c2.65234 3.41309 8.31152 6.18262 12.6338 6.18262c3.03125 0 7.43359 -1.51074 9.82617 -3.37207l38.7197 -29.9199
c26.8672 18.3818 75.0928 33.2998 107.646 33.2998h0.173828h42.0996c59.5439 -0.0390625 135.704 -39.5752 170 -88.25c24.6201 -35 52.1201 -139.63 73.1201 -186.75c8.51074 -19.21 -3.5498 -40.4004 -23.1094 -44.21zM313.39 237.55
c3.85059 5.28027 6.61035 11.4502 6.58008 18.4502c-0.0322266 17.6309 -14.3691 31.9668 -32 32c-9.92969 0 -18.4795 -4.86035 -24.3594 -12zM616 144c-13.248 0 -24 10.752 -24 24s10.752 24 24 24s24 -10.752 24 -24s-10.752 -24 -24 -24zM552 80
c-13.248 0 -24 10.752 -24 24s10.752 24 24 24s24 -10.752 24 -24s-10.752 -24 -24 -24zM288 64c0 -17.6641 14.3359 -32 32 -32h96c0 -35.3281 -28.6719 -64 -64 -64h-64v-32h-224v177.12c-39.25 35.2598 -64 86.1299 -64 142.88
c0.0126953 25.2188 9.2998 63.9307 20.7305 86.4102l318.81 -246.41h-19.54c-17.6641 0 -32 -14.3359 -32 -32zM616 88c13.248 0 24 -10.752 24 -24s-10.752 -24 -24 -24s-24 10.752 -24 24s10.752 24 24 24z" />
<glyph glyph-name="head-side-mask" unicode="&#xf963;"
d="M0.150391 263.58c0.364258 7.85059 1.94043 20.4707 3.51953 28.1699l220.33 -160.26v-195.49h-160v177.12c-41 36.8203 -66.1699 90.6699 -63.8496 150.46zM509.22 173c1.40625 -3.27148 2.54688 -8.81543 2.54688 -12.376
c0 -0.171875 -0.00292969 -0.452148 -0.00683594 -0.624023h-272.55l-225.96 164.35c29.2305 73.0801 103.75 123.65 186.75 123.65h66.1104c59.541 -0.0390625 135.697 -39.5752 169.989 -88.25c24.6201 -35 52.1201 -139.63 73.1201 -186.75zM320 224
c17.626 0.0380859 31.9619 14.374 32 32c0 17.6641 -14.3359 32 -32 32s-32 -14.3359 -32 -32s14.3359 -32 32 -32zM336 80c-8.83203 0 -16 -7.16797 -16 -16s7.16797 -16 16 -16h149.34l-10.6699 -32h-138.67c-8.83203 0 -16 -7.16797 -16 -16s7.16797 -16 16 -16h128
l-1.41016 -4.24023c-8.05176 -24.1533 -35.25 -43.7578 -60.71 -43.7598h-145.88v192h256l-16 -48h-160z" />
<glyph glyph-name="head-side-virus" unicode="&#xf964;"
d="M272 208c8.83203 0 16 -7.16797 16 -16s-7.16797 -16 -16 -16s-16 7.16797 -16 16s7.16797 16 16 16zM208 272c8.83203 0 16 -7.16797 16 -16s-7.16797 -16 -16 -16s-16 7.16797 -16 16s7.16797 16 16 16zM509.2 173c1.52344 -3.42676 2.75977 -9.25 2.75977 -13
c0 -17.6416 -14.3184 -31.9775 -31.96 -32h-32v-64c0 -35.3281 -28.6719 -64 -64 -64h-64v-64h-256v177.19c-35.3281 31.4834 -64 95.4414 -64 142.763v0.046875c0 106 86 192 192 192h74.0898h0.0214844c59.5684 0 135.736 -39.5361 170.019 -88.25
c24.6396 -35.0195 52.1396 -139.63 73.0703 -186.75zM368 208c8.83203 0 16 7.16797 16 16s-7.16797 16 -16 16h-12.1201c-28.5098 0 -42.79 34.4697 -22.6299 54.6299l8.58008 8.57031c2.58691 2.58691 4.68652 7.65625 4.68652 11.3145
c0 8.83301 -7.16895 16.002 -16.002 16.002c-3.6582 0 -8.72754 -2.09961 -11.3145 -4.68652l-8.57031 -8.58008c-20.1602 -20.1602 -54.6299 -5.87988 -54.6299 22.6299v12.1201c0 8.83203 -7.16797 16 -16 16s-16 -7.16797 -16 -16v-12.1201
c0 -28.5098 -34.4697 -42.79 -54.6299 -22.6299l-8.57031 8.58008c-2.58691 2.58691 -7.65625 4.68652 -11.3145 4.68652c-8.83301 0 -16.002 -7.16895 -16.002 -16.002c0 -3.6582 2.09961 -8.72754 4.68652 -11.3145l8.58008 -8.57031
c20.1602 -20.1602 5.87988 -54.6299 -22.6299 -54.6299h-12.1201c-8.83203 0 -16 -7.16797 -16 -16s7.16797 -16 16 -16h12.1201c28.5098 0 42.79 -34.4697 22.6299 -54.6299l-8.58008 -8.57031c-2.58691 -2.58691 -4.68652 -7.65625 -4.68652 -11.3145
c0 -8.83301 7.16895 -16.002 16.002 -16.002c3.6582 0 8.72754 2.09961 11.3145 4.68652l8.57031 8.58008c20.1602 20.1602 54.6299 5.87988 54.6299 -22.6299v-12.1201c0 -8.83203 7.16797 -16 16 -16s16 7.16797 16 16v12.1201c0 28.5098 34.4697 42.79 54.6299 22.6299
l8.57031 -8.58008c2.58691 -2.58691 7.65625 -4.68652 11.3145 -4.68652c8.83301 0 16.002 7.16895 16.002 16.002c0 3.6582 -2.09961 8.72754 -4.68652 11.3145l-8.58008 8.57031c-20.1602 20.1602 -5.87988 54.6299 22.6299 54.6299h12.1201z" />
<glyph glyph-name="house-user" unicode="&#xf965;" horiz-adv-x="576"
d="M570.69 211.73c2.54004 -2.81152 4.91895 -8.15137 5.30957 -11.9209c-0.319336 -3.25977 -2.15234 -8.04883 -4.08984 -10.6895l-21.4102 -23.8105c-2.7959 -2.53809 -8.11426 -4.91699 -11.8701 -5.30957c-3.2666 0.334961 -8.06934 2.18066 -10.7197 4.12012
l-15.9102 14v-210.12c0 -17.6641 -14.3359 -32 -32 -32h-383.91c-17.6641 0 -32 14.3359 -32 32v210.11l-15.8994 -14c-2.63965 -1.94336 -7.42871 -3.78418 -10.6904 -4.11035c-3.78906 0.381836 -9.16504 2.75586 -12 5.2998l-21.4102 23.79
c-2.08398 2.59082 -3.91602 7.38965 -4.08984 10.71c0.200195 3.83789 2.55664 9.16895 5.25977 11.9004l256 226c6.28027 5.68945 18.21 10.2998 26.7402 10.2998s20.5 -4.61035 26.7803 -10.2998l101.22 -89.3701v51.6699c0 8.83203 7.16797 16 16 16h64
c8.83203 0 16 -7.16797 16 -16v-136.44zM288 272c-35.3281 0 -64 -28.6719 -64 -64s28.6719 -64 64 -64s64 28.6719 64 64s-28.6719 64 -64 64zM400 0c8.83203 0 16 7.16797 16 16c0 52.9922 -43.0078 96 -96 96h-64c-52.9922 0 -96 -43.0078 -96 -96
c0 -8.83203 7.16797 -16 16 -16h224z" />
<glyph glyph-name="laptop-house" unicode="&#xf966;" horiz-adv-x="640"
d="M272 160v-128h-176c-17.6641 0 -32 14.3359 -32 32v164.12l-21.6602 -19.1201c-2.27344 -1.77637 -6.45801 -3.33594 -9.33984 -3.48047c-3.45117 0.183594 -8.22754 2.3252 -10.6602 4.78027l-18.79 21.3105c-1.8125 2.27637 -3.40332 6.4834 -3.5498 9.38965
c0.194336 3.42871 2.33594 8.16797 4.78027 10.5801l211.8 187.5c5.54004 4.91992 16.0703 8.91992 23.4697 8.91992c7.40039 0 17.9502 -4 23.4502 -8.91992l88.5 -78.3799v39.2998c0 8.83203 7.16797 16 16 16h32c8.83203 0 16 -7.16797 16 -16v-96l59.25 -52.3896
c2.42773 -2.42871 4.55566 -7.18164 4.75 -10.6104c-0.15332 -2.93457 -1.77051 -7.17773 -3.61035 -9.46973l-6.64941 -7.53027h-136.94c-17.7998 0 -33.6895 -8.24023 -44.7998 -21.1201v37.1201c0 8.83203 -7.16797 16 -16 16h-64c-8.83203 0 -16 -7.16797 -16 -16v-64
c0 -8.83203 7.16797 -16 16 -16h64zM629.33 0c5.88965 0 10.6699 -4.78027 10.6699 -10.6699v-10.6602c-0.0820312 -23.4336 -19.167 -42.5498 -42.5996 -42.6699h-298.801c-23.4326 0.120117 -42.5176 19.2363 -42.5996 42.6699v10.6602
c0 5.88965 4.78027 10.6699 10.6699 10.6699v0h37.3301v160c0 17.6699 12.8896 32 28.7998 32h230.4c15.9102 0 28.7998 -14.3301 28.7998 -32v-160h37.3301zM544 0v144h-192v-144h192z" />
<glyph glyph-name="lungs-virus" unicode="&#xf967;" horiz-adv-x="640"
d="M344 297.32c-6.11035 3.6875 -16.8623 6.68066 -24 6.68066s-17.8896 -2.99316 -24 -6.68066v134.68c0 8.83203 7.16797 16 16 16h16c8.83203 0 16 -7.16797 16 -16v-134.68zM195.54 3.54004c7.55664 -7.76367 22.4814 -14.0645 33.3154 -14.0645
c2.33594 0 6.09668 0.342773 8.39453 0.764648c-11.2559 -14.4775 -34.7754 -30.0459 -52.5 -34.75l-59.5 -15.8701c-62.75 -16.8799 -125.25 27.3799 -125.25 88.6299v0.241211c0 8.25 1.73828 21.4121 3.87988 29.3789c18.2109 68.1455 63.9072 171.634 102 231
c22.1201 34.6299 36.1201 63.1299 80.1201 63.1299c38.6201 0 70 -29.3799 70 -65.75v-27.6797c-6.68359 4.46582 -18.6309 8.08984 -26.6689 8.08984c-26.4961 0 -48 -21.5039 -48 -48c0 -11.043 6.36523 -26.3154 14.209 -34.0898l8.58008 -8.57031h-12.1201
c-26.4961 0 -48 -21.5039 -48 -48s21.5039 -48 48 -48h12.1201l-8.58008 -8.58008c-7.74609 -7.76562 -14.0332 -22.9707 -14.0332 -33.9395c0 -10.9697 6.28711 -26.1748 14.0332 -33.9404zM421.83 26.1699c-2.58691 -2.58789 -7.65625 -4.6875 -11.3154 -4.6875
c-3.6582 0 -8.72754 2.09961 -11.3145 4.6875l-8.57031 8.57031c-20.1602 20.1602 -54.6299 5.87988 -54.6299 -22.6201v-12.1201c0 -8.83203 -7.16797 -16 -16 -16s-16 7.16797 -16 16v12.1201c0 28.5 -34.4697 42.7803 -54.6299 22.6201l-8.57031 -8.57031
c-2.60156 -2.67969 -7.74512 -4.85547 -11.4805 -4.85547c-8.83203 0 -16 7.16797 -16 16c0 3.7334 2.17285 8.87402 4.85059 11.4756l8.58008 8.58008c20.1602 20.1602 5.87988 54.6299 -22.6299 54.6299h-12.1201c-8.83203 0 -16 7.16797 -16 16s7.16797 16 16 16h12.1201
c28.5098 0 42.79 34.4697 22.6299 54.6201l-8.58008 8.58008c-2.58691 2.58691 -4.68652 7.65625 -4.68652 11.3145c0 8.83301 7.16895 16.002 16.002 16.002c3.6582 0 8.72754 -2.09961 11.3145 -4.68652l8.57031 -8.58008
c20.1602 -20.1602 54.6299 -5.87988 54.6299 22.6299v12.1201c0 8.83203 7.16797 16 16 16s16 -7.16797 16 -16v-12.1201c0 -28.5098 34.4697 -42.79 54.6299 -22.6299l8.57031 8.58008c2.58691 2.58691 7.65625 4.68652 11.3145 4.68652
c8.83301 0 16.002 -7.16895 16.002 -16.002c0 -3.6582 -2.09961 -8.72754 -4.68652 -11.3145l-8.58008 -8.58008c-20.1602 -20.1504 -5.87988 -54.6201 22.6299 -54.6201h12.1201c8.83203 0 16 -7.16797 16 -16s-7.16797 -16 -16 -16h-12.1201
c-28.5098 0 -42.79 -34.4697 -22.6299 -54.6299l8.58008 -8.58008c2.58496 -2.58691 4.68262 -7.65332 4.68262 -11.3096c0 -3.65723 -2.09766 -8.72363 -4.68262 -11.3105zM288 144c8.83203 0 16 7.16797 16 16s-7.16797 16 -16 16s-16 -7.16797 -16 -16
s7.16797 -16 16 -16zM352 80c8.83203 0 16 7.16797 16 16s-7.16797 16 -16 16s-16 -7.16797 -16 -16s7.16797 -16 16 -16zM636.12 57.8701c2.1416 -7.9668 3.87988 -21.1289 3.87988 -29.3789v-0.241211c0 -61.25 -62.5 -105.51 -125.25 -88.6299l-59.5 15.8701
c-17.7246 4.7041 -41.2441 20.2725 -52.5 34.75c2.32812 -0.421875 6.1377 -0.764648 8.50391 -0.764648c26.3311 0 47.7002 21.3701 47.7002 47.7002c0 11.1445 -6.49316 26.4863 -14.4941 34.2441l-8.58008 8.58008h12.1201c26.4961 0 48 21.5039 48 48
s-21.5039 48 -48 48h-12.1201l8.58008 8.53027c7.84375 7.77441 14.209 23.0469 14.209 34.0898c0 26.4961 -21.5039 48 -48 48c-8.03809 0 -19.9854 -3.62402 -26.6689 -8.08984v27.7197c0 36.3701 31.3799 65.75 70 65.75c44 0 58 -28.5 80.1201 -63.1299
c38.0928 -59.3662 83.7891 -162.854 102 -231z" />
<glyph glyph-name="people-arrows" unicode="&#xf968;" horiz-adv-x="576"
d="M96 320c-35.3281 0 -64 28.6719 -64 64s28.6719 64 64 64s64 -28.6719 64 -64s-28.6719 -64 -64 -64zM96 143.92v-0.118164c0 -10.4102 6.11035 -24.6934 13.6396 -31.8818l50.3604 -47.5303v-96.3896c0 -17.6641 -14.3359 -32 -32 -32h-64
c-17.6641 0 -32 14.3359 -32 32v128c-17.6641 0 -32 14.3359 -32 32v96c0 35.3281 28.6719 64 64 64h64c23.9707 -0.0224609 50.5732 -18.1357 59.3799 -40.4297c-1.83984 -1.26074 -3.95996 -2.02051 -5.61035 -3.57031l-72.1299 -68.0801
c-7.5293 -7.19336 -13.6396 -21.4814 -13.6396 -31.8945v-0.105469zM480 320c-35.3281 0 -64 28.6719 -64 64s28.6719 64 64 64s64 -28.6719 64 -64s-28.6719 -64 -64 -64zM512 288c35.3281 0 64 -28.6719 64 -64v-96c0 -17.6641 -14.3359 -32 -32 -32v-128
c0 -17.6641 -14.3359 -32 -32 -32h-64c-17.6641 0 -32 14.3359 -32 32v96.3799l50.3604 47.5498c7.52539 7.22949 13.6338 21.5654 13.6338 32c0 10.4355 -6.1084 24.7715 -13.6338 32l-72.1201 68.0605c-1.62012 1.58984 -3.78027 2.31934 -5.62012 3.58984
c8.80957 22.291 35.4111 40.3984 59.3799 40.4199h64zM444.4 152.66c1.98633 -2.00195 3.59863 -5.91504 3.59863 -8.73535s-1.6123 -6.7334 -3.59863 -8.73438l-72.1201 -68.0703c-1.91895 -1.83008 -5.62891 -3.31445 -8.28027 -3.31445c-6.62402 0 -12 5.37598 -12 12
v0.0546875v36.1396h-128v-36.1396v-0.0546875c0 -6.62402 -5.37598 -12 -12 -12c-2.65137 0 -6.36133 1.48438 -8.28027 3.31445l-72.1201 68.0703c-1.98633 2.00098 -3.59863 5.91406 -3.59863 8.73438s1.6123 6.7334 3.59863 8.73535l72.1201 68.0703
c1.91895 1.8291 5.62891 3.31348 8.28027 3.31348c6.62402 0 12 -5.37598 12 -12v-0.0439453v-36h128v36v0.0341797c0 6.62402 5.37598 12 12 12c2.65137 0 6.36133 -1.48438 8.28027 -3.31445z" />
<glyph glyph-name="plane-slash" unicode="&#xf969;" horiz-adv-x="640"
d="M32.4805 300.12c-0.21875 0.947266 -0.396484 2.50586 -0.396484 3.47852c0 2.40137 1.01465 6.0127 2.26562 8.06152l324.841 -251.061l-66.6006 -116.54c-2.54297 -4.44824 -8.76562 -8.05957 -13.8896 -8.05957h-65.5
c-8.81543 0.0166016 -15.9697 7.18457 -15.9697 16c0 1.24121 0.277344 3.2168 0.619141 4.41016l49 171.59h-102.85l-43.2002 -57.5898c-2.64746 -3.53613 -8.38184 -6.4082 -12.7998 -6.41016h-40c-8.8291 0.00292969 -15.9951 7.1709 -15.9951 16
c0 1.08398 0.212891 2.81836 0.475586 3.87012l31.5195 108.13zM633.82 -10.0898c3.41602 -2.65234 6.18848 -8.31445 6.18848 -12.6387c0 -3.03027 -1.50879 -7.42969 -3.36914 -9.82129l-19.6396 -25.2598c-2.65234 -3.41699 -8.31445 -6.18945 -12.6387 -6.18945
c-3.03027 0 -7.42969 1.50977 -9.82129 3.36914l-588.36 454.72c-3.41211 2.65234 -6.18262 8.3125 -6.18262 12.6338c0 3.03223 1.51172 7.43359 3.37305 9.82617l19.6299 25.2598c2.65234 3.41309 8.31152 6.18262 12.6338 6.18262
c3.03125 0 7.43359 -1.51074 9.82617 -3.37207l189.3 -146.3l-36.9395 129.29c-0.338867 1.1875 -0.614258 3.1543 -0.614258 4.38965c0 8.8291 7.16504 15.9971 15.9941 16h65.5098c5.12988 0 11.3496 -3.61035 13.9004 -8.05957l105.09 -183.94h114.3
c35.3398 0 96 -28.6602 96 -64s-60.6602 -64 -96 -64h-56.8604z" />
<glyph glyph-name="pump-medical" unicode="&#xf96a;" horiz-adv-x="384"
d="M235.51 288.18c32.2471 -0.00195312 60.7979 -26.0664 63.7305 -58.1797l20.3701 -224c0.145508 -1.59766 0.262695 -4.19629 0.262695 -5.7998c0 -35.3242 -28.6689 -63.9961 -63.9932 -64h-192h-0.00292969c-35.3281 0 -64 28.6719 -64 64
c0 1.60352 0.117188 4.20215 0.262695 5.7998l20.3701 224c2.93262 32.1133 31.4834 58.1777 63.7305 58.1797h151.27zM239.88 114.85v26.6602c0 7.36426 -5.97656 13.3398 -13.3398 13.3398v0h-40v40c0 7.3584 -5.97168 13.3301 -13.3301 13.3301v0h-26.6699
c-7.3584 0 -13.3301 -5.97168 -13.3301 -13.3301v-40h-40c-7.3584 0 -13.3301 -5.97168 -13.3301 -13.3301v-0.00976562v-26.6602c0 -7.35742 5.97168 -13.334 13.3301 -13.3398h40v-40c0 -7.3584 5.97168 -13.3301 13.3301 -13.3301v0h26.6699
c7.3584 0 13.3301 5.97168 13.3301 13.3301v40h40c7.3584 0.00585938 13.334 5.98242 13.3398 13.3398zM379.19 354.12c2.58691 -2.58691 4.6875 -7.65625 4.6875 -11.3154c0 -3.6582 -2.10059 -8.72754 -4.6875 -11.3145l-22.6201 -22.6201
c-2.58691 -2.58789 -7.65625 -4.6875 -11.3154 -4.6875s-8.72754 2.09961 -11.3145 4.6875l-43.3105 43.3096h-66.75v-32h-128v96c0 17.6641 14.3359 32 32 32h64c17.6641 0 32 -14.3359 32 -32h66.75c14.6279 -0.00195312 34.8955 -8.39746 45.2402 -18.7393z" />
<glyph glyph-name="pump-soap" unicode="&#xf96b;" horiz-adv-x="384"
d="M235.63 288c32.2637 0 60.8311 -26.0781 63.75 -58.21l20.3604 -224c0.144531 -1.59473 0.262695 -4.18848 0.262695 -5.79004c0 -35.3281 -28.6729 -64 -64 -64h-0.00292969h-192c-35.3242 0.00390625 -63.9922 28.6758 -63.9922 64
c0 1.60156 0.117188 4.19531 0.261719 5.79004l20.3604 224c2.91895 32.1318 31.4736 58.21 63.7373 58.21h0.00292969h151.26zM160 32c33.1201 0 60 26.3301 60 58.7305c0 25 -35.6699 75.4697 -52 97.2695c-1.65625 2.21387 -5.24316 4.00977 -8.00781 4.00977
c-2.75586 0 -6.33594 -1.78711 -7.99219 -3.99023c-16.2998 -21.7998 -52 -72.2695 -52 -97.2695c0 -32.4199 26.8799 -58.75 60 -58.75zM379.31 353.94c2.58789 -2.58691 4.68848 -7.65625 4.68848 -11.3154s-2.10059 -8.72852 -4.68848 -11.3154l-22.6191 -22.6191
c-2.58691 -2.58789 -7.65625 -4.68848 -11.3154 -4.68848s-8.72852 2.10059 -11.3154 4.68848l-43.3096 43.3096h-66.75v-32h-128v96c0 17.6641 14.3359 32 32 32h64c17.6641 0 32 -14.3359 32 -32h66.75v0c14.6309 0 34.9033 -8.39551 45.25 -18.7402z" />
<glyph glyph-name="shield-virus" unicode="&#xf96c;"
d="M224 256c8.83203 0 16 -7.16797 16 -16s-7.16797 -16 -16 -16s-16 7.16797 -16 16s7.16797 16 16 16zM466.5 364.32c16.2842 -6.80176 29.5 -26.6445 29.5 -44.292v-0.0283203c0 -221.3 -135.91 -344.61 -221.59 -380.32
c-4.89062 -2.03223 -13.1592 -3.68164 -18.4551 -3.68164c-5.29688 0 -13.5645 1.64941 -18.4551 3.68164c-107 44.6006 -221.5 181.82 -221.5 380.32v0.0478516c0 17.6787 13.2559 37.5176 29.5898 44.2822l192 80c4.92676 1.85938 13.1973 3.50391 18.46 3.66992
c5.26074 -0.169922 13.5264 -1.81836 18.4502 -3.67969zM384 192c8.83203 0 16 7.16797 16 16s-7.16797 16 -16 16h-12.1201c-28.5098 0 -42.79 34.4697 -22.6299 54.6299l8.58008 8.57031c2.58691 2.58691 4.68652 7.65625 4.68652 11.3145
c0 8.83301 -7.16895 16.002 -16.002 16.002c-3.6582 0 -8.72754 -2.09961 -11.3145 -4.68652l-8.57031 -8.58008c-20.1602 -20.1602 -54.6299 -5.87988 -54.6299 22.6299v12.1201c0 8.83203 -7.16797 16 -16 16s-16 -7.16797 -16 -16v-12.1201
c0 -28.5098 -34.4697 -42.79 -54.6299 -22.6299l-8.57031 8.58008c-2.58691 2.58691 -7.65625 4.68652 -11.3145 4.68652c-8.83301 0 -16.002 -7.16895 -16.002 -16.002c0 -3.6582 2.09961 -8.72754 4.68652 -11.3145l8.58008 -8.57031
c20.1602 -20.1602 5.87988 -54.6299 -22.6299 -54.6299h-12.1201c-8.83203 0 -16 -7.16797 -16 -16s7.16797 -16 16 -16h12.1201c28.5098 0 42.79 -34.4697 22.6299 -54.6299l-8.58008 -8.57031c-2.58691 -2.58691 -4.68652 -7.65625 -4.68652 -11.3145
c0 -8.83301 7.16895 -16.002 16.002 -16.002c3.6582 0 8.72754 2.09961 11.3145 4.68652l8.57031 8.58008c20.1602 20.1602 54.6299 5.87988 54.6299 -22.6299v-12.1201c0 -8.83203 7.16797 -16 16 -16s16 7.16797 16 16v12.1201c0 28.5098 34.4697 42.79 54.6299 22.6299
l8.57031 -8.58008c2.58691 -2.58691 7.65625 -4.68652 11.3145 -4.68652c8.83301 0 16.002 7.16895 16.002 16.002c0 3.6582 -2.09961 8.72754 -4.68652 11.3145l-8.58008 8.57031c-20.1602 20.1602 -5.87988 54.6299 22.6299 54.6299h12.1201zM288 192
c8.83203 0 16 -7.16797 16 -16s-7.16797 -16 -16 -16s-16 7.16797 -16 16s7.16797 16 16 16z" />
<glyph glyph-name="sink" unicode="&#xf96d;"
d="M32 32v32h448v-32c0 -52.9922 -43.0078 -96 -96 -96h-256c-52.9922 0 -96 43.0078 -96 96zM496 160c8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-480c-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h96v32h-64
c-8.83203 0 -16 7.16797 -16 16v16c0 8.83203 7.16797 16 16 16h80c17.6641 0 32 -14.3359 32 -32v-48h64v188.21c0 46.4297 31.29 89.0801 76.8701 97.9297c5.18359 1.04395 13.6826 1.88965 18.9697 1.88965c53.0088 0 96.0879 -43.0205 96.1602 -96.0293v-16
c0 -8.83203 -7.16797 -16 -16 -16h-32c-8.83203 0 -16 7.16797 -16 16v16c0 17.6641 -14.3359 32 -32 32s-32 -14.3359 -32 -32v-192h64v48c0 17.6641 14.3359 32 32 32h80c8.83203 0 16 -7.16797 16 -16v-16c0 -8.83203 -7.16797 -16 -16 -16h-64v-32h96z" />
<glyph glyph-name="soap" unicode="&#xf96e;"
d="M416 256c52.9922 0 96 -43.0078 96 -96v-128c0 -52.9922 -43.0078 -96 -96 -96h-320c-52.9922 0 -96 43.0078 -96 96v128c0 52.9922 43.0078 96 96 96h128c0.0517578 -20.3193 11.2119 -48.9912 24.9102 -64h-88.9102c-52.9922 0 -96 -43.0078 -96 -96
s43.0078 -96 96 -96h192h0.206055c52.8809 0 95.7998 42.918 95.7998 95.7998c0 36.9893 -28.2002 77.3047 -62.9463 89.9902c17.0488 15.6279 30.9092 47.082 30.9404 70.21zM320 192c-35.3281 0 -64 28.6719 -64 64s28.6719 64 64 64s64 -28.6719 64 -64
s-28.6719 -64 -64 -64zM208 352c-26.4961 0 -48 21.5039 -48 48s21.5039 48 48 48s48 -21.5039 48 -48s-21.5039 -48 -48 -48zM384 384c-17.6641 0 -32 14.3359 -32 32s14.3359 32 32 32s32 -14.3359 32 -32s-14.3359 -32 -32 -32zM160 160h192
c35.3281 0 64 -28.6719 64 -64s-28.6719 -64 -64 -64h-192c-35.3281 0 -64 28.6719 -64 64s28.6719 64 64 64z" />
<glyph glyph-name="stopwatch-20" unicode="&#xf96f;" horiz-adv-x="448"
d="M398.5 257.09c18.4922 -28.3281 33.501 -78.7754 33.501 -112.605c0 -0.133789 -0.000976562 -0.350586 -0.000976562 -0.484375c0 -116 -94.8701 -209.77 -211.28 -208c-113.96 1.78027 -208.08 100.5 -204.63 214.43c2.92773 95.2598 81.7354 184.443 175.91 199.07
v34.5h-32c-8.80469 0.0273438 -15.9727 7.19531 -16 16v32c0.0273438 8.80469 7.19531 15.9727 16 16h128c8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-32v-34.5c30.8857 -4.76953 75.5469 -24.7461 99.6904 -44.5898l24.6797 24.6797
c2.58691 2.58789 7.65625 4.6875 11.3145 4.6875c3.65918 0 8.72852 -2.09961 11.3154 -4.6875l22.6797 -22.6797c2.58789 -2.58691 4.6875 -7.65625 4.6875 -11.3154c0 -3.6582 -2.09961 -8.72754 -4.6875 -11.3145l-26.5898 -26.5801zM204.37 70.4502l-49.1299 0.0400391
c1.7998 15.6299 14.8496 36.2002 26.4102 51.2002c21.9092 30.0996 34.3496 45.7295 34.3496 81.3096c0 35.1504 -12.5703 61 -55.5703 61c-47.9492 0 -56.4297 -32.9404 -56.4297 -60.2402v-4.06934c0.0703125 -4.45605 3.74316 -8.07129 8.19922 -8.07129
c0.0361328 0 0.0947266 0 0.130859 0.000976562h24.9004c0.0361328 -0.000976562 0.0947266 -0.000976562 0.130859 -0.000976562c4.45508 0 8.12891 3.61523 8.19824 8.07129v5.22949c0 15.2803 3.30078 22.6797 12.6904 22.6797c10.4199 0 12.21 -7.34961 12.21 -24.2695
c0 -25.0205 -6.67969 -33.1504 -27.0996 -62.3398c-23.7803 -33.96 -35.6699 -56.1504 -38.4502 -91.3701c-0.0224609 -0.320312 -0.0410156 -0.84082 -0.0410156 -1.16113c0 -9.08594 7.37402 -16.46 16.46 -16.46c0.0527344 0 0.137695 0 0.19043 0.000976562h82.8506
c0.0332031 -0.000976562 0.0878906 -0.000976562 0.121094 -0.000976562c4.45508 0 8.12891 3.61621 8.19922 8.07129v22.3096c-0.0703125 4.45508 -3.74414 8.07129 -8.19922 8.07129c-0.0332031 0 -0.0878906 -0.000976562 -0.121094 -0.000976562zM344 95.6797v107.021
c0 38.6602 -19 61.2998 -55.7998 61.2998c-36.6201 0 -56.2002 -22.4902 -56.2002 -63.2197v-105.33c0 -33.9307 11.1904 -63.4502 54.7695 -63.4502c44.9307 0 57.2305 28.5195 57.2305 63.6797zM287.87 226.27c10.0098 0 13.0195 -8.05957 13 -19.3291v-115.94
c0 -13.2695 -3.36035 -21.2695 -13 -21.2695s-13.2305 7.47949 -13.2305 20.5898v115.949c0 12.5 3.82031 20 13.2305 20z" />
<glyph glyph-name="store-alt-slash" unicode="&#xf970;" horiz-adv-x="640"
d="M17.8896 324.38l88.4707 -68.3799h-74.2607c-25.5898 0 -40.79 28.5 -26.5898 49.7998zM576 34.5801l57.8301 -44.6797c3.41016 -2.65234 6.17773 -8.31055 6.17773 -12.6309c0 -3.0293 -1.50879 -7.42773 -3.36816 -9.81934l-19.6396 -25.2598
c-2.65234 -3.41895 -8.31543 -6.19434 -12.6426 -6.19434c-3.03223 0 -7.43457 1.51172 -9.82715 3.37402l-588.351 454.72c-3.41016 2.65234 -6.17773 8.31055 -6.17773 12.6309c0 3.02832 1.50879 7.42773 3.36816 9.81934l19.6299 25.2695
c2.65234 3.41309 8.31152 6.18262 12.6338 6.18262c3.03125 0 7.43359 -1.51074 9.82617 -3.37207l34.6904 -26.8203l10.6592 16c5.22266 7.83887 17.1045 14.2002 26.5234 14.2002h0.0869141h405.18h0.0117188c9.45117 0 21.4082 -6.36133 26.6885 -14.2002l85.29 -128
c14.1104 -21.2998 -1.08984 -49.7998 -26.5898 -49.7998h-318.48l41.4004 -32h53.0801v-41l128 -99v140h64v-189.42zM320 64v26.8799l64 -49.4697v-73.4102c0 -17.6641 -14.3359 -32 -32 -32h-256c-17.6641 0 -32 14.3359 -32 32v256h64v-160h192z" />
<glyph glyph-name="store-slash" unicode="&#xf971;" horiz-adv-x="640"
d="M121.51 64h226.91l157.33 -128h-414.52c-16.8105 0 -30.4004 14.2998 -30.4004 32v196.8c4.23047 -1.29297 11.2109 -2.90625 15.5801 -3.59961c4.69629 -0.660156 12.3574 -1.19727 17.0996 -1.2002c7.85352 0.12793 20.3975 1.83008 28 3.7998v-99.7998z
M93.5098 192.09h-0.21875c-3.54883 0 -9.28418 0.385742 -12.8008 0.860352c-58.9404 8.46973 -87.0098 81.6094 -56.4902 135l133.51 -108.62c-16.71 -16.5205 -38.8994 -27.2402 -64 -27.2402zM602.13 -10.0898c3.24316 -2.74219 5.875 -8.41406 5.875 -12.6611
c0 -2.99414 -1.43555 -7.38379 -3.20508 -9.79883l-18.6602 -25.2598c-2.42383 -3.41309 -7.78906 -6.18359 -11.9756 -6.18359c-2.91602 0 -7.10645 1.50684 -9.35449 3.36328l-558.939 454.72c-3.24316 2.74219 -5.875 8.41406 -5.875 12.6611
c0 2.99414 1.43555 7.38379 3.20508 9.79883l18.6602 25.2598c2.42188 3.41211 7.78516 6.18164 11.9697 6.18164c2.91797 0 7.11133 -1.51074 9.36035 -3.37109l33.6895 -27.4004l9.38965 15.7803c4.74609 8.18066 16.2734 14.9014 25.7305 15h383.81
c9.46289 -0.09375 20.9941 -6.81445 25.7402 -15l61.6602 -103.6c31.9404 -53.6006 3.59961 -127.99 -56.0596 -136.4c-3.57129 -0.5 -9.39453 -0.907227 -13 -0.910156c-28.0303 0 -52.9199 13 -70.1104 33.1104c-17.1104 -20.1104 -42 -33.1104 -70.1104 -33.1104
c-7.18164 0.106445 -18.5654 1.96094 -25.4102 4.14062l137.82 -112.11v79.6797c7.59863 -2.00586 20.1426 -3.70898 28 -3.7998c4.79492 0.00585938 12.541 0.542969 17.29 1.2002c4.38281 0.625 11.3584 2.2373 15.5703 3.59961v-130.21z" />
<glyph glyph-name="toilet-paper-slash" unicode="&#xf972;" horiz-adv-x="640"
d="M64 256c0 10.8096 0.530273 21.3398 1.41992 31.6699l316 -244.25c-4.17969 -32.2002 -12.8701 -57.7197 -22.1797 -85.5498c-3.98926 -12.0723 -17.5459 -21.8701 -30.2607 -21.8701h-0.119141h-280.86c-8.78906 0.0429688 -15.9209 7.21094 -15.9209 16
c0 1.41504 0.358398 3.65527 0.800781 5c21.3701 64.1201 31.1201 85.75 31.1201 126.87v172.13zM633.82 -10.0898c3.41602 -2.65234 6.18848 -8.31445 6.18848 -12.6387c0 -3.03027 -1.50879 -7.42969 -3.36914 -9.82129l-19.6396 -25.2598
c-2.65234 -3.41699 -8.31445 -6.18945 -12.6387 -6.18945c-3.03027 0 -7.42969 1.50977 -9.82129 3.36914l-588.36 454.72c-3.41211 2.65234 -6.18262 8.3125 -6.18262 12.6338c0 3.03223 1.51172 7.43359 3.37305 9.82617l19.6299 25.2598
c2.65234 3.41309 8.31152 6.18262 12.6338 6.18262c3.03125 0 7.43359 -1.51074 9.82617 -3.37207l53.2803 -41.1504c16.6299 27.7002 37.9297 44.5303 61.2598 44.5303h284.5c-36.8701 -38.5 -60.5 -108.38 -60.5 -192v-73l50.4297 -39
c-11.4297 31.5996 -18.4297 70 -18.4297 112c0 106 43 192 96 192s96 -86 96 -192c0 -92.3203 -32.7197 -168.91 -76.1797 -187.28zM512 192c17.6201 0 32 28.6299 32 64s-14.3701 64 -32 64s-32 -28.6201 -32 -64s14.3701 -64 32 -64z" />
<glyph glyph-name="users-slash" unicode="&#xf973;" horiz-adv-x="640"
d="M132.65 235.68c-9.13672 -6.44727 -25.6279 -11.6807 -36.8105 -11.6807c-35.2393 0 -63.8398 28.6006 -63.8398 63.8398v0.161133c0.0507812 6.34375 1.93652 16.2979 4.20996 22.2197zM173.09 173.4c-36.0781 -19.6611 -69.7588 -68.6719 -75.1797 -109.4h-65.9102
c-17.6641 0 -32 14.3359 -32 32v32c0.0332031 35.2949 28.7051 63.9668 64 64h64h0.0673828c14.5469 0 34.7168 -8.33301 45.0225 -18.5996zM544 224c-35.2949 0.0332031 -63.9668 28.7051 -64 64c0 35.3281 28.6719 64 64 64s64 -28.6719 64 -64s-28.6719 -64 -64 -64z
M500.56 92.8896l133.271 -102.989c3.41016 -2.65234 6.17773 -8.31055 6.17773 -12.6309c0 -3.0293 -1.50879 -7.42773 -3.36816 -9.81934l-19.6396 -25.2705c-2.65234 -3.41504 -8.31348 -6.1875 -12.6377 -6.1875c-3.03418 0 -7.43848 1.51367 -9.83203 3.37793
l-588.351 454.72c-3.41016 2.65234 -6.17773 8.31055 -6.17773 12.6309c0 3.02832 1.50879 7.42773 3.36816 9.81934l19.6299 25.2695c2.65234 3.41309 8.31152 6.18262 12.6338 6.18262c3.03125 0 7.43359 -1.51074 9.82617 -3.37207l163.94 -126.7
c6.90918 55.25 53.46 98.0801 110.6 98.0801h0.0703125c61.7852 0 111.93 -50.1445 111.93 -111.93v-0.0703125c0 -47.3096 -29.54 -86.9297 -71 -103.23l55.0898 -42.5996c32.8359 -5.69629 70.6777 -34.9424 84.4697 -65.2803zM128 44.79
c0 59.79 45.7402 108.38 104 114.08l244.57 -189c-3.39941 -0.985352 -9.03125 -1.82324 -12.5703 -1.87012h-288c-26.4961 0 -48 21.5039 -48 48v28.79zM576 192c35.2949 -0.0332031 63.9668 -28.7051 64 -64v-32c0 -17.6641 -14.3359 -32 -32 -32h-66
c-5.36035 40.7402 -39 89.752 -75.0898 109.4c10.3057 10.2666 30.4756 18.5996 45.0225 18.5996h0.0673828h64z" />
<glyph glyph-name="virus" unicode="&#xf974;"
d="M483.55 220.45c0.147461 0.00292969 0.356445 0.00488281 0.503906 0.00488281c15.7041 0 28.4492 -12.7461 28.4492 -28.4502s-12.7451 -28.4502 -28.4492 -28.4502c-0.147461 0 -0.386719 0.00292969 -0.53418 0.00488281h-21.5391
c-50.6807 0 -76.0703 -61.2793 -40.2305 -97.1191l15.25 -15.2402c4.15039 -4.50879 7.51855 -13.1406 7.51855 -19.2686c0 -15.7051 -12.7451 -28.4502 -28.4502 -28.4502c-6.12793 0 -14.7598 3.36816 -19.2686 7.51855l-15.2402 15.2305
c-35.8398 35.8398 -97.1094 10.4492 -97.1094 -40.2305v-21.5195c0 -15.7051 -12.7461 -28.4502 -28.4502 -28.4502s-28.4502 12.7451 -28.4502 28.4502v21.5391c0 50.6807 -61.2695 76.0703 -97.1094 40.2305l-15.2402 -15.25
c-4.50879 -4.15039 -13.1406 -7.51855 -19.2686 -7.51855c-15.7051 0 -28.4502 12.7451 -28.4502 28.4502c0 6.12793 3.36816 14.7598 7.51855 19.2686l15.2305 15.2402c35.8398 35.8398 10.4492 97.1191 -40.2305 97.1191h-21.5498
c-0.147461 -0.00195312 -0.386719 -0.00488281 -0.533203 -0.00488281c-15.7051 0 -28.4502 12.7461 -28.4502 28.4502s12.7451 28.4502 28.4502 28.4502c0.146484 0 0.385742 -0.00195312 0.533203 -0.00488281h21.5693c50.6807 0 76.0703 61.2695 40.2305 97.1094
l-15.25 15.25c-4.21094 4.52148 -7.62793 13.2051 -7.62793 19.3828c0 15.6992 12.7412 28.4404 28.4404 28.4404c6.17969 0 14.8662 -3.41992 19.3877 -7.63281l15.2402 -15.2305c35.8398 -35.8291 97.1094 -10.4492 97.1094 40.2305v21.5596
c0 15.7051 12.7461 28.4502 28.4502 28.4502s28.4502 -12.7451 28.4502 -28.4502v-21.5498c0 -50.6797 61.2695 -76.0596 97.1094 -40.2295l15.2402 15.2197c4.52148 4.21289 13.208 7.63281 19.3877 7.63281c15.6992 0 28.4404 -12.7412 28.4404 -28.4404
c0 -6.17773 -3.41699 -14.8613 -7.62793 -19.3828l-15.2305 -15.25c-35.8398 -35.8398 -10.4492 -97.1094 40.2305 -97.1094h21.5498zM224 176c26.4961 0 48 21.5039 48 48s-21.5039 48 -48 48s-48 -21.5039 -48 -48s21.5039 -48 48 -48zM304 120c13.248 0 24 10.752 24 24
s-10.752 24 -24 24s-24 -10.752 -24 -24s10.752 -24 24 -24z" />
<glyph glyph-name="virus-slash" unicode="&#xf975;" horiz-adv-x="640"
d="M114 220.44c8.37207 0.0664062 20.9922 3.61914 28.1699 7.92969l244.5 -189c-21.2197 -7.45996 -38.2197 -26.7598 -38.2197 -53.3701v-21.5195c0 -15.7051 -12.7461 -28.4502 -28.4502 -28.4502s-28.4502 12.7451 -28.4502 28.4502v21.5391
c0 50.6807 -61.2695 76.0703 -97.1094 40.2305l-15.25 -15.25c-4.66113 -5.03711 -14.0127 -9.125 -20.875 -9.125c-15.6992 0 -28.4404 12.7412 -28.4404 28.4404c0 6.8623 4.08789 16.2139 9.125 20.875l15.2305 15.25c35.8291 35.8398 10.4492 97.1191 -40.2305 97.1191
h-21.5596c-15.6992 0 -28.4404 12.7412 -28.4404 28.4404s12.7412 28.4404 28.4404 28.4404h21.5596zM633.82 -10.0898c3.41602 -2.65234 6.18848 -8.31445 6.18848 -12.6387c0 -3.03027 -1.50879 -7.42969 -3.36914 -9.82129l-19.6396 -25.2598
c-2.65234 -3.41699 -8.31445 -6.18945 -12.6387 -6.18945c-3.03027 0 -7.42969 1.50977 -9.82129 3.36914l-588.36 454.72c-3.41211 2.65234 -6.18262 8.3125 -6.18262 12.6338c0 3.03223 1.51172 7.43359 3.37305 9.82617l19.6299 25.2598
c2.65234 3.41309 8.31152 6.18262 12.6338 6.18262c3.03125 0 7.43359 -1.51074 9.82617 -3.37207l93.2598 -72.0801c0.129883 0.139648 0.150391 0.320312 0.280273 0.459961c4.5957 4.5918 13.5986 8.31934 20.0947 8.31934c6.49707 0 15.5 -3.72754 20.0957 -8.31934
l15.25 -15.2305c35.8398 -35.8398 97.1094 -10.46 97.1094 40.2305v21.5498c0 15.7051 12.7461 28.4502 28.4502 28.4502s28.4502 -12.7451 28.4502 -28.4502v-21.54c0 -50.6895 61.2695 -76.0693 97.1094 -40.2295l15.25 15.2197
c4.51367 4.17578 13.167 7.56543 19.3154 7.56543c15.6992 0 28.4404 -12.7412 28.4404 -28.4404c0 -6.14844 -3.38965 -14.8018 -7.56543 -19.3154l-15.2305 -15.29c-35.8291 -35.8398 -10.4492 -97.1191 40.2305 -97.1191h21.5596
c15.6992 0 28.4404 -12.7412 28.4404 -28.4404s-12.7412 -28.4404 -28.4404 -28.4404v0h-21.5498c-30.4795 0 -51.2197 -22.1299 -55.3896 -47.5195zM335.43 220.52c0.0898438 1.19043 0.570312 2.26074 0.570312 3.48047c0 26.4961 -21.5039 48 -48 48
c-4.39844 -0.0683594 -11.3154 -1.36328 -15.4404 -2.88965z" />
<glyph glyph-name="viruses" unicode="&#xf976;" horiz-adv-x="640"
d="M624 96c8.83203 0 16 -7.16797 16 -16s-7.16797 -16 -16 -16h-12.1201c-28.5098 0 -42.79 -34.4697 -22.6299 -54.6299l8.58008 -8.57031c2.58691 -2.58691 4.68652 -7.65625 4.68652 -11.3145c0 -8.83301 -7.16895 -16.002 -16.002 -16.002
c-3.6582 0 -8.72754 2.09961 -11.3145 4.68652l-8.57031 8.58008c-20.1602 20.1602 -54.6299 5.87988 -54.6299 -22.6299v-12.1201c0 -8.83203 -7.16797 -16 -16 -16s-16 7.16797 -16 16v12.1201c0 28.5098 -34.4697 42.79 -54.6299 22.6299l-8.57031 -8.58008
c-2.58691 -2.58691 -7.65625 -4.68652 -11.3145 -4.68652c-8.83301 0 -16.002 7.16895 -16.002 16.002c0 3.6582 2.09961 8.72754 4.68652 11.3145l8.58008 8.57031c20.1602 20.1602 5.87988 54.6299 -22.6299 54.6299h-12.1201c-8.83203 0 -16 7.16797 -16 16
s7.16797 16 16 16h12.1201c28.5098 0 42.79 34.4697 22.6299 54.6299l-8.58008 8.57031c-2.58691 2.58691 -4.68652 7.65625 -4.68652 11.3145c0 8.83301 7.16895 16.002 16.002 16.002c3.6582 0 8.72754 -2.09961 11.3145 -4.68652l8.57031 -8.58008
c20.1602 -20.1602 54.6299 -5.87988 54.6299 22.6299v12.1201c0 8.83203 7.16797 16 16 16s16 -7.16797 16 -16v-12.1201c0 -28.5098 34.4697 -42.79 54.6299 -22.6299l8.57031 8.58008c2.58691 2.58691 7.65625 4.68652 11.3145 4.68652
c8.83301 0 16.002 -7.16895 16.002 -16.002c0 -3.6582 -2.09961 -8.72754 -4.68652 -11.3145l-8.58008 -8.57031c-20.1602 -20.1602 -5.87988 -54.6299 22.6299 -54.6299h12.1201zM480 64c17.6641 0 32 14.3359 32 32s-14.3359 32 -32 32s-32 -14.3359 -32 -32
s14.3359 -32 32 -32zM346.51 234.67c-38.0195 0 -57.0498 -45.96 -30.1699 -72.8398l11.4297 -11.4297c3.44922 -3.44922 6.24902 -10.208 6.24902 -15.085c0 -11.7764 -9.55762 -21.334 -21.334 -21.334c-4.87695 0 -11.6357 2.7998 -15.085 6.24902l-11.4297 11.4297
c-26.8398 26.8799 -72.8398 7.83008 -72.8398 -30.1699v-16.1602c0 -11.7744 -9.55566 -21.3301 -21.3301 -21.3301s-21.3301 9.55566 -21.3301 21.3301v16.1602c0 38.0195 -45.96 57.0498 -72.8398 30.1699l-11.4297 -11.4297
c-3.44922 -3.44922 -10.208 -6.24902 -15.085 -6.24902c-11.7764 0 -21.334 9.55762 -21.334 21.334c0 4.87695 2.7998 11.6357 6.24902 15.085l11.4297 11.4297c26.8799 26.8398 7.83008 72.8398 -30.1699 72.8398h-16.1602c-11.7744 0 -21.3301 9.55566 -21.3301 21.3301
s9.55566 21.3301 21.3301 21.3301h16.1602c38.0195 0 57.0498 45.96 30.1699 72.8398l-11.4297 11.4404c-3.41895 3.44336 -6.19434 10.1758 -6.19434 15.0283c0 11.7744 9.55566 21.3301 21.3301 21.3301c4.85449 0 11.5898 -2.77734 15.0342 -6.19922l11.4297 -11.4297
c26.8398 -26.8799 72.8398 -7.83008 72.8398 30.1699v16.1602c0 11.7744 9.55566 21.3301 21.3301 21.3301s21.3301 -9.55566 21.3301 -21.3301v-16.1602c0 -38.0195 45.96 -57.0498 72.8398 -30.1699l11.4297 11.4297c3.44434 3.42188 10.1797 6.19922 15.0342 6.19922
c11.7744 0 21.3301 -9.55566 21.3301 -21.3301c0 -4.85254 -2.77539 -11.585 -6.19434 -15.0283l-11.4297 -11.4404c-26.8799 -26.8398 -7.83008 -72.8398 30.1699 -72.8398h16.1602c11.7744 0 21.3301 -9.55566 21.3301 -21.3301s-9.55566 -21.3301 -21.3301 -21.3301
h-16.1602zM160 256c17.6641 0 32 14.3359 32 32s-14.3359 32 -32 32s-32 -14.3359 -32 -32s14.3359 -32 32 -32zM240 224c8.83203 0 16 7.16797 16 16s-7.16797 16 -16 16s-16 -7.16797 -16 -16s7.16797 -16 16 -16z" />
</font>
</defs></svg>

Before

Width:  |  Height:  |  Size: 823 KiB

After

Width:  |  Height:  |  Size: 889 KiB

BIN
framework/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/wwwroot/libs/@fortawesome/fontawesome-free/webfonts/fa-solid-900.ttf

Binary file not shown.

BIN
framework/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/wwwroot/libs/@fortawesome/fontawesome-free/webfonts/fa-solid-900.woff

Binary file not shown.

BIN
framework/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/wwwroot/libs/@fortawesome/fontawesome-free/webfonts/fa-solid-900.woff2

Binary file not shown.

126
framework/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/wwwroot/libs/abp/core/abp.js

@ -76,10 +76,17 @@ var abp = abp || {};
abp.localization.values = {};
abp.localization.localize = function (key, sourceName) {
if (sourceName === '_') { //A convention to suppress the localization
return key;
}
sourceName = sourceName || abp.localization.defaultResourceName;
if (!sourceName) {
abp.log.warn('Localization source name is not specified and the defaultResourceName was not defined!');
return key;
}
var source = abp.localization.values[sourceName];
if (!source) {
abp.log.warn('Could not find localization source: ' + sourceName);
return key;
@ -97,6 +104,29 @@ var abp = abp || {};
return abp.utils.formatString.apply(this, copiedArguments);
};
abp.localization.isLocalized = function (key, sourceName) {
if (sourceName === '_') { //A convention to suppress the localization
return true;
}
sourceName = sourceName || abp.localization.defaultResourceName;
if (!sourceName) {
return false;
}
var source = abp.localization.values[sourceName];
if (!source) {
return false;
}
var value = source[key];
if (value === undefined) {
return false;
}
return true;
};
abp.localization.getResource = function (name) {
return function () {
var copiedArguments = Array.prototype.slice.call(arguments, 0);
@ -106,6 +136,38 @@ var abp = abp || {};
};
abp.localization.defaultResourceName = undefined;
abp.localization.currentCulture = {
cultureName: undefined
};
var getMapValue = function (packageMaps, packageName, language) {
language = language || abp.localization.currentCulture.name;
if (!packageMaps || !packageName || !language) {
return language;
}
var packageMap = packageMaps[packageName];
if (!packageMap) {
return language;
}
for (var i = 0; i < packageMap.length; i++) {
var map = packageMap[i];
if (map.name === language){
return map.value;
}
}
return language;
};
abp.localization.getLanguagesMap = function (packageName, language) {
return getMapValue(abp.localization.languagesMap, packageName, language);
};
abp.localization.getLanguageFilesMap = function (packageName, language) {
return getMapValue(abp.localization.languageFilesMap, packageName, language);
};
/* AUTHORIZATION **********************************************/
@ -300,7 +362,7 @@ var abp = abp || {};
};
/* opts: {
*
*
* }
*/
abp.ui.unblock = function (opts) {
@ -554,7 +616,7 @@ var abp = abp || {};
* This is a simple implementation created to be used by ABP.
* Please use a complete cookie library if you need.
* @param {string} key
* @param {string} value
* @param {string} value
* @param {Date} expireDate (optional). If not specified the cookie will expire at the end of session.
* @param {string} path (optional)
*/
@ -633,4 +695,60 @@ var abp = abp || {};
return abp.utils.getCookieValue(abp.security.antiForgery.tokenCookieName);
};
})();
/* CLOCK *****************************************/
abp.clock = abp.clock || {};
abp.clock.kind = 'Unspecified';
abp.clock.supportsMultipleTimezone = function () {
return abp.clock.kind === 'Utc';
};
var toLocal = function (date) {
return new Date(
date.getUTCFullYear(),
date.getUTCMonth(),
date.getUTCDate(),
date.getUTCHours(),
date.getUTCMinutes(),
date.getUTCSeconds(),
date.getUTCMilliseconds()
);
};
var toUtc = function (date) {
Date.UTC(
date.getUTCFullYear(),
date.getUTCMonth(),
date.getUTCDate(),
date.getUTCHours(),
date.getUTCMinutes(),
date.getUTCSeconds(),
date.getUTCMilliseconds()
);
};
abp.clock.now = function () {
if (abp.clock.kind === 'Utc') {
return toUtc(new Date());
}
return new Date();
};
abp.clock.normalize = function (date) {
var kind = abp.clock.kind;
if (kind === 'Unspecified') {
return date;
}
if (kind === 'Local') {
return toLocal(date);
}
if (kind === 'Utc') {
return toUtc(date);
}
};
})();

18
framework/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/wwwroot/libs/abp/jquery/abp.jquery.js

@ -359,13 +359,17 @@ var abp = abp || {};
var _loadScript = function (url, loadCallback, failCallback) {
_loadFromUrl(url, loadCallback, failCallback, function (urlInfo) {
$.getScript(url)
.done(function () {
urlInfo.succeed();
})
.fail(function () {
urlInfo.failed();
});
$.get({
url: url,
dataType: 'text'
})
.done(function (script) {
$.globalEval(script);
urlInfo.succeed();
})
.fail(function () {
urlInfo.failed();
});
});
};

1254
framework/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/wwwroot/libs/abp/utils/abp-utils.umd.js

File diff suppressed because it is too large

2
framework/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/wwwroot/libs/abp/utils/abp-utils.umd.js.map

File diff suppressed because one or more lines are too long

2
framework/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/wwwroot/libs/abp/utils/abp-utils.umd.min.js

File diff suppressed because one or more lines are too long

2
framework/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/wwwroot/libs/abp/utils/abp-utils.umd.min.js.map

File diff suppressed because one or more lines are too long

2591
framework/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/wwwroot/libs/bootstrap/css/bootstrap-rtl.css

File diff suppressed because it is too large

2
framework/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/wwwroot/libs/bootstrap/css/bootstrap-rtl.css.map

File diff suppressed because one or more lines are too long

8
framework/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/wwwroot/libs/bootstrap/css/bootstrap-rtl.min.css

File diff suppressed because one or more lines are too long

2
framework/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/wwwroot/libs/bootstrap/css/bootstrap-rtl.min.css.map

File diff suppressed because one or more lines are too long

746
framework/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/wwwroot/libs/bootstrap/css/bootstrap.css

File diff suppressed because it is too large

2
framework/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/wwwroot/libs/bootstrap/css/bootstrap.css.map

File diff suppressed because one or more lines are too long

8
framework/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/wwwroot/libs/bootstrap/css/bootstrap.min.css

File diff suppressed because one or more lines are too long

2
framework/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/wwwroot/libs/bootstrap/css/bootstrap.min.css.map

File diff suppressed because one or more lines are too long

1708
framework/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/wwwroot/libs/bootstrap/js/bootstrap.bundle.js

File diff suppressed because it is too large

2
framework/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/wwwroot/libs/bootstrap/js/bootstrap.bundle.js.map

File diff suppressed because one or more lines are too long

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

Loading…
Cancel
Save