Browse Source

update README.md

pull/296/head
cKey 4 years ago
parent
commit
743b5b29c8
  1. 989
      aspnet-core/LINGYUN.MicroService.Common.sln
  2. 323
      aspnet-core/modules/common/LINGYUN.Abp.Features.LimitValidation.Redis/LINGYUN/Abp/Features/LimitValidation/Redis/RedisRequiresLimitFeatureChecker.cs
  3. 130
      aspnet-core/modules/common/LINGYUN.Abp.Features.LimitValidation/README.en.md
  4. 130
      aspnet-core/modules/common/LINGYUN.Abp.Features.LimitValidation/README.md
  5. 128
      aspnet-core/modules/localization/LINGYUN.Abp.Localization.Xml/README.md

989
aspnet-core/LINGYUN.MicroService.Common.sln

@ -1,491 +1,498 @@
 
Microsoft Visual Studio Solution File, Format Version 12.00 Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 16 # Visual Studio Version 16
VisualStudioVersion = 16.0.30011.22 VisualStudioVersion = 16.0.30011.22
MinimumVisualStudioVersion = 10.0.40219.1 MinimumVisualStudioVersion = 10.0.40219.1
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "modules", "modules", "{02EA4E78-5891-43BC-944F-3E52FEE032E4}" Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "modules", "modules", "{02EA4E78-5891-43BC-944F-3E52FEE032E4}"
EndProject EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "common", "common", "{086BE5BE-8594-4DA7-8819-935FEF76DABD}" Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "common", "common", "{086BE5BE-8594-4DA7-8819-935FEF76DABD}"
EndProject EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.IM", "modules\common\LINGYUN.Abp.IM\LINGYUN.Abp.IM.csproj", "{5A87E9DD-3340-44DC-9564-4D8832A0228E}" Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.IM", "modules\common\LINGYUN.Abp.IM\LINGYUN.Abp.IM.csproj", "{5A87E9DD-3340-44DC-9564-4D8832A0228E}"
EndProject EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.RealTime", "modules\common\LINGYUN.Abp.RealTime\LINGYUN.Abp.RealTime.csproj", "{E9BE3C65-2AB2-4CE8-8EB9-5C91B329ADB4}" Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.RealTime", "modules\common\LINGYUN.Abp.RealTime\LINGYUN.Abp.RealTime.csproj", "{E9BE3C65-2AB2-4CE8-8EB9-5C91B329ADB4}"
EndProject EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.RealTime.SignalR", "modules\common\LINGYUN.Abp.RealTime.SignalR\LINGYUN.Abp.RealTime.SignalR.csproj", "{824CB367-383B-48B2-972D-33923438A9A0}" Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.RealTime.SignalR", "modules\common\LINGYUN.Abp.RealTime.SignalR\LINGYUN.Abp.RealTime.SignalR.csproj", "{824CB367-383B-48B2-972D-33923438A9A0}"
EndProject EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.AspNetCore.SignalR.Protocol.Json", "modules\common\LINGYUN.Abp.AspNetCore.SignalR.Protocol.Json\LINGYUN.Abp.AspNetCore.SignalR.Protocol.Json.csproj", "{E9AEC9D6-1FE7-4B00-BAC5-2C3D4B63CCA2}" Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.AspNetCore.SignalR.Protocol.Json", "modules\common\LINGYUN.Abp.AspNetCore.SignalR.Protocol.Json\LINGYUN.Abp.AspNetCore.SignalR.Protocol.Json.csproj", "{E9AEC9D6-1FE7-4B00-BAC5-2C3D4B63CCA2}"
EndProject EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.AspNetCore.SignalR.JwtToken", "modules\common\LINGYUN.Abp.AspNetCore.SignalR\LINGYUN.Abp.AspNetCore.SignalR.JwtToken.csproj", "{304D06E6-41EC-4DCB-AEAE-DBEEC75F9ADC}" Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.AspNetCore.SignalR.JwtToken", "modules\common\LINGYUN.Abp.AspNetCore.SignalR\LINGYUN.Abp.AspNetCore.SignalR.JwtToken.csproj", "{304D06E6-41EC-4DCB-AEAE-DBEEC75F9ADC}"
EndProject EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.BackgroundJobs.Hangfire", "modules\common\LINGYUN.Abp.BackgroundJobs.Hangfire\LINGYUN.Abp.BackgroundJobs.Hangfire.csproj", "{492710E6-EEF5-4390-A474-8FB2412ECBE5}" Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.BackgroundJobs.Hangfire", "modules\common\LINGYUN.Abp.BackgroundJobs.Hangfire\LINGYUN.Abp.BackgroundJobs.Hangfire.csproj", "{492710E6-EEF5-4390-A474-8FB2412ECBE5}"
EndProject EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.BlobStoring.Aliyun", "modules\common\LINGYUN.Abp.BlobStoring.Aliyun\LINGYUN.Abp.BlobStoring.Aliyun.csproj", "{CCF1EB86-29BD-4531-BB27-C9111CC67570}" Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.BlobStoring.Aliyun", "modules\common\LINGYUN.Abp.BlobStoring.Aliyun\LINGYUN.Abp.BlobStoring.Aliyun.csproj", "{CCF1EB86-29BD-4531-BB27-C9111CC67570}"
EndProject EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.DistributedLock", "modules\common\LINGYUN.Abp.DistributedLock\LINGYUN.Abp.DistributedLock.csproj", "{4BD715F2-D117-45FB-B26C-F92D912144C7}" Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.DistributedLock", "modules\common\LINGYUN.Abp.DistributedLock\LINGYUN.Abp.DistributedLock.csproj", "{4BD715F2-D117-45FB-B26C-F92D912144C7}"
EndProject EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.DistributedLock.Redis", "modules\common\LINGYUN.Abp.DistributedLock.Redis\LINGYUN.Abp.DistributedLock.Redis.csproj", "{71C57C19-671D-4CD4-AA46-E8021E53BBE5}" Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.DistributedLock.Redis", "modules\common\LINGYUN.Abp.DistributedLock.Redis\LINGYUN.Abp.DistributedLock.Redis.csproj", "{71C57C19-671D-4CD4-AA46-E8021E53BBE5}"
EndProject EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.EventBus.CAP", "modules\common\LINGYUN.Abp.EventBus.CAP\LINGYUN.Abp.EventBus.CAP.csproj", "{7947D559-4288-486B-8FB3-D957CC7EDD32}" Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.EventBus.CAP", "modules\common\LINGYUN.Abp.EventBus.CAP\LINGYUN.Abp.EventBus.CAP.csproj", "{7947D559-4288-486B-8FB3-D957CC7EDD32}"
EndProject EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.ExceptionHandling", "modules\common\LINGYUN.Abp.ExceptionHandling\LINGYUN.Abp.ExceptionHandling.csproj", "{A4195E41-3919-4C3E-8768-7F277B583D16}" Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.ExceptionHandling", "modules\common\LINGYUN.Abp.ExceptionHandling\LINGYUN.Abp.ExceptionHandling.csproj", "{A4195E41-3919-4C3E-8768-7F277B583D16}"
EndProject EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.ExceptionHandling.Emailing", "modules\common\LINGYUN.Abp.ExceptionHandling.Emailing\LINGYUN.Abp.ExceptionHandling.Emailing.csproj", "{60083380-062C-4914-9E4E-5AE6637CCC3F}" Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.ExceptionHandling.Emailing", "modules\common\LINGYUN.Abp.ExceptionHandling.Emailing\LINGYUN.Abp.ExceptionHandling.Emailing.csproj", "{60083380-062C-4914-9E4E-5AE6637CCC3F}"
EndProject EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.ExceptionHandling.Notifications", "modules\common\LINGYUN.Abp.ExceptionHandling.Notifications\LINGYUN.Abp.ExceptionHandling.Notifications.csproj", "{9C6E9EE2-5C83-4D96-A7B7-32798FEF2845}" Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.ExceptionHandling.Notifications", "modules\common\LINGYUN.Abp.ExceptionHandling.Notifications\LINGYUN.Abp.ExceptionHandling.Notifications.csproj", "{9C6E9EE2-5C83-4D96-A7B7-32798FEF2845}"
EndProject EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Features.LimitValidation", "modules\common\LINGYUN.Abp.Features.LimitValidation\LINGYUN.Abp.Features.LimitValidation.csproj", "{34C1E979-65B9-46F5-B7BA-60F227EBA093}" Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Features.LimitValidation", "modules\common\LINGYUN.Abp.Features.LimitValidation\LINGYUN.Abp.Features.LimitValidation.csproj", "{34C1E979-65B9-46F5-B7BA-60F227EBA093}"
EndProject EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Features.LimitValidation.Redis", "modules\common\LINGYUN.Abp.Features.LimitValidation.Redis\LINGYUN.Abp.Features.LimitValidation.Redis.csproj", "{80A56461-0ACC-4069-B571-87DCA064B2EF}" Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Features.LimitValidation.Redis", "modules\common\LINGYUN.Abp.Features.LimitValidation.Redis\LINGYUN.Abp.Features.LimitValidation.Redis.csproj", "{80A56461-0ACC-4069-B571-87DCA064B2EF}"
EndProject EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Hangfire.Storage.MySql", "modules\common\LINGYUN.Abp.Hangfire.MySqlStorage\LINGYUN.Abp.Hangfire.Storage.MySql.csproj", "{568D2C50-1C31-4C31-89A2-C608FA93C6FD}" Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Hangfire.Storage.MySql", "modules\common\LINGYUN.Abp.Hangfire.MySqlStorage\LINGYUN.Abp.Hangfire.Storage.MySql.csproj", "{568D2C50-1C31-4C31-89A2-C608FA93C6FD}"
EndProject EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Hangfire.Storage.SqlServer", "modules\common\LINGYUN.Abp.Hangfire.Storage.SqlServer\LINGYUN.Abp.Hangfire.Storage.SqlServer.csproj", "{12451B83-18DE-4E93-B98C-509477D53D5E}" Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Hangfire.Storage.SqlServer", "modules\common\LINGYUN.Abp.Hangfire.Storage.SqlServer\LINGYUN.Abp.Hangfire.Storage.SqlServer.csproj", "{12451B83-18DE-4E93-B98C-509477D53D5E}"
EndProject EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Location", "modules\common\LINGYUN.Abp.Location\LINGYUN.Abp.Location.csproj", "{AAD0B6A7-847A-4537-A300-50E37F4B70CC}" Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Location", "modules\common\LINGYUN.Abp.Location\LINGYUN.Abp.Location.csproj", "{AAD0B6A7-847A-4537-A300-50E37F4B70CC}"
EndProject EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Location.Baidu", "modules\common\LINGYUN.Abp.Location.Baidu\LINGYUN.Abp.Location.Baidu.csproj", "{5B5C2372-2EAB-4559-BBCB-0C1C9A7158DB}" Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Location.Baidu", "modules\common\LINGYUN.Abp.Location.Baidu\LINGYUN.Abp.Location.Baidu.csproj", "{5B5C2372-2EAB-4559-BBCB-0C1C9A7158DB}"
EndProject EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Location.Tencent", "modules\common\LINGYUN.Abp.Location.Tencent\LINGYUN.Abp.Location.Tencent.csproj", "{2A0C5EF1-CB21-4656-8C32-B5673F6B82D2}" Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Location.Tencent", "modules\common\LINGYUN.Abp.Location.Tencent\LINGYUN.Abp.Location.Tencent.csproj", "{2A0C5EF1-CB21-4656-8C32-B5673F6B82D2}"
EndProject EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Notifications", "modules\common\LINGYUN.Abp.Notifications\LINGYUN.Abp.Notifications.csproj", "{3021DD8B-EA8F-4A88-BC2C-1BBEDC6255FE}" Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Notifications", "modules\common\LINGYUN.Abp.Notifications\LINGYUN.Abp.Notifications.csproj", "{3021DD8B-EA8F-4A88-BC2C-1BBEDC6255FE}"
EndProject EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Notifications.SignalR", "modules\common\LINGYUN.Abp.Notifications.SignalR\LINGYUN.Abp.Notifications.SignalR.csproj", "{B31CEE79-45F6-4BB9-9EEB-08843C324B37}" Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Notifications.SignalR", "modules\common\LINGYUN.Abp.Notifications.SignalR\LINGYUN.Abp.Notifications.SignalR.csproj", "{B31CEE79-45F6-4BB9-9EEB-08843C324B37}"
EndProject EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "wechat", "wechat", "{22C61434-D29A-4376-AD56-F5089F3E617A}" Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "wechat", "wechat", "{22C61434-D29A-4376-AD56-F5089F3E617A}"
EndProject EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.WeChat", "modules\wechat\LINGYUN.Abp.WeChat\LINGYUN.Abp.WeChat.csproj", "{865D5508-63CD-4D44-9F5B-AE5CD4A43D08}" Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.WeChat", "modules\wechat\LINGYUN.Abp.WeChat\LINGYUN.Abp.WeChat.csproj", "{865D5508-63CD-4D44-9F5B-AE5CD4A43D08}"
EndProject EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Settings", "modules\common\LINGYUN.Abp.Settings\LINGYUN.Abp.Settings.csproj", "{ECAA4B82-A240-4747-888C-FACD8634D389}" Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Settings", "modules\common\LINGYUN.Abp.Settings\LINGYUN.Abp.Settings.csproj", "{ECAA4B82-A240-4747-888C-FACD8634D389}"
EndProject EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Sms.Aliyun", "modules\common\LINGYUN.Abp.Sms.Aliyun\LINGYUN.Abp.Sms.Aliyun.csproj", "{8AF8FD6B-634F-41FA-B421-A4ACFD159FE0}" Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Sms.Aliyun", "modules\common\LINGYUN.Abp.Sms.Aliyun\LINGYUN.Abp.Sms.Aliyun.csproj", "{8AF8FD6B-634F-41FA-B421-A4ACFD159FE0}"
EndProject EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "aliyun", "aliyun", "{7F18BCA5-35BD-41FB-8EFF-801B56E5E414}" Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "aliyun", "aliyun", "{7F18BCA5-35BD-41FB-8EFF-801B56E5E414}"
EndProject EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "signalr", "signalr", "{E2E7A062-0ABB-41B4-8220-60228446D2C2}" Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "signalr", "signalr", "{E2E7A062-0ABB-41B4-8220-60228446D2C2}"
EndProject EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "location", "location", "{EFFAF456-50C1-42C9-836E-E95E7A38D52C}" Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "location", "location", "{EFFAF456-50C1-42C9-836E-E95E7A38D52C}"
EndProject EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "realtime", "realtime", "{B91F26C5-B148-4094-B5F1-71E5F945DBED}" Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "realtime", "realtime", "{B91F26C5-B148-4094-B5F1-71E5F945DBED}"
EndProject EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "features", "features", "{0D2D7A10-CBA5-4798-BFC7-EB05D1E6B94C}" Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "features", "features", "{0D2D7A10-CBA5-4798-BFC7-EB05D1E6B94C}"
EndProject EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Features.Client", "modules\features\LINGYUN.Abp.Features.Client\LINGYUN.Abp.Features.Client.csproj", "{3B455AA7-B165-4EA0-8870-DB8DA5C76FC5}" Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Features.Client", "modules\features\LINGYUN.Abp.Features.Client\LINGYUN.Abp.Features.Client.csproj", "{3B455AA7-B165-4EA0-8870-DB8DA5C76FC5}"
EndProject EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.FeatureManagement.Client", "modules\features\LINGYUN.Abp.FeatureManagement.Client\LINGYUN.Abp.FeatureManagement.Client.csproj", "{99F8F254-A76E-43BB-8048-CC17EE1C8527}" Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.FeatureManagement.Client", "modules\features\LINGYUN.Abp.FeatureManagement.Client\LINGYUN.Abp.FeatureManagement.Client.csproj", "{99F8F254-A76E-43BB-8048-CC17EE1C8527}"
EndProject EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "tenants", "tenants", "{38E21687-5F19-42C9-9D11-4B1D2EF64EDB}" Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "tenants", "tenants", "{38E21687-5F19-42C9-9D11-4B1D2EF64EDB}"
EndProject EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.MultiTenancy", "modules\tenants\LINGYUN.Abp.MultiTenancy\LINGYUN.Abp.MultiTenancy.csproj", "{F2DAA5EB-5508-4D99-AE64-A10C025712BC}" Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.MultiTenancy", "modules\tenants\LINGYUN.Abp.MultiTenancy\LINGYUN.Abp.MultiTenancy.csproj", "{F2DAA5EB-5508-4D99-AE64-A10C025712BC}"
EndProject EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.MultiTenancy.DbFinder", "modules\tenants\LINGYUN.Abp.MultiTenancy.DbFinder\LINGYUN.Abp.MultiTenancy.DbFinder.csproj", "{BD0A1F2D-7667-45F8-872D-D41F36384163}" Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.MultiTenancy.DbFinder", "modules\tenants\LINGYUN.Abp.MultiTenancy.DbFinder\LINGYUN.Abp.MultiTenancy.DbFinder.csproj", "{BD0A1F2D-7667-45F8-872D-D41F36384163}"
EndProject EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.MultiTenancy.RemoteService", "modules\tenants\LINGYUN.Abp.MultiTenancy.RemoteService\LINGYUN.Abp.MultiTenancy.RemoteService.csproj", "{21C0A260-BC14-4A8F-9299-A9EE58682B96}" Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.MultiTenancy.RemoteService", "modules\tenants\LINGYUN.Abp.MultiTenancy.RemoteService\LINGYUN.Abp.MultiTenancy.RemoteService.csproj", "{21C0A260-BC14-4A8F-9299-A9EE58682B96}"
EndProject EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Notifications.Sms", "modules\common\LINGYUN.Abp.Notifications.Sms\LINGYUN.Abp.Notifications.Sms.csproj", "{15FC0C39-A604-491F-91F6-BD44167FC5F6}" Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Notifications.Sms", "modules\common\LINGYUN.Abp.Notifications.Sms\LINGYUN.Abp.Notifications.Sms.csproj", "{15FC0C39-A604-491F-91F6-BD44167FC5F6}"
EndProject EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.WeChat.MiniProgram", "modules\wechat\LINGYUN.Abp.WeChat.MiniProgram\LINGYUN.Abp.WeChat.MiniProgram.csproj", "{9E59B1DB-E0D5-485D-BDA0-B6C31E1358A8}" Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.WeChat.MiniProgram", "modules\wechat\LINGYUN.Abp.WeChat.MiniProgram\LINGYUN.Abp.WeChat.MiniProgram.csproj", "{9E59B1DB-E0D5-485D-BDA0-B6C31E1358A8}"
EndProject EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.WeChat.Official", "modules\wechat\LINGYUN.Abp.WeChat.Official\LINGYUN.Abp.WeChat.Official.csproj", "{16942653-B746-4917-B3BF-464C99F8832F}" Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.WeChat.Official", "modules\wechat\LINGYUN.Abp.WeChat.Official\LINGYUN.Abp.WeChat.Official.csproj", "{16942653-B746-4917-B3BF-464C99F8832F}"
EndProject EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.WeChat.SettingManagement", "modules\wechat\LINGYUN.Abp.WeChat.SettingManagement\LINGYUN.Abp.WeChat.SettingManagement.csproj", "{D0717513-2CEE-4AD5-A1DA-A08EA5DE6DD6}" Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.WeChat.SettingManagement", "modules\wechat\LINGYUN.Abp.WeChat.SettingManagement\LINGYUN.Abp.WeChat.SettingManagement.csproj", "{D0717513-2CEE-4AD5-A1DA-A08EA5DE6DD6}"
EndProject EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Notifications.WeChat.MiniProgram", "modules\wechat\LINGYUN.Abp.Notifications.WeChat.MiniProgram\LINGYUN.Abp.Notifications.WeChat.MiniProgram.csproj", "{D119C919-230B-4614-9A06-98586635DBFC}" Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Notifications.WeChat.MiniProgram", "modules\wechat\LINGYUN.Abp.Notifications.WeChat.MiniProgram\LINGYUN.Abp.Notifications.WeChat.MiniProgram.csproj", "{D119C919-230B-4614-9A06-98586635DBFC}"
EndProject EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Core", "modules\common\LINGYUN.Abp.Core\LINGYUN.Abp.Core.csproj", "{A7A28D6C-6EDB-4615-8899-7DE1D435B750}" Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Core", "modules\common\LINGYUN.Abp.Core\LINGYUN.Abp.Core.csproj", "{A7A28D6C-6EDB-4615-8899-7DE1D435B750}"
EndProject EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Aliyun", "modules\cloud-aliyun\LINGYUN.Abp.Aliyun\LINGYUN.Abp.Aliyun.csproj", "{17A8455F-D413-4664-AEFA-1ECAE9ED4B19}" Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Aliyun", "modules\cloud-aliyun\LINGYUN.Abp.Aliyun\LINGYUN.Abp.Aliyun.csproj", "{17A8455F-D413-4664-AEFA-1ECAE9ED4B19}"
EndProject EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "tests", "tests", "{B86C21A4-73B7-471E-B73A-B4B905EC9435}" Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "tests", "tests", "{B86C21A4-73B7-471E-B73A-B4B905EC9435}"
EndProject EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.TestsBase", "tests\LINGYUN.Abp.TestBase\LINGYUN.Abp.TestsBase.csproj", "{3BAA3D38-96C2-4C4C-B790-AE2997BFDE25}" Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.TestsBase", "tests\LINGYUN.Abp.TestBase\LINGYUN.Abp.TestsBase.csproj", "{3BAA3D38-96C2-4C4C-B790-AE2997BFDE25}"
EndProject EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.BlobStoring.Aliyun.Tests", "tests\LINGYUN.Abp.BlobStoring.Aliyun.Tests\LINGYUN.Abp.BlobStoring.Aliyun.Tests.csproj", "{2E35CB93-2E9C-4EE1-845F-72A40271648E}" Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.BlobStoring.Aliyun.Tests", "tests\LINGYUN.Abp.BlobStoring.Aliyun.Tests\LINGYUN.Abp.BlobStoring.Aliyun.Tests.csproj", "{2E35CB93-2E9C-4EE1-845F-72A40271648E}"
EndProject EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "console", "console", "{8D2AD50B-DD4B-48A2-88EC-0E8E8236D883}" Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "console", "console", "{8D2AD50B-DD4B-48A2-88EC-0E8E8236D883}"
EndProject EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Encryption.Console", "modules\console\LINGYUN.Abp.Encryption.Console\LINGYUN.Abp.Encryption.Console.csproj", "{8FB74B18-CA5C-4DC3-8DFA-600133A05712}" Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Encryption.Console", "modules\console\LINGYUN.Abp.Encryption.Console\LINGYUN.Abp.Encryption.Console.csproj", "{8FB74B18-CA5C-4DC3-8DFA-600133A05712}"
EndProject EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Aliyun.Tests", "tests\LINGYUN.Abp.Aliyun.Tests\LINGYUN.Abp.Aliyun.Tests.csproj", "{3DBF0975-B09D-49CA-9AF8-69175EDB9D52}" Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Aliyun.Tests", "tests\LINGYUN.Abp.Aliyun.Tests\LINGYUN.Abp.Aliyun.Tests.csproj", "{3DBF0975-B09D-49CA-9AF8-69175EDB9D52}"
EndProject EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Sms.Aliyun.Tests", "tests\LINGYUN.Abp.Sms.Aliyun.Tests\LINGYUN.Abp.Sms.Aliyun.Tests.csproj", "{93DD5A05-B67A-4E11-BB56-F6B4E7F1489C}" Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Sms.Aliyun.Tests", "tests\LINGYUN.Abp.Sms.Aliyun.Tests\LINGYUN.Abp.Sms.Aliyun.Tests.csproj", "{93DD5A05-B67A-4E11-BB56-F6B4E7F1489C}"
EndProject EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Location.Baidu.Tests", "tests\LINGYUN.Abp.Location.Baidu.Tests\LINGYUN.Abp.Location.Baidu.Tests.csproj", "{221725FF-6C01-4F41-9F29-AC04C7D52611}" Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Location.Baidu.Tests", "tests\LINGYUN.Abp.Location.Baidu.Tests\LINGYUN.Abp.Location.Baidu.Tests.csproj", "{221725FF-6C01-4F41-9F29-AC04C7D52611}"
EndProject EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Location.Tencent.Tests", "tests\LINGYUN.Abp.Location.Tencent.Tests\LINGYUN.Abp.Location.Tencent.Tests.csproj", "{1B494EA1-28CF-4A61-B0BE-70BBA425C316}" Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Location.Tencent.Tests", "tests\LINGYUN.Abp.Location.Tencent.Tests\LINGYUN.Abp.Location.Tencent.Tests.csproj", "{1B494EA1-28CF-4A61-B0BE-70BBA425C316}"
EndProject EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.AspNetCore.Mvc.Client", "modules\common\LINGYUN.Abp.AspNetCore.Mvc.Client\LINGYUN.Abp.AspNetCore.Mvc.Client.csproj", "{7F767ACF-754A-4EBC-8936-3C1402B6EF82}" Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.AspNetCore.Mvc.Client", "modules\common\LINGYUN.Abp.AspNetCore.Mvc.Client\LINGYUN.Abp.AspNetCore.Mvc.Client.csproj", "{7F767ACF-754A-4EBC-8936-3C1402B6EF82}"
EndProject EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "localization", "localization", "{E73A0F8B-2B4B-4CED-82A4-1EE5E0B89744}" Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "localization", "localization", "{E73A0F8B-2B4B-4CED-82A4-1EE5E0B89744}"
EndProject EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Localization.Xml", "modules\localization\LINGYUN.Abp.Localization.Xml\LINGYUN.Abp.Localization.Xml.csproj", "{8CC72F4E-F134-4A43-9037-5D4D1F29B68A}" Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Localization.Xml", "modules\localization\LINGYUN.Abp.Localization.Xml\LINGYUN.Abp.Localization.Xml.csproj", "{8CC72F4E-F134-4A43-9037-5D4D1F29B68A}"
EndProject EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Localization.Xml.Tests", "tests\LINGYUN.Abp.Localization.Xml.Tests\LINGYUN.Abp.Localization.Xml.Tests.csproj", "{94FEA59E-3B6D-41A0-9E44-BA5D6477244F}" Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Localization.Xml.Tests", "tests\LINGYUN.Abp.Localization.Xml.Tests\LINGYUN.Abp.Localization.Xml.Tests.csproj", "{94FEA59E-3B6D-41A0-9E44-BA5D6477244F}"
EndProject EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "dapr", "dapr", "{7FDFB22F-1BFF-4E05-9427-78B7A8461D50}" Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "dapr", "dapr", "{7FDFB22F-1BFF-4E05-9427-78B7A8461D50}"
ProjectSection(SolutionItems) = preProject ProjectSection(SolutionItems) = preProject
modules\dapr\README.md = modules\dapr\README.md modules\dapr\README.md = modules\dapr\README.md
EndProjectSection EndProjectSection
EndProject EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Dapr.Actors", "modules\dapr\LINGYUN.Abp.Dapr.Actors\LINGYUN.Abp.Dapr.Actors.csproj", "{C72E0407-06FE-4CAA-86E5-30FF216A7B82}" Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Dapr.Actors", "modules\dapr\LINGYUN.Abp.Dapr.Actors\LINGYUN.Abp.Dapr.Actors.csproj", "{C72E0407-06FE-4CAA-86E5-30FF216A7B82}"
EndProject EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Dapr.Actors.AspNetCore", "modules\dapr\LINGYUN.Abp.Dapr.Actors.AspNetCore\LINGYUN.Abp.Dapr.Actors.AspNetCore.csproj", "{E74FF671-6E5E-430C-9211-ED910634DDBE}" Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Dapr.Actors.AspNetCore", "modules\dapr\LINGYUN.Abp.Dapr.Actors.AspNetCore\LINGYUN.Abp.Dapr.Actors.AspNetCore.csproj", "{E74FF671-6E5E-430C-9211-ED910634DDBE}"
EndProject EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Dapr.Client", "modules\dapr\LINGYUN.Abp.Dapr.Client\LINGYUN.Abp.Dapr.Client.csproj", "{879791A3-BD69-42E4-A3BC-9878EFAADDD1}" Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Dapr.Client", "modules\dapr\LINGYUN.Abp.Dapr.Client\LINGYUN.Abp.Dapr.Client.csproj", "{879791A3-BD69-42E4-A3BC-9878EFAADDD1}"
EndProject EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "rules", "rules", "{C8891F1A-E6E5-448A-B527-EBFA44D20808}" Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "rules", "rules", "{C8891F1A-E6E5-448A-B527-EBFA44D20808}"
EndProject EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Rules", "modules\rules\LINGYUN.Abp.Rules\LINGYUN.Abp.Rules.csproj", "{5133D83C-9B23-491C-8780-3F9BBDBD0351}" Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Rules", "modules\rules\LINGYUN.Abp.Rules\LINGYUN.Abp.Rules.csproj", "{5133D83C-9B23-491C-8780-3F9BBDBD0351}"
EndProject EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Rules.NRules", "modules\rules\LINGYUN.Abp.Rules.NRules\LINGYUN.Abp.Rules.NRules.csproj", "{B8E5026B-188F-422F-A1EA-502C4A394585}" Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Rules.NRules", "modules\rules\LINGYUN.Abp.Rules.NRules\LINGYUN.Abp.Rules.NRules.csproj", "{B8E5026B-188F-422F-A1EA-502C4A394585}"
EndProject EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Rules.RulesEngine", "modules\rules\LINGYUN.Abp.Rules.RulesEngine\LINGYUN.Abp.Rules.RulesEngine.csproj", "{E861BE01-689D-4637-A5DC-E78E234F83FB}" Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Rules.RulesEngine", "modules\rules\LINGYUN.Abp.Rules.RulesEngine\LINGYUN.Abp.Rules.RulesEngine.csproj", "{E861BE01-689D-4637-A5DC-E78E234F83FB}"
EndProject EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Rules.RulesEngine.Tests", "tests\LINGYUN.Abp.Rules.RulesEngine.Tests\LINGYUN.Abp.Rules.RulesEngine.Tests.csproj", "{CF253F0A-3A45-40EE-875F-0E57C8968C48}" Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Rules.RulesEngine.Tests", "tests\LINGYUN.Abp.Rules.RulesEngine.Tests\LINGYUN.Abp.Rules.RulesEngine.Tests.csproj", "{CF253F0A-3A45-40EE-875F-0E57C8968C48}"
EndProject EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Rules.NRules.Tests", "tests\LINGYUN.Abp.Rules.NRules.Tests\LINGYUN.Abp.Rules.NRules.Tests.csproj", "{EF03A0A7-A93E-4DEF-A33E-F5A82E995FBF}" Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Rules.NRules.Tests", "tests\LINGYUN.Abp.Rules.NRules.Tests\LINGYUN.Abp.Rules.NRules.Tests.csproj", "{EF03A0A7-A93E-4DEF-A33E-F5A82E995FBF}"
EndProject EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Dapr.Client.Tests", "tests\LINGYUN.Abp.Dapr.Client.Tests\LINGYUN.Abp.Dapr.Client.Tests.csproj", "{9403FC1F-9677-489F-A03A-0B456153EE86}" Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Dapr.Client.Tests", "tests\LINGYUN.Abp.Dapr.Client.Tests\LINGYUN.Abp.Dapr.Client.Tests.csproj", "{9403FC1F-9677-489F-A03A-0B456153EE86}"
EndProject EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Dapr.Tests", "tests\LINGYUN.Abp.Dapr.Tests\LINGYUN.Abp.Dapr.Tests.csproj", "{26E87199-F0AD-4B30-B0E4-080B12E6F8FC}" Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Dapr.Tests", "tests\LINGYUN.Abp.Dapr.Tests\LINGYUN.Abp.Dapr.Tests.csproj", "{26E87199-F0AD-4B30-B0E4-080B12E6F8FC}"
EndProject EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Dapr.AspNetCore.TestHost", "tests\LINGYUN.Abp.Dapr.AspNetCore.TestHost\LINGYUN.Abp.Dapr.AspNetCore.TestHost.csproj", "{8968EDAF-9F5C-4786-AF2A-D3928B70C3EC}" Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Dapr.AspNetCore.TestHost", "tests\LINGYUN.Abp.Dapr.AspNetCore.TestHost\LINGYUN.Abp.Dapr.AspNetCore.TestHost.csproj", "{8968EDAF-9F5C-4786-AF2A-D3928B70C3EC}"
EndProject EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Dapr.Actors.Tests", "tests\LINGYUN.Abp.Dapr.Actors.Tests\LINGYUN.Abp.Dapr.Actors.Tests.csproj", "{CF30221B-CA7A-42CD-B91A-B7224AB2F38B}" Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Dapr.Actors.Tests", "tests\LINGYUN.Abp.Dapr.Actors.Tests\LINGYUN.Abp.Dapr.Actors.Tests.csproj", "{CF30221B-CA7A-42CD-B91A-B7224AB2F38B}"
EndProject EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.AspNetCore.HttpOverrides", "modules\common\LINGYUN.Abp.AspNetCore.HttpOverrides\LINGYUN.Abp.AspNetCore.HttpOverrides.csproj", "{191BB108-546E-4E70-978E-D6A8149C319C}" Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.AspNetCore.HttpOverrides", "modules\common\LINGYUN.Abp.AspNetCore.HttpOverrides\LINGYUN.Abp.AspNetCore.HttpOverrides.csproj", "{191BB108-546E-4E70-978E-D6A8149C319C}"
EndProject EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.IM.SignalR", "modules\common\LINGYUN.Abp.IM.SignalR\LINGYUN.Abp.IM.SignalR.csproj", "{DEB98AD7-9630-4F32-89E6-C1A118D1D18C}" Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.IM.SignalR", "modules\common\LINGYUN.Abp.IM.SignalR\LINGYUN.Abp.IM.SignalR.csproj", "{DEB98AD7-9630-4F32-89E6-C1A118D1D18C}"
EndProject EndProject
Global Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Identity.WeChat", "modules\wechat\LINGYUN.Abp.Identity.WeChat\LINGYUN.Abp.Identity.WeChat.csproj", "{00F1D30E-A6F6-464F-A80B-D423CFAA79A3}"
GlobalSection(SolutionConfigurationPlatforms) = preSolution EndProject
Debug|Any CPU = Debug|Any CPU Global
Release|Any CPU = Release|Any CPU GlobalSection(SolutionConfigurationPlatforms) = preSolution
EndGlobalSection Debug|Any CPU = Debug|Any CPU
GlobalSection(ProjectConfigurationPlatforms) = postSolution Release|Any CPU = Release|Any CPU
{5A87E9DD-3340-44DC-9564-4D8832A0228E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU EndGlobalSection
{5A87E9DD-3340-44DC-9564-4D8832A0228E}.Debug|Any CPU.Build.0 = Debug|Any CPU GlobalSection(ProjectConfigurationPlatforms) = postSolution
{5A87E9DD-3340-44DC-9564-4D8832A0228E}.Release|Any CPU.ActiveCfg = Release|Any CPU {5A87E9DD-3340-44DC-9564-4D8832A0228E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{5A87E9DD-3340-44DC-9564-4D8832A0228E}.Release|Any CPU.Build.0 = Release|Any CPU {5A87E9DD-3340-44DC-9564-4D8832A0228E}.Debug|Any CPU.Build.0 = Debug|Any CPU
{E9BE3C65-2AB2-4CE8-8EB9-5C91B329ADB4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {5A87E9DD-3340-44DC-9564-4D8832A0228E}.Release|Any CPU.ActiveCfg = Release|Any CPU
{E9BE3C65-2AB2-4CE8-8EB9-5C91B329ADB4}.Debug|Any CPU.Build.0 = Debug|Any CPU {5A87E9DD-3340-44DC-9564-4D8832A0228E}.Release|Any CPU.Build.0 = Release|Any CPU
{E9BE3C65-2AB2-4CE8-8EB9-5C91B329ADB4}.Release|Any CPU.ActiveCfg = Release|Any CPU {E9BE3C65-2AB2-4CE8-8EB9-5C91B329ADB4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{E9BE3C65-2AB2-4CE8-8EB9-5C91B329ADB4}.Release|Any CPU.Build.0 = Release|Any CPU {E9BE3C65-2AB2-4CE8-8EB9-5C91B329ADB4}.Debug|Any CPU.Build.0 = Debug|Any CPU
{824CB367-383B-48B2-972D-33923438A9A0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {E9BE3C65-2AB2-4CE8-8EB9-5C91B329ADB4}.Release|Any CPU.ActiveCfg = Release|Any CPU
{824CB367-383B-48B2-972D-33923438A9A0}.Debug|Any CPU.Build.0 = Debug|Any CPU {E9BE3C65-2AB2-4CE8-8EB9-5C91B329ADB4}.Release|Any CPU.Build.0 = Release|Any CPU
{824CB367-383B-48B2-972D-33923438A9A0}.Release|Any CPU.ActiveCfg = Release|Any CPU {824CB367-383B-48B2-972D-33923438A9A0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{824CB367-383B-48B2-972D-33923438A9A0}.Release|Any CPU.Build.0 = Release|Any CPU {824CB367-383B-48B2-972D-33923438A9A0}.Debug|Any CPU.Build.0 = Debug|Any CPU
{E9AEC9D6-1FE7-4B00-BAC5-2C3D4B63CCA2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {824CB367-383B-48B2-972D-33923438A9A0}.Release|Any CPU.ActiveCfg = Release|Any CPU
{E9AEC9D6-1FE7-4B00-BAC5-2C3D4B63CCA2}.Debug|Any CPU.Build.0 = Debug|Any CPU {824CB367-383B-48B2-972D-33923438A9A0}.Release|Any CPU.Build.0 = Release|Any CPU
{E9AEC9D6-1FE7-4B00-BAC5-2C3D4B63CCA2}.Release|Any CPU.ActiveCfg = Release|Any CPU {E9AEC9D6-1FE7-4B00-BAC5-2C3D4B63CCA2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{E9AEC9D6-1FE7-4B00-BAC5-2C3D4B63CCA2}.Release|Any CPU.Build.0 = Release|Any CPU {E9AEC9D6-1FE7-4B00-BAC5-2C3D4B63CCA2}.Debug|Any CPU.Build.0 = Debug|Any CPU
{304D06E6-41EC-4DCB-AEAE-DBEEC75F9ADC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {E9AEC9D6-1FE7-4B00-BAC5-2C3D4B63CCA2}.Release|Any CPU.ActiveCfg = Release|Any CPU
{304D06E6-41EC-4DCB-AEAE-DBEEC75F9ADC}.Debug|Any CPU.Build.0 = Debug|Any CPU {E9AEC9D6-1FE7-4B00-BAC5-2C3D4B63CCA2}.Release|Any CPU.Build.0 = Release|Any CPU
{304D06E6-41EC-4DCB-AEAE-DBEEC75F9ADC}.Release|Any CPU.ActiveCfg = Release|Any CPU {304D06E6-41EC-4DCB-AEAE-DBEEC75F9ADC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{304D06E6-41EC-4DCB-AEAE-DBEEC75F9ADC}.Release|Any CPU.Build.0 = Release|Any CPU {304D06E6-41EC-4DCB-AEAE-DBEEC75F9ADC}.Debug|Any CPU.Build.0 = Debug|Any CPU
{492710E6-EEF5-4390-A474-8FB2412ECBE5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {304D06E6-41EC-4DCB-AEAE-DBEEC75F9ADC}.Release|Any CPU.ActiveCfg = Release|Any CPU
{492710E6-EEF5-4390-A474-8FB2412ECBE5}.Debug|Any CPU.Build.0 = Debug|Any CPU {304D06E6-41EC-4DCB-AEAE-DBEEC75F9ADC}.Release|Any CPU.Build.0 = Release|Any CPU
{492710E6-EEF5-4390-A474-8FB2412ECBE5}.Release|Any CPU.ActiveCfg = Release|Any CPU {492710E6-EEF5-4390-A474-8FB2412ECBE5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{492710E6-EEF5-4390-A474-8FB2412ECBE5}.Release|Any CPU.Build.0 = Release|Any CPU {492710E6-EEF5-4390-A474-8FB2412ECBE5}.Debug|Any CPU.Build.0 = Debug|Any CPU
{CCF1EB86-29BD-4531-BB27-C9111CC67570}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {492710E6-EEF5-4390-A474-8FB2412ECBE5}.Release|Any CPU.ActiveCfg = Release|Any CPU
{CCF1EB86-29BD-4531-BB27-C9111CC67570}.Debug|Any CPU.Build.0 = Debug|Any CPU {492710E6-EEF5-4390-A474-8FB2412ECBE5}.Release|Any CPU.Build.0 = Release|Any CPU
{CCF1EB86-29BD-4531-BB27-C9111CC67570}.Release|Any CPU.ActiveCfg = Release|Any CPU {CCF1EB86-29BD-4531-BB27-C9111CC67570}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{CCF1EB86-29BD-4531-BB27-C9111CC67570}.Release|Any CPU.Build.0 = Release|Any CPU {CCF1EB86-29BD-4531-BB27-C9111CC67570}.Debug|Any CPU.Build.0 = Debug|Any CPU
{4BD715F2-D117-45FB-B26C-F92D912144C7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {CCF1EB86-29BD-4531-BB27-C9111CC67570}.Release|Any CPU.ActiveCfg = Release|Any CPU
{4BD715F2-D117-45FB-B26C-F92D912144C7}.Debug|Any CPU.Build.0 = Debug|Any CPU {CCF1EB86-29BD-4531-BB27-C9111CC67570}.Release|Any CPU.Build.0 = Release|Any CPU
{4BD715F2-D117-45FB-B26C-F92D912144C7}.Release|Any CPU.ActiveCfg = Release|Any CPU {4BD715F2-D117-45FB-B26C-F92D912144C7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{4BD715F2-D117-45FB-B26C-F92D912144C7}.Release|Any CPU.Build.0 = Release|Any CPU {4BD715F2-D117-45FB-B26C-F92D912144C7}.Debug|Any CPU.Build.0 = Debug|Any CPU
{71C57C19-671D-4CD4-AA46-E8021E53BBE5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {4BD715F2-D117-45FB-B26C-F92D912144C7}.Release|Any CPU.ActiveCfg = Release|Any CPU
{71C57C19-671D-4CD4-AA46-E8021E53BBE5}.Debug|Any CPU.Build.0 = Debug|Any CPU {4BD715F2-D117-45FB-B26C-F92D912144C7}.Release|Any CPU.Build.0 = Release|Any CPU
{71C57C19-671D-4CD4-AA46-E8021E53BBE5}.Release|Any CPU.ActiveCfg = Release|Any CPU {71C57C19-671D-4CD4-AA46-E8021E53BBE5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{71C57C19-671D-4CD4-AA46-E8021E53BBE5}.Release|Any CPU.Build.0 = Release|Any CPU {71C57C19-671D-4CD4-AA46-E8021E53BBE5}.Debug|Any CPU.Build.0 = Debug|Any CPU
{7947D559-4288-486B-8FB3-D957CC7EDD32}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {71C57C19-671D-4CD4-AA46-E8021E53BBE5}.Release|Any CPU.ActiveCfg = Release|Any CPU
{7947D559-4288-486B-8FB3-D957CC7EDD32}.Debug|Any CPU.Build.0 = Debug|Any CPU {71C57C19-671D-4CD4-AA46-E8021E53BBE5}.Release|Any CPU.Build.0 = Release|Any CPU
{7947D559-4288-486B-8FB3-D957CC7EDD32}.Release|Any CPU.ActiveCfg = Release|Any CPU {7947D559-4288-486B-8FB3-D957CC7EDD32}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{7947D559-4288-486B-8FB3-D957CC7EDD32}.Release|Any CPU.Build.0 = Release|Any CPU {7947D559-4288-486B-8FB3-D957CC7EDD32}.Debug|Any CPU.Build.0 = Debug|Any CPU
{A4195E41-3919-4C3E-8768-7F277B583D16}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {7947D559-4288-486B-8FB3-D957CC7EDD32}.Release|Any CPU.ActiveCfg = Release|Any CPU
{A4195E41-3919-4C3E-8768-7F277B583D16}.Debug|Any CPU.Build.0 = Debug|Any CPU {7947D559-4288-486B-8FB3-D957CC7EDD32}.Release|Any CPU.Build.0 = Release|Any CPU
{A4195E41-3919-4C3E-8768-7F277B583D16}.Release|Any CPU.ActiveCfg = Release|Any CPU {A4195E41-3919-4C3E-8768-7F277B583D16}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{A4195E41-3919-4C3E-8768-7F277B583D16}.Release|Any CPU.Build.0 = Release|Any CPU {A4195E41-3919-4C3E-8768-7F277B583D16}.Debug|Any CPU.Build.0 = Debug|Any CPU
{60083380-062C-4914-9E4E-5AE6637CCC3F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {A4195E41-3919-4C3E-8768-7F277B583D16}.Release|Any CPU.ActiveCfg = Release|Any CPU
{60083380-062C-4914-9E4E-5AE6637CCC3F}.Debug|Any CPU.Build.0 = Debug|Any CPU {A4195E41-3919-4C3E-8768-7F277B583D16}.Release|Any CPU.Build.0 = Release|Any CPU
{60083380-062C-4914-9E4E-5AE6637CCC3F}.Release|Any CPU.ActiveCfg = Release|Any CPU {60083380-062C-4914-9E4E-5AE6637CCC3F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{60083380-062C-4914-9E4E-5AE6637CCC3F}.Release|Any CPU.Build.0 = Release|Any CPU {60083380-062C-4914-9E4E-5AE6637CCC3F}.Debug|Any CPU.Build.0 = Debug|Any CPU
{9C6E9EE2-5C83-4D96-A7B7-32798FEF2845}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {60083380-062C-4914-9E4E-5AE6637CCC3F}.Release|Any CPU.ActiveCfg = Release|Any CPU
{9C6E9EE2-5C83-4D96-A7B7-32798FEF2845}.Debug|Any CPU.Build.0 = Debug|Any CPU {60083380-062C-4914-9E4E-5AE6637CCC3F}.Release|Any CPU.Build.0 = Release|Any CPU
{9C6E9EE2-5C83-4D96-A7B7-32798FEF2845}.Release|Any CPU.ActiveCfg = Release|Any CPU {9C6E9EE2-5C83-4D96-A7B7-32798FEF2845}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{9C6E9EE2-5C83-4D96-A7B7-32798FEF2845}.Release|Any CPU.Build.0 = Release|Any CPU {9C6E9EE2-5C83-4D96-A7B7-32798FEF2845}.Debug|Any CPU.Build.0 = Debug|Any CPU
{34C1E979-65B9-46F5-B7BA-60F227EBA093}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {9C6E9EE2-5C83-4D96-A7B7-32798FEF2845}.Release|Any CPU.ActiveCfg = Release|Any CPU
{34C1E979-65B9-46F5-B7BA-60F227EBA093}.Debug|Any CPU.Build.0 = Debug|Any CPU {9C6E9EE2-5C83-4D96-A7B7-32798FEF2845}.Release|Any CPU.Build.0 = Release|Any CPU
{34C1E979-65B9-46F5-B7BA-60F227EBA093}.Release|Any CPU.ActiveCfg = Release|Any CPU {34C1E979-65B9-46F5-B7BA-60F227EBA093}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{34C1E979-65B9-46F5-B7BA-60F227EBA093}.Release|Any CPU.Build.0 = Release|Any CPU {34C1E979-65B9-46F5-B7BA-60F227EBA093}.Debug|Any CPU.Build.0 = Debug|Any CPU
{80A56461-0ACC-4069-B571-87DCA064B2EF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {34C1E979-65B9-46F5-B7BA-60F227EBA093}.Release|Any CPU.ActiveCfg = Release|Any CPU
{80A56461-0ACC-4069-B571-87DCA064B2EF}.Debug|Any CPU.Build.0 = Debug|Any CPU {34C1E979-65B9-46F5-B7BA-60F227EBA093}.Release|Any CPU.Build.0 = Release|Any CPU
{80A56461-0ACC-4069-B571-87DCA064B2EF}.Release|Any CPU.ActiveCfg = Release|Any CPU {80A56461-0ACC-4069-B571-87DCA064B2EF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{80A56461-0ACC-4069-B571-87DCA064B2EF}.Release|Any CPU.Build.0 = Release|Any CPU {80A56461-0ACC-4069-B571-87DCA064B2EF}.Debug|Any CPU.Build.0 = Debug|Any CPU
{568D2C50-1C31-4C31-89A2-C608FA93C6FD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {80A56461-0ACC-4069-B571-87DCA064B2EF}.Release|Any CPU.ActiveCfg = Release|Any CPU
{568D2C50-1C31-4C31-89A2-C608FA93C6FD}.Debug|Any CPU.Build.0 = Debug|Any CPU {80A56461-0ACC-4069-B571-87DCA064B2EF}.Release|Any CPU.Build.0 = Release|Any CPU
{568D2C50-1C31-4C31-89A2-C608FA93C6FD}.Release|Any CPU.ActiveCfg = Release|Any CPU {568D2C50-1C31-4C31-89A2-C608FA93C6FD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{568D2C50-1C31-4C31-89A2-C608FA93C6FD}.Release|Any CPU.Build.0 = Release|Any CPU {568D2C50-1C31-4C31-89A2-C608FA93C6FD}.Debug|Any CPU.Build.0 = Debug|Any CPU
{12451B83-18DE-4E93-B98C-509477D53D5E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {568D2C50-1C31-4C31-89A2-C608FA93C6FD}.Release|Any CPU.ActiveCfg = Release|Any CPU
{12451B83-18DE-4E93-B98C-509477D53D5E}.Debug|Any CPU.Build.0 = Debug|Any CPU {568D2C50-1C31-4C31-89A2-C608FA93C6FD}.Release|Any CPU.Build.0 = Release|Any CPU
{12451B83-18DE-4E93-B98C-509477D53D5E}.Release|Any CPU.ActiveCfg = Release|Any CPU {12451B83-18DE-4E93-B98C-509477D53D5E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{12451B83-18DE-4E93-B98C-509477D53D5E}.Release|Any CPU.Build.0 = Release|Any CPU {12451B83-18DE-4E93-B98C-509477D53D5E}.Debug|Any CPU.Build.0 = Debug|Any CPU
{AAD0B6A7-847A-4537-A300-50E37F4B70CC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {12451B83-18DE-4E93-B98C-509477D53D5E}.Release|Any CPU.ActiveCfg = Release|Any CPU
{AAD0B6A7-847A-4537-A300-50E37F4B70CC}.Debug|Any CPU.Build.0 = Debug|Any CPU {12451B83-18DE-4E93-B98C-509477D53D5E}.Release|Any CPU.Build.0 = Release|Any CPU
{AAD0B6A7-847A-4537-A300-50E37F4B70CC}.Release|Any CPU.ActiveCfg = Release|Any CPU {AAD0B6A7-847A-4537-A300-50E37F4B70CC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{AAD0B6A7-847A-4537-A300-50E37F4B70CC}.Release|Any CPU.Build.0 = Release|Any CPU {AAD0B6A7-847A-4537-A300-50E37F4B70CC}.Debug|Any CPU.Build.0 = Debug|Any CPU
{5B5C2372-2EAB-4559-BBCB-0C1C9A7158DB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {AAD0B6A7-847A-4537-A300-50E37F4B70CC}.Release|Any CPU.ActiveCfg = Release|Any CPU
{5B5C2372-2EAB-4559-BBCB-0C1C9A7158DB}.Debug|Any CPU.Build.0 = Debug|Any CPU {AAD0B6A7-847A-4537-A300-50E37F4B70CC}.Release|Any CPU.Build.0 = Release|Any CPU
{5B5C2372-2EAB-4559-BBCB-0C1C9A7158DB}.Release|Any CPU.ActiveCfg = Release|Any CPU {5B5C2372-2EAB-4559-BBCB-0C1C9A7158DB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{5B5C2372-2EAB-4559-BBCB-0C1C9A7158DB}.Release|Any CPU.Build.0 = Release|Any CPU {5B5C2372-2EAB-4559-BBCB-0C1C9A7158DB}.Debug|Any CPU.Build.0 = Debug|Any CPU
{2A0C5EF1-CB21-4656-8C32-B5673F6B82D2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {5B5C2372-2EAB-4559-BBCB-0C1C9A7158DB}.Release|Any CPU.ActiveCfg = Release|Any CPU
{2A0C5EF1-CB21-4656-8C32-B5673F6B82D2}.Debug|Any CPU.Build.0 = Debug|Any CPU {5B5C2372-2EAB-4559-BBCB-0C1C9A7158DB}.Release|Any CPU.Build.0 = Release|Any CPU
{2A0C5EF1-CB21-4656-8C32-B5673F6B82D2}.Release|Any CPU.ActiveCfg = Release|Any CPU {2A0C5EF1-CB21-4656-8C32-B5673F6B82D2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{2A0C5EF1-CB21-4656-8C32-B5673F6B82D2}.Release|Any CPU.Build.0 = Release|Any CPU {2A0C5EF1-CB21-4656-8C32-B5673F6B82D2}.Debug|Any CPU.Build.0 = Debug|Any CPU
{3021DD8B-EA8F-4A88-BC2C-1BBEDC6255FE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {2A0C5EF1-CB21-4656-8C32-B5673F6B82D2}.Release|Any CPU.ActiveCfg = Release|Any CPU
{3021DD8B-EA8F-4A88-BC2C-1BBEDC6255FE}.Debug|Any CPU.Build.0 = Debug|Any CPU {2A0C5EF1-CB21-4656-8C32-B5673F6B82D2}.Release|Any CPU.Build.0 = Release|Any CPU
{3021DD8B-EA8F-4A88-BC2C-1BBEDC6255FE}.Release|Any CPU.ActiveCfg = Release|Any CPU {3021DD8B-EA8F-4A88-BC2C-1BBEDC6255FE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{3021DD8B-EA8F-4A88-BC2C-1BBEDC6255FE}.Release|Any CPU.Build.0 = Release|Any CPU {3021DD8B-EA8F-4A88-BC2C-1BBEDC6255FE}.Debug|Any CPU.Build.0 = Debug|Any CPU
{B31CEE79-45F6-4BB9-9EEB-08843C324B37}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {3021DD8B-EA8F-4A88-BC2C-1BBEDC6255FE}.Release|Any CPU.ActiveCfg = Release|Any CPU
{B31CEE79-45F6-4BB9-9EEB-08843C324B37}.Debug|Any CPU.Build.0 = Debug|Any CPU {3021DD8B-EA8F-4A88-BC2C-1BBEDC6255FE}.Release|Any CPU.Build.0 = Release|Any CPU
{B31CEE79-45F6-4BB9-9EEB-08843C324B37}.Release|Any CPU.ActiveCfg = Release|Any CPU {B31CEE79-45F6-4BB9-9EEB-08843C324B37}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{B31CEE79-45F6-4BB9-9EEB-08843C324B37}.Release|Any CPU.Build.0 = Release|Any CPU {B31CEE79-45F6-4BB9-9EEB-08843C324B37}.Debug|Any CPU.Build.0 = Debug|Any CPU
{865D5508-63CD-4D44-9F5B-AE5CD4A43D08}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {B31CEE79-45F6-4BB9-9EEB-08843C324B37}.Release|Any CPU.ActiveCfg = Release|Any CPU
{865D5508-63CD-4D44-9F5B-AE5CD4A43D08}.Debug|Any CPU.Build.0 = Debug|Any CPU {B31CEE79-45F6-4BB9-9EEB-08843C324B37}.Release|Any CPU.Build.0 = Release|Any CPU
{865D5508-63CD-4D44-9F5B-AE5CD4A43D08}.Release|Any CPU.ActiveCfg = Release|Any CPU {865D5508-63CD-4D44-9F5B-AE5CD4A43D08}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{865D5508-63CD-4D44-9F5B-AE5CD4A43D08}.Release|Any CPU.Build.0 = Release|Any CPU {865D5508-63CD-4D44-9F5B-AE5CD4A43D08}.Debug|Any CPU.Build.0 = Debug|Any CPU
{ECAA4B82-A240-4747-888C-FACD8634D389}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {865D5508-63CD-4D44-9F5B-AE5CD4A43D08}.Release|Any CPU.ActiveCfg = Release|Any CPU
{ECAA4B82-A240-4747-888C-FACD8634D389}.Debug|Any CPU.Build.0 = Debug|Any CPU {865D5508-63CD-4D44-9F5B-AE5CD4A43D08}.Release|Any CPU.Build.0 = Release|Any CPU
{ECAA4B82-A240-4747-888C-FACD8634D389}.Release|Any CPU.ActiveCfg = Release|Any CPU {ECAA4B82-A240-4747-888C-FACD8634D389}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{ECAA4B82-A240-4747-888C-FACD8634D389}.Release|Any CPU.Build.0 = Release|Any CPU {ECAA4B82-A240-4747-888C-FACD8634D389}.Debug|Any CPU.Build.0 = Debug|Any CPU
{8AF8FD6B-634F-41FA-B421-A4ACFD159FE0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {ECAA4B82-A240-4747-888C-FACD8634D389}.Release|Any CPU.ActiveCfg = Release|Any CPU
{8AF8FD6B-634F-41FA-B421-A4ACFD159FE0}.Debug|Any CPU.Build.0 = Debug|Any CPU {ECAA4B82-A240-4747-888C-FACD8634D389}.Release|Any CPU.Build.0 = Release|Any CPU
{8AF8FD6B-634F-41FA-B421-A4ACFD159FE0}.Release|Any CPU.ActiveCfg = Release|Any CPU {8AF8FD6B-634F-41FA-B421-A4ACFD159FE0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{8AF8FD6B-634F-41FA-B421-A4ACFD159FE0}.Release|Any CPU.Build.0 = Release|Any CPU {8AF8FD6B-634F-41FA-B421-A4ACFD159FE0}.Debug|Any CPU.Build.0 = Debug|Any CPU
{3B455AA7-B165-4EA0-8870-DB8DA5C76FC5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {8AF8FD6B-634F-41FA-B421-A4ACFD159FE0}.Release|Any CPU.ActiveCfg = Release|Any CPU
{3B455AA7-B165-4EA0-8870-DB8DA5C76FC5}.Debug|Any CPU.Build.0 = Debug|Any CPU {8AF8FD6B-634F-41FA-B421-A4ACFD159FE0}.Release|Any CPU.Build.0 = Release|Any CPU
{3B455AA7-B165-4EA0-8870-DB8DA5C76FC5}.Release|Any CPU.ActiveCfg = Release|Any CPU {3B455AA7-B165-4EA0-8870-DB8DA5C76FC5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{3B455AA7-B165-4EA0-8870-DB8DA5C76FC5}.Release|Any CPU.Build.0 = Release|Any CPU {3B455AA7-B165-4EA0-8870-DB8DA5C76FC5}.Debug|Any CPU.Build.0 = Debug|Any CPU
{99F8F254-A76E-43BB-8048-CC17EE1C8527}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {3B455AA7-B165-4EA0-8870-DB8DA5C76FC5}.Release|Any CPU.ActiveCfg = Release|Any CPU
{99F8F254-A76E-43BB-8048-CC17EE1C8527}.Debug|Any CPU.Build.0 = Debug|Any CPU {3B455AA7-B165-4EA0-8870-DB8DA5C76FC5}.Release|Any CPU.Build.0 = Release|Any CPU
{99F8F254-A76E-43BB-8048-CC17EE1C8527}.Release|Any CPU.ActiveCfg = Release|Any CPU {99F8F254-A76E-43BB-8048-CC17EE1C8527}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{99F8F254-A76E-43BB-8048-CC17EE1C8527}.Release|Any CPU.Build.0 = Release|Any CPU {99F8F254-A76E-43BB-8048-CC17EE1C8527}.Debug|Any CPU.Build.0 = Debug|Any CPU
{F2DAA5EB-5508-4D99-AE64-A10C025712BC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {99F8F254-A76E-43BB-8048-CC17EE1C8527}.Release|Any CPU.ActiveCfg = Release|Any CPU
{F2DAA5EB-5508-4D99-AE64-A10C025712BC}.Debug|Any CPU.Build.0 = Debug|Any CPU {99F8F254-A76E-43BB-8048-CC17EE1C8527}.Release|Any CPU.Build.0 = Release|Any CPU
{F2DAA5EB-5508-4D99-AE64-A10C025712BC}.Release|Any CPU.ActiveCfg = Release|Any CPU {F2DAA5EB-5508-4D99-AE64-A10C025712BC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{F2DAA5EB-5508-4D99-AE64-A10C025712BC}.Release|Any CPU.Build.0 = Release|Any CPU {F2DAA5EB-5508-4D99-AE64-A10C025712BC}.Debug|Any CPU.Build.0 = Debug|Any CPU
{BD0A1F2D-7667-45F8-872D-D41F36384163}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {F2DAA5EB-5508-4D99-AE64-A10C025712BC}.Release|Any CPU.ActiveCfg = Release|Any CPU
{BD0A1F2D-7667-45F8-872D-D41F36384163}.Debug|Any CPU.Build.0 = Debug|Any CPU {F2DAA5EB-5508-4D99-AE64-A10C025712BC}.Release|Any CPU.Build.0 = Release|Any CPU
{BD0A1F2D-7667-45F8-872D-D41F36384163}.Release|Any CPU.ActiveCfg = Release|Any CPU {BD0A1F2D-7667-45F8-872D-D41F36384163}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{BD0A1F2D-7667-45F8-872D-D41F36384163}.Release|Any CPU.Build.0 = Release|Any CPU {BD0A1F2D-7667-45F8-872D-D41F36384163}.Debug|Any CPU.Build.0 = Debug|Any CPU
{21C0A260-BC14-4A8F-9299-A9EE58682B96}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {BD0A1F2D-7667-45F8-872D-D41F36384163}.Release|Any CPU.ActiveCfg = Release|Any CPU
{21C0A260-BC14-4A8F-9299-A9EE58682B96}.Debug|Any CPU.Build.0 = Debug|Any CPU {BD0A1F2D-7667-45F8-872D-D41F36384163}.Release|Any CPU.Build.0 = Release|Any CPU
{21C0A260-BC14-4A8F-9299-A9EE58682B96}.Release|Any CPU.ActiveCfg = Release|Any CPU {21C0A260-BC14-4A8F-9299-A9EE58682B96}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{21C0A260-BC14-4A8F-9299-A9EE58682B96}.Release|Any CPU.Build.0 = Release|Any CPU {21C0A260-BC14-4A8F-9299-A9EE58682B96}.Debug|Any CPU.Build.0 = Debug|Any CPU
{15FC0C39-A604-491F-91F6-BD44167FC5F6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {21C0A260-BC14-4A8F-9299-A9EE58682B96}.Release|Any CPU.ActiveCfg = Release|Any CPU
{15FC0C39-A604-491F-91F6-BD44167FC5F6}.Debug|Any CPU.Build.0 = Debug|Any CPU {21C0A260-BC14-4A8F-9299-A9EE58682B96}.Release|Any CPU.Build.0 = Release|Any CPU
{15FC0C39-A604-491F-91F6-BD44167FC5F6}.Release|Any CPU.ActiveCfg = Release|Any CPU {15FC0C39-A604-491F-91F6-BD44167FC5F6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{15FC0C39-A604-491F-91F6-BD44167FC5F6}.Release|Any CPU.Build.0 = Release|Any CPU {15FC0C39-A604-491F-91F6-BD44167FC5F6}.Debug|Any CPU.Build.0 = Debug|Any CPU
{9E59B1DB-E0D5-485D-BDA0-B6C31E1358A8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {15FC0C39-A604-491F-91F6-BD44167FC5F6}.Release|Any CPU.ActiveCfg = Release|Any CPU
{9E59B1DB-E0D5-485D-BDA0-B6C31E1358A8}.Debug|Any CPU.Build.0 = Debug|Any CPU {15FC0C39-A604-491F-91F6-BD44167FC5F6}.Release|Any CPU.Build.0 = Release|Any CPU
{9E59B1DB-E0D5-485D-BDA0-B6C31E1358A8}.Release|Any CPU.ActiveCfg = Release|Any CPU {9E59B1DB-E0D5-485D-BDA0-B6C31E1358A8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{9E59B1DB-E0D5-485D-BDA0-B6C31E1358A8}.Release|Any CPU.Build.0 = Release|Any CPU {9E59B1DB-E0D5-485D-BDA0-B6C31E1358A8}.Debug|Any CPU.Build.0 = Debug|Any CPU
{16942653-B746-4917-B3BF-464C99F8832F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {9E59B1DB-E0D5-485D-BDA0-B6C31E1358A8}.Release|Any CPU.ActiveCfg = Release|Any CPU
{16942653-B746-4917-B3BF-464C99F8832F}.Debug|Any CPU.Build.0 = Debug|Any CPU {9E59B1DB-E0D5-485D-BDA0-B6C31E1358A8}.Release|Any CPU.Build.0 = Release|Any CPU
{16942653-B746-4917-B3BF-464C99F8832F}.Release|Any CPU.ActiveCfg = Release|Any CPU {16942653-B746-4917-B3BF-464C99F8832F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{16942653-B746-4917-B3BF-464C99F8832F}.Release|Any CPU.Build.0 = Release|Any CPU {16942653-B746-4917-B3BF-464C99F8832F}.Debug|Any CPU.Build.0 = Debug|Any CPU
{D0717513-2CEE-4AD5-A1DA-A08EA5DE6DD6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {16942653-B746-4917-B3BF-464C99F8832F}.Release|Any CPU.ActiveCfg = Release|Any CPU
{D0717513-2CEE-4AD5-A1DA-A08EA5DE6DD6}.Debug|Any CPU.Build.0 = Debug|Any CPU {16942653-B746-4917-B3BF-464C99F8832F}.Release|Any CPU.Build.0 = Release|Any CPU
{D0717513-2CEE-4AD5-A1DA-A08EA5DE6DD6}.Release|Any CPU.ActiveCfg = Release|Any CPU {D0717513-2CEE-4AD5-A1DA-A08EA5DE6DD6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{D0717513-2CEE-4AD5-A1DA-A08EA5DE6DD6}.Release|Any CPU.Build.0 = Release|Any CPU {D0717513-2CEE-4AD5-A1DA-A08EA5DE6DD6}.Debug|Any CPU.Build.0 = Debug|Any CPU
{D119C919-230B-4614-9A06-98586635DBFC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {D0717513-2CEE-4AD5-A1DA-A08EA5DE6DD6}.Release|Any CPU.ActiveCfg = Release|Any CPU
{D119C919-230B-4614-9A06-98586635DBFC}.Debug|Any CPU.Build.0 = Debug|Any CPU {D0717513-2CEE-4AD5-A1DA-A08EA5DE6DD6}.Release|Any CPU.Build.0 = Release|Any CPU
{D119C919-230B-4614-9A06-98586635DBFC}.Release|Any CPU.ActiveCfg = Release|Any CPU {D119C919-230B-4614-9A06-98586635DBFC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{D119C919-230B-4614-9A06-98586635DBFC}.Release|Any CPU.Build.0 = Release|Any CPU {D119C919-230B-4614-9A06-98586635DBFC}.Debug|Any CPU.Build.0 = Debug|Any CPU
{A7A28D6C-6EDB-4615-8899-7DE1D435B750}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {D119C919-230B-4614-9A06-98586635DBFC}.Release|Any CPU.ActiveCfg = Release|Any CPU
{A7A28D6C-6EDB-4615-8899-7DE1D435B750}.Debug|Any CPU.Build.0 = Debug|Any CPU {D119C919-230B-4614-9A06-98586635DBFC}.Release|Any CPU.Build.0 = Release|Any CPU
{A7A28D6C-6EDB-4615-8899-7DE1D435B750}.Release|Any CPU.ActiveCfg = Release|Any CPU {A7A28D6C-6EDB-4615-8899-7DE1D435B750}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{A7A28D6C-6EDB-4615-8899-7DE1D435B750}.Release|Any CPU.Build.0 = Release|Any CPU {A7A28D6C-6EDB-4615-8899-7DE1D435B750}.Debug|Any CPU.Build.0 = Debug|Any CPU
{17A8455F-D413-4664-AEFA-1ECAE9ED4B19}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {A7A28D6C-6EDB-4615-8899-7DE1D435B750}.Release|Any CPU.ActiveCfg = Release|Any CPU
{17A8455F-D413-4664-AEFA-1ECAE9ED4B19}.Debug|Any CPU.Build.0 = Debug|Any CPU {A7A28D6C-6EDB-4615-8899-7DE1D435B750}.Release|Any CPU.Build.0 = Release|Any CPU
{17A8455F-D413-4664-AEFA-1ECAE9ED4B19}.Release|Any CPU.ActiveCfg = Release|Any CPU {17A8455F-D413-4664-AEFA-1ECAE9ED4B19}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{17A8455F-D413-4664-AEFA-1ECAE9ED4B19}.Release|Any CPU.Build.0 = Release|Any CPU {17A8455F-D413-4664-AEFA-1ECAE9ED4B19}.Debug|Any CPU.Build.0 = Debug|Any CPU
{3BAA3D38-96C2-4C4C-B790-AE2997BFDE25}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {17A8455F-D413-4664-AEFA-1ECAE9ED4B19}.Release|Any CPU.ActiveCfg = Release|Any CPU
{3BAA3D38-96C2-4C4C-B790-AE2997BFDE25}.Debug|Any CPU.Build.0 = Debug|Any CPU {17A8455F-D413-4664-AEFA-1ECAE9ED4B19}.Release|Any CPU.Build.0 = Release|Any CPU
{3BAA3D38-96C2-4C4C-B790-AE2997BFDE25}.Release|Any CPU.ActiveCfg = Release|Any CPU {3BAA3D38-96C2-4C4C-B790-AE2997BFDE25}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{3BAA3D38-96C2-4C4C-B790-AE2997BFDE25}.Release|Any CPU.Build.0 = Release|Any CPU {3BAA3D38-96C2-4C4C-B790-AE2997BFDE25}.Debug|Any CPU.Build.0 = Debug|Any CPU
{2E35CB93-2E9C-4EE1-845F-72A40271648E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {3BAA3D38-96C2-4C4C-B790-AE2997BFDE25}.Release|Any CPU.ActiveCfg = Release|Any CPU
{2E35CB93-2E9C-4EE1-845F-72A40271648E}.Debug|Any CPU.Build.0 = Debug|Any CPU {3BAA3D38-96C2-4C4C-B790-AE2997BFDE25}.Release|Any CPU.Build.0 = Release|Any CPU
{2E35CB93-2E9C-4EE1-845F-72A40271648E}.Release|Any CPU.ActiveCfg = Release|Any CPU {2E35CB93-2E9C-4EE1-845F-72A40271648E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{2E35CB93-2E9C-4EE1-845F-72A40271648E}.Release|Any CPU.Build.0 = Release|Any CPU {2E35CB93-2E9C-4EE1-845F-72A40271648E}.Debug|Any CPU.Build.0 = Debug|Any CPU
{8FB74B18-CA5C-4DC3-8DFA-600133A05712}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {2E35CB93-2E9C-4EE1-845F-72A40271648E}.Release|Any CPU.ActiveCfg = Release|Any CPU
{8FB74B18-CA5C-4DC3-8DFA-600133A05712}.Debug|Any CPU.Build.0 = Debug|Any CPU {2E35CB93-2E9C-4EE1-845F-72A40271648E}.Release|Any CPU.Build.0 = Release|Any CPU
{8FB74B18-CA5C-4DC3-8DFA-600133A05712}.Release|Any CPU.ActiveCfg = Release|Any CPU {8FB74B18-CA5C-4DC3-8DFA-600133A05712}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{8FB74B18-CA5C-4DC3-8DFA-600133A05712}.Release|Any CPU.Build.0 = Release|Any CPU {8FB74B18-CA5C-4DC3-8DFA-600133A05712}.Debug|Any CPU.Build.0 = Debug|Any CPU
{3DBF0975-B09D-49CA-9AF8-69175EDB9D52}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {8FB74B18-CA5C-4DC3-8DFA-600133A05712}.Release|Any CPU.ActiveCfg = Release|Any CPU
{3DBF0975-B09D-49CA-9AF8-69175EDB9D52}.Debug|Any CPU.Build.0 = Debug|Any CPU {8FB74B18-CA5C-4DC3-8DFA-600133A05712}.Release|Any CPU.Build.0 = Release|Any CPU
{3DBF0975-B09D-49CA-9AF8-69175EDB9D52}.Release|Any CPU.ActiveCfg = Release|Any CPU {3DBF0975-B09D-49CA-9AF8-69175EDB9D52}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{3DBF0975-B09D-49CA-9AF8-69175EDB9D52}.Release|Any CPU.Build.0 = Release|Any CPU {3DBF0975-B09D-49CA-9AF8-69175EDB9D52}.Debug|Any CPU.Build.0 = Debug|Any CPU
{93DD5A05-B67A-4E11-BB56-F6B4E7F1489C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {3DBF0975-B09D-49CA-9AF8-69175EDB9D52}.Release|Any CPU.ActiveCfg = Release|Any CPU
{93DD5A05-B67A-4E11-BB56-F6B4E7F1489C}.Debug|Any CPU.Build.0 = Debug|Any CPU {3DBF0975-B09D-49CA-9AF8-69175EDB9D52}.Release|Any CPU.Build.0 = Release|Any CPU
{93DD5A05-B67A-4E11-BB56-F6B4E7F1489C}.Release|Any CPU.ActiveCfg = Release|Any CPU {93DD5A05-B67A-4E11-BB56-F6B4E7F1489C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{93DD5A05-B67A-4E11-BB56-F6B4E7F1489C}.Release|Any CPU.Build.0 = Release|Any CPU {93DD5A05-B67A-4E11-BB56-F6B4E7F1489C}.Debug|Any CPU.Build.0 = Debug|Any CPU
{221725FF-6C01-4F41-9F29-AC04C7D52611}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {93DD5A05-B67A-4E11-BB56-F6B4E7F1489C}.Release|Any CPU.ActiveCfg = Release|Any CPU
{221725FF-6C01-4F41-9F29-AC04C7D52611}.Debug|Any CPU.Build.0 = Debug|Any CPU {93DD5A05-B67A-4E11-BB56-F6B4E7F1489C}.Release|Any CPU.Build.0 = Release|Any CPU
{221725FF-6C01-4F41-9F29-AC04C7D52611}.Release|Any CPU.ActiveCfg = Release|Any CPU {221725FF-6C01-4F41-9F29-AC04C7D52611}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{221725FF-6C01-4F41-9F29-AC04C7D52611}.Release|Any CPU.Build.0 = Release|Any CPU {221725FF-6C01-4F41-9F29-AC04C7D52611}.Debug|Any CPU.Build.0 = Debug|Any CPU
{1B494EA1-28CF-4A61-B0BE-70BBA425C316}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {221725FF-6C01-4F41-9F29-AC04C7D52611}.Release|Any CPU.ActiveCfg = Release|Any CPU
{1B494EA1-28CF-4A61-B0BE-70BBA425C316}.Debug|Any CPU.Build.0 = Debug|Any CPU {221725FF-6C01-4F41-9F29-AC04C7D52611}.Release|Any CPU.Build.0 = Release|Any CPU
{1B494EA1-28CF-4A61-B0BE-70BBA425C316}.Release|Any CPU.ActiveCfg = Release|Any CPU {1B494EA1-28CF-4A61-B0BE-70BBA425C316}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{1B494EA1-28CF-4A61-B0BE-70BBA425C316}.Release|Any CPU.Build.0 = Release|Any CPU {1B494EA1-28CF-4A61-B0BE-70BBA425C316}.Debug|Any CPU.Build.0 = Debug|Any CPU
{7F767ACF-754A-4EBC-8936-3C1402B6EF82}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {1B494EA1-28CF-4A61-B0BE-70BBA425C316}.Release|Any CPU.ActiveCfg = Release|Any CPU
{7F767ACF-754A-4EBC-8936-3C1402B6EF82}.Debug|Any CPU.Build.0 = Debug|Any CPU {1B494EA1-28CF-4A61-B0BE-70BBA425C316}.Release|Any CPU.Build.0 = Release|Any CPU
{7F767ACF-754A-4EBC-8936-3C1402B6EF82}.Release|Any CPU.ActiveCfg = Release|Any CPU {7F767ACF-754A-4EBC-8936-3C1402B6EF82}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{7F767ACF-754A-4EBC-8936-3C1402B6EF82}.Release|Any CPU.Build.0 = Release|Any CPU {7F767ACF-754A-4EBC-8936-3C1402B6EF82}.Debug|Any CPU.Build.0 = Debug|Any CPU
{8CC72F4E-F134-4A43-9037-5D4D1F29B68A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {7F767ACF-754A-4EBC-8936-3C1402B6EF82}.Release|Any CPU.ActiveCfg = Release|Any CPU
{8CC72F4E-F134-4A43-9037-5D4D1F29B68A}.Debug|Any CPU.Build.0 = Debug|Any CPU {7F767ACF-754A-4EBC-8936-3C1402B6EF82}.Release|Any CPU.Build.0 = Release|Any CPU
{8CC72F4E-F134-4A43-9037-5D4D1F29B68A}.Release|Any CPU.ActiveCfg = Release|Any CPU {8CC72F4E-F134-4A43-9037-5D4D1F29B68A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{8CC72F4E-F134-4A43-9037-5D4D1F29B68A}.Release|Any CPU.Build.0 = Release|Any CPU {8CC72F4E-F134-4A43-9037-5D4D1F29B68A}.Debug|Any CPU.Build.0 = Debug|Any CPU
{94FEA59E-3B6D-41A0-9E44-BA5D6477244F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {8CC72F4E-F134-4A43-9037-5D4D1F29B68A}.Release|Any CPU.ActiveCfg = Release|Any CPU
{94FEA59E-3B6D-41A0-9E44-BA5D6477244F}.Debug|Any CPU.Build.0 = Debug|Any CPU {8CC72F4E-F134-4A43-9037-5D4D1F29B68A}.Release|Any CPU.Build.0 = Release|Any CPU
{94FEA59E-3B6D-41A0-9E44-BA5D6477244F}.Release|Any CPU.ActiveCfg = Release|Any CPU {94FEA59E-3B6D-41A0-9E44-BA5D6477244F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{94FEA59E-3B6D-41A0-9E44-BA5D6477244F}.Release|Any CPU.Build.0 = Release|Any CPU {94FEA59E-3B6D-41A0-9E44-BA5D6477244F}.Debug|Any CPU.Build.0 = Debug|Any CPU
{C72E0407-06FE-4CAA-86E5-30FF216A7B82}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {94FEA59E-3B6D-41A0-9E44-BA5D6477244F}.Release|Any CPU.ActiveCfg = Release|Any CPU
{C72E0407-06FE-4CAA-86E5-30FF216A7B82}.Debug|Any CPU.Build.0 = Debug|Any CPU {94FEA59E-3B6D-41A0-9E44-BA5D6477244F}.Release|Any CPU.Build.0 = Release|Any CPU
{C72E0407-06FE-4CAA-86E5-30FF216A7B82}.Release|Any CPU.ActiveCfg = Release|Any CPU {C72E0407-06FE-4CAA-86E5-30FF216A7B82}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{C72E0407-06FE-4CAA-86E5-30FF216A7B82}.Release|Any CPU.Build.0 = Release|Any CPU {C72E0407-06FE-4CAA-86E5-30FF216A7B82}.Debug|Any CPU.Build.0 = Debug|Any CPU
{E74FF671-6E5E-430C-9211-ED910634DDBE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {C72E0407-06FE-4CAA-86E5-30FF216A7B82}.Release|Any CPU.ActiveCfg = Release|Any CPU
{E74FF671-6E5E-430C-9211-ED910634DDBE}.Debug|Any CPU.Build.0 = Debug|Any CPU {C72E0407-06FE-4CAA-86E5-30FF216A7B82}.Release|Any CPU.Build.0 = Release|Any CPU
{E74FF671-6E5E-430C-9211-ED910634DDBE}.Release|Any CPU.ActiveCfg = Release|Any CPU {E74FF671-6E5E-430C-9211-ED910634DDBE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{E74FF671-6E5E-430C-9211-ED910634DDBE}.Release|Any CPU.Build.0 = Release|Any CPU {E74FF671-6E5E-430C-9211-ED910634DDBE}.Debug|Any CPU.Build.0 = Debug|Any CPU
{879791A3-BD69-42E4-A3BC-9878EFAADDD1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {E74FF671-6E5E-430C-9211-ED910634DDBE}.Release|Any CPU.ActiveCfg = Release|Any CPU
{879791A3-BD69-42E4-A3BC-9878EFAADDD1}.Debug|Any CPU.Build.0 = Debug|Any CPU {E74FF671-6E5E-430C-9211-ED910634DDBE}.Release|Any CPU.Build.0 = Release|Any CPU
{879791A3-BD69-42E4-A3BC-9878EFAADDD1}.Release|Any CPU.ActiveCfg = Release|Any CPU {879791A3-BD69-42E4-A3BC-9878EFAADDD1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{879791A3-BD69-42E4-A3BC-9878EFAADDD1}.Release|Any CPU.Build.0 = Release|Any CPU {879791A3-BD69-42E4-A3BC-9878EFAADDD1}.Debug|Any CPU.Build.0 = Debug|Any CPU
{5133D83C-9B23-491C-8780-3F9BBDBD0351}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {879791A3-BD69-42E4-A3BC-9878EFAADDD1}.Release|Any CPU.ActiveCfg = Release|Any CPU
{5133D83C-9B23-491C-8780-3F9BBDBD0351}.Debug|Any CPU.Build.0 = Debug|Any CPU {879791A3-BD69-42E4-A3BC-9878EFAADDD1}.Release|Any CPU.Build.0 = Release|Any CPU
{5133D83C-9B23-491C-8780-3F9BBDBD0351}.Release|Any CPU.ActiveCfg = Release|Any CPU {5133D83C-9B23-491C-8780-3F9BBDBD0351}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{5133D83C-9B23-491C-8780-3F9BBDBD0351}.Release|Any CPU.Build.0 = Release|Any CPU {5133D83C-9B23-491C-8780-3F9BBDBD0351}.Debug|Any CPU.Build.0 = Debug|Any CPU
{B8E5026B-188F-422F-A1EA-502C4A394585}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {5133D83C-9B23-491C-8780-3F9BBDBD0351}.Release|Any CPU.ActiveCfg = Release|Any CPU
{B8E5026B-188F-422F-A1EA-502C4A394585}.Debug|Any CPU.Build.0 = Debug|Any CPU {5133D83C-9B23-491C-8780-3F9BBDBD0351}.Release|Any CPU.Build.0 = Release|Any CPU
{B8E5026B-188F-422F-A1EA-502C4A394585}.Release|Any CPU.ActiveCfg = Release|Any CPU {B8E5026B-188F-422F-A1EA-502C4A394585}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{B8E5026B-188F-422F-A1EA-502C4A394585}.Release|Any CPU.Build.0 = Release|Any CPU {B8E5026B-188F-422F-A1EA-502C4A394585}.Debug|Any CPU.Build.0 = Debug|Any CPU
{E861BE01-689D-4637-A5DC-E78E234F83FB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {B8E5026B-188F-422F-A1EA-502C4A394585}.Release|Any CPU.ActiveCfg = Release|Any CPU
{E861BE01-689D-4637-A5DC-E78E234F83FB}.Debug|Any CPU.Build.0 = Debug|Any CPU {B8E5026B-188F-422F-A1EA-502C4A394585}.Release|Any CPU.Build.0 = Release|Any CPU
{E861BE01-689D-4637-A5DC-E78E234F83FB}.Release|Any CPU.ActiveCfg = Release|Any CPU {E861BE01-689D-4637-A5DC-E78E234F83FB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{E861BE01-689D-4637-A5DC-E78E234F83FB}.Release|Any CPU.Build.0 = Release|Any CPU {E861BE01-689D-4637-A5DC-E78E234F83FB}.Debug|Any CPU.Build.0 = Debug|Any CPU
{CF253F0A-3A45-40EE-875F-0E57C8968C48}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {E861BE01-689D-4637-A5DC-E78E234F83FB}.Release|Any CPU.ActiveCfg = Release|Any CPU
{CF253F0A-3A45-40EE-875F-0E57C8968C48}.Debug|Any CPU.Build.0 = Debug|Any CPU {E861BE01-689D-4637-A5DC-E78E234F83FB}.Release|Any CPU.Build.0 = Release|Any CPU
{CF253F0A-3A45-40EE-875F-0E57C8968C48}.Release|Any CPU.ActiveCfg = Release|Any CPU {CF253F0A-3A45-40EE-875F-0E57C8968C48}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{CF253F0A-3A45-40EE-875F-0E57C8968C48}.Release|Any CPU.Build.0 = Release|Any CPU {CF253F0A-3A45-40EE-875F-0E57C8968C48}.Debug|Any CPU.Build.0 = Debug|Any CPU
{EF03A0A7-A93E-4DEF-A33E-F5A82E995FBF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {CF253F0A-3A45-40EE-875F-0E57C8968C48}.Release|Any CPU.ActiveCfg = Release|Any CPU
{EF03A0A7-A93E-4DEF-A33E-F5A82E995FBF}.Debug|Any CPU.Build.0 = Debug|Any CPU {CF253F0A-3A45-40EE-875F-0E57C8968C48}.Release|Any CPU.Build.0 = Release|Any CPU
{EF03A0A7-A93E-4DEF-A33E-F5A82E995FBF}.Release|Any CPU.ActiveCfg = Release|Any CPU {EF03A0A7-A93E-4DEF-A33E-F5A82E995FBF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{EF03A0A7-A93E-4DEF-A33E-F5A82E995FBF}.Release|Any CPU.Build.0 = Release|Any CPU {EF03A0A7-A93E-4DEF-A33E-F5A82E995FBF}.Debug|Any CPU.Build.0 = Debug|Any CPU
{9403FC1F-9677-489F-A03A-0B456153EE86}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {EF03A0A7-A93E-4DEF-A33E-F5A82E995FBF}.Release|Any CPU.ActiveCfg = Release|Any CPU
{9403FC1F-9677-489F-A03A-0B456153EE86}.Debug|Any CPU.Build.0 = Debug|Any CPU {EF03A0A7-A93E-4DEF-A33E-F5A82E995FBF}.Release|Any CPU.Build.0 = Release|Any CPU
{9403FC1F-9677-489F-A03A-0B456153EE86}.Release|Any CPU.ActiveCfg = Release|Any CPU {9403FC1F-9677-489F-A03A-0B456153EE86}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{9403FC1F-9677-489F-A03A-0B456153EE86}.Release|Any CPU.Build.0 = Release|Any CPU {9403FC1F-9677-489F-A03A-0B456153EE86}.Debug|Any CPU.Build.0 = Debug|Any CPU
{26E87199-F0AD-4B30-B0E4-080B12E6F8FC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {9403FC1F-9677-489F-A03A-0B456153EE86}.Release|Any CPU.ActiveCfg = Release|Any CPU
{26E87199-F0AD-4B30-B0E4-080B12E6F8FC}.Debug|Any CPU.Build.0 = Debug|Any CPU {9403FC1F-9677-489F-A03A-0B456153EE86}.Release|Any CPU.Build.0 = Release|Any CPU
{26E87199-F0AD-4B30-B0E4-080B12E6F8FC}.Release|Any CPU.ActiveCfg = Release|Any CPU {26E87199-F0AD-4B30-B0E4-080B12E6F8FC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{26E87199-F0AD-4B30-B0E4-080B12E6F8FC}.Release|Any CPU.Build.0 = Release|Any CPU {26E87199-F0AD-4B30-B0E4-080B12E6F8FC}.Debug|Any CPU.Build.0 = Debug|Any CPU
{8968EDAF-9F5C-4786-AF2A-D3928B70C3EC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {26E87199-F0AD-4B30-B0E4-080B12E6F8FC}.Release|Any CPU.ActiveCfg = Release|Any CPU
{8968EDAF-9F5C-4786-AF2A-D3928B70C3EC}.Debug|Any CPU.Build.0 = Debug|Any CPU {26E87199-F0AD-4B30-B0E4-080B12E6F8FC}.Release|Any CPU.Build.0 = Release|Any CPU
{8968EDAF-9F5C-4786-AF2A-D3928B70C3EC}.Release|Any CPU.ActiveCfg = Release|Any CPU {8968EDAF-9F5C-4786-AF2A-D3928B70C3EC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{8968EDAF-9F5C-4786-AF2A-D3928B70C3EC}.Release|Any CPU.Build.0 = Release|Any CPU {8968EDAF-9F5C-4786-AF2A-D3928B70C3EC}.Debug|Any CPU.Build.0 = Debug|Any CPU
{CF30221B-CA7A-42CD-B91A-B7224AB2F38B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {8968EDAF-9F5C-4786-AF2A-D3928B70C3EC}.Release|Any CPU.ActiveCfg = Release|Any CPU
{CF30221B-CA7A-42CD-B91A-B7224AB2F38B}.Debug|Any CPU.Build.0 = Debug|Any CPU {8968EDAF-9F5C-4786-AF2A-D3928B70C3EC}.Release|Any CPU.Build.0 = Release|Any CPU
{CF30221B-CA7A-42CD-B91A-B7224AB2F38B}.Release|Any CPU.ActiveCfg = Release|Any CPU {CF30221B-CA7A-42CD-B91A-B7224AB2F38B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{CF30221B-CA7A-42CD-B91A-B7224AB2F38B}.Release|Any CPU.Build.0 = Release|Any CPU {CF30221B-CA7A-42CD-B91A-B7224AB2F38B}.Debug|Any CPU.Build.0 = Debug|Any CPU
{191BB108-546E-4E70-978E-D6A8149C319C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {CF30221B-CA7A-42CD-B91A-B7224AB2F38B}.Release|Any CPU.ActiveCfg = Release|Any CPU
{191BB108-546E-4E70-978E-D6A8149C319C}.Debug|Any CPU.Build.0 = Debug|Any CPU {CF30221B-CA7A-42CD-B91A-B7224AB2F38B}.Release|Any CPU.Build.0 = Release|Any CPU
{191BB108-546E-4E70-978E-D6A8149C319C}.Release|Any CPU.ActiveCfg = Release|Any CPU {191BB108-546E-4E70-978E-D6A8149C319C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{191BB108-546E-4E70-978E-D6A8149C319C}.Release|Any CPU.Build.0 = Release|Any CPU {191BB108-546E-4E70-978E-D6A8149C319C}.Debug|Any CPU.Build.0 = Debug|Any CPU
{DEB98AD7-9630-4F32-89E6-C1A118D1D18C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {191BB108-546E-4E70-978E-D6A8149C319C}.Release|Any CPU.ActiveCfg = Release|Any CPU
{DEB98AD7-9630-4F32-89E6-C1A118D1D18C}.Debug|Any CPU.Build.0 = Debug|Any CPU {191BB108-546E-4E70-978E-D6A8149C319C}.Release|Any CPU.Build.0 = Release|Any CPU
{DEB98AD7-9630-4F32-89E6-C1A118D1D18C}.Release|Any CPU.ActiveCfg = Release|Any CPU {DEB98AD7-9630-4F32-89E6-C1A118D1D18C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{DEB98AD7-9630-4F32-89E6-C1A118D1D18C}.Release|Any CPU.Build.0 = Release|Any CPU {DEB98AD7-9630-4F32-89E6-C1A118D1D18C}.Debug|Any CPU.Build.0 = Debug|Any CPU
EndGlobalSection {DEB98AD7-9630-4F32-89E6-C1A118D1D18C}.Release|Any CPU.ActiveCfg = Release|Any CPU
GlobalSection(SolutionProperties) = preSolution {DEB98AD7-9630-4F32-89E6-C1A118D1D18C}.Release|Any CPU.Build.0 = Release|Any CPU
HideSolutionNode = FALSE {00F1D30E-A6F6-464F-A80B-D423CFAA79A3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
EndGlobalSection {00F1D30E-A6F6-464F-A80B-D423CFAA79A3}.Debug|Any CPU.Build.0 = Debug|Any CPU
GlobalSection(NestedProjects) = preSolution {00F1D30E-A6F6-464F-A80B-D423CFAA79A3}.Release|Any CPU.ActiveCfg = Release|Any CPU
{086BE5BE-8594-4DA7-8819-935FEF76DABD} = {02EA4E78-5891-43BC-944F-3E52FEE032E4} {00F1D30E-A6F6-464F-A80B-D423CFAA79A3}.Release|Any CPU.Build.0 = Release|Any CPU
{5A87E9DD-3340-44DC-9564-4D8832A0228E} = {B91F26C5-B148-4094-B5F1-71E5F945DBED} EndGlobalSection
{E9BE3C65-2AB2-4CE8-8EB9-5C91B329ADB4} = {B91F26C5-B148-4094-B5F1-71E5F945DBED} GlobalSection(SolutionProperties) = preSolution
{824CB367-383B-48B2-972D-33923438A9A0} = {B91F26C5-B148-4094-B5F1-71E5F945DBED} HideSolutionNode = FALSE
{E9AEC9D6-1FE7-4B00-BAC5-2C3D4B63CCA2} = {E2E7A062-0ABB-41B4-8220-60228446D2C2} EndGlobalSection
{304D06E6-41EC-4DCB-AEAE-DBEEC75F9ADC} = {E2E7A062-0ABB-41B4-8220-60228446D2C2} GlobalSection(NestedProjects) = preSolution
{492710E6-EEF5-4390-A474-8FB2412ECBE5} = {086BE5BE-8594-4DA7-8819-935FEF76DABD} {086BE5BE-8594-4DA7-8819-935FEF76DABD} = {02EA4E78-5891-43BC-944F-3E52FEE032E4}
{CCF1EB86-29BD-4531-BB27-C9111CC67570} = {7F18BCA5-35BD-41FB-8EFF-801B56E5E414} {5A87E9DD-3340-44DC-9564-4D8832A0228E} = {B91F26C5-B148-4094-B5F1-71E5F945DBED}
{4BD715F2-D117-45FB-B26C-F92D912144C7} = {086BE5BE-8594-4DA7-8819-935FEF76DABD} {E9BE3C65-2AB2-4CE8-8EB9-5C91B329ADB4} = {B91F26C5-B148-4094-B5F1-71E5F945DBED}
{71C57C19-671D-4CD4-AA46-E8021E53BBE5} = {086BE5BE-8594-4DA7-8819-935FEF76DABD} {824CB367-383B-48B2-972D-33923438A9A0} = {B91F26C5-B148-4094-B5F1-71E5F945DBED}
{7947D559-4288-486B-8FB3-D957CC7EDD32} = {086BE5BE-8594-4DA7-8819-935FEF76DABD} {E9AEC9D6-1FE7-4B00-BAC5-2C3D4B63CCA2} = {E2E7A062-0ABB-41B4-8220-60228446D2C2}
{A4195E41-3919-4C3E-8768-7F277B583D16} = {086BE5BE-8594-4DA7-8819-935FEF76DABD} {304D06E6-41EC-4DCB-AEAE-DBEEC75F9ADC} = {E2E7A062-0ABB-41B4-8220-60228446D2C2}
{60083380-062C-4914-9E4E-5AE6637CCC3F} = {086BE5BE-8594-4DA7-8819-935FEF76DABD} {492710E6-EEF5-4390-A474-8FB2412ECBE5} = {086BE5BE-8594-4DA7-8819-935FEF76DABD}
{9C6E9EE2-5C83-4D96-A7B7-32798FEF2845} = {086BE5BE-8594-4DA7-8819-935FEF76DABD} {CCF1EB86-29BD-4531-BB27-C9111CC67570} = {7F18BCA5-35BD-41FB-8EFF-801B56E5E414}
{34C1E979-65B9-46F5-B7BA-60F227EBA093} = {0D2D7A10-CBA5-4798-BFC7-EB05D1E6B94C} {4BD715F2-D117-45FB-B26C-F92D912144C7} = {086BE5BE-8594-4DA7-8819-935FEF76DABD}
{80A56461-0ACC-4069-B571-87DCA064B2EF} = {0D2D7A10-CBA5-4798-BFC7-EB05D1E6B94C} {71C57C19-671D-4CD4-AA46-E8021E53BBE5} = {086BE5BE-8594-4DA7-8819-935FEF76DABD}
{568D2C50-1C31-4C31-89A2-C608FA93C6FD} = {086BE5BE-8594-4DA7-8819-935FEF76DABD} {7947D559-4288-486B-8FB3-D957CC7EDD32} = {086BE5BE-8594-4DA7-8819-935FEF76DABD}
{12451B83-18DE-4E93-B98C-509477D53D5E} = {086BE5BE-8594-4DA7-8819-935FEF76DABD} {A4195E41-3919-4C3E-8768-7F277B583D16} = {086BE5BE-8594-4DA7-8819-935FEF76DABD}
{AAD0B6A7-847A-4537-A300-50E37F4B70CC} = {EFFAF456-50C1-42C9-836E-E95E7A38D52C} {60083380-062C-4914-9E4E-5AE6637CCC3F} = {086BE5BE-8594-4DA7-8819-935FEF76DABD}
{5B5C2372-2EAB-4559-BBCB-0C1C9A7158DB} = {EFFAF456-50C1-42C9-836E-E95E7A38D52C} {9C6E9EE2-5C83-4D96-A7B7-32798FEF2845} = {086BE5BE-8594-4DA7-8819-935FEF76DABD}
{2A0C5EF1-CB21-4656-8C32-B5673F6B82D2} = {EFFAF456-50C1-42C9-836E-E95E7A38D52C} {34C1E979-65B9-46F5-B7BA-60F227EBA093} = {0D2D7A10-CBA5-4798-BFC7-EB05D1E6B94C}
{3021DD8B-EA8F-4A88-BC2C-1BBEDC6255FE} = {B91F26C5-B148-4094-B5F1-71E5F945DBED} {80A56461-0ACC-4069-B571-87DCA064B2EF} = {0D2D7A10-CBA5-4798-BFC7-EB05D1E6B94C}
{B31CEE79-45F6-4BB9-9EEB-08843C324B37} = {B91F26C5-B148-4094-B5F1-71E5F945DBED} {568D2C50-1C31-4C31-89A2-C608FA93C6FD} = {086BE5BE-8594-4DA7-8819-935FEF76DABD}
{22C61434-D29A-4376-AD56-F5089F3E617A} = {02EA4E78-5891-43BC-944F-3E52FEE032E4} {12451B83-18DE-4E93-B98C-509477D53D5E} = {086BE5BE-8594-4DA7-8819-935FEF76DABD}
{865D5508-63CD-4D44-9F5B-AE5CD4A43D08} = {22C61434-D29A-4376-AD56-F5089F3E617A} {AAD0B6A7-847A-4537-A300-50E37F4B70CC} = {EFFAF456-50C1-42C9-836E-E95E7A38D52C}
{ECAA4B82-A240-4747-888C-FACD8634D389} = {086BE5BE-8594-4DA7-8819-935FEF76DABD} {5B5C2372-2EAB-4559-BBCB-0C1C9A7158DB} = {EFFAF456-50C1-42C9-836E-E95E7A38D52C}
{8AF8FD6B-634F-41FA-B421-A4ACFD159FE0} = {7F18BCA5-35BD-41FB-8EFF-801B56E5E414} {2A0C5EF1-CB21-4656-8C32-B5673F6B82D2} = {EFFAF456-50C1-42C9-836E-E95E7A38D52C}
{7F18BCA5-35BD-41FB-8EFF-801B56E5E414} = {02EA4E78-5891-43BC-944F-3E52FEE032E4} {3021DD8B-EA8F-4A88-BC2C-1BBEDC6255FE} = {B91F26C5-B148-4094-B5F1-71E5F945DBED}
{E2E7A062-0ABB-41B4-8220-60228446D2C2} = {02EA4E78-5891-43BC-944F-3E52FEE032E4} {B31CEE79-45F6-4BB9-9EEB-08843C324B37} = {B91F26C5-B148-4094-B5F1-71E5F945DBED}
{EFFAF456-50C1-42C9-836E-E95E7A38D52C} = {02EA4E78-5891-43BC-944F-3E52FEE032E4} {22C61434-D29A-4376-AD56-F5089F3E617A} = {02EA4E78-5891-43BC-944F-3E52FEE032E4}
{B91F26C5-B148-4094-B5F1-71E5F945DBED} = {02EA4E78-5891-43BC-944F-3E52FEE032E4} {865D5508-63CD-4D44-9F5B-AE5CD4A43D08} = {22C61434-D29A-4376-AD56-F5089F3E617A}
{0D2D7A10-CBA5-4798-BFC7-EB05D1E6B94C} = {02EA4E78-5891-43BC-944F-3E52FEE032E4} {ECAA4B82-A240-4747-888C-FACD8634D389} = {086BE5BE-8594-4DA7-8819-935FEF76DABD}
{3B455AA7-B165-4EA0-8870-DB8DA5C76FC5} = {0D2D7A10-CBA5-4798-BFC7-EB05D1E6B94C} {8AF8FD6B-634F-41FA-B421-A4ACFD159FE0} = {7F18BCA5-35BD-41FB-8EFF-801B56E5E414}
{99F8F254-A76E-43BB-8048-CC17EE1C8527} = {0D2D7A10-CBA5-4798-BFC7-EB05D1E6B94C} {7F18BCA5-35BD-41FB-8EFF-801B56E5E414} = {02EA4E78-5891-43BC-944F-3E52FEE032E4}
{38E21687-5F19-42C9-9D11-4B1D2EF64EDB} = {02EA4E78-5891-43BC-944F-3E52FEE032E4} {E2E7A062-0ABB-41B4-8220-60228446D2C2} = {02EA4E78-5891-43BC-944F-3E52FEE032E4}
{F2DAA5EB-5508-4D99-AE64-A10C025712BC} = {38E21687-5F19-42C9-9D11-4B1D2EF64EDB} {EFFAF456-50C1-42C9-836E-E95E7A38D52C} = {02EA4E78-5891-43BC-944F-3E52FEE032E4}
{BD0A1F2D-7667-45F8-872D-D41F36384163} = {38E21687-5F19-42C9-9D11-4B1D2EF64EDB} {B91F26C5-B148-4094-B5F1-71E5F945DBED} = {02EA4E78-5891-43BC-944F-3E52FEE032E4}
{21C0A260-BC14-4A8F-9299-A9EE58682B96} = {38E21687-5F19-42C9-9D11-4B1D2EF64EDB} {0D2D7A10-CBA5-4798-BFC7-EB05D1E6B94C} = {02EA4E78-5891-43BC-944F-3E52FEE032E4}
{15FC0C39-A604-491F-91F6-BD44167FC5F6} = {B91F26C5-B148-4094-B5F1-71E5F945DBED} {3B455AA7-B165-4EA0-8870-DB8DA5C76FC5} = {0D2D7A10-CBA5-4798-BFC7-EB05D1E6B94C}
{9E59B1DB-E0D5-485D-BDA0-B6C31E1358A8} = {22C61434-D29A-4376-AD56-F5089F3E617A} {99F8F254-A76E-43BB-8048-CC17EE1C8527} = {0D2D7A10-CBA5-4798-BFC7-EB05D1E6B94C}
{16942653-B746-4917-B3BF-464C99F8832F} = {22C61434-D29A-4376-AD56-F5089F3E617A} {38E21687-5F19-42C9-9D11-4B1D2EF64EDB} = {02EA4E78-5891-43BC-944F-3E52FEE032E4}
{D0717513-2CEE-4AD5-A1DA-A08EA5DE6DD6} = {22C61434-D29A-4376-AD56-F5089F3E617A} {F2DAA5EB-5508-4D99-AE64-A10C025712BC} = {38E21687-5F19-42C9-9D11-4B1D2EF64EDB}
{D119C919-230B-4614-9A06-98586635DBFC} = {22C61434-D29A-4376-AD56-F5089F3E617A} {BD0A1F2D-7667-45F8-872D-D41F36384163} = {38E21687-5F19-42C9-9D11-4B1D2EF64EDB}
{A7A28D6C-6EDB-4615-8899-7DE1D435B750} = {086BE5BE-8594-4DA7-8819-935FEF76DABD} {21C0A260-BC14-4A8F-9299-A9EE58682B96} = {38E21687-5F19-42C9-9D11-4B1D2EF64EDB}
{17A8455F-D413-4664-AEFA-1ECAE9ED4B19} = {7F18BCA5-35BD-41FB-8EFF-801B56E5E414} {15FC0C39-A604-491F-91F6-BD44167FC5F6} = {B91F26C5-B148-4094-B5F1-71E5F945DBED}
{3BAA3D38-96C2-4C4C-B790-AE2997BFDE25} = {B86C21A4-73B7-471E-B73A-B4B905EC9435} {9E59B1DB-E0D5-485D-BDA0-B6C31E1358A8} = {22C61434-D29A-4376-AD56-F5089F3E617A}
{2E35CB93-2E9C-4EE1-845F-72A40271648E} = {B86C21A4-73B7-471E-B73A-B4B905EC9435} {16942653-B746-4917-B3BF-464C99F8832F} = {22C61434-D29A-4376-AD56-F5089F3E617A}
{8D2AD50B-DD4B-48A2-88EC-0E8E8236D883} = {02EA4E78-5891-43BC-944F-3E52FEE032E4} {D0717513-2CEE-4AD5-A1DA-A08EA5DE6DD6} = {22C61434-D29A-4376-AD56-F5089F3E617A}
{8FB74B18-CA5C-4DC3-8DFA-600133A05712} = {8D2AD50B-DD4B-48A2-88EC-0E8E8236D883} {D119C919-230B-4614-9A06-98586635DBFC} = {22C61434-D29A-4376-AD56-F5089F3E617A}
{3DBF0975-B09D-49CA-9AF8-69175EDB9D52} = {B86C21A4-73B7-471E-B73A-B4B905EC9435} {A7A28D6C-6EDB-4615-8899-7DE1D435B750} = {086BE5BE-8594-4DA7-8819-935FEF76DABD}
{93DD5A05-B67A-4E11-BB56-F6B4E7F1489C} = {B86C21A4-73B7-471E-B73A-B4B905EC9435} {17A8455F-D413-4664-AEFA-1ECAE9ED4B19} = {7F18BCA5-35BD-41FB-8EFF-801B56E5E414}
{221725FF-6C01-4F41-9F29-AC04C7D52611} = {B86C21A4-73B7-471E-B73A-B4B905EC9435} {3BAA3D38-96C2-4C4C-B790-AE2997BFDE25} = {B86C21A4-73B7-471E-B73A-B4B905EC9435}
{1B494EA1-28CF-4A61-B0BE-70BBA425C316} = {B86C21A4-73B7-471E-B73A-B4B905EC9435} {2E35CB93-2E9C-4EE1-845F-72A40271648E} = {B86C21A4-73B7-471E-B73A-B4B905EC9435}
{7F767ACF-754A-4EBC-8936-3C1402B6EF82} = {086BE5BE-8594-4DA7-8819-935FEF76DABD} {8D2AD50B-DD4B-48A2-88EC-0E8E8236D883} = {02EA4E78-5891-43BC-944F-3E52FEE032E4}
{E73A0F8B-2B4B-4CED-82A4-1EE5E0B89744} = {02EA4E78-5891-43BC-944F-3E52FEE032E4} {8FB74B18-CA5C-4DC3-8DFA-600133A05712} = {8D2AD50B-DD4B-48A2-88EC-0E8E8236D883}
{8CC72F4E-F134-4A43-9037-5D4D1F29B68A} = {E73A0F8B-2B4B-4CED-82A4-1EE5E0B89744} {3DBF0975-B09D-49CA-9AF8-69175EDB9D52} = {B86C21A4-73B7-471E-B73A-B4B905EC9435}
{94FEA59E-3B6D-41A0-9E44-BA5D6477244F} = {B86C21A4-73B7-471E-B73A-B4B905EC9435} {93DD5A05-B67A-4E11-BB56-F6B4E7F1489C} = {B86C21A4-73B7-471E-B73A-B4B905EC9435}
{7FDFB22F-1BFF-4E05-9427-78B7A8461D50} = {02EA4E78-5891-43BC-944F-3E52FEE032E4} {221725FF-6C01-4F41-9F29-AC04C7D52611} = {B86C21A4-73B7-471E-B73A-B4B905EC9435}
{C72E0407-06FE-4CAA-86E5-30FF216A7B82} = {7FDFB22F-1BFF-4E05-9427-78B7A8461D50} {1B494EA1-28CF-4A61-B0BE-70BBA425C316} = {B86C21A4-73B7-471E-B73A-B4B905EC9435}
{E74FF671-6E5E-430C-9211-ED910634DDBE} = {7FDFB22F-1BFF-4E05-9427-78B7A8461D50} {7F767ACF-754A-4EBC-8936-3C1402B6EF82} = {086BE5BE-8594-4DA7-8819-935FEF76DABD}
{879791A3-BD69-42E4-A3BC-9878EFAADDD1} = {7FDFB22F-1BFF-4E05-9427-78B7A8461D50} {E73A0F8B-2B4B-4CED-82A4-1EE5E0B89744} = {02EA4E78-5891-43BC-944F-3E52FEE032E4}
{C8891F1A-E6E5-448A-B527-EBFA44D20808} = {02EA4E78-5891-43BC-944F-3E52FEE032E4} {8CC72F4E-F134-4A43-9037-5D4D1F29B68A} = {E73A0F8B-2B4B-4CED-82A4-1EE5E0B89744}
{5133D83C-9B23-491C-8780-3F9BBDBD0351} = {C8891F1A-E6E5-448A-B527-EBFA44D20808} {94FEA59E-3B6D-41A0-9E44-BA5D6477244F} = {B86C21A4-73B7-471E-B73A-B4B905EC9435}
{B8E5026B-188F-422F-A1EA-502C4A394585} = {C8891F1A-E6E5-448A-B527-EBFA44D20808} {7FDFB22F-1BFF-4E05-9427-78B7A8461D50} = {02EA4E78-5891-43BC-944F-3E52FEE032E4}
{E861BE01-689D-4637-A5DC-E78E234F83FB} = {C8891F1A-E6E5-448A-B527-EBFA44D20808} {C72E0407-06FE-4CAA-86E5-30FF216A7B82} = {7FDFB22F-1BFF-4E05-9427-78B7A8461D50}
{CF253F0A-3A45-40EE-875F-0E57C8968C48} = {B86C21A4-73B7-471E-B73A-B4B905EC9435} {E74FF671-6E5E-430C-9211-ED910634DDBE} = {7FDFB22F-1BFF-4E05-9427-78B7A8461D50}
{EF03A0A7-A93E-4DEF-A33E-F5A82E995FBF} = {B86C21A4-73B7-471E-B73A-B4B905EC9435} {879791A3-BD69-42E4-A3BC-9878EFAADDD1} = {7FDFB22F-1BFF-4E05-9427-78B7A8461D50}
{9403FC1F-9677-489F-A03A-0B456153EE86} = {B86C21A4-73B7-471E-B73A-B4B905EC9435} {C8891F1A-E6E5-448A-B527-EBFA44D20808} = {02EA4E78-5891-43BC-944F-3E52FEE032E4}
{26E87199-F0AD-4B30-B0E4-080B12E6F8FC} = {B86C21A4-73B7-471E-B73A-B4B905EC9435} {5133D83C-9B23-491C-8780-3F9BBDBD0351} = {C8891F1A-E6E5-448A-B527-EBFA44D20808}
{8968EDAF-9F5C-4786-AF2A-D3928B70C3EC} = {B86C21A4-73B7-471E-B73A-B4B905EC9435} {B8E5026B-188F-422F-A1EA-502C4A394585} = {C8891F1A-E6E5-448A-B527-EBFA44D20808}
{CF30221B-CA7A-42CD-B91A-B7224AB2F38B} = {B86C21A4-73B7-471E-B73A-B4B905EC9435} {E861BE01-689D-4637-A5DC-E78E234F83FB} = {C8891F1A-E6E5-448A-B527-EBFA44D20808}
{191BB108-546E-4E70-978E-D6A8149C319C} = {086BE5BE-8594-4DA7-8819-935FEF76DABD} {CF253F0A-3A45-40EE-875F-0E57C8968C48} = {B86C21A4-73B7-471E-B73A-B4B905EC9435}
{DEB98AD7-9630-4F32-89E6-C1A118D1D18C} = {B91F26C5-B148-4094-B5F1-71E5F945DBED} {EF03A0A7-A93E-4DEF-A33E-F5A82E995FBF} = {B86C21A4-73B7-471E-B73A-B4B905EC9435}
EndGlobalSection {9403FC1F-9677-489F-A03A-0B456153EE86} = {B86C21A4-73B7-471E-B73A-B4B905EC9435}
GlobalSection(ExtensibilityGlobals) = postSolution {26E87199-F0AD-4B30-B0E4-080B12E6F8FC} = {B86C21A4-73B7-471E-B73A-B4B905EC9435}
SolutionGuid = {06C707C6-02C0-411A-AD3B-2D0E13787CB8} {8968EDAF-9F5C-4786-AF2A-D3928B70C3EC} = {B86C21A4-73B7-471E-B73A-B4B905EC9435}
EndGlobalSection {CF30221B-CA7A-42CD-B91A-B7224AB2F38B} = {B86C21A4-73B7-471E-B73A-B4B905EC9435}
EndGlobal {191BB108-546E-4E70-978E-D6A8149C319C} = {086BE5BE-8594-4DA7-8819-935FEF76DABD}
{DEB98AD7-9630-4F32-89E6-C1A118D1D18C} = {B91F26C5-B148-4094-B5F1-71E5F945DBED}
{00F1D30E-A6F6-464F-A80B-D423CFAA79A3} = {22C61434-D29A-4376-AD56-F5089F3E617A}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {06C707C6-02C0-411A-AD3B-2D0E13787CB8}
EndGlobalSection
EndGlobal

323
aspnet-core/modules/common/LINGYUN.Abp.Features.LimitValidation.Redis/LINGYUN/Abp/Features/LimitValidation/Redis/RedisRequiresLimitFeatureChecker.cs

@ -1,189 +1,134 @@
using Microsoft.Extensions.Logging; using Microsoft.Extensions.Logging;
using Microsoft.Extensions.Logging.Abstractions; using Microsoft.Extensions.Logging.Abstractions;
using Microsoft.Extensions.Options; using Microsoft.Extensions.Options;
using StackExchange.Redis; using StackExchange.Redis;
using System; using System;
using System.IO; using System.IO;
using System.Text; using System.Text;
using System.Threading; using System.Threading;
using System.Threading.Tasks; using System.Threading.Tasks;
using Volo.Abp; using Volo.Abp;
using Volo.Abp.DependencyInjection; using Volo.Abp.DependencyInjection;
using Volo.Abp.VirtualFileSystem; using Volo.Abp.VirtualFileSystem;
namespace LINGYUN.Abp.Features.LimitValidation.Redis namespace LINGYUN.Abp.Features.LimitValidation.Redis
{ {
[DisableConventionalRegistration] [DisableConventionalRegistration]
public class RedisRequiresLimitFeatureChecker : IRequiresLimitFeatureChecker public class RedisRequiresLimitFeatureChecker : IRequiresLimitFeatureChecker
{ {
private const string CHECK_LUA_SCRIPT = "/LINGYUN/Abp/Features/LimitValidation/Redis/Lua/check.lua"; private const string CHECK_LUA_SCRIPT = "/LINGYUN/Abp/Features/LimitValidation/Redis/Lua/check.lua";
private const string PROCESS_LUA_SCRIPT = "/LINGYUN/Abp/Features/LimitValidation/Redis/Lua/process.lua"; private const string PROCESS_LUA_SCRIPT = "/LINGYUN/Abp/Features/LimitValidation/Redis/Lua/process.lua";
public ILogger<RedisRequiresLimitFeatureChecker> Logger { protected get; set; } public ILogger<RedisRequiresLimitFeatureChecker> Logger { protected get; set; }
private volatile ConnectionMultiplexer _connection; private volatile ConnectionMultiplexer _connection;
private volatile ConfigurationOptions _redisConfig; private volatile ConfigurationOptions _redisConfig;
private IDatabaseAsync _redis; private IDatabaseAsync _redis;
private IServer _server; private IServer _server;
private readonly IVirtualFileProvider _virtualFileProvider; private readonly IVirtualFileProvider _virtualFileProvider;
private readonly IRedisLimitFeatureNamingNormalizer _featureNamingNormalizer; private readonly IRedisLimitFeatureNamingNormalizer _featureNamingNormalizer;
private readonly AbpRedisRequiresLimitFeatureOptions _options; private readonly AbpRedisRequiresLimitFeatureOptions _options;
private readonly string _instance; private readonly string _instance;
private readonly SemaphoreSlim _connectionLock = new SemaphoreSlim(initialCount: 1, maxCount: 1); private readonly SemaphoreSlim _connectionLock = new SemaphoreSlim(initialCount: 1, maxCount: 1);
public RedisRequiresLimitFeatureChecker( public RedisRequiresLimitFeatureChecker(
IVirtualFileProvider virtualFileProvider, IVirtualFileProvider virtualFileProvider,
IRedisLimitFeatureNamingNormalizer featureNamingNormalizer, IRedisLimitFeatureNamingNormalizer featureNamingNormalizer,
IOptions<AbpRedisRequiresLimitFeatureOptions> optionsAccessor) IOptions<AbpRedisRequiresLimitFeatureOptions> optionsAccessor)
{ {
if (optionsAccessor == null) if (optionsAccessor == null)
{ {
throw new ArgumentNullException(nameof(optionsAccessor)); throw new ArgumentNullException(nameof(optionsAccessor));
} }
_options = optionsAccessor.Value; _options = optionsAccessor.Value;
_virtualFileProvider = virtualFileProvider; _virtualFileProvider = virtualFileProvider;
_featureNamingNormalizer = featureNamingNormalizer; _featureNamingNormalizer = featureNamingNormalizer;
_instance = _options.InstanceName ?? string.Empty; _instance = _options.InstanceName ?? string.Empty;
Logger = NullLogger<RedisRequiresLimitFeatureChecker>.Instance; Logger = NullLogger<RedisRequiresLimitFeatureChecker>.Instance;
} }
public virtual async Task<bool> CheckAsync(RequiresLimitFeatureContext context, CancellationToken cancellation = default) public virtual async Task<bool> CheckAsync(RequiresLimitFeatureContext context, CancellationToken cancellation = default)
{ {
await ConnectAsync(cancellation); await ConnectAsync(cancellation);
var result = await EvaluateAsync(CHECK_LUA_SCRIPT, context, cancellation); var result = await EvaluateAsync(CHECK_LUA_SCRIPT, context, cancellation);
return result + 1 <= context.Limit; return result + 1 <= context.Limit;
} }
public virtual async Task ProcessAsync(RequiresLimitFeatureContext context, CancellationToken cancellation = default) public virtual async Task ProcessAsync(RequiresLimitFeatureContext context, CancellationToken cancellation = default)
{ {
await ConnectAsync(cancellation); await ConnectAsync(cancellation);
await EvaluateAsync(PROCESS_LUA_SCRIPT, context, cancellation); await EvaluateAsync(PROCESS_LUA_SCRIPT, context, cancellation);
} }
private async Task<int> EvaluateAsync(string luaScriptFilePath, RequiresLimitFeatureContext context, CancellationToken cancellation = default) private async Task<int> EvaluateAsync(string luaScriptFilePath, RequiresLimitFeatureContext context, CancellationToken cancellation = default)
{ {
var luaScriptFile = _virtualFileProvider.GetFileInfo(luaScriptFilePath); var luaScriptFile = _virtualFileProvider.GetFileInfo(luaScriptFilePath);
using var luaScriptFileStream = luaScriptFile.CreateReadStream(); using var luaScriptFileStream = luaScriptFile.CreateReadStream();
var fileBytes = await luaScriptFileStream.GetAllBytesAsync(cancellation); var fileBytes = await luaScriptFileStream.GetAllBytesAsync(cancellation);
var luaSha1 = fileBytes.Sha1(); var luaSha1 = fileBytes.Sha1();
if (!await _server.ScriptExistsAsync(luaSha1)) if (!await _server.ScriptExistsAsync(luaSha1))
{ {
var luaScript = Encoding.UTF8.GetString(fileBytes); var luaScript = Encoding.UTF8.GetString(fileBytes);
luaSha1 = await _server.ScriptLoadAsync(luaScript); luaSha1 = await _server.ScriptLoadAsync(luaScript);
} }
var keys = new RedisKey[1] { NormalizeKey(context) }; var keys = new RedisKey[1] { NormalizeKey(context) };
var values = new RedisValue[] { context.GetEffectTicks() }; var values = new RedisValue[] { context.GetEffectTicks() };
var result = await _redis.ScriptEvaluateAsync(luaSha1, keys, values); var result = await _redis.ScriptEvaluateAsync(luaSha1, keys, values);
if (result.Type == ResultType.Error) if (result.Type == ResultType.Error)
{ {
throw new AbpException($"脚本执行错误:{result}"); throw new AbpException($"Script evaluate error: {result}");
} }
return (int)result; return (int)result;
} }
private string NormalizeKey(RequiresLimitFeatureContext context) private string NormalizeKey(RequiresLimitFeatureContext context)
{ {
return _featureNamingNormalizer.NormalizeFeatureName(_instance, context); return _featureNamingNormalizer.NormalizeFeatureName(_instance, context);
} }
private void RegistenConnectionEvent(ConnectionMultiplexer connection) private async Task ConnectAsync(CancellationToken token = default(CancellationToken))
{ {
if (connection != null) token.ThrowIfCancellationRequested();
{
connection.ConnectionFailed += OnConnectionFailed; if (_redis != null)
connection.ConnectionRestored += OnConnectionRestored; {
connection.ErrorMessage += OnErrorMessage; return;
connection.ConfigurationChanged += OnConfigurationChanged; }
connection.HashSlotMoved += OnHashSlotMoved;
connection.InternalError += OnInternalError; await _connectionLock.WaitAsync(token);
connection.ConfigurationChangedBroadcast += OnConfigurationChangedBroadcast; try
} {
} if (_redis == null)
{
private async Task ConnectAsync(CancellationToken token = default(CancellationToken)) if (_options.ConfigurationOptions != null)
{ {
token.ThrowIfCancellationRequested(); _redisConfig = _options.ConfigurationOptions;
}
if (_redis != null) else
{ {
return; _redisConfig = ConfigurationOptions.Parse(_options.Configuration);
} }
_redisConfig.AllowAdmin = true;
await _connectionLock.WaitAsync(token); _redisConfig.SetDefaultPorts();
try _connection = await ConnectionMultiplexer.ConnectAsync(_redisConfig);
{ // fix: 无需关注redis连接事件
if (_redis == null) _redis = _connection.GetDatabase();
{ _server = _connection.GetServer(_redisConfig.EndPoints[0]);
if (_options.ConfigurationOptions != null) }
{ }
_redisConfig = _options.ConfigurationOptions; finally
} {
else _connectionLock.Release();
{ }
_redisConfig = ConfigurationOptions.Parse(_options.Configuration); }
} }
_redisConfig.AllowAdmin = true; }
_redisConfig.SetDefaultPorts();
_connection = await ConnectionMultiplexer.ConnectAsync(_redisConfig);
RegistenConnectionEvent(_connection);
_redis = _connection.GetDatabase();
_server = _connection.GetServer(_redisConfig.EndPoints[0]);
}
}
finally
{
_connectionLock.Release();
}
}
private void OnConfigurationChangedBroadcast(object sender, EndPointEventArgs e)
{
Logger.LogInformation("Redis server master/slave changes");
}
private void OnInternalError(object sender, InternalErrorEventArgs e)
{
Logger.LogError("Redis internal error, origin:{0}, connectionType:{1}",
e.Origin, e.ConnectionType);
Logger.LogError(e.Exception, "Redis internal error");
}
private void OnHashSlotMoved(object sender, HashSlotMovedEventArgs e)
{
Logger.LogInformation("Redis configuration changed");
}
private void OnConfigurationChanged(object sender, EndPointEventArgs e)
{
Logger.LogInformation("Redis configuration changed");
}
private void OnErrorMessage(object sender, RedisErrorEventArgs e)
{
Logger.LogWarning("Redis error, message:{0}", e.Message);
}
private void OnConnectionRestored(object sender, ConnectionFailedEventArgs e)
{
Logger.LogWarning("Redis connection restored, failureType:{0}, connectionType:{1}",
e.FailureType, e.ConnectionType);
}
private void OnConnectionFailed(object sender, ConnectionFailedEventArgs e)
{
Logger.LogError("Redis connection failed, failureType:{0}, connectionType:{1}",
e.FailureType, e.ConnectionType);
Logger.LogError(e.Exception, "Redis lock connection failed");
}
}
}

130
aspnet-core/modules/common/LINGYUN.Abp.Features.LimitValidation/README.en.md

@ -1,43 +1,87 @@
English | [简体中文](./README.md) English | [简体中文](./README.md)
# LINGYUN.Abp.Features.LimitValidation # LINGYUN.Abp.Features.LimitValidation
Features limit validation component Features limit validation component
Check the number of function calls defined to limit calls to the application by specific entities (tenants, users, clients, and so on) Check the number of function calls defined to limit calls to the application by specific entities (tenants, users, clients, and so on)
Predefined policy Predefined policy
LimitPolicy.Minute Calculate the flow by the minutes LimitPolicy.Minute Calculate the flow by the minutes
LimitPolicy.Hours Calculate the flow by the hours LimitPolicy.Hours Calculate the flow by the hours
LimitPolicy.Days Calculate the flow by days LimitPolicy.Days Calculate the flow by days
LimitPolicy.Weeks Calculate the flow by weeks LimitPolicy.Weeks Calculate the flow by weeks
LimitPolicy.Month Calculate the flow by the number of month LimitPolicy.Month Calculate the flow by the number of month
LimitPolicy.Years Calculate the flow by the number of years LimitPolicy.Years Calculate the flow by the number of years
## How to use ## How to use
```csharp ```csharp
[DependsOn(typeof(AbpFeaturesLimitValidationModule))] [DependsOn(typeof(AbpFeaturesLimitValidationModule))]
public class YouProjectModule : AbpModule public class YouProjectModule : AbpModule
{ {
// other // other
} }
```
public static class FakeFeatureNames
If you want to limit the policy duration by self-processing, override the default policy for the corresponding policy and always return a clock scale in seconds {
public const string GroupName = "FakeFeature.Tests";
```csharp // Type Limit feature name
[DependsOn(typeof(AbpFeaturesLimitValidationModule))] public const string ClassLimitFeature = GroupName + ".LimitFeature";
public class YouProjectModule : AbpModule // Method limits the number of calls to the feature name
{ public const string MethodLimitFeature = GroupName + ".MethodLimitFeature";
public override void PreConfigureServices(ServiceConfigurationContext context) // Limit the call interval feature name
{ public const string IntervalFeature = GroupName + ".IntervalFeature";
Configure<AbpFeaturesLimitValidationOptions>(options => }
{
options.MapEffectPolicy(LimitPolicy.Minute, (time) => return 60;); // Means that no matter how many minutes (time), only 60 seconds will be limited // Traffic limiting depends on user-defined features
}); public class FakeFeatureDefinitionProvider : FeatureDefinitionProvider
} {
} public override void Define(IFeatureDefinitionContext context)
``` {
var featureGroup = context.AddGroup(FakeFeatureNames.GroupName);
featureGroup.AddFeature(
name: FakeFeatureNames.ClassLimitFeature,
defaultValue: 1000.ToString(), // A maximum of 1000 calls can be made within a period
valueType: new ToggleStringValueType(new NumericValueValidator(1, 1000)));
featureGroup.AddFeature(
name: FakeFeatureNames.MethodLimitFeature,
defaultValue: 100.ToString(), // A maximum of 100 calls can be made within a period
valueType: new ToggleStringValueType(new NumericValueValidator(1, 1000)));
featureGroup.AddFeature(
name: FakeFeatureNames.IntervalFeature,
defaultValue: 1.ToString(), // Limit cycle
valueType: new ToggleStringValueType(new NumericValueValidator(1, 1000)));
}
}
// By default, the type is allowed to be called only 1000 times a day
[RequiresLimitFeature(FakeFeatureNames.ClassLimitFeature, FakeFeatureNames.IntervalFeature, LimitPolicy.Days)]
public class FakeLimitClass
{
// By default, the method is only allowed to be called 100 times a minute
[RequiresLimitFeature(FakeFeatureNames.MethodLimitFeature, FakeFeatureNames.IntervalFeature, LimitPolicy.Minute)]
public void LimitMethod()
{
// other...
}
}
```
If you want to limit the policy duration by self-processing, override the default policy for the corresponding policy and always return a clock scale in seconds
```csharp
[DependsOn(typeof(AbpFeaturesLimitValidationModule))]
public class YouProjectModule : AbpModule
{
public override void PreConfigureServices(ServiceConfigurationContext context)
{
Configure<AbpFeaturesLimitValidationOptions>(options =>
{
options.MapEffectPolicy(LimitPolicy.Minute, (time) => return 60;); // Means that no matter how many minutes (time), only 60 seconds will be limited
});
}
}
```

130
aspnet-core/modules/common/LINGYUN.Abp.Features.LimitValidation/README.md

@ -1,43 +1,87 @@
[English](./README.en.md) | 简体中文 [English](./README.en.md) | 简体中文
# LINGYUN.Abp.Features.LimitValidation # LINGYUN.Abp.Features.LimitValidation
功能上限验证组件 功能上限验证组件
检查定义的功能调用次数,来限制特定的实体(租户、用户、客户端等)对于应用程序的调用 检查定义的功能调用次数,来限制特定的实体(租户、用户、客户端等)对于应用程序的调用
预先设定了如下几个策略 预先设定了如下几个策略
LimitPolicy.Minute 按分钟计算流量 LimitPolicy.Minute 按分钟计算流量
LimitPolicy.Hours 按小时计算流量 LimitPolicy.Hours 按小时计算流量
LimitPolicy.Days 按天数计算流量 LimitPolicy.Days 按天数计算流量
LimitPolicy.Weeks 按周数计算流量 LimitPolicy.Weeks 按周数计算流量
LimitPolicy.Month 按月数计算流量 LimitPolicy.Month 按月数计算流量
LimitPolicy.Years 按年数计算流量 LimitPolicy.Years 按年数计算流量
## 配置使用 ## 配置使用
```csharp ```csharp
[DependsOn(typeof(AbpFeaturesLimitValidationModule))] [DependsOn(typeof(AbpFeaturesLimitValidationModule))]
public class YouProjectModule : AbpModule public class YouProjectModule : AbpModule
{ {
// other // other
} }
```
public static class FakeFeatureNames
如果需要自行处理功能限制策略时长,请覆盖对应策略的默认策略,返回的时钟刻度单位始终是秒 {
public const string GroupName = "FakeFeature.Tests";
```csharp // 类型限制调用次数功能名称
[DependsOn(typeof(AbpFeaturesLimitValidationModule))] public const string ClassLimitFeature = GroupName + ".LimitFeature";
public class YouProjectModule : AbpModule // 方法限制调用次数功能名称
{ public const string MethodLimitFeature = GroupName + ".MethodLimitFeature";
public override void PreConfigureServices(ServiceConfigurationContext context) // 限制调用间隔功能名称
{ public const string IntervalFeature = GroupName + ".IntervalFeature";
Configure<AbpFeaturesLimitValidationOptions>(options => }
{
options.MapEffectPolicy(LimitPolicy.Minute, (time) => return 60;); // 表示不管多少分钟(time),都只会限制60秒 // 流量限制依赖自定义功能
}); public class FakeFeatureDefinitionProvider : FeatureDefinitionProvider
} {
} public override void Define(IFeatureDefinitionContext context)
``` {
var featureGroup = context.AddGroup(FakeFeatureNames.GroupName);
featureGroup.AddFeature(
name: FakeFeatureNames.ClassLimitFeature,
defaultValue: 1000.ToString(), // 周期内最大允许调用1000次
valueType: new ToggleStringValueType(new NumericValueValidator(1, 1000)));
featureGroup.AddFeature(
name: FakeFeatureNames.MethodLimitFeature,
defaultValue: 100.ToString(), // 周期内最大允许调用100次
valueType: new ToggleStringValueType(new NumericValueValidator(1, 1000)));
featureGroup.AddFeature(
name: FakeFeatureNames.IntervalFeature,
defaultValue: 1.ToString(), // 限制周期
valueType: new ToggleStringValueType(new NumericValueValidator(1, 1000)));
}
}
// 按照预设的参数,类型在一天钟内仅允许调用1000次
[RequiresLimitFeature(FakeFeatureNames.ClassLimitFeature, FakeFeatureNames.IntervalFeature, LimitPolicy.Days)]
public class FakeLimitClass
{
// 按照预设的参数,方法在一分钟内仅允许调用100次
[RequiresLimitFeature(FakeFeatureNames.MethodLimitFeature, FakeFeatureNames.IntervalFeature, LimitPolicy.Minute)]
public void LimitMethod()
{
// other...
}
}
```
如果需要自行处理功能限制策略时长,请覆盖对应策略的默认策略,返回的时钟刻度单位始终是秒
```csharp
[DependsOn(typeof(AbpFeaturesLimitValidationModule))]
public class YouProjectModule : AbpModule
{
public override void PreConfigureServices(ServiceConfigurationContext context)
{
Configure<AbpFeaturesLimitValidationOptions>(options =>
{
options.MapEffectPolicy(LimitPolicy.Minute, (time) => return 60;); // 表示不管多少分钟(time),都只会限制60秒
});
}
}
```

128
aspnet-core/modules/localization/LINGYUN.Abp.Localization.Xml/README.md

@ -1,64 +1,64 @@
# LINGYUN.Abp.Localization.Xml # LINGYUN.Abp.Localization.Xml
## 模块说明 ## 模块说明
本地化组件的Xml文档集成,内置PhysicalFileProvider与VirtualFileProvider实现 本地化组件的Xml文档集成,内置PhysicalFileProvider与VirtualFileProvider实现
### 基础模块 ### 基础模块
### 高阶模块 ### 高阶模块
### 权限定义 ### 权限定义
### 功能定义 ### 功能定义
### 配置定义 ### 配置定义
### 如何使用 ### 如何使用
```csharp ```csharp
[DependsOn( [DependsOn(
typeof(AbpLocalizationXmlModule))] typeof(AbpLocalizationXmlModule))]
public class YouProjectModule : AbpModule public class YouProjectModule : AbpModule
{ {
public override void ConfigureServices(ServiceConfigurationContext context) public override void ConfigureServices(ServiceConfigurationContext context)
{ {
Configure<AbpVirtualFileSystemOptions>(options => Configure<AbpVirtualFileSystemOptions>(options =>
{ {
options.FileSets.AddEmbedded<YouProjectModule>(); options.FileSets.AddEmbedded<YouProjectModule>();
}); });
Configure<AbpLocalizationOptions>(options => Configure<AbpLocalizationOptions>(options =>
{ {
options.Resources options.Resources
.Add<YouResource>("en") .Add<YouResource>("en")
// 当前项目中的虚拟文件系统目录,详情见: https://docs.abp.io/en/abp/latest/Virtual-File-System // 当前项目中的虚拟文件系统目录,详情见: https://docs.abp.io/en/abp/latest/Virtual-File-System
.AddVirtualXml("/LINGYUN/Abp/Localization/Xml/Resources") .AddVirtualXml("/LINGYUN/Abp/Localization/Xml/Resources")
// 一般配置在宿主项目中, 写入宿主项目中存储xml文件的绝对路径(受PhysicalFileProvider的限制) // 一般配置在宿主项目中, 写入宿主项目中存储xml文件的绝对路径(受PhysicalFileProvider的限制)
// 详情见: https://docs.microsoft.com/en-us/dotnet/api/microsoft.extensions.fileproviders.physicalfileprovider?view=dotnet-plat-ext-5.0 // 详情见: https://docs.microsoft.com/en-us/dotnet/api/microsoft.extensions.fileproviders.physicalfileprovider?view=dotnet-plat-ext-5.0
.AddPhysicalXml(Path.Combine(Directory.GetCurrentDirectory(), "Resources")); .AddPhysicalXml(Path.Combine(Directory.GetCurrentDirectory(), "Resources"));
}); });
} }
} }
``` ```
Xml文件格式如下 Xml文件格式如下
序列化: [XmlLocalizationFile](./LINGYUN/Abp/Localization/Xml/XmlLocalizationFile.cs) 类型实现 序列化: [XmlLocalizationFile](./LINGYUN/Abp/Localization/Xml/XmlLocalizationFile.cs) 类型实现
```xml ```xml
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<localization xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="lingyun.abp"> <localization xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<culture name="en" /> <culture name="en" />
<texts> <texts>
<text key="Hello China" value="Hello China!" /> <text key="Hello China" value="Hello China!" />
<text key="Welcome" value="Welcome!" /> <text key="Welcome" value="Welcome!" />
</texts> </texts>
</localization> </localization>
``` ```
### 更新日志 ### 更新日志

Loading…
Cancel
Save